void CPhysicsObject::EnableGravity(bool enable) { if (IsGravityEnabled() == enable || IsStatic()) return; if (enable) { m_pObject->setGravity(m_pEnv->GetBulletEnvironment()->getGravity()); m_pObject->setFlags(m_pObject->getFlags() & ~BT_DISABLE_WORLD_GRAVITY); } else { m_pObject->setGravity(btVector3(0,0,0)); m_pObject->setFlags(m_pObject->getFlags() | BT_DISABLE_WORLD_GRAVITY); } }
void CPhysicsObject::EnableGravity( bool enable ) { if ( IsStatic() ) return; bool isEnabled = IsGravityEnabled(); if ( enable == isEnabled ) return; IVP_Controller *pGravity = m_pObject->get_core()->environment->get_gravity_controller(); if ( enable ) { m_pObject->get_core()->add_core_controller( pGravity ); } else { m_pObject->get_core()->rem_core_controller( pGravity ); } }
void CPhysicsObject::WriteToTemplate( vphysics_save_cphysicsobject_t &objectTemplate ) { if ( m_collideType == COLLIDE_BALL ) { objectTemplate.pCollide = NULL; objectTemplate.sphereRadius = GetSphereRadius(); } else { objectTemplate.pCollide = GetCollide(); objectTemplate.sphereRadius = 0; } objectTemplate.isStatic = IsStatic(); objectTemplate.collisionEnabled = IsCollisionEnabled(); objectTemplate.gravityEnabled = IsGravityEnabled(); objectTemplate.dragEnabled = IsDragEnabled(); objectTemplate.motionEnabled = IsMotionEnabled(); objectTemplate.isAsleep = IsAsleep(); objectTemplate.isTrigger = IsTrigger(); objectTemplate.materialIndex = m_materialIndex; objectTemplate.mass = GetMass(); objectTemplate.rotInertia = GetInertia(); GetDamping( &objectTemplate.speedDamping, &objectTemplate.rotSpeedDamping ); objectTemplate.massCenterOverride = m_massCenterOverride; objectTemplate.callbacks = m_callbacks; objectTemplate.gameFlags = m_gameFlags; objectTemplate.volume = GetVolume(); objectTemplate.dragCoefficient = m_dragCoefficient; objectTemplate.angDragCoefficient = m_angDragCoefficient; objectTemplate.pShadow = m_pShadow; objectTemplate.hasShadowController = (m_pShadow != NULL) ? true : false; //bool m_shadowTempGravityDisable; objectTemplate.collideType = m_collideType; objectTemplate.contentsMask = m_contentsMask; GetPosition( &objectTemplate.origin, &objectTemplate.angles ); GetVelocity( &objectTemplate.velocity, &objectTemplate.angVelocity ); }