void OnEndUpdate (dFloat timestepInSecunds) { DemoCamera* const camera = m_scene->GetCamera(); dMatrix camMatrix(camera->GetNextMatrix()); dMatrix playerMatrix (m_player->GetNextMatrix()); dVector frontDir (camMatrix[0]); CustomPlayerController* const controller = m_player->m_controller; dFloat height = controller->GetHigh(); dVector upDir (controller->GetUpDir()); dVector camOrigin(0.0f); if (m_player->m_inputs.m_cameraMode) { // set third person view camera camOrigin = playerMatrix.TransformVector (upDir.Scale(height)); camOrigin -= frontDir.Scale (PLAYER_THIRD_PERSON_VIEW_DIST); } else { // set first person view camera camMatrix = camMatrix * playerMatrix; camOrigin = playerMatrix.TransformVector (upDir.Scale(height)); } camera->SetNextMatrix (*m_scene, camMatrix, camOrigin); // update the shot button if (m_shootState) { SpawnRandomProp (camera->GetNextMatrix()); } }
void SetCamera() { if (m_player) { DemoEntityManager* const scene = (DemoEntityManager*)NewtonWorldGetUserData(GetWorld()); DemoCamera* const camera = scene->GetCamera(); dMatrix camMatrix(camera->GetNextMatrix()); DemoEntity* player = (DemoEntity*)NewtonBodyGetUserData(m_player->GetBody()); dMatrix playerMatrix(player->GetNextMatrix()); dFloat height = 2.0f; dVector frontDir(camMatrix[0]); dVector upDir(0.0f, 1.0f, 0.0f, 0.0f); dVector camOrigin = playerMatrix.TransformVector(upDir.Scale(height)); camOrigin -= frontDir.Scale(PLAYER_THIRD_PERSON_VIEW_DIST); camera->SetNextMatrix(*scene, camMatrix, camOrigin); } }
void UpdateCamera (dFloat timestep) { if (m_player) { DemoEntityManager* const scene = (DemoEntityManager*) NewtonWorldGetUserData(GetWorld()); DemoCamera* const camera = scene->GetCamera(); dMatrix camMatrix (camera->GetNextMatrix ()); dMatrix playerMatrix (m_player->GetNextMatrix()); dVector frontDir (camMatrix[0]); dVector camOrigin; if (m_externalView) { camOrigin = playerMatrix.m_posit + dVector(0.0f, VEHICLE_THIRD_PERSON_VIEW_HIGHT, 0.0f, 0.0f); camOrigin -= frontDir.Scale (VEHICLE_THIRD_PERSON_VIEW_DIST); } else { dAssert (0); // camMatrix = camMatrix * playerMatrix; // camOrigin = playerMatrix.TransformVector(dVector(-0.8f, ARTICULATED_VEHICLE_CAMERA_EYEPOINT, 0.0f, 0.0f)); } camera->SetNextMatrix (*scene, camMatrix, camOrigin); } }