[ADD] furniture
This commit is contained in:
@@ -33,12 +33,14 @@ namespace entities
|
|||||||
|
|
||||||
if (glfwGetKey(window, GLFW_KEY_SPACE) == GLFW_PRESS)
|
if (glfwGetKey(window, GLFW_KEY_SPACE) == GLFW_PRESS)
|
||||||
{
|
{
|
||||||
rotation.x -= ROT_SPEED;
|
//rotation.x -= ROT_SPEED;
|
||||||
|
position.y += 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (glfwGetKey(window, GLFW_KEY_LEFT_SHIFT) == GLFW_PRESS)
|
if (glfwGetKey(window, GLFW_KEY_LEFT_SHIFT) == GLFW_PRESS)
|
||||||
{
|
{
|
||||||
rotation.x += ROT_SPEED;
|
//rotation.x += ROT_SPEED;
|
||||||
|
position.y -= 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
float dx = glm::cos(glm::radians(rotation.y + 90)) * movement_speed;
|
float dx = glm::cos(glm::radians(rotation.y + 90)) * movement_speed;
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace entities
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
// The movement speed of the camera
|
// The movement speed of the camera
|
||||||
const float SPEED = 0.52f;
|
const float SPEED = 2.0f;
|
||||||
const float ROT_SPEED = 1.0f;
|
const float ROT_SPEED = 1.0f;
|
||||||
|
|
||||||
glm::vec3 position;
|
glm::vec3 position;
|
||||||
|
|||||||
@@ -1,66 +0,0 @@
|
|||||||
#include "HouseGenerator.h"
|
|
||||||
|
|
||||||
#include <functional>
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
#include "../renderEngine/obj_loader.h"
|
|
||||||
#include "../renderEngine/Loader.h"
|
|
||||||
#include "../toolbox/toolbox.h"
|
|
||||||
#include "collision_entity.h"
|
|
||||||
|
|
||||||
namespace entities
|
|
||||||
{
|
|
||||||
HouseGenerator::HouseGenerator()
|
|
||||||
{
|
|
||||||
models::RawModel raw_model = render_engine::LoadObjModel("res/HouseNew.obj");
|
|
||||||
default_texture = { render_engine::loader::LoadTexture("res/Texture.png") };
|
|
||||||
default_texture.shine_damper = 10;
|
|
||||||
house_model = { raw_model, default_texture };
|
|
||||||
|
|
||||||
GenerateFurnitureModels();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::deque<std::shared_ptr<Entity>> HouseGenerator::GenerateHouse(const glm::vec3& position, float y_rotation)
|
|
||||||
{
|
|
||||||
std::deque<std::shared_ptr<Entity>> furniture;
|
|
||||||
|
|
||||||
// Add house
|
|
||||||
furniture.push_front(std::make_shared<Entity>(house_model, position, glm::vec3(0, y_rotation, 0), HOUSE_SIZE));
|
|
||||||
|
|
||||||
// Add furniture
|
|
||||||
models::TexturedModel couch = GetFurnitureModel(FurnitureType::COUCH);
|
|
||||||
glm::vec3 couchPos = glm::vec3(position.x, position.y + 20, position.z + 10);
|
|
||||||
collision::Box couchBox = { couchPos, couch.raw_model.model_size };
|
|
||||||
couchBox.SetRotation(90);
|
|
||||||
furniture.push_back(std::make_shared<CollisionEntity>(couch, couchPos, glm::vec3(0, 0, 0), HOUSE_SIZE, couchBox));
|
|
||||||
|
|
||||||
return furniture;
|
|
||||||
}
|
|
||||||
|
|
||||||
models::TexturedModel HouseGenerator::GetFurnitureModel(FurnitureType furniture)
|
|
||||||
{
|
|
||||||
const auto found = furniture_models.find(furniture);
|
|
||||||
if (found == furniture_models.end())
|
|
||||||
{
|
|
||||||
std::cerr << "OH NEEEEEEEEEEEEEEE";
|
|
||||||
}
|
|
||||||
|
|
||||||
auto models = found->second;
|
|
||||||
|
|
||||||
const int modelNumber = toolbox::Random(0, models.size() - 1);
|
|
||||||
|
|
||||||
return models[modelNumber];
|
|
||||||
}
|
|
||||||
|
|
||||||
void HouseGenerator::GenerateFurnitureModels()
|
|
||||||
{
|
|
||||||
// Couches
|
|
||||||
std::deque<models::TexturedModel> couches;
|
|
||||||
|
|
||||||
models::RawModel couch_inside_model = render_engine::LoadObjModel("res/couchThree.obj");
|
|
||||||
models::TexturedModel couch_inside = { couch_inside_model, default_texture };
|
|
||||||
couches.push_back(couch_inside);
|
|
||||||
|
|
||||||
furniture_models.insert(std::pair<FurnitureType, std::deque<models::TexturedModel>>(FurnitureType::COUCH, couches));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
116
src/entities/house_generator.cpp
Normal file
116
src/entities/house_generator.cpp
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
#include "house_generator.h"
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "../renderEngine/obj_loader.h"
|
||||||
|
#include "../renderEngine/Loader.h"
|
||||||
|
#include "../toolbox/toolbox.h"
|
||||||
|
#include "collision_entity.h"
|
||||||
|
|
||||||
|
namespace entities
|
||||||
|
{
|
||||||
|
HouseGenerator::HouseGenerator()
|
||||||
|
{
|
||||||
|
models::RawModel raw_model = render_engine::LoadObjModel("res/HouseNew.obj");
|
||||||
|
default_texture = { render_engine::loader::LoadTexture("res/Texture.png") };
|
||||||
|
default_texture.shine_damper = 10;
|
||||||
|
house_model = { raw_model, default_texture };
|
||||||
|
|
||||||
|
GenerateFurnitureModels();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::deque<std::shared_ptr<Entity>> HouseGenerator::GenerateHouse(const glm::vec3& position, float y_rotation)
|
||||||
|
{
|
||||||
|
std::deque<std::shared_ptr<Entity>> furniture;
|
||||||
|
|
||||||
|
// Add house
|
||||||
|
furniture.push_front(std::make_shared<Entity>(house_model, position, glm::vec3(0, y_rotation, 0), HOUSE_SIZE));
|
||||||
|
|
||||||
|
// Add furniture
|
||||||
|
models::TexturedModel couch = GetFurnitureModel(FurnitureType::COUCH);
|
||||||
|
glm::vec3 couch_pos = glm::vec3(position.x + 200, position.y, position.z + 10);
|
||||||
|
collision::Box couch_box = { couch_pos, couch.raw_model.model_size };
|
||||||
|
couch_box.SetRotation(-90);
|
||||||
|
furniture.push_back(std::make_shared<CollisionEntity>(couch, couch_pos, glm::vec3(0, -90, 0), HOUSE_SIZE * 2, couch_box));
|
||||||
|
|
||||||
|
models::TexturedModel table = GetFurnitureModel(FurnitureType::TABLE);
|
||||||
|
glm::vec3 table_pos = glm::vec3(position.x - 30, position.y, position.z);
|
||||||
|
collision::Box table_box = { table_pos, table.raw_model.model_size };
|
||||||
|
furniture.push_back(std::make_shared<CollisionEntity>(table, table_pos, glm::vec3(0, 0, 0), HOUSE_SIZE * 1.3, table_box));
|
||||||
|
|
||||||
|
models::TexturedModel chair = GetFurnitureModel(FurnitureType::CHAIR);
|
||||||
|
glm::vec3 chair_pos = glm::vec3(position.x - 50, position.y, position.z + 220);
|
||||||
|
collision::Box chair_box = { chair_pos, chair.raw_model.model_size };
|
||||||
|
furniture.push_back(std::make_shared<CollisionEntity>(chair, chair_pos, glm::vec3(0, 0, 0), HOUSE_SIZE, chair_box));
|
||||||
|
|
||||||
|
return furniture;
|
||||||
|
}
|
||||||
|
|
||||||
|
models::TexturedModel HouseGenerator::GetFurnitureModel(FurnitureType furniture)
|
||||||
|
{
|
||||||
|
const auto found = furniture_models.find(furniture);
|
||||||
|
if (found == furniture_models.end())
|
||||||
|
{
|
||||||
|
std::cerr << "OH NEEEEEEEEEEEEEEE";
|
||||||
|
}
|
||||||
|
|
||||||
|
auto models = found->second;
|
||||||
|
|
||||||
|
const int modelNumber = toolbox::Random(0, models.size() - 1);
|
||||||
|
|
||||||
|
return models[modelNumber];
|
||||||
|
}
|
||||||
|
|
||||||
|
void HouseGenerator::GenerateFurnitureModels()
|
||||||
|
{
|
||||||
|
// Couches
|
||||||
|
std::deque<models::TexturedModel> couches;
|
||||||
|
|
||||||
|
models::RawModel couch_inside_model = render_engine::LoadObjModel("res/couchThree.obj");
|
||||||
|
models::TexturedModel couch_inside = { couch_inside_model, default_texture };
|
||||||
|
couches.push_back(couch_inside);
|
||||||
|
|
||||||
|
models::RawModel couch_inside_model2 = render_engine::LoadObjModel("res/Coach.obj");
|
||||||
|
models::TexturedModel couch_inside2 = { couch_inside_model2, default_texture };
|
||||||
|
couches.push_back(couch_inside2);
|
||||||
|
|
||||||
|
models::RawModel couch_inside_model3 = render_engine::LoadObjModel("res/lawnBenchOne.obj");
|
||||||
|
models::TexturedModel couch_inside3 = { couch_inside_model3, default_texture };
|
||||||
|
couches.push_back(couch_inside3);
|
||||||
|
|
||||||
|
furniture_models.insert(std::pair<FurnitureType, std::deque<models::TexturedModel>>(FurnitureType::COUCH, couches));
|
||||||
|
|
||||||
|
// Tables
|
||||||
|
std::deque<models::TexturedModel> tables;
|
||||||
|
|
||||||
|
models::RawModel table_model1 = render_engine::LoadObjModel("res/tableOne.obj");
|
||||||
|
models::TexturedModel table1 = { table_model1, default_texture };
|
||||||
|
tables.push_back(table1);
|
||||||
|
|
||||||
|
models::RawModel table_model2 = render_engine::LoadObjModel("res/tableTwo.obj");
|
||||||
|
models::TexturedModel table2 = { table_model2, default_texture };
|
||||||
|
tables.push_back(table2);
|
||||||
|
|
||||||
|
furniture_models.insert(std::pair<FurnitureType, std::deque<models::TexturedModel>>(FurnitureType::TABLE, tables));
|
||||||
|
|
||||||
|
// Chairs
|
||||||
|
std::deque<models::TexturedModel> chairs;
|
||||||
|
|
||||||
|
models::RawModel chair_model1 = render_engine::LoadObjModel("res/launchchair.obj");
|
||||||
|
models::TexturedModel chair1 = { chair_model1, default_texture };
|
||||||
|
chairs.push_back(chair1);
|
||||||
|
|
||||||
|
models::RawModel chair_model2 = render_engine::LoadObjModel("res/lawnChairOne.obj");
|
||||||
|
models::TexturedModel chair2 = { chair_model2, default_texture };
|
||||||
|
chairs.push_back(chair2);
|
||||||
|
|
||||||
|
models::RawModel chair_model3 = render_engine::LoadObjModel("res/ugly_chair.obj");
|
||||||
|
models::TexturedModel chair3 = { chair_model3, default_texture };
|
||||||
|
chairs.push_back(chair3);
|
||||||
|
|
||||||
|
// Plants
|
||||||
|
|
||||||
|
furniture_models.insert(std::pair<FurnitureType, std::deque<models::TexturedModel>>(FurnitureType::CHAIR, chairs));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,7 +10,9 @@ namespace entities
|
|||||||
{
|
{
|
||||||
enum class FurnitureType
|
enum class FurnitureType
|
||||||
{
|
{
|
||||||
COUCH
|
COUCH,
|
||||||
|
TABLE,
|
||||||
|
CHAIR
|
||||||
};
|
};
|
||||||
|
|
||||||
class HouseGenerator
|
class HouseGenerator
|
||||||
10
src/main.cpp
10
src/main.cpp
@@ -37,16 +37,6 @@ scene::Scene* current_scene;
|
|||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
collision::Box box = { glm::vec3(0, 0, 0), glm::vec3(5, 2, 10) };
|
|
||||||
box.SetRotation(180);
|
|
||||||
std::cout << box.size.x << std::endl;
|
|
||||||
std::cout << box.size.y << std::endl;
|
|
||||||
std::cout << box.size.z << std::endl;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
|
|
||||||
#pragma region OPENGL_SETTINGS
|
#pragma region OPENGL_SETTINGS
|
||||||
if (!glfwInit())
|
if (!glfwInit())
|
||||||
throw "Could not inditialize glwf";
|
throw "Could not inditialize glwf";
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
#include "../renderEngine/renderer.h"
|
#include "../renderEngine/renderer.h"
|
||||||
#include "../shaders/entity_shader.h"
|
#include "../shaders/entity_shader.h"
|
||||||
#include "../toolbox/toolbox.h"
|
#include "../toolbox/toolbox.h"
|
||||||
#include "../entities/HouseGenerator.h"
|
#include "../entities/house_generator.h"
|
||||||
#include <deque>
|
#include <deque>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@@ -31,7 +31,7 @@ namespace scene
|
|||||||
models::ModelTexture texture;
|
models::ModelTexture texture;
|
||||||
shaders::EntityShader* shader;
|
shaders::EntityShader* shader;
|
||||||
shaders::GuiShader* gui_shader;
|
shaders::GuiShader* gui_shader;
|
||||||
entities::Camera camera(glm::vec3(0, 0, 0), glm::vec3(0, 0, 0));
|
entities::Camera camera(glm::vec3(0, -50, 0), glm::vec3(0, 0, 0));
|
||||||
std::vector<gui::GuiTexture*> guis;
|
std::vector<gui::GuiTexture*> guis;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="src\collision\collision_handler.cpp" />
|
<ClCompile Include="src\collision\collision_handler.cpp" />
|
||||||
<ClCompile Include="src\entities\HouseGenerator.cpp" />
|
<ClCompile Include="src\entities\house_generator.cpp" />
|
||||||
<ClCompile Include="src\scenes\in_Game_Scene.cpp" />
|
<ClCompile Include="src\scenes\in_Game_Scene.cpp" />
|
||||||
<ClCompile Include="src\computervision\FaceDetector.cpp" />
|
<ClCompile Include="src\computervision\FaceDetector.cpp" />
|
||||||
<ClCompile Include="src\computervision\ObjectDetection.cpp" />
|
<ClCompile Include="src\computervision\ObjectDetection.cpp" />
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="src\collision\collision.h" />
|
<ClInclude Include="src\collision\collision.h" />
|
||||||
<ClInclude Include="src\collision\collision_handler.h" />
|
<ClInclude Include="src\collision\collision_handler.h" />
|
||||||
<ClInclude Include="src\entities\HouseGenerator.h" />
|
<ClInclude Include="src\entities\house_generator.h" />
|
||||||
<ClInclude Include="src\scenes\in_Game_Scene.h" />
|
<ClInclude Include="src\scenes\in_Game_Scene.h" />
|
||||||
<ClInclude Include="src\scenes\scene.h" />
|
<ClInclude Include="src\scenes\scene.h" />
|
||||||
<ClInclude Include="src\computervision\FaceDetector.h" />
|
<ClInclude Include="src\computervision\FaceDetector.h" />
|
||||||
|
|||||||
@@ -75,7 +75,7 @@
|
|||||||
<ClCompile Include="src\computervision\BackgroundRemover.cpp">
|
<ClCompile Include="src\computervision\BackgroundRemover.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\entities\HouseGenerator.cpp">
|
<ClCompile Include="src\entities\house_generator.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@@ -158,7 +158,7 @@
|
|||||||
<ClInclude Include="src\toolbox\Timer.h">
|
<ClInclude Include="src\toolbox\Timer.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="src\entities\HouseGenerator.h">
|
<ClInclude Include="src\entities\house_generator.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
Reference in New Issue
Block a user