Exemplo n.º 1
0
 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();
 }
Exemplo n.º 5
0
void Space::reindexStatic()
{
		cpSpaceReindexStatic(space);
}