  | 
  
    CUGL 1.3
    
   Cornell University Game Library 
   | 
 
 
 
 
   45 #ifndef __CU_PHYSICS_WORLD_H__ 
   46 #define __CU_PHYSICS_WORLD_H__ 
   49 #include <Box2D/Dynamics/b2WorldCallbacks.h> 
   50 #include <cugl/math/cu_math.h> 
   59 #define DEFAULT_WORLD_STEP  1/60.0f 
   61 #define DEFAULT_WORLD_VELOC 6 
   63 #define DEFAULT_WORLD_POSIT 2 
   67 #pragma mark World Controller 
   80 class ObstacleWorld : 
public b2ContactListener, b2DestructionListener, b2ContactFilter {
 
   96     std::vector<std::shared_ptr<Obstacle>> 
_objects;
 
  110 #pragma mark Constructors 
  167 #pragma mark Static Constructors 
  181     static std::shared_ptr<ObstacleWorld> 
alloc(
const Rect& bounds) {
 
  182         std::shared_ptr<ObstacleWorld> result = std::make_shared<ObstacleWorld>();
 
  183         return (result->init(bounds) ? result : 
nullptr);
 
  198     static std::shared_ptr<ObstacleWorld> 
alloc(
const Rect& bounds, 
const Vec2& gravity) {
 
  199         std::shared_ptr<ObstacleWorld> result = std::make_shared<ObstacleWorld>();
 
  200         return (result->init(bounds,gravity) ? result : 
nullptr);
 
  205 #pragma mark Physics Handling 
  343 #pragma mark Object Management 
  364     void addObstacle(
const std::shared_ptr<Obstacle>& obj);
 
  407 #pragma mark Collision Callback Functions 
  469     std::function<void(b2Contact* contact, 
const b2Manifold* oldManifold)> 
beforeSolve;
 
  488     std::function<void(b2Contact* contact, 
const b2ContactImpulse* impulse)> 
afterSolve;
 
  539     void PreSolve(b2Contact* contact, 
const b2Manifold* oldManifold)
 override {
 
  562     void PostSolve(b2Contact* contact, 
const b2ContactImpulse* impulse)
 override {
 
  570 #pragma mark Filter Callback Functions 
  603     std::function<bool(b2Fixture* fixtureA, b2Fixture* fixtureB)> 
shouldCollide;
 
  624 #pragma mark Destruction Callback Functions 
  696 #pragma mark Query Functions 
  705     void queryAABB(std::function<
bool(b2Fixture* fixture)> callback, 
const Rect& aabb) 
const;
 
  717     void rayCast(std::function<
float(b2Fixture* fixture, 
const Vec2& point,
 
  718                                      const Vec2& normal, 
float fraction)> callback,
 
  719                  const Vec2& point1, 
const Vec2& point2) 
const;
 
  
bool enabledDestructionCallbacks() const
Definition: CUObstacleWorld.h:644
 
bool isLockStep() const
Definition: CUObstacleWorld.h:228
 
Vec2 _gravity
Definition: CUObstacleWorld.h:93
 
void setVelocityIterations(int velocity)
Definition: CUObstacleWorld.h:273
 
std::function< void(b2Contact *contact, const b2ContactImpulse *impulse)> afterSolve
Definition: CUObstacleWorld.h:488
 
bool _lockstep
Definition: CUObstacleWorld.h:85
 
std::function< void(b2Contact *contact)> onBeginContact
Definition: CUObstacleWorld.h:436
 
void setGravity(const Vec2 &gravity)
 
b2World * getWorld()
Definition: CUObstacleWorld.h:219
 
void setLockStep(bool flag)
Definition: CUObstacleWorld.h:238
 
void PreSolve(b2Contact *contact, const b2Manifold *oldManifold) override
Definition: CUObstacleWorld.h:539
 
~ObstacleWorld()
Definition: CUObstacleWorld.h:125
 
const Vec2 & getGravity() const
Definition: CUObstacleWorld.h:296
 
static std::shared_ptr< ObstacleWorld > alloc(const Rect &bounds, const Vec2 &gravity)
Definition: CUObstacleWorld.h:198
 
void addObstacle(const std::shared_ptr< Obstacle > &obj)
 
void SayGoodbye(b2Fixture *fixture) override
Definition: CUObstacleWorld.h:688
 
std::function< bool(b2Fixture *fixtureA, b2Fixture *fixtureB)> shouldCollide
Definition: CUObstacleWorld.h:603
 
bool enabledFilterCallbacks() const
Definition: CUObstacleWorld.h:591
 
std::vector< std::shared_ptr< Obstacle > > _objects
Definition: CUObstacleWorld.h:96
 
void activateFilterCallbacks(bool flag)
 
void setPositionIterations(int position)
Definition: CUObstacleWorld.h:289
 
static std::shared_ptr< ObstacleWorld > alloc(const Rect &bounds)
Definition: CUObstacleWorld.h:181
 
void removeObstacle(Obstacle *obj)
 
void EndContact(b2Contact *contact) override
Definition: CUObstacleWorld.h:512
 
void SayGoodbye(b2Joint *joint) override
Definition: CUObstacleWorld.h:674
 
std::function< void(b2Contact *contact)> onEndContact
Definition: CUObstacleWorld.h:446
 
Definition: CUObstacleWorld.h:80
 
int _itposition
Definition: CUObstacleWorld.h:91
 
bool enabledCollisionCallbacks() const
Definition: CUObstacleWorld.h:426
 
const Rect & getBounds() const
Definition: CUObstacleWorld.h:328
 
int getPositionIterations() const
Definition: CUObstacleWorld.h:280
 
void rayCast(std::function< float(b2Fixture *fixture, const Vec2 &point, const Vec2 &normal, float fraction)> callback, const Vec2 &point1, const Vec2 &point2) const
 
Rect _bounds
Definition: CUObstacleWorld.h:99
 
int _itvelocity
Definition: CUObstacleWorld.h:89
 
bool inBounds(Obstacle *obj)
 
Definition: CUObstacle.h:76
 
std::function< void(b2Fixture *fixture)> destroyFixture
Definition: CUObstacleWorld.h:654
 
int getVelocityIterations() const
Definition: CUObstacleWorld.h:264
 
bool init(const Rect &bounds)
 
void setStepsize(float step)
Definition: CUObstacleWorld.h:257
 
b2World * _world
Definition: CUObstacleWorld.h:83
 
float getStepsize() const
Definition: CUObstacleWorld.h:247
 
void activateCollisionCallbacks(bool flag)
 
void queryAABB(std::function< bool(b2Fixture *fixture)> callback, const Rect &aabb) const
 
void activateDestructionCallbacks(bool flag)
 
const std::vector< std::shared_ptr< Obstacle > > & getObstacles()
Definition: CUObstacleWorld.h:349
 
bool ShouldCollide(b2Fixture *fixtureA, b2Fixture *fixtureB) override
Definition: CUObstacleWorld.h:615
 
std::function< void(b2Contact *contact, const b2Manifold *oldManifold)> beforeSolve
Definition: CUObstacleWorld.h:469
 
float _stepssize
Definition: CUObstacleWorld.h:87
 
std::function< void(b2Joint *joint)> destroyJoint
Definition: CUObstacleWorld.h:664
 
bool _destroy
Definition: CUObstacleWorld.h:106
 
void PostSolve(b2Contact *contact, const b2ContactImpulse *impulse) override
Definition: CUObstacleWorld.h:562
 
bool _collide
Definition: CUObstacleWorld.h:102
 
void BeginContact(b2Contact *contact) override
Definition: CUObstacleWorld.h:498
 
bool _filters
Definition: CUObstacleWorld.h:104