2.50: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r19323...
[blender.git] / source / gameengine / Physics / Bullet / CcdPhysicsEnvironment.h
index 2f1f0bb..f861621 100644 (file)
@@ -20,6 +20,7 @@ subject to the following restrictions:
 #include <vector>
 #include <set>
 class CcdPhysicsController;
+class CcdGraphicController;
 #include "LinearMath/btVector3.h"
 #include "LinearMath/btTransform.h"
 
@@ -40,6 +41,7 @@ class btDispatcher;
 class WrapperVehicle;
 class btPersistentManifold;
 class btBroadphaseInterface;
+struct btDbvtBroadphase;
 class btOverlappingPairCache;
 class btIDebugDraw;
 class PHY_IVehicle;
@@ -58,7 +60,10 @@ protected:
        btIDebugDraw*   m_debugDrawer;
        
        class btDefaultCollisionConfiguration* m_collisionConfiguration;
-       class btBroadphaseInterface*                    m_broadphase;
+    class btBroadphaseInterface*               m_broadphase;   // broadphase for dynamic world
+       // for culling only
+       btOverlappingPairCache*                         m_cullingCache;
+       struct btDbvtBroadphase*                        m_cullingTree;  // broadphase for culling
 
        //solver iterations
        int     m_numIterations;
@@ -77,7 +82,7 @@ protected:
        void    processFhSprings(double curTime,float timeStep);
 
        public:
-               CcdPhysicsEnvironment(btDispatcher* dispatcher=0, btOverlappingPairCache* pairCache=0);
+               CcdPhysicsEnvironment(bool useDbvtCulling, btDispatcher* dispatcher=0, btOverlappingPairCache* pairCache=0);
 
                virtual         ~CcdPhysicsEnvironment();
 
@@ -167,6 +172,7 @@ protected:
                btTypedConstraint*      getConstraintById(int constraintId);
 
                virtual PHY_IPhysicsController* rayTest(PHY_IRayCastFilterCallback &filterCallback, float fromX,float fromY,float fromZ, float toX,float toY,float toZ);
+               virtual bool cullingTest(PHY_CullingCallback callback, void* userData, PHY__Vector4* planes, int nplanes, int occlusionRes);
 
 
                //Methods for gamelogic collision/physics callbacks
@@ -200,7 +206,12 @@ protected:
 
                void    refreshCcdPhysicsController(CcdPhysicsController* ctrl);
 
+               void    addCcdGraphicController(CcdGraphicController* ctrl);
+
+               void    removeCcdGraphicController(CcdGraphicController* ctrl);
+
                btBroadphaseInterface*  getBroadphase();
+               btDbvtBroadphase*       getCullingTree() { return m_cullingTree; }
 
                btDispatcher*   getDispatcher();