void Rotating::UpdateSpinUp() { CServerDE* pServerDE = BaseClass::GetServerDE(); if (!pServerDE) return; DBOOL bXDone = DFALSE, bYDone = DFALSE, bZDone = DFALSE; DFLOAT fDeltaTime = pServerDE->GetFrameTime(); // Calculate current velocity... m_vSpinTimeLeft.x -= fDeltaTime; if (m_vSaveVelocity.x > 0.0f && m_vSpinTimeLeft.x >= 0.0f) { m_vVelocity.x = m_vSaveVelocity.x * (m_vSpinUpTime.x - m_vSpinTimeLeft.x) / m_vSpinUpTime.x; } else { m_vVelocity.x = m_vSaveVelocity.x; bXDone = DTRUE; } m_vSpinTimeLeft.y -= fDeltaTime; if (m_vSaveVelocity.y > 0.0f && m_vSpinTimeLeft.y >= 0.0f) { m_vVelocity.y = m_vSaveVelocity.y * (m_vSpinUpTime.y - m_vSpinTimeLeft.y) / m_vSpinUpTime.y; } else { m_vVelocity.y = m_vSaveVelocity.y; bYDone = DTRUE; } m_vSpinTimeLeft.z -= fDeltaTime; if (m_vSaveVelocity.z > 0.0f && m_vSpinTimeLeft.z >= 0.0f) { m_vVelocity.z = m_vSaveVelocity.z * (m_vSpinUpTime.z - m_vSpinTimeLeft.z) / m_vSpinUpTime.z; } else { m_vVelocity.z = m_vSaveVelocity.z; bZDone = DTRUE; } // Call normal update to do the work... UpdateNormalRotation(); if (bXDone && bYDone && bZDone) { SetNormalRotation(); } }
void RotatingWorldModel::InitialUpdate() { uint32 dwUsrFlgs = g_pLTServer->GetObjectUserFlags(m_hObject); g_pLTServer->SetObjectUserFlags(m_hObject, dwUsrFlgs | USRFLG_MOVEABLE); if (m_eState != RWM_OFF) { SetNextUpdate(RWM_UPDATE_DELTA); SetNormalRotation(); } VEC_COPY(m_vSaveVelocity, m_vVelocity); }
void Rotating::InitialUpdate() { CServerDE* pServerDE = BaseClass::GetServerDE(); if (!pServerDE) return; if (m_eState != RWM_OFF) { // pServerDE->SetNextUpdate(m_hObject, RWM_UPDATE_DELTA); SetNormalRotation(); } VEC_COPY(m_vSaveVelocity, m_vVelocity); }
void RotatingWorldModel::UpdateSpinUp() { LTBOOL bXDone = LTFALSE, bYDone = LTFALSE, bZDone = LTFALSE; LTFLOAT fDeltaTime = g_pLTServer->GetFrameTime(); // Calculate current velocity... m_vSpinTimeLeft.x -= fDeltaTime; if (m_vSaveVelocity.x > 0.0f && m_vSpinTimeLeft.x >= 0.0f) { m_vVelocity.x = m_vSaveVelocity.x * (m_vSpinUpTime.x - m_vSpinTimeLeft.x) / m_vSpinUpTime.x; } else { m_vVelocity.x = m_vSaveVelocity.x; bXDone = LTTRUE; } m_vSpinTimeLeft.y -= fDeltaTime; if (m_vSaveVelocity.y > 0.0f && m_vSpinTimeLeft.y >= 0.0f) { m_vVelocity.y = m_vSaveVelocity.y * (m_vSpinUpTime.y - m_vSpinTimeLeft.y) / m_vSpinUpTime.y; } else { m_vVelocity.y = m_vSaveVelocity.y; bYDone = LTTRUE; } m_vSpinTimeLeft.z -= fDeltaTime; if (m_vSaveVelocity.z > 0.0f && m_vSpinTimeLeft.z >= 0.0f) { m_vVelocity.z = m_vSaveVelocity.z * (m_vSpinUpTime.z - m_vSpinTimeLeft.z) / m_vSpinUpTime.z; } else { m_vVelocity.z = m_vSaveVelocity.z; bZDone = LTTRUE; } // Call normal update to do the work... UpdateNormalRotation(); if (bXDone && bYDone && bZDone) { SetNormalRotation(); } }