コード例 #1
0
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);
}
コード例 #2
0
ファイル: body.cpp プロジェクト: r4gg4rs/StreetRaces
void Body::Simulate(real dt)
{
	m_acceleration = m_force * m_inverseMass;
	m_velocity += m_acceleration;
	m_position += m_velocity;
	ClearForce();
}
コード例 #3
0
ファイル: RigidBody.cpp プロジェクト: zwagoth/PhysX.net
void RigidBody::ClearForce()
{
    ClearForce(ForceMode::Force, true);
}