void CModel::UpdateMatrices() { // Rotation D3DXMATRIX translation; D3DXMATRIX scale; D3DXMATRIX matrixRotationX; D3DXMATRIX matrixRotationY; D3DXMATRIX matrixRotationZ; // Calculate the rotation of the model. float rotX = (GetRotationX() * PrioEngine::kPi) / 180.0f; float rotY = (GetRotationY() * PrioEngine::kPi) / 180.0f; float rotZ = (GetRotationZ() * PrioEngine::kPi) / 180.0f; D3DXMatrixRotationX(&matrixRotationX, rotX); D3DXMatrixRotationY(&matrixRotationY, rotY); D3DXMatrixRotationZ(&matrixRotationZ, rotZ); // Calculate scaling. D3DXMatrixScaling(&scale, GetScaleX(), GetScaleY(), GetScaleZ()); // Calculate the translation of the model. D3DXMatrixTranslation(&translation, GetPosX(), GetPosY(), GetPosZ()); // Calculate the world matrix mWorldMatrix = scale * matrixRotationX * matrixRotationY * matrixRotationZ * translation; }
// Makes the track go backward to give the impression of movement void RaceTrack::MovementOfTrack() { SetRotationZ(GetRotationZ() + 5.0f * gTimer->GetDeltaTime()); SetPosition(GetPosition().x, GetPosition().y, GetPosition().z - 2000.0f * gTimer->GetDeltaTime()); }