Camera bugfix.
Ahora existe una cámara por defecto en el renderer. Así, si no hay cámara asignada se utilizará esta.
This commit is contained in:
+1
-1
@@ -1,2 +1,2 @@
|
|||||||
call premake\premake5.exe vs2019
|
call premake\premake5.exe vs2022
|
||||||
PAUSE
|
PAUSE
|
||||||
@@ -61,7 +61,7 @@ namespace UE
|
|||||||
|
|
||||||
void Renderer::CleanRenderer()
|
void Renderer::CleanRenderer()
|
||||||
{
|
{
|
||||||
renderQueue.empty();
|
renderQueue.clear();
|
||||||
|
|
||||||
ImGui_ImplSDLRenderer_Shutdown();
|
ImGui_ImplSDLRenderer_Shutdown();
|
||||||
ImGui_ImplSDL2_Shutdown();
|
ImGui_ImplSDL2_Shutdown();
|
||||||
@@ -93,6 +93,12 @@ namespace UE
|
|||||||
//callCounter = 0;
|
//callCounter = 0;
|
||||||
//rendererCounter = 0;
|
//rendererCounter = 0;
|
||||||
|
|
||||||
|
//Comprobamos que la cámara sigue existiendo.
|
||||||
|
if (activeCam == nullptr)
|
||||||
|
{
|
||||||
|
ResetCamera();
|
||||||
|
}
|
||||||
|
|
||||||
//Actualizamos el rect que representa la pantalla.
|
//Actualizamos el rect que representa la pantalla.
|
||||||
glm::ivec2 camPos = activeCam->GetCamPosition();
|
glm::ivec2 camPos = activeCam->GetCamPosition();
|
||||||
_screenRect = {camPos.x, camPos.y, screenSize.x, screenSize.y};
|
_screenRect = {camPos.x, camPos.y, screenSize.x, screenSize.y};
|
||||||
|
|||||||
@@ -36,15 +36,16 @@ namespace UE
|
|||||||
{
|
{
|
||||||
screenSize.x = windowWidth;
|
screenSize.x = windowWidth;
|
||||||
screenSize.y = windowHeight;
|
screenSize.y = windowHeight;
|
||||||
|
activeCam = &defaultCam;
|
||||||
//UE_LOG_INFO("Game Renderer Created.");
|
//UE_LOG_INFO("Game Renderer Created.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Inicializa los componentes necesarios:
|
/* Inicializa los componentes necesarios:
|
||||||
- Inicializa SDL
|
|
||||||
- Crea la ventana.
|
- Crea la ventana.
|
||||||
- Crea el renderer.
|
- Crea el renderer.
|
||||||
- ...
|
- Inicia ImGUI.
|
||||||
|
- Genera las layers.
|
||||||
*/
|
*/
|
||||||
int InitRenderer();
|
int InitRenderer();
|
||||||
|
|
||||||
@@ -88,6 +89,12 @@ namespace UE
|
|||||||
inline void SetCamera(Camera* newCam) { activeCam = newCam; }
|
inline void SetCamera(Camera* newCam) { activeCam = newCam; }
|
||||||
inline Camera* GetCamera() { return activeCam; }
|
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. */
|
/* M�todos para transformar las coordenadas entre Screen y Wolrd. */
|
||||||
//WorldCoords = ScreenPos + CamPos -> ScreenPos = WorldCoords - CamPos;
|
//WorldCoords = ScreenPos + CamPos -> ScreenPos = WorldCoords - CamPos;
|
||||||
@@ -138,6 +145,7 @@ namespace UE
|
|||||||
|
|
||||||
//glm::ivec2 camPosition{ 0,0 };
|
//glm::ivec2 camPosition{ 0,0 };
|
||||||
Camera* activeCam;
|
Camera* activeCam;
|
||||||
|
Camera defaultCam = Camera(0, 0);
|
||||||
|
|
||||||
SDL_Rect _screenRect{ 0, 0, screenSize.x, screenSize.y};
|
SDL_Rect _screenRect{ 0, 0, screenSize.x, screenSize.y};
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,9 @@
|
|||||||
|
|
||||||
//
|
//
|
||||||
// TODO:
|
// TODO:
|
||||||
// - Se podría plantear un sistema de carga asincrona para las escenas.
|
// - Se podría plantear un sistema de carga asincrona para las escenas.
|
||||||
// - La variable "loaded" de las escenas no tiene mucha utilidad en este momento.
|
// - 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
|
namespace UE
|
||||||
{
|
{
|
||||||
@@ -41,7 +42,7 @@ namespace UE
|
|||||||
* Carga una nueva escena.
|
* Carga una nueva escena.
|
||||||
* Se almacena en la lista de escenas cargadas.
|
* Se almacena en la lista de escenas cargadas.
|
||||||
* Para cambiar de escena, usar SwitchScene();
|
* 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);
|
void LoadScene(Scene* sceneToLoad);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user