[TRY] trying to manage some data storage

This commit is contained in:
Lars
2021-06-11 15:56:34 +02:00
parent bce2ccf889
commit f6fad79c2e
8 changed files with 328 additions and 7 deletions

View File

@@ -19,7 +19,7 @@ namespace gui
*/
struct GuiTexture
{
int texture;
unsigned int texture;
glm::vec2 position;
glm::vec2 scale;

View File

@@ -27,6 +27,8 @@
#include "scenes/scene.h"
#include "scenes/in_Game_Scene.h"
#include "scenes/startup_Scene.h"
#include "scenes/loading_Scene.h"
#include "model_Storage.h"
#include "computervision/ObjectDetection.h"
//#include "computervision/OpenPoseImage.h"
@@ -72,8 +74,8 @@ int main(void)
glGetError();
#pragma endregion
current_scene = new scene::Startup_Scene();
//current_scene = new scene::Startup_Scene();
current_scene = new scene::Loading_Scene();
glfwSetKeyCallback(window, [](GLFWwindow* window, int key, int scancode, int action, int mods)
{
@@ -103,6 +105,10 @@ int main(void)
window_open = false;
break;
case scene::Scenes::LOADING:
current_scene = new scene::Loading_Scene();
break;
case scene::Scenes::STARTUP:
current_scene = new scene::Startup_Scene();
break;
@@ -126,6 +132,7 @@ int main(void)
// Clean up -> preventing memory leaks!!!
std::cout << "ending..." << std::endl;
singleton::Model_Storage::
glfwTerminate();
return 0;
}

187
src/model_Storage.cpp Normal file
View File

@@ -0,0 +1,187 @@
#include "model_Storage.h"
singleton::Model_Storage* singleton::Model_Storage::instance{nullptr};
std::mutex singleton::Model_Storage::mutex;
singleton::Model_Storage::~Model_Storage()
{
delete instance;
}
singleton::Model_Storage* singleton::Model_Storage::get_instance()
{
std::lock_guard<std::mutex> lock(mutex);
if (instance == nullptr)
instance = new Model_Storage();
return instance;
}
/**
* add methods
*/
void singleton::Model_Storage::add_couch(models::TexturedModel couch)
{
couches.push_back(couch);
}
void singleton::Model_Storage::add_table(models::TexturedModel table)
{
tables.push_back(table);
}
void singleton::Model_Storage::add_chair(models::TexturedModel chair)
{
chairs.push_back(chair);
}
void singleton::Model_Storage::add_plant(models::TexturedModel plant)
{
plants.push_back(plant);
}
void singleton::Model_Storage::add_guitar(models::TexturedModel guitar)
{
guitars.push_back(guitar);
}
void singleton::Model_Storage::add_bookshelf(models::TexturedModel bookshelf)
{
bookshelves.push_back(bookshelf);
}
void singleton::Model_Storage::add_lamp(models::TexturedModel lamp)
{
lamps.push_back(lamp);
}
void singleton::Model_Storage::addd_ceiling_object(models::TexturedModel co)
{
ceiling_objects.push_back(co);
}
void singleton::Model_Storage::add_misc(models::TexturedModel misc)
{
miscs.push_back(misc);
}
/**
* getters
*/
std::deque<models::TexturedModel> singleton::Model_Storage::get_all_couches()
{
return couches;
}
std::deque<models::TexturedModel> singleton::Model_Storage::get_all_tables()
{
return tables;
}
std::deque<models::TexturedModel> singleton::Model_Storage::get_all_chairs()
{
return chairs;
}
std::deque<models::TexturedModel> singleton::Model_Storage::get_all_plants()
{
return plants;
}
std::deque<models::TexturedModel> singleton::Model_Storage::get_all_guitars()
{
return guitars;
}
std::deque<models::TexturedModel> singleton::Model_Storage::get_all_bookshelves()
{
return bookshelves;
}
std::deque<models::TexturedModel> singleton::Model_Storage::get_all_lamps()
{
return lamps;
}
std::deque<models::TexturedModel> singleton::Model_Storage::get_all_ceiling_objects()
{
return ceiling_objects;
}
std::deque<models::TexturedModel> singleton::Model_Storage::get_all_miscs()
{
return miscs;
}
models::TexturedModel singleton::Model_Storage::get_couch(int index)
{
return couches[index];
}
models::TexturedModel singleton::Model_Storage::get_table(int index)
{
return tables[index];
}
models::TexturedModel singleton::Model_Storage::get_chair(int index)
{
return chairs[index];
}
models::TexturedModel singleton::Model_Storage::get_plant(int index)
{
return plants[index];
}
models::TexturedModel singleton::Model_Storage::get_guitar(int index)
{
return guitars[index];
}
models::TexturedModel singleton::Model_Storage::get_bookshelf(int index)
{
return bookshelves[index];
}
models::TexturedModel singleton::Model_Storage::get_lamp(int index)
{
return lamps[index];
}
models::TexturedModel singleton::Model_Storage::get_ceiling_object(int index)
{
return ceiling_objects[index];
}
models::TexturedModel singleton::Model_Storage::get_misc(int index)
{
return miscs[index];
}
//getters for default variables
models::TexturedModel singleton::Model_Storage::get_house_model()
{
return models::TexturedModel();
}
models::ModelTexture singleton::Model_Storage::get_default_texture()
{
return models::ModelTexture();
}
//setters for deafult variables
void singleton::Model_Storage::set_house_model(models::TexturedModel house)
{
house_model = house;
}
void singleton::Model_Storage::set_default_texture(models::ModelTexture texture)
{
default_texture = texture;
}

99
src/model_Storage.h Normal file
View File

@@ -0,0 +1,99 @@
#pragma once
#include <deque>
#include <mutex>
#include "models/Model.h"
namespace singleton {
class Model_Storage
{
private:
static Model_Storage* instance;
static std::mutex mutex;
//model of the house
models::TexturedModel house_model;
//default texture
models::ModelTexture default_texture;
//list of furniture:
//couches
std::deque<models::TexturedModel> couches;
//tables
std::deque<models::TexturedModel> tables;
//chairs
std::deque<models::TexturedModel> chairs;
//plants
std::deque<models::TexturedModel> plants;
//guitars
std::deque<models::TexturedModel> guitars;
//bookshelves
std::deque<models::TexturedModel> bookshelves;
//lamps
std::deque<models::TexturedModel>lamps;
//ceiling objects
std::deque<models::TexturedModel>ceiling_objects;
//misc
std::deque<models::TexturedModel> miscs;
protected:
Model_Storage() {}
~Model_Storage();
public:
Model_Storage(Model_Storage& other) = delete;
void operator=(const Model_Storage&) = delete;
static Model_Storage* get_instance();
//some methods to execute on its instance:
void add_couch(models::TexturedModel couch);
void add_table(models::TexturedModel table);
void add_chair(models::TexturedModel chair);
void add_plant(models::TexturedModel plant);
void add_guitar(models::TexturedModel guitar);
void add_bookshelf(models::TexturedModel bookshelf);
void add_lamp(models::TexturedModel lamp);
void addd_ceiling_object(models::TexturedModel co);
void add_misc(models::TexturedModel misc);
//getters for the whole list
std::deque<models::TexturedModel> get_all_couches();
std::deque<models::TexturedModel> get_all_tables();
std::deque<models::TexturedModel> get_all_chairs();
std::deque<models::TexturedModel> get_all_plants();
std::deque<models::TexturedModel> get_all_guitars();
std::deque<models::TexturedModel> get_all_bookshelves();
std::deque<models::TexturedModel> get_all_lamps();
std::deque<models::TexturedModel> get_all_ceiling_objects();
std::deque<models::TexturedModel> get_all_miscs();
//getters for one model
models::TexturedModel get_couch(int index);
models::TexturedModel get_table(int index);
models::TexturedModel get_chair(int index);
models::TexturedModel get_plant(int index);
models::TexturedModel get_guitar(int index);
models::TexturedModel get_bookshelf(int index);
models::TexturedModel get_lamp(int index);
models::TexturedModel get_ceiling_object(int index);
models::TexturedModel get_misc(int index);
//getters for the standard variables
models::TexturedModel get_house_model();
models::ModelTexture get_default_texture();
//setters for the standard variables
void set_house_model(models::TexturedModel house);
void set_default_texture(models::ModelTexture texture);
};
}

View File

@@ -1,11 +1,11 @@
#include "loading_Scene.h"
#include "../renderEngine/Renderer.h"
#include "../renderEngine/Loader.h"
#include "../renderEngine/obj_loader.h"
#include "../gui/gui_element.h"
namespace scene
{
Loading_Scene::Loading_Scene()
{
gui_shader = new shaders::GuiShader();
@@ -20,6 +20,8 @@ namespace scene
Scenes Loading_Scene::start(GLFWwindow* window)
{
render();
load_default_variables();
load_all_models();
}
@@ -27,7 +29,7 @@ namespace scene
{
render_engine::renderer::Prepare();
gui::GuiTexture loading_image = { render_engine::loader::LoadTexture("res/menu_item_start1.png"),
gui::GuiTexture loading_image = { render_engine::loader::LoadTexture("res/loading_screen.png"),
glm::vec2(0,0),glm::vec2(1,1) };
std::vector<gui::GuiTexture*> image_list;
@@ -44,4 +46,22 @@ namespace scene
void Loading_Scene::onKey(GLFWwindow* window, int key, int scancode, int action, int mods)
{
}
void Loading_Scene::load_default_variables()
{
models::RawModel raw_model = render_engine::LoadObjModel("res/HouseNew.obj");
models::ModelTexture default_texture = { render_engine::loader::LoadTexture("res/Texture.png") };
default_texture.shine_damper = 10;
models::TexturedModel house = { raw_model, default_texture };
singleton::Model_Storage::get_instance()->set_default_texture(default_texture);
singleton::Model_Storage::get_instance()->set_house_model(house);
}
void Loading_Scene::load_all_models()
{
}
}

View File

@@ -1,8 +1,8 @@
#pragma once
#pragma once
#include "scene.h"
#include "../gui/gui_element.h"
#include "../shaders/gui_shader.h"
#include "../model_Storage.h"
namespace scene
{
@@ -17,9 +17,13 @@ namespace scene
shaders::GuiShader* gui_shader;
private:
void load_default_variables();
void load_all_models();
public:
/**
* @brief Constructor of the class Startup_Scene
* @brief Constructor of the class Loading_Scene
*
*/
Loading_Scene();

View File

@@ -19,6 +19,7 @@
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\model_Storage.cpp" />
<ClCompile Include="src\collision\collision_handler.cpp" />
<ClCompile Include="src\entities\main_character.cpp" />
<ClCompile Include="src\entities\house_generator.cpp" />
@@ -49,6 +50,7 @@
<ClCompile Include="src\scenes\startup_Scene.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\model_Storage.h" />
<ClInclude Include="src\collision\collision.h" />
<ClInclude Include="src\collision\collision_handler.h" />
<ClInclude Include="src\entities\main_character.h" />

View File

@@ -29,6 +29,7 @@
<ClCompile Include="src\computervision\MenuTest.cpp" />
<ClCompile Include="src\scenes\scene.cpp" />
<ClCompile Include="src\scenes\loading_Scene.cpp" />
<ClCompile Include="src\model_Storage.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\entities\Camera.cpp">
@@ -150,6 +151,7 @@
<ClInclude Include="src\toolbox\toolbox.h" />
<ClInclude Include="src\scenes\startup_Scene.h" />
<ClInclude Include="src\scenes\loading_Scene.h" />
<ClInclude Include="src\model_Storage.h" />
</ItemGroup>
<ItemGroup>
<Xml Include="res\haarcascade_frontalface_alt.xml" />