void Camera::ResetCameraToLight() { // Reset camera. DirectX::XMFLOAT3 target = DirectX::XMFLOAT3(0, 0, 0); DirectX::XMFLOAT3 position = DirectX::XMFLOAT3(25.0f, 100.0f, 50.0f); UpdatePosition(position); UpdateTarget(target); m_upVector = DirectX::XMFLOAT3(-25.0f, 100.0f, -50.0f); DirectX::XMStoreFloat3(&m_upVector, DirectX::XMVector3Normalize(DirectX::XMLoadFloat3(&m_upVector))); m_look = DirectX::XMFLOAT3(-25.0f, -100.0f, -50.0f); DirectX::XMStoreFloat3(&m_look, DirectX::XMVector3Normalize(DirectX::XMLoadFloat3(&m_look))); m_right = DirectX::XMFLOAT3(25.0f, 0.0f, -50.0f); DirectX::XMStoreFloat3(&m_right, DirectX::XMVector3Normalize(DirectX::XMLoadFloat3(&m_right))); // Projection data. float aspectRatio = (float)GLOBAL::GetInstance().MAX_SCREEN_WIDTH / (float)GLOBAL::GetInstance().MAX_SCREEN_HEIGHT; UpdateAspectRatio(aspectRatio); UpdateFieldOfView(3.141592f * 0.25f); UpdateClippingPlanes(0.1f, 1000.0f); UpdateViewMatrix(); UpdateProjectionMatrix(true); GraphicsEngine::SetLightViewAndProjection(GetViewMatrix(), GetProjectionMatrix()); }
void Ys3DDrawingEnvironment::SetViewportByTwoCorner(int x0,int y0,int x1,int y1) { if(YSTRUE==screenOriginIsTopLeft) { y0=windowHeight-y0; y1=windowHeight-y1; } if(x0<x1) { viewport[0]=x0; viewport[2]=x1-x0; } else { viewport[0]=x1; viewport[2]=x0-x1; } if(y0<y1) { viewport[1]=y0; viewport[3]=y1-y0; } else { viewport[1]=y1; viewport[3]=y0-y1; } UpdateAspectRatio(); }
void Camera::ToggleFullscreen(bool p_fullscreen) { GLOBAL::GetInstance().SWITCHING_SCREEN_MODE = true; if (p_fullscreen) { // Go to fullscreen GLOBAL::GetInstance().CURRENT_SCREEN_WIDTH = GLOBAL::GetInstance().MAX_SCREEN_WIDTH; GLOBAL::GetInstance().CURRENT_SCREEN_HEIGHT = GLOBAL::GetInstance().MAX_SCREEN_HEIGHT; SetWindowPos(GraphicsEngine::GetWindowHandle(), HWND_TOP, 0, 0, GLOBAL::GetInstance().CURRENT_SCREEN_WIDTH, GLOBAL::GetInstance().CURRENT_SCREEN_HEIGHT, SWP_SHOWWINDOW); //GraphicsEngine::GetInstance()->ToggleFullscreen(true); // Update aspect ratio. float aspectRatio = (float)GLOBAL::GetInstance().CURRENT_SCREEN_WIDTH / (float)GLOBAL::GetInstance().CURRENT_SCREEN_HEIGHT; UpdateAspectRatio(aspectRatio); UpdateProjectionMatrix(false); GraphicsEngine::SetViewAndProjection(GetViewMatrix(), GetProjectionMatrix()); // Set both window positions. HWND console = GetConsoleWindow(); MoveWindow(console, GLOBAL::GetInstance().CURRENT_SCREEN_WIDTH, 0, 670, 1000, true); } else { // Go to windowed mode. GLOBAL::GetInstance().CURRENT_SCREEN_WIDTH = GLOBAL::GetInstance().MIN_SCREEN_WIDTH; GLOBAL::GetInstance().CURRENT_SCREEN_HEIGHT = GLOBAL::GetInstance().MIN_SCREEN_HEIGHT; //GraphicsEngine::GetInstance()->ToggleFullscreen(false); // Update aspect ratio. float aspectRatio = (float)GLOBAL::GetInstance().CURRENT_SCREEN_WIDTH / (float)GLOBAL::GetInstance().CURRENT_SCREEN_HEIGHT; UpdateAspectRatio(aspectRatio); UpdateProjectionMatrix(false); GraphicsEngine::SetViewAndProjection(GetViewMatrix(), GetProjectionMatrix()); // Set both window positions. HWND console = GetConsoleWindow(); MoveWindow(console, GLOBAL::GetInstance().CURRENT_SCREEN_WIDTH, 0, 670, 1000, true); SetWindowPos(GraphicsEngine::GetWindowHandle(), HWND_TOP, 0, 0, GLOBAL::GetInstance().CURRENT_SCREEN_WIDTH, GLOBAL::GetInstance().CURRENT_SCREEN_HEIGHT, SWP_SHOWWINDOW); } GLOBAL::GetInstance().SWITCHING_SCREEN_MODE = false; }