//============================================================================= // ゲーム //============================================================================= void CCamera :: SceneGame(void) { int phase = CGame::GetPhase(); switch (phase) { case START_PHASE: StartCamera(); break; case SCENARIO_PHASE:ShotCamera(); break; case ANGLE_PHASE: ShotCamera(); break; case POWER_PHASE: PowerCamera(); break; case MOVE_PHASE: MoveCamera(); break; case JUDGE_PHASE: JudgeCamera(); break; case END_PHASE: JudgeCamera(); break; case CHANGE_PHASE: ChangeCamera(); break; } }
void CPlayer::Initalize() { this->SetPlayerUpdatedContext(FRAMEWORK->GetInstance()->m_pScene->m_ppShaders[SHADER_TERRA]->m_pTerrain); this->SetCameraUpdatedContext(FRAMEWORK->GetInstance()->m_pScene->m_ppShaders[SHADER_TERRA]->m_pTerrain); ChangeCamera(FRAMEWORK->GetInstance()->m_pd3dDevice, THIRD_PERSON_CAMERA, FRAMEWORK->GetInstance()->m_GameTimer.GetTimeElapsed()); m_pCamera->CreateShaderVariables(FRAMEWORK->GetInstance()->m_pd3dDevice); m_pCamera->SetViewPort(FRAMEWORK->GetInstance()->m_pd3dDeviceContext, 0, 0, FRAMEWORK->GetInstance()->m_nWndClientWidth, FRAMEWORK->GetInstance()->m_nWndClientHeight, 0.0f, 1.0f); m_pCamera->GenerateProjectionMatrix(1.0f, 5000.0f, float(FRAMEWORK->GetInstance()->m_nWndClientWidth) / float(FRAMEWORK->GetInstance()->m_nWndClientHeight), 60.0f); m_pCamera->GenerateViewMatrix(); m_pCamera->CreateShaderVariables(FRAMEWORK->GetInstance()->m_pd3dDevice); //ChangeCamera(FRAMEWORK->GetInstance()->m_pd3dDevice, THIRD_PERSON_CAMERA, FRAMEWORK->GetInstance()->m_GameTimer.GetTimeElapsed()); }
CCamera* CViacamController::SetUpCamera() { CCamera* cam; int numDevices; int camId= -1; // Load app local data ReadAppData(wxConfigBase::Get()); numDevices= CCameraEnum::GetNumDevices (); if (numDevices== 0) { wxMessageDialog errorMsg (NULL, _("Not detected any camera. Aborting"), _T("Enable Viacam"), wxOK | wxICON_ERROR); errorMsg.ShowModal(); return NULL; } // Try to find previously used camera if (m_cameraName.Length()> 0) { for (camId= 0; camId< numDevices; camId++) if (wxString(CCameraEnum::GetDeviceName (camId), wxConvLibc)== m_cameraName) break; if (camId== numDevices) camId= -1; // Not found } // Show selection dialog when needed if (camId== -1) { if(numDevices > 1) { wxArrayString strArray; for (camId= 0; camId< numDevices; camId++) strArray.Add (wxString(CCameraEnum::GetDeviceName (camId), wxConvLibc)); wxSingleChoiceDialog choiceDlg(NULL, _("Choose the camera to use"), _T("Enable Viacam"), strArray, NULL, wxDEFAULT_DIALOG_STYLE | wxOK | wxCANCEL | wxCENTRE); if (choiceDlg.ShowModal ()!= wxID_OK) return NULL; camId= choiceDlg.GetSelection(); m_cameraName= choiceDlg.GetStringSelection (); } else { camId= 0; m_cameraName= wxString(CCameraEnum::GetDeviceName (camId), wxConvLibc); } } cam= CCameraEnum::GetCamera(camId); if (!cam) return NULL; cam->SetHorizontalFlip (true); // Try to open the camera to ensure it works if (!cam->Open ()) { wxMessageDialog errorMsg (NULL, _("Can not initialize the camera.\nPerhaps is being used by other application."), _T("Enable Viacam"), wxOK | wxICON_ERROR); errorMsg.ShowModal(); delete cam; cam= NULL; ChangeCamera(); } else cam->Close(); WriteAppData(wxConfigBase::Get()); wxConfigBase::Get()->Flush(); return cam; }