bool PhysicsWorld::init(Scene& scene)
{
    do
    {
        _delayAddBodies = Array::create();
        _delayRemoveBodies = Array::create();
        CC_BREAK_IF(_delayAddBodies == nullptr || _delayRemoveBodies == nullptr);
        _delayAddBodies->retain();
        _delayRemoveBodies->retain();
        
        _info = new PhysicsWorldInfo();
        CC_BREAK_IF(_info == nullptr);
        _bodies = Array::create();
        CC_BREAK_IF(_bodies == nullptr);
        _bodies->retain();

        _scene = &scene;
        
        cpSpaceSetGravity(_info->getSpace(), PhysicsHelper::point2cpv(_gravity));
        
        cpSpaceSetDefaultCollisionHandler(_info->getSpace(),
                                          (cpCollisionBeginFunc)PhysicsWorldCallback::collisionBeginCallbackFunc,
                                          (cpCollisionPreSolveFunc)PhysicsWorldCallback::collisionPreSolveCallbackFunc,
                                          (cpCollisionPostSolveFunc)PhysicsWorldCallback::collisionPostSolveCallbackFunc,
                                          (cpCollisionSeparateFunc)PhysicsWorldCallback::collisionSeparateCallbackFunc,
                                          this);
        
        return true;
    } while (false);
    
    return false;
}
Beispiel #2
0
Space::Space() :
    _space(&_theSpace)
{
    cpSpaceInit(_space);
    cpSpaceSetUserData(_space, this);
    cpSpaceSetDefaultCollisionHandler(_space, beginFunc, preSolveFunc, postSolveFunc, separateFunc, 0);
}
bool PhysicsWorld::init()
{
    _info = new PhysicsWorldInfo();
    
    cpSpaceSetGravity(_info->space, PhysicsHelper::point2cpv(_gravity));
    
    cpSpaceSetDefaultCollisionHandler(_info->space,
                                      PhysicsWorld::collisionBeginCallbackFunc,
                                      PhysicsWorld::collisionPreSolveCallbackFunc,
                                      PhysicsWorld::collisionPostSolveCallbackFunc,
                                      PhysicsWorld::collisionSeparateCallbackFunc,
                                      this);
    
    return true;
}
bool PhysicsWorld::init()
{
    do
    {
        _cpSpace = cpSpaceNew();
        CC_BREAK_IF(_cpSpace == nullptr);
        
        cpSpaceSetGravity(_cpSpace, PhysicsHelper::point2cpv(_gravity));
        
        cpSpaceSetDefaultCollisionHandler(_cpSpace,
                                          (cpCollisionBeginFunc)PhysicsWorldCallback::collisionBeginCallbackFunc,
                                          (cpCollisionPreSolveFunc)PhysicsWorldCallback::collisionPreSolveCallbackFunc,
                                          (cpCollisionPostSolveFunc)PhysicsWorldCallback::collisionPostSolveCallbackFunc,
                                          (cpCollisionSeparateFunc)PhysicsWorldCallback::collisionSeparateCallbackFunc,
                                          this);
        
        return true;
    } while (false);
    
    return false;
}
Beispiel #5
0
bool PhysicsWorld::init(Scene& scene)
{
    do
    {
        _info = new PhysicsWorldInfo();
        CC_BREAK_IF(_info == nullptr);
        
        _scene = &scene;
        
        _info->setGravity(_gravity);
        
        cpSpaceSetDefaultCollisionHandler(_info->getSpace(),
                                          (cpCollisionBeginFunc)PhysicsWorldCallback::collisionBeginCallbackFunc,
                                          (cpCollisionPreSolveFunc)PhysicsWorldCallback::collisionPreSolveCallbackFunc,
                                          (cpCollisionPostSolveFunc)PhysicsWorldCallback::collisionPostSolveCallbackFunc,
                                          (cpCollisionSeparateFunc)PhysicsWorldCallback::collisionSeparateCallbackFunc,
                                          this);
        
        return true;
    } while (false);
    
    return false;
}
Beispiel #6
0
void Space::setDefaultCollisionHandler(cpCollisionBeginFunc begin,cpCollisionPreSolveFunc preSolve,cpCollisionPostSolveFunc postSolve,cpCollisionSeparateFunc separate,void *data)
{
		cpSpaceSetDefaultCollisionHandler(space,begin,preSolve,postSolve,separate,data);
}