Cambios en el renderer para facilitar el uso de ImGui por ahí, fuera del propio renderer.
Implimentado un sistema de cámara y la consiguiente conversión entre WorldCoords y ScreenCoords.
This commit is contained in:
+40
-5
@@ -96,8 +96,9 @@ void Loop()
|
||||
{
|
||||
_quit = true;
|
||||
}
|
||||
if (eventHandler.type == SDL_WINDOWEVENT_RESIZED)
|
||||
if (eventHandler.type == SDL_WINDOWEVENT && eventHandler.window.event == SDL_WINDOWEVENT_RESIZED)
|
||||
{
|
||||
//GAME_LOG_CRITICAL("Window Size chaged {0}x{1}", eventHandler.window.data1, eventHandler.window.data2);
|
||||
Game::GetRenderer()->SetScreenSize(eventHandler.window.data1, eventHandler.window.data2);
|
||||
}
|
||||
if (eventHandler.type == SDL_KEYDOWN)
|
||||
@@ -125,12 +126,33 @@ void Loop()
|
||||
{
|
||||
GAME_LOG_TRACE("FPS: {0} / dT: {1}", 60, UE::Time::deltaTime);
|
||||
}
|
||||
if (keyStates[SDL_SCANCODE_1])
|
||||
|
||||
if (keyStates[SDL_SCANCODE_W])
|
||||
{
|
||||
glm::ivec2 camPos = Game::GetRenderer()->GetCamPosition();
|
||||
camPos.y -= 5;
|
||||
Game::GetRenderer()->SetCamPosition(camPos.x, camPos.y);
|
||||
}
|
||||
if (keyStates[SDL_SCANCODE_2])
|
||||
if (keyStates[SDL_SCANCODE_S])
|
||||
{
|
||||
glm::ivec2 camPos = Game::GetRenderer()->GetCamPosition();
|
||||
camPos.y += 5;
|
||||
Game::GetRenderer()->SetCamPosition(camPos.x, camPos.y);
|
||||
}
|
||||
if (keyStates[SDL_SCANCODE_D])
|
||||
{
|
||||
glm::ivec2 camPos = Game::GetRenderer()->GetCamPosition();
|
||||
camPos.x += 5;
|
||||
Game::GetRenderer()->SetCamPosition(camPos.x, camPos.y);
|
||||
}
|
||||
if (keyStates[SDL_SCANCODE_A])
|
||||
{
|
||||
glm::ivec2 camPos = Game::GetRenderer()->GetCamPosition();
|
||||
camPos.x -= 5;
|
||||
Game::GetRenderer()->SetCamPosition(camPos.x, camPos.y);
|
||||
}
|
||||
|
||||
Game::GetSceneManager()->GetActiveScenePtr()->SceneUpdate();
|
||||
|
||||
//Game::GetRenderer()->QueueDrawCall(4, DestR2, test1);
|
||||
//Game::GetRenderer()->QueueDrawCall(1, DestR, background);
|
||||
@@ -139,9 +161,22 @@ void Loop()
|
||||
//sp2.Draw(renderer);
|
||||
//sp3.Draw(Game::GetRenderer());
|
||||
//
|
||||
Game::GetSceneManager()->GetActiveScenePtr()->SceneUpdate();
|
||||
|
||||
Game::GetRenderer()->RenderFrame();
|
||||
//Iniciamos un nuevo Frame.
|
||||
Game::GetRenderer()->NewFrame();
|
||||
|
||||
//Renderiza la escena.
|
||||
Game::GetSceneManager()->GetActiveScenePtr()->SceneRender();
|
||||
|
||||
//Así podemos renderizar cosas de ImGui cuando estemos entre NewFrame y EndFrame.
|
||||
bool show = true;
|
||||
ImGui::ShowDemoWindow(&show);
|
||||
|
||||
//Dibuja las cosas del Renderer.
|
||||
Game::GetRenderer()->RenderData();
|
||||
|
||||
//Terminamos el Frame.
|
||||
Game::GetRenderer()->EndFrame();
|
||||
|
||||
UE::Time::EndFrame();
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ public:
|
||||
|
||||
void SceneUpdate() override
|
||||
{
|
||||
UE_LOG_INFO("Escena {0} UPDATE", _sceneName);
|
||||
//UE_LOG_INFO("Escena {0} UPDATE", _sceneName);
|
||||
|
||||
UE::Renderer* renderer;
|
||||
renderer = Game::GetRenderer();
|
||||
@@ -51,18 +51,22 @@ public:
|
||||
|
||||
UE::Sprite& sp1 = sprites.at(0);
|
||||
glm::vec2 pos = sp1.GetPosition();
|
||||
if (pos.x > screenSize.x) { pos.x -= 1000; }
|
||||
if (pos.x > screenSize.x) { pos.x = 0; }
|
||||
else { pos.x += 200 * UE::Time::deltaTime; }
|
||||
|
||||
sp1.SetPosition(pos);
|
||||
|
||||
}
|
||||
|
||||
void SceneRender() override
|
||||
{
|
||||
UE::Renderer* renderer;
|
||||
renderer = Game::GetRenderer();
|
||||
|
||||
for (UE::Sprite sp : sprites)
|
||||
{
|
||||
renderer->Render(sp);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void SceneUnload() override
|
||||
|
||||
Reference in New Issue
Block a user