#include "CoreHandler.h" #include using namespace std; CoreHandler::CoreHandler(Window& window, Logger& logger) { // init local variable seed = 0.0f; seed = int(seed) % 10000; }; void CoreHandler::CoreProcess(Window& window, Graphics& gfx, HWND& hWnd, Logger& logger) { // Process event while (!Window::mouse.IsQueueEmpty()) { auto mouseEvent = Window::mouse.ReadEvent(); switch (mouseEvent.GetType()) { case (Mouse::MouseEvent::Type::Move): { std::ostringstream oss; oss << "(" << mouseEvent.GetX() << "," << mouseEvent.GetY() << "): Mouse Moved"; // Check if drag by right button if (Window::mouse.IsRightClicked()) { cameraDeltaX = Window::mouse.GetRightDragDeltaX(); cameraDeltaY = Window::mouse.GetRightDragDeltaY(); } oss << " | ViewAt(" << cameraX << "," << cameraY << ")"; oss << " | Dragging(" << cameraDeltaX << "," << cameraDeltaY << ")"; oss << " | vSinValue(" << sin((cameraY + cameraDeltaY) / 100.0f) << ")"; window.SetTitle(hWnd, oss.str()); break; } case (Mouse::MouseEvent::Type::LClick): { std::ostringstream oss; oss << "(" << mouseEvent.GetX() << "," << mouseEvent.GetY() << "): Mouse Left Clicked"; window.SetTitle(hWnd, oss.str()); break; } case (Mouse::MouseEvent::Type::LRelease): { std::ostringstream oss; oss << "(" << mouseEvent.GetX() << "," << mouseEvent.GetY() << "): Mouse Left Released"; window.SetTitle(hWnd, oss.str()); break; } case (Mouse::MouseEvent::Type::RClick): { std::ostringstream oss; oss << "(" << mouseEvent.GetX() << "," << mouseEvent.GetY() << "): Mouse Right Clicked"; window.SetTitle(hWnd, oss.str()); break; } case (Mouse::MouseEvent::Type::RRelease): { std::ostringstream oss; cameraX += cameraDeltaX; cameraY += cameraDeltaY; cameraDeltaX = 0; cameraDeltaY = 0; oss << "(" << mouseEvent.GetX() << "," << mouseEvent.GetY() << "): Mouse Right Released"; window.SetTitle(hWnd, oss.str()); break; } } } // Display background and set depthstencil window.GetGfx().RendorFrame(); // Set camera SetCamera(window, logger); // Draw all scenes window.DrawScenes(window.GetGfx(), logger); // Set view port and present window.GetGfx().EndFrame(); }; void CoreHandler::SetCamera(Window& window, Logger& logger) { // Put camera calculation logic here /*seed++; auto dt = sin(seed / 1000); logger.PutLog("seed", std::to_string(seed)); logger.PutLog("dt", std::to_string(dt)); auto sinValue = sin(seed / 5000); auto cosValue = cos(seed / 5000); // Set camera DirectX::XMVECTOR eyePosition = DirectX::XMVectorSet(5.0f * sinValue, 3.0f, -5.0f * cosValue, 1.0f); DirectX::XMVECTOR focusPosition = DirectX::XMVectorZero(); DirectX::XMVECTOR upDirection = DirectX::XMVectorSet(0.0f, 1.0f, 0.0f, 1.0f);*/ float radius = 5.0f; auto vSinValue = sin((cameraY + cameraDeltaY) / 100.0f); auto vCosValue = cos((cameraY + cameraDeltaY) / 100.0f); float eyePosY = radius * vSinValue; float hRadius = radius * vCosValue; // horizon radius auto sinValue = sin((cameraX + cameraDeltaX) / 100.0f); auto cosValue = cos((cameraX + cameraDeltaX) / 100.0f); DirectX::XMVECTOR eyePosition = DirectX::XMVectorSet(-hRadius * sinValue, eyePosY, hRadius * cosValue, 1.0f); DirectX::XMVECTOR focusPosition = DirectX::XMVectorZero(); DirectX::XMVECTOR upDirection = DirectX::XMVectorSet(0.0f, 1.0f, 0.0f, 1.0f); window.GetGfx().SetCamera(logger, eyePosition, focusPosition, upDirection); }