Nuevo sistema de escenas mediante el uso de un SceneBuilder polimófico. De esta forma sólo habrá una escena cargada en cada momento.
Actualización de las librerías Vendor Dear ImGui y SDL2 a sus últimas versiones. (Es posible que actualicemos ImGui al "Docking Branch" en un futuro). Preparación inicial para el renderizado mediante ImGui (SDL+SDL_Renderer). (Hará falta un pequeño rediseño al renderer para hacer posible el renderizado de ImGui fuera de UE).
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
#pragma once
|
||||
|
||||
#include "Scene\SceneBuilder.h"
|
||||
#include "Scene\Scene.h"
|
||||
|
||||
#include "Scenes\MainScene.hpp"
|
||||
#include "Scenes\TestScene2.hpp"
|
||||
|
||||
//#include "Logging\Logger.h"
|
||||
|
||||
|
||||
enum LasEscenas
|
||||
{
|
||||
mainMenu = 0, nivel1
|
||||
};
|
||||
|
||||
|
||||
class GameScenes : public UE::SceneBuilder
|
||||
{
|
||||
public:
|
||||
GameScenes()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
UE::Scene* InstanciateScene(int sceneID) override
|
||||
{
|
||||
switch (sceneID)
|
||||
{
|
||||
case LasEscenas::mainMenu:
|
||||
{
|
||||
UE::Scene* sc = new MainScene("Main");
|
||||
return sc;
|
||||
break;
|
||||
}
|
||||
case LasEscenas::nivel1:
|
||||
{
|
||||
UE::Scene* sc = new TestScene2("Test2");
|
||||
return sc;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return nullptr;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
+32
-11
@@ -2,7 +2,12 @@
|
||||
|
||||
#include <glm\glm.hpp>
|
||||
|
||||
#include <ImGui\imgui.h>
|
||||
#include <ImGui\imgui_impl_sdl.h>
|
||||
#include <ImGui\imgui_impl_opengl3.h>
|
||||
|
||||
#include "UberGame1.h"
|
||||
#include "GameScenes.hpp"
|
||||
|
||||
#include "UberEngine.h"
|
||||
|
||||
@@ -35,12 +40,6 @@ void Init()
|
||||
|
||||
Game::InitGame();
|
||||
|
||||
//Añadimos todas las escenas al Manager. No pasa nada, porque el Manager lo iniciamos después
|
||||
MainScene* scene1 = new MainScene("Main");
|
||||
TestScene2* scene2 = new TestScene2("Test2");
|
||||
Game::GetSceneManager()->AddScene(scene1);
|
||||
Game::GetSceneManager()->AddScene(scene2);
|
||||
|
||||
}
|
||||
|
||||
void Load()
|
||||
@@ -51,7 +50,8 @@ void Load()
|
||||
|
||||
//Cargamos la escena que queramos tras tener todos los Assets pertinentes cargados.
|
||||
//Si la escena contiene su propio AssetManager y los carga ella misma, no será necesario.
|
||||
Game::GetSceneManager()->LoadScene("Main");
|
||||
//Game::GetSceneManager()->LoadScene("Main");
|
||||
Game::GetSceneManager()->NewLoadScene(LasEscenas::mainMenu);
|
||||
}
|
||||
|
||||
|
||||
@@ -87,15 +87,33 @@ void Loop()
|
||||
{
|
||||
UE::Time::StartFrame();
|
||||
|
||||
|
||||
//TEMP Event Handler:
|
||||
SDL_Event eventHandler;
|
||||
while (SDL_PollEvent(&eventHandler) != 0)
|
||||
{
|
||||
ImGui_ImplSDL2_ProcessEvent(&eventHandler);
|
||||
if (eventHandler.type == SDL_QUIT)
|
||||
{
|
||||
_quit = true;
|
||||
}
|
||||
if (eventHandler.type == SDL_WINDOWEVENT_RESIZED)
|
||||
{
|
||||
Game::GetRenderer()->SetScreenSize(eventHandler.window.data1, eventHandler.window.data2);
|
||||
}
|
||||
if (eventHandler.type == SDL_KEYDOWN)
|
||||
{
|
||||
switch (eventHandler.key.keysym.sym)
|
||||
{
|
||||
case SDLK_1:
|
||||
Game::GetSceneManager()->NewLoadScene(LasEscenas::mainMenu);
|
||||
break;
|
||||
case SDLK_2:
|
||||
Game::GetSceneManager()->NewLoadScene(LasEscenas::nivel1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const Uint8* keyStates = SDL_GetKeyboardState(NULL);
|
||||
@@ -107,9 +125,12 @@ void Loop()
|
||||
{
|
||||
GAME_LOG_TRACE("FPS: {0} / dT: {1}", 60, UE::Time::deltaTime);
|
||||
}
|
||||
|
||||
//FRAME PHYSICS
|
||||
//TICK ALL OBJECTS.
|
||||
if (keyStates[SDL_SCANCODE_1])
|
||||
{
|
||||
}
|
||||
if (keyStates[SDL_SCANCODE_2])
|
||||
{
|
||||
}
|
||||
|
||||
//Game::GetRenderer()->QueueDrawCall(4, DestR2, test1);
|
||||
//Game::GetRenderer()->QueueDrawCall(1, DestR, background);
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
//#include "UberEngine.h"
|
||||
#pragma once
|
||||
|
||||
#include "Scene\Scene.h"
|
||||
#include "Render\Renderer.h"
|
||||
|
||||
#include "Assets\AssetManager.h"
|
||||
#include "Drawables\Sprite.h"
|
||||
#include "Logging\Logger.h"
|
||||
|
||||
#include "Time\Time.h"
|
||||
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <SDL.h>
|
||||
|
||||
class MainScene : public UE::Scene
|
||||
{
|
||||
@@ -38,12 +46,13 @@ public:
|
||||
|
||||
UE::Renderer* renderer;
|
||||
renderer = Game::GetRenderer();
|
||||
|
||||
|
||||
glm::vec2 screenSize = Game::GetRenderer()->GetScreenSize();
|
||||
|
||||
UE::Sprite& sp1 = sprites.at(0);
|
||||
glm::vec2 pos = sp1.GetPosition();
|
||||
if (pos.x > screenSize.x) { pos.x -= 1000; } else { pos.x += 200 * UE::Time::deltaTime; }
|
||||
if (pos.x > screenSize.x) { pos.x -= 1000; }
|
||||
else { pos.x += 200 * UE::Time::deltaTime; }
|
||||
|
||||
sp1.SetPosition(pos);
|
||||
|
||||
@@ -52,6 +61,8 @@ public:
|
||||
{
|
||||
renderer->Render(sp);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void SceneUnload() override
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#include "Scene\Scene.h"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
+13
-1
@@ -3,12 +3,21 @@
|
||||
#include "Logging\Logger.h"
|
||||
#include "Render\Renderer.h"
|
||||
#include "Assets\AssetManager.h"
|
||||
|
||||
#include "Scene\SceneManager.h"
|
||||
#include "Scene\SceneBuilder.h"
|
||||
|
||||
#include "GameScenes.hpp"
|
||||
|
||||
//Sobrecarga de SceneBuilder que devuelve las escenas correctas para este juego.
|
||||
//#include "GameScenes.hpp"
|
||||
|
||||
UE::Renderer* Game::mainRenderer;
|
||||
UE::AssetManager* Game::asManager;
|
||||
UE::SceneManager* Game::scManager;
|
||||
|
||||
GameScenes Game::_sceneBuilder;
|
||||
|
||||
void Game::InitGame()
|
||||
{
|
||||
mainRenderer = new UE::Renderer(640, 480, 5);
|
||||
@@ -20,8 +29,11 @@ void Game::InitGame()
|
||||
asManager->InitAssetManager();
|
||||
UE_LOG_INFO("AssetManager Created.");
|
||||
|
||||
//Creamos el SceneBuilder de este juego.
|
||||
_sceneBuilder = GameScenes();
|
||||
|
||||
scManager = new UE::SceneManager();
|
||||
scManager->InitSceneManager();
|
||||
scManager->InitSceneManager(&_sceneBuilder);
|
||||
}
|
||||
|
||||
void Game::CleanGame()
|
||||
|
||||
@@ -5,8 +5,11 @@ namespace UE
|
||||
class Renderer;
|
||||
class AssetManager;
|
||||
class SceneManager;
|
||||
class SceneBuilder;
|
||||
}
|
||||
|
||||
class GameScenes;
|
||||
|
||||
class Game
|
||||
{
|
||||
public:
|
||||
@@ -23,5 +26,5 @@ private:
|
||||
static UE::AssetManager* asManager;
|
||||
static UE::SceneManager* scManager;
|
||||
|
||||
|
||||
static GameScenes _sceneBuilder;
|
||||
};
|
||||
Reference in New Issue
Block a user