El regreso tras mucho tiempo...

Sinceramente, no sé lo que puede haber aquí.
This commit is contained in:
2022-06-07 22:13:53 +02:00
parent 9098f16f81
commit b89b031f6c
25 changed files with 713 additions and 153 deletions
+9 -3
View File
@@ -49,7 +49,7 @@ 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.
//Si la escena contiene su propio AssetManager y los carga ella misma, no ser� necesario.
//Game::GetSceneManager()->LoadScene("Main");
Game::GetSceneManager()->NewLoadScene(LasEscenas::mainMenu);
}
@@ -92,6 +92,12 @@ void Loop()
while (SDL_PollEvent(&eventHandler) != 0)
{
ImGui_ImplSDL2_ProcessEvent(&eventHandler);
ImGuiIO& io = ImGui::GetIO();
//Si ImGui ha capturado el evento, no lo seguimos pasando.
if (io.WantCaptureKeyboard) { continue; }
if (io.WantCaptureMouse) { continue; }
Game::GetSceneManager()->GetActiveScenePtr()->SceneHandleEvents(&eventHandler);
if (eventHandler.type == SDL_QUIT)
{
@@ -125,7 +131,7 @@ void Loop()
}
if (keyStates[SDL_SCANCODE_F])
{
GAME_LOG_TRACE("FPS: {0} / dT: {1}", 60, UE::Time::deltaTime);
GAME_LOG_TRACE("FPS: NULL / dT: {1}", UE::Time::deltaTime);
}
if (keyStates[SDL_SCANCODE_W])
@@ -169,7 +175,7 @@ void Loop()
//Renderiza la escena.
Game::GetSceneManager()->GetActiveScenePtr()->SceneRender();
//Así podemos renderizar cosas de ImGui cuando estemos entre NewFrame y EndFrame.
//As� podemos renderizar cosas de ImGui cuando estemos entre NewFrame y EndFrame.
bool show = true;
ImGui::ShowDemoWindow(&show);
+23 -11
View File
@@ -31,17 +31,21 @@ public:
UE_LOG_INFO("Escena {0} ha sido cargada", _sceneName);
UE::AssetManager* as = Game::GetAssetManager();
SDL_Texture* test1Texture = as->getTexture("test1");
UE::Texture* test1Texture = as->getTexture("test1");
UE::Sprite sp1(test1Texture, as->getTexureRects("test1"), 0, 2, glm::vec2(55, 60), glm::vec2(100, 100));
UE::Sprite sp1(test1Texture, 0, 2, glm::vec2(55, 60), glm::vec2(100, 100));
UE::Sprite sp2(test1Texture, as->getTexureRects("test1"), 0, 1, glm::vec2(50, 45), glm::vec2(145, 145));
UE::Sprite sp2(test1Texture, 0, 1, glm::vec2(50, 45), glm::vec2(145, 145));
UE::Sprite bg(as->getTexture("bg1"), 1, 0, glm::vec2(0, 0), Game::GetRenderer()->GetScreenSize());
UE::Sprite mapSP(as->getTexture("PruebaMap"), 0, 2, glm::vec2(50, 45), glm::vec2(145, 145));
UE::Sprite bg(as->getTexture("bg1"), as->getTexureRects("bg1"), 1, 0, glm::vec2(0, 0), Game::GetRenderer()->GetScreenSize());
sprites.push_back(sp1);
sprites.push_back(sp2);
sprites.push_back(bg);
sprites.push_back(mapSP);
UE::Font* OP_Regular = as->GetFont("OpenSans_Regular");
//TTF_Font* OP_Bold = as->GetFont("OpenSans_Bold");
@@ -92,7 +96,7 @@ public:
ImguiRender();
}
void SceneHandleEvents(SDL_Event* event)
void SceneHandleEvents(SDL_Event* event) override
{
if (event->type == SDL_KEYDOWN)
{
@@ -130,14 +134,14 @@ public:
private:
void ImguiRender()
{
ImGui::Begin("DEBUG Stuff", &debugGUI);
ImGui::Checkbox("AssetManager Inspector: ", &assetMngGUI);
ImGui::Checkbox("Renderer Inspector: ", &rendererGUI);
ImGui::Checkbox("SceneManager Inspector: ", &sceneMngGUI);
//ImGui::Begin("DEBUG Stuff", &debugGUI);
//ImGui::Checkbox("AssetManager Inspector: ", &assetMngGUI);
//ImGui::Checkbox("Renderer Inspector: ", &rendererGUI);
//ImGui::Checkbox("SceneManager Inspector: ", &sceneMngGUI);
//ImGui::End();
ImGui::End();
if (debugGUI) { TestGUI(); }
if(assetMngGUI) {}
@@ -145,7 +149,7 @@ private:
void TestGUI()
{
ImGui::Begin("MainScene Test Stuff", &_windowOpen);
ImGui::Begin("MainScene Test Stuff", &debugGUI);
ImGui::Text("En esta escena, hacemos pruebas del funcionamiento de UberEngine.");
@@ -198,6 +202,14 @@ private:
ImGui::Text("Rendering: ");
ImGui::Text("El sprite esta en la layer: %d", sp.GetLayer());
ImGui::Text("Cambiar rect del Sprite: ");
ImGui::SameLine();
int textRect = 0;
if (ImGui::InputInt("TextureRect", &textRect))
{
sp.SetTextureRect(textRect);
}
//Añadir un input para modificar la layer.
}
+180 -3
View File
@@ -1,29 +1,206 @@
#pragma once
#include "Scene\Scene.h"
#include "Render\Renderer.h"
#include "Logging\Logger.h"
#include "Assets\AssetManager.h"
#include "Assets\Texture.h"
#include "Drawables\Sprite.h"
#include <iostream>
#include <vector>
class TestScene2 : public UE::Scene
{
public:
using Scene::Scene;
TestScene2(std::string sceneName) : Scene(sceneName) {}
void SceneLoad() override
{
UE_LOG_INFO("Escena {0} ha sido cargada", _sceneName);
srand(255);
UE::AssetManager* as = Game::GetAssetManager();
UE::Texture* tx = as->getTexture("PruebaMap");
for (int y = 0; y < vAmount; y++)
{
for (int x = 0; x < hAmount; x++)
{
glm::vec2 i(x, y);
glm::vec2 size(100, 100);
glm::vec2 pos = size * i;
UE::Sprite sp(tx, rand()%5, 1, pos, size);
sprites.push_back(sp);
}
}
}
void SceneUpdate() override
{
UE_LOG_INFO("Escena {0} UPDATE", _sceneName);
//UE_LOG_INFO("Escena {0} UPDATE", _sceneName);
}
void SceneRender() override
{
UE::Renderer* renderer;
renderer = Game::GetRenderer();
for (UE::Sprite& sp : sprites)
{
//Si el obj. no está activo, lo saltamos.
if (sp.IsActive())
{
renderer->Render(sp);
}
}
TestImGui();
}
void SceneHandleEvents(SDL_Event* event) override
{
if (event->type == SDL_KEYDOWN)
{
switch (event->key.keysym.sym)
{
case SDLK_F2:
{
debugGUI = !debugGUI;
break;
}
default:
break;
}
}
if (event->type == SDL_MOUSEBUTTONDOWN)
{
UE::Renderer* rend = Game::GetRenderer();
glm::ivec2 mPos(event->button.x, event->button.y);
glm::ivec2 wPos = rend->ScreenToWorldCoords(mPos);
GAME_LOG_TRACE("Posicion del raton: \n\tPantalla: {0}x{1}, Mundo: {2}x{3}: ", mPos.x, mPos.y, wPos.x, wPos.y);
ModificarSprite(wPos);
}
}
void SceneUnload() override
{
UE_LOG_INFO("Escena {0} se ha descargado.", _sceneName);
GAME_LOG_INFO("Escena {0} se ha descargado.", _sceneName);
sprites.clear();
}
private:
void ModificarSprite(glm::ivec2 wPos)
{
SDL_Rect mouseRect = { wPos.x, wPos.y, 2, 2 };
for (int i = 0; i < sprites.size(); i++)
{
UE::Sprite& sp = sprites.at(i);
if (SDL_HasIntersection(&mouseRect, &sp.getPositionRect()))
{
int i = rand() % 5;
sp.SetTextureRect(i);
break;
}
}
}
void TestImGui()
{
if (!debugGUI) { return; }
ImGui::Begin("Sprite Debug Stuff", &debugGUI);
//ImVec4 buttonColor;
//if(ImGui::ColorEdit4("TestColor", &buttonColor.x)) {}
ImGui::Text("Elementos del vector Sprites: ");
if (ImGui::TreeNode("Sprites"))
{
//Generamos un Selectable para cada Sprite en el vector.
int c = sprites.size();
ImGui::Text("Seleccione un Sprite (0-%d)x(0-%d)", vAmount, hAmount);
ImGui::InputInt2("Sprite Map Pos", _selectSpritePos);
int i = _selectSpritePos[1] * hAmount + _selectSpritePos[0];
if (i > c) { i = -1; }
_selectedSprite = i;
ImGui::TreePop();
}
if (ImGui::TreeNode("Selected Sprite Settings"))
{
if (_selectedSprite != -1)
{
UE::Sprite& sp = sprites.at(_selectedSprite);
ImGui::Text("Status: ");
const char* st = (sp.IsActive() ? "Sprite Activado" : "Sprite Desactivado");
ImGui::Text("El Sprite esta: %s", st);
if (ImGui::Button("Activar Sprite")) { sp.SetActive(true); }
ImGui::SameLine();
if (ImGui::Button("desactivar Sprite")) { sp.SetActive(false); }
ImGui::Text("Transform: ");
glm::vec2 pos = sp.GetPosition();
glm::vec2 size = sp.GetSize();
if (ImGui::SliderFloat2("Sprite Position", &pos.x, -5000, 5000))
{
sp.SetPosition(pos);
}
if (ImGui::SliderFloat2("Sprite Size", &size.x, -2000, 2000))
{
sp.SetSize(size);
}
ImGui::Text("Rendering: ");
ImGui::Text("El sprite esta en la layer: %d", sp.GetLayer());
ImGui::Text("Cambiar rect del Sprite: ");
ImGui::SameLine();
int textRect = 0;
if (ImGui::InputInt("TextureRect", &textRect))
{
sp.SetTextureRect(textRect);
}
//Añadir un input para modificar la layer.
}
ImGui::TreePop();
}
ImGui::End();
}
private:
const int vAmount = 10;
const int hAmount = 10;
std::vector<UE::Sprite> sprites = {};
//IMGUI
bool debugGUI = false;
int _selectedSprite = 0;
int _selectSpritePos[2] = { 0,0 };
};