1 Commits
Author SHA1 Message Date
UberElectron 4ee1ccb47a Camera bugfix.
Ahora existe una cámara por defecto en el renderer.
Así, si no hay cámara asignada se utilizará esta.
2022-09-14 19:41:56 +02:00
4 changed files with 22 additions and 7 deletions
+1 -1
View File
@@ -1,2 +1,2 @@
call premake\premake5.exe vs2019
call premake\premake5.exe vs2022
PAUSE
+7 -1
View File
@@ -61,7 +61,7 @@ namespace UE
void Renderer::CleanRenderer()
{
renderQueue.empty();
renderQueue.clear();
ImGui_ImplSDLRenderer_Shutdown();
ImGui_ImplSDL2_Shutdown();
@@ -93,6 +93,12 @@ namespace UE
//callCounter = 0;
//rendererCounter = 0;
//Comprobamos que la cámara sigue existiendo.
if (activeCam == nullptr)
{
ResetCamera();
}
//Actualizamos el rect que representa la pantalla.
glm::ivec2 camPos = activeCam->GetCamPosition();
_screenRect = {camPos.x, camPos.y, screenSize.x, screenSize.y};
+10 -2
View File
@@ -36,15 +36,16 @@ namespace UE
{
screenSize.x = windowWidth;
screenSize.y = windowHeight;
activeCam = &defaultCam;
//UE_LOG_INFO("Game Renderer Created.");
}
/* Inicializa los componentes necesarios:
- Inicializa SDL
- Crea la ventana.
- Crea el renderer.
- ...
- Inicia ImGUI.
- Genera las layers.
*/
int InitRenderer();
@@ -88,6 +89,12 @@ namespace UE
inline void SetCamera(Camera* newCam) { activeCam = newCam; }
inline Camera* GetCamera() { return activeCam; }
/*
* Cambia la cámara activa a la cámara por defecto.
* Utilizado el eliminar una cámara o cuando la activeCam ya no existe.
*/
inline void ResetCamera() { activeCam = &defaultCam; }
/* M�todos para transformar las coordenadas entre Screen y Wolrd. */
//WorldCoords = ScreenPos + CamPos -> ScreenPos = WorldCoords - CamPos;
@@ -138,6 +145,7 @@ namespace UE
//glm::ivec2 camPosition{ 0,0 };
Camera* activeCam;
Camera defaultCam = Camera(0, 0);
SDL_Rect _screenRect{ 0, 0, screenSize.x, screenSize.y};
+2 -1
View File
@@ -9,6 +9,7 @@
//
// TODO:
// - Se podría plantear un sistema de carga asincrona para las escenas.
// - Añadir un método para recargar la escena actual. La descarga entera y la vuelve a cargar.
// - La variable "loaded" de las escenas no tiene mucha utilidad en este momento.
namespace UE
@@ -41,7 +42,7 @@ namespace UE
* Carga una nueva escena.
* Se almacena en la lista de escenas cargadas.
* Para cambiar de escena, usar SwitchScene();
* Si la escena ya estuvise cargada, se descargará la anterior y se cargará la nueva.
* Si la escena ya estuvise cargada, se descargará la anterior y se cargará la nueva, siempre que no sea la activa.
*/
void LoadScene(Scene* sceneToLoad);