void CDynamics2DEngine::Reset() { for(CDynamics2DModel::TMap::iterator it = m_tPhysicsModels.begin(); it != m_tPhysicsModels.end(); ++it) { it->second->Reset(); } cpSpaceReindexStatic(m_ptSpace); }
CDynamics2DBoxEntity::~CDynamics2DBoxEntity() { if(m_ptBody != NULL) { cpSpaceRemoveConstraint(m_cEngine.GetPhysicsSpace(), m_ptLinearFriction); cpSpaceRemoveConstraint(m_cEngine.GetPhysicsSpace(), m_ptAngularFriction); cpConstraintFree(m_ptLinearFriction); cpConstraintFree(m_ptAngularFriction); cpSpaceRemoveBody(m_cEngine.GetPhysicsSpace(), m_ptBody); cpBodyFree(m_ptBody); cpSpaceRemoveShape(m_cEngine.GetPhysicsSpace(), m_ptShape); } else { cpSpaceRemoveStaticShape(m_cEngine.GetPhysicsSpace(), m_ptShape); cpSpaceReindexStatic(m_cEngine.GetPhysicsSpace()); } cpShapeFree(m_ptShape); }
CDynamics2DSingleBodyObjectModel::~CDynamics2DSingleBodyObjectModel() { bool bIsStatic = cpBodyIsStatic(m_ptBody); /* Dispose of shapes */ for(cpShape* pt_shape = m_ptBody->shapeList; pt_shape != NULL; pt_shape = pt_shape->next) { cpSpaceRemoveShape(GetDynamics2DEngine().GetPhysicsSpace(), pt_shape); cpShapeFree(pt_shape); } /* Dispose of body */ if(! bIsStatic) cpSpaceRemoveBody(GetDynamics2DEngine().GetPhysicsSpace(), m_ptBody); cpBodyFree(m_ptBody); /* Reindex space */ if(bIsStatic) cpSpaceReindexStatic(GetDynamics2DEngine().GetPhysicsSpace()); }
void CDynamics2DSingleBodyObjectModel::MoveTo(const CVector3& c_position, const CQuaternion& c_orientation) { /* Move the body to the desired position */ m_ptBody->p = cpv(c_position.GetX(), c_position.GetY()); CRadians cXAngle, cYAngle, cZAngle; c_orientation.ToEulerAngles(cZAngle, cYAngle, cXAngle); cpBodySetAngle(m_ptBody, cZAngle.GetValue()); /* Update shape index */ if(cpBodyIsStatic(m_ptBody)) { cpBB tBoundingBox = cpShapeGetBB(m_ptBody->shapeList); cpSpaceReindexStatic(GetDynamics2DEngine().GetPhysicsSpace()); tBoundingBox = cpShapeGetBB(m_ptBody->shapeList); } else { cpSpaceReindexShapesForBody(GetDynamics2DEngine().GetPhysicsSpace(), m_ptBody); } /* Update ARGoS entity state */ CDynamics2DModel::UpdateEntityStatus(); }
void Space::reindexStatic() { cpSpaceReindexStatic(space); }