void CShadowController::Tick(float deltaTime) { if (m_enable) { ComputeShadowControllerBull(m_pObject->GetObject(), m_shadow, m_secondsToArrival, deltaTime); m_secondsToArrival -= deltaTime; if (m_secondsToArrival < 0) m_secondsToArrival = 0; } else { m_shadow.lastPosition.setZero(); } }
// UNEXPOSED void CShadowController::Tick(float deltaTime) { if (m_enable) { if (IsPhysicallyControlled()) { ComputeShadowControllerBull(m_pObject->GetObject(), m_shadow, m_secondsToArrival, deltaTime); m_secondsToArrival -= deltaTime; if (m_secondsToArrival < 0) m_secondsToArrival = 0; } else { // TODO: Need to use secondsToArrival btTransform target(m_shadow.targetRotation, m_shadow.targetPosition); target *= ((btMassCenterMotionState *)m_pObject->GetObject()->getMotionState())->m_centerOfMassOffset; m_pObject->GetObject()->setWorldTransform(target); } } else { m_shadow.lastPosition.setZero(); } m_ticksSinceUpdate++; }
float ComputeShadowControllerHL(CPhysicsObject *pObject, const hlshadowcontrol_params_t ¶ms, float secondsToArrival, float dt) { shadowcontrol_params_t bullParams; ConvertShadowControllerToBull(params, bullParams); return ComputeShadowControllerBull(pObject->GetObject(), bullParams, secondsToArrival, dt); }