Add Imgui, Add TextureManager

From 1.1k texture loads to 5
This commit is contained in:
Bram Verhulst
2024-03-18 12:22:56 +01:00
parent 05f46b7eba
commit 39c744ba79
33 changed files with 59230 additions and 378 deletions

View File

@@ -1,3 +1,4 @@
#include <imgui.h>
#include "pch.h"
#include "Game.h"
@@ -51,9 +52,7 @@ void Game::Update(float elapsedSec) {
void Game::Draw() const {
utils::ClearBackground(Color4f(0.0f, 0.0f, 0.3f, 1.0f));
//m_Camera.BeginRendering();
m_WorldLevel.Draw();
//m_Camera.EndRendering();
}
void Game::ProcessKeyDownEvent(const SDL_KeyboardEvent& e) {
@@ -61,20 +60,7 @@ void Game::ProcessKeyDownEvent(const SDL_KeyboardEvent& e) {
}
void Game::ProcessKeyUpEvent(const SDL_KeyboardEvent& e) {
//std::cout << "KEYUP event: " << e.keysym.sym << std::endl;
//switch ( e.keysym.sym )
//{
//case SDLK_LEFT:
// //std::cout << "Left arrow key released\n";
// break;
//case SDLK_RIGHT:
// //std::cout << "`Right arrow key released\n";
// break;
//case SDLK_1:
//case SDLK_KP_1:
// //std::cout << "Key 1 released\n";
// break;
//}
}
void Game::ProcessMouseMotionEvent(const SDL_MouseMotionEvent& e) {
@@ -119,3 +105,10 @@ void Game::ProcessMouseUpEvent(const SDL_MouseButtonEvent& e) {
// break;
//}
}
void Game::ProcessImGui() {
ImGui::Begin("Hello world", nullptr, ImGuiWindowFlags_AlwaysAutoResize);
ImGui::Text("Texture loading Count:");
ImGui::SameLine();
ImGui::TextColored(ImVec4(1.0f, 0.0f, 1.0f, 1.0f), std::to_string(Texture::m_TextureCounter).c_str());
ImGui::End();
}

View File

@@ -27,6 +27,8 @@ public:
void ProcessMouseDownEvent(const SDL_MouseButtonEvent& e) override;
void ProcessMouseUpEvent(const SDL_MouseButtonEvent& e) override;
void ProcessImGui() override;
private:
// FUNCTIONS
void Initialize();

View File

@@ -71,7 +71,7 @@
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<IncludePath>$(SolutionDir)\Libraries\SDLTtf\SDL2_ttf-2.20.2\include;$(SolutionDir)\Libraries\SDLMixer\SDL2_mixer-2.6.3\include;$(SolutionDir)\Libraries\SDLImage\SDL2_image-2.6.3\include;$(SolutionDir)\Libraries\SDLMain\SDL2-2.26.3\include;$(SolutionDir)\Engine;$(IncludePath)</IncludePath>
<IncludePath>C:\Users\Bram\Desktop\Programming 2\Exam\dae16-VerhulstBram\Engine\imgui;$(SolutionDir)\Libraries\SDLTtf\SDL2_ttf-2.20.2\include;$(SolutionDir)\Libraries\SDLMixer\SDL2_mixer-2.6.3\include;$(SolutionDir)\Libraries\SDLImage\SDL2_image-2.6.3\include;$(SolutionDir)\Libraries\SDLMain\SDL2-2.26.3\include;$(SolutionDir)\Engine;$(IncludePath)</IncludePath>
<LibraryPath>$(SolutionDir)\x64\Debug;$(SolutionDir)\Libraries\SDLTtf\SDL2_ttf-2.20.2\lib\x64;$(SolutionDir)\Libraries\SDLMixer\SDL2_mixer-2.6.3\lib\x64;$(SolutionDir)\Libraries\SDLImage\SDL2_image-2.6.3\lib\x64;$(SolutionDir)\Libraries\SDLMain\SDL2-2.26.3\lib\x64;$(LibraryPath)</LibraryPath>
<CustomBuildAfterTargets>BuildCompile</CustomBuildAfterTargets>
</PropertyGroup>
@@ -322,4 +322,7 @@ xcopy "$(SolutionDir)Resources\*.*" "$(TargetDir)" /y /d /s</Command>
<PropertyGroup>
<LocalDebuggerWorkingDirectory>$(TargetDir)</LocalDebuggerWorkingDirectory>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<IncludePath>C:\Users\Bram\Desktop\Programming 2\Exam\dae16-VerhulstBram\Engine\imgui;$(VC_IncludePath);$(WindowsSDK_IncludePath);</IncludePath>
</PropertyGroup>
</Project>

View File

@@ -36,79 +36,10 @@
<ClCompile Include="WorldTile.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\backends\imgui_impl_allegro5.cpp">
<ClCompile Include="Player.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\backends\imgui_impl_android.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\backends\imgui_impl_dx9.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\backends\imgui_impl_dx10.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\backends\imgui_impl_dx11.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\backends\imgui_impl_dx12.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\backends\imgui_impl_glfw.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\backends\imgui_impl_glut.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\backends\imgui_impl_opengl2.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\backends\imgui_impl_opengl3.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\backends\imgui_impl_sdl2.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\backends\imgui_impl_sdl3.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\backends\imgui_impl_sdlrenderer2.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\backends\imgui_impl_sdlrenderer3.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\backends\imgui_impl_vulkan.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\backends\imgui_impl_wgpu.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\backends\imgui_impl_win32.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\misc\cpp\imgui_stdlib.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\misc\fonts\binary_to_compressed_c.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\misc\freetype\imgui_freetype.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\imgui.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\imgui_demo.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\imgui_draw.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\imgui_tables.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DearImGui\imgui_widgets.cpp">
<ClCompile Include="TextureManager.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
@@ -131,91 +62,10 @@
<ClInclude Include="WorldTile.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_allegro5.h">
<ClInclude Include="Player.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_android.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_dx9.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_dx10.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_dx11.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_dx12.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_glfw.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_glut.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_metal.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_opengl2.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_opengl3.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_opengl3_loader.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_osx.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_sdl2.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_sdl3.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_sdlrenderer2.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_sdlrenderer3.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_vulkan.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_wgpu.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\backends\imgui_impl_win32.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\misc\cpp\imgui_stdlib.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\misc\freetype\imgui_freetype.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\misc\single_file\imgui_single_file.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\imconfig.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\imgui.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\imgui_internal.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\imstb_rectpack.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\imstb_textedit.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="DearImGui\imstb_truetype.h">
<ClInclude Include="TextureManager.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>

View File

@@ -1,2 +1,20 @@
#include "pch.h"
#include "TextureManager.h"
TextureManager* TextureManager::m_pInstance = NULL;
TextureManager* TextureManager::GetInstance() {
if (m_pInstance == nullptr) {
m_pInstance = new TextureManager();
}
return m_pInstance;
}
Texture* TextureManager::GetTexture(const std::string& name) {
if (m_Textures.find(name) != m_Textures.end()) {
return m_Textures[name];
}
Texture* pTexture = new Texture(name);
m_Textures[name] = pTexture;
return pTexture;
}

View File

@@ -1,7 +1,20 @@
#pragma once
#include <map>
#include "Texture.h"
class TextureManager
{
public:
TextureManager() = default;
static TextureManager* GetInstance();
Texture* GetTexture(const std::string& name);
static TextureManager* m_pInstance;
private:
std::map<std::string, Texture*> m_Textures{};
};

View File

@@ -15,7 +15,7 @@ WorldLevel::WorldLevel(Camera* camera) : Level(camera), m_mousePos{ 0, 0 }, m_pl
for (size_t x { 0 }; x < WORLD_WIDTH; ++x) {
for (size_t y { 0 }; y < WORLD_HEIGHT; ++y) {
int actualX = x - WORLD_WIDTH / 2;
m_worldTiles[x][y] = new WorldTile{ Point2f{ float(actualX * TILE_WIDTH), -float(y * TILE_HEIGHT) - TILE_HEIGHT}, GroundTileTypes::Dirt};
m_worldTiles[x][y] = new WorldTile{ Point2f{ float(actualX * TILE_WIDTH), -float(y * TILE_HEIGHT) - TILE_HEIGHT}, GroundTileTypes::Dirt, TextureManager::GetInstance()};
}
}
m_Rects.push_back(Collision::CollisionRect{ Point2f{0.0f, 10.0f}, Point2f{40.0f, 40.0f} });

View File

@@ -1,13 +1,16 @@
#include "pch.h"
#include "WorldTile.h"
#include "TextureManager.h"
#include "utils.h"
WorldTile::WorldTile() {
}
WorldTile::WorldTile(const Point2f& position, GroundTileTypes groundTileType) : m_Position { position }, m_GroundTileType { groundTileType } {
WorldTile::WorldTile(const Point2f& position, GroundTileTypes groundTileType, TextureManager* pTextureManager) : m_Position { position }, m_GroundTileType { groundTileType } {
const std::string dirtPath = + "tiles/dirt/dirt" + std::to_string(utils::randRange(1, 5)) + ".png";
m_pTexture = new Texture(dirtPath);
// m_pTexture = new Texture(dirtPath);
m_pTexture = pTextureManager->GetTexture(dirtPath);
}
WorldTile::~WorldTile() {
delete m_pTexture;

View File

@@ -1,6 +1,7 @@
#pragma once
#include "Collision.h"
#include "Texture.h"
#include "TextureManager.h"
enum class GroundTileTypes
{
@@ -11,7 +12,7 @@ enum class GroundTileTypes
class WorldTile {
public:
WorldTile();
WorldTile(const Point2f& position, GroundTileTypes groundTileType);
WorldTile(const Point2f& position, GroundTileTypes groundTileType, TextureManager* pTextureManager);
~WorldTile();
void Draw() const;