VR-Forces 4.0.4 Class Documentation
include/vantageTerrainImplementation/collisionWorld.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2010 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 
00008 
00010 
00011 #pragma once
00012 
00013 #include <vantageTerrainImplementation/osgToBullet.h>
00014 #include <vantageTerrainImplementation/vantageTerrainConsoleCommands.h>
00015 #include <vantageTerrainImplementation/vantageTerrainImplementationDefines.h>
00016 #include <list>
00017 #include <vlutil/vlSmartPointers.h>
00018 #include <geometry/intersectionRecord.h>
00019 #include <tbb/spin_rw_mutex.h>
00020 
00021 typedef DtBoost::shared_ptr<btCollisionObject> DtCollisionObjectSharedPtr;
00022 typedef std::multimap<DtTriangleMeshWithSoil*, btCollisionObject*> DtMeshToCollObjMMap;
00023 typedef std::map<osg::Geode*, DtTriangleMeshWithSoil*> DtGeodeToMeshMap;
00024 
00025 class DtChord;
00026 class DtChordIntersectionRecord;
00027 class DtChordIntersectRecordList;
00028 class DtSphere;
00029 class DtSphereIntersectionRecord;
00030 
00035 class DT_DLL_vantageTerrainImplementation DtCollisionWorld
00036 {
00037 private:
00039 
00040    DtCollisionWorld(const DtCollisionWorld&);
00041    DtCollisionWorld& operator=(const DtCollisionWorld&);
00043 public:
00044    DtCollisionWorld();
00045    virtual ~DtCollisionWorld();
00046 
00047    virtual void initialize();
00048 
00049    virtual btCollisionWorld* bulletCollisionWorld();
00050 
00051    virtual const DtMeshToCollObjMMap* const meshToCollObjMMap() const;
00052 
00053    virtual void addCollisionObjectToWorld(
00054       btCollisionObject* collisionObject, DtTriangleMeshWithSoil* triangleMesh);
00055 
00056    virtual void addCollisionObjectsToWorld(
00057       DtCollObjMeshPairList* collObjMeshPairs);
00058 
00059    virtual unsigned int removeCollisionObjectFromWorld(
00060       btCollisionObject* collisionObject);
00061 
00062    virtual bool chordIntersect(const DtChord& chord,
00063       DtChordIntersectionRecord& record,
00064       DtIntersectionRecord::DtIntersectionType irtFlag = DtIntersectionRecord::INT_ALL_DATA) const;
00065 
00066    virtual bool allIntersectsAlongChord(const DtChord& chord,
00067       DtChordIntersectRecordList& intList,
00068       DtIntersectionRecord::DtIntersectionType irtFlag = DtIntersectionRecord::INT_ALL_DATA) const;
00069 
00070    virtual bool sphereIntersect(const DtSphere& sphere, DtSphereIntersectionRecord& record,
00071       DtIntersectionRecord::DtIntersectionType irtFlag = DtIntersectionRecord::INT_ALL_DATA) const;
00072 
00073    virtual void setDebugDrawer(btIDebugDraw* drawer);
00074    virtual void drawDebugInfo() const;
00075 
00078    //If a triangle mesh has been created for the given geode
00079    //return it, otherwise 0.
00080    //virtual DtTriangleMeshWithSoil* meshForGeode(osg::Geode* geode);
00081    //virtual void addGeodeToMeshMapping(osg::Geode* geode, 
00083 
00084 protected:
00085    //Bullet intersection members.
00086 
00087    std::set<DtTriangleMeshWithSoil*> myMeshList;
00088    //DtGeodeToMeshMap myGeodeToMeshMap;
00089    DtMeshToCollObjMMap myMeshToCollObjMMap;   
00090 
00091    btCollisionWorld* myCollisionWorld;
00092    btCollisionConfiguration* myCollisionConfiguration;
00093    btBroadphaseInterface* myBroadphaseInterface;
00094    btCollisionDispatcher* myCollisionDispatcher;
00095 
00096    mutable tbb::spin_rw_mutex myMutex;
00097 };

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)