Logo Search packages:      
Sourcecode: blender version File versions  Download package

CollisionDispatcher.h

/*
 * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies.
 * Erwin Coumans makes no representations about the suitability 
 * of this software for any purpose.  
 * It is provided "as is" without express or implied warranty.
*/
#ifndef COLLISION_DISPATCHER_H
#define COLLISION_DISPATCHER_H

class CollisionAlgorithm;
struct BroadphaseProxy;
class RigidBody;

enum CollisionDispatcherId
{
      RIGIDBODY_DISPATCHER = 0,
      RAGDOLL_DISPATCHER
};

class PersistentManifold;

struct DispatcherInfo
{
      enum DispatchFunc
      {
            DISPATCH_DISCRETE = 1,
            DISPATCH_CONTINUOUS
      };
      DispatcherInfo()
            :m_dispatchFunc(DISPATCH_DISCRETE),
            m_timeOfImpact(1.f),
            m_useContinuous(false)
      {

      }
      float m_timeStep;
      int         m_stepCount;
      int         m_dispatchFunc;
      float m_timeOfImpact;
      bool  m_useContinuous;
      
};

/// Collision Dispatcher can be used in combination with broadphase and collision algorithms.
00049 class Dispatcher
{


public:
      virtual ~Dispatcher() ;

      virtual CollisionAlgorithm* FindAlgorithm(BroadphaseProxy& proxy0,BroadphaseProxy& proxy1) = 0;

      //
      // asume dispatchers to have unique id's in the range [0..max dispacher]
      //
      virtual int GetUniqueId() = 0;

      virtual PersistentManifold*   GetNewManifold(void* body0,void* body1)=0;

      virtual void ReleaseManifold(PersistentManifold* manifold)=0;


};


#endif //COLLISION_DISPATCHER_H

Generated by  Doxygen 1.6.0   Back to index