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:
2022-01-31 20:59:07 +01:00
parent 92f743edf2
commit 77d78db774
5 changed files with 119 additions and 74 deletions
+40 -5
View File
@@ -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();
+8 -4
View File
@@ -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