public CCPhysicsWorld(CCScene scene) { _gravity = new CCPoint(0.0f, -98.0f); _speed = 1.0f; _updateRate = 1; _updateRateCount = 0; _updateTime = 0.0f; _info = null; _scene = null; _delayDirty = false; _info = new CCPhysicsWorldInfo(); _scene = scene; _info.SetGravity(PhysicsHelper.CCPointToCpVect(_gravity)); var spc = _info.getSpace(); spc.defaultHandler = new cpCollisionHandler() { beginFunc = (a, s, o) => CCPhysicsWorldCallback.CollisionBeginCallbackFunc(a as cpArbiter, s, this), preSolveFunc = (a, s, o) => CCPhysicsWorldCallback.CollisionPreSolveCallbackFunc(a as cpArbiter, s, this), postSolveFunc = (a, s, o) => CCPhysicsWorldCallback.CollisionPostSolveCallbackFunc(a as cpArbiter, s, this), separateFunc = (a, s, o) => CCPhysicsWorldCallback.CollisionSeparateCallbackFunc(a as cpArbiter, s, this) }; }
/** set the gravity value */ public void SetGravity(CCPoint gravity) { if (_bodies.Count > 0) { foreach (var body in _bodies) { // reset gravity for body if (!body.IsGravityEnabled()) { body.ApplyForce(PhysicsHelper.CCPointToCpVect((_gravity - gravity)) * body.GetMass()); } } } _gravity = gravity; _info.SetGravity(PhysicsHelper.CCPointToCpVect(gravity)); }