void RigidBody::Update(f32 dt) { PhysicsPlayground& playground = SystemLocator::GetInstance()->RequestSystem<PhysicsPlayground>("PhysicsPlayground"); //Add gravity to force accumulator if(playground.IsGravityEnabled()) { m_ForceAccumulator += playground.GetAcceleratedGravity(); } XCVec4 currentAcceleration = m_Acceleration; //Update the position m_position += (m_velocity * dt); //Update the Resulting Acceleration currentAcceleration += m_ForceAccumulator * m_inverseMass; //Update linear Velocity m_velocity += currentAcceleration * dt; //Impose Draging force m_velocity *= (f32)pow(m_damping, dt); ClearForce(); //Update the bound volume m_physicsBoundVolume->Transform(m_position, m_orientation); }
void Body::Simulate(real dt) { m_acceleration = m_force * m_inverseMass; m_velocity += m_acceleration; m_position += m_velocity; ClearForce(); }
void RigidBody::ClearForce() { ClearForce(ForceMode::Force, true); }