ADD: Basic Building System
This commit is contained in:
parent
ac75a5f7bb
commit
42a1e89bee
31
assets/cabin/20958_Log_Cabin_v1_NEW.mtl
Normal file
31
assets/cabin/20958_Log_Cabin_v1_NEW.mtl
Normal file
@ -0,0 +1,31 @@
|
||||
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
|
||||
# File Created: 03.06.2013 16:07:05
|
||||
|
||||
newmtl 20958_Log_Cabin_v1
|
||||
Ns 18.0000
|
||||
Ni 1.5000
|
||||
d 1.0000
|
||||
Tr 0.0000
|
||||
Tf 1.0000 1.0000 1.0000
|
||||
illum 2
|
||||
Ka 1.0000 1.0000 1.0000
|
||||
Kd 1.0000 1.0000 1.0000
|
||||
Ks 0.3240 0.3240 0.3240
|
||||
Ke 0.0000 0.0000 0.0000
|
||||
map_Ka cabin.jpg
|
||||
map_Kd cabin.jpg
|
||||
map_Ks 20958_Log_Cabin_v1_specular.jpg
|
||||
|
||||
newmtl 02___Default
|
||||
Ns 10.0000
|
||||
Ni 1.5000
|
||||
d 1.0000
|
||||
Tr 0.0000
|
||||
Tf 1.0000 1.0000 1.0000
|
||||
illum 2
|
||||
Ka 1.0000 1.0000 1.0000
|
||||
Kd 1.0000 1.0000 1.0000
|
||||
Ks 0.0000 0.0000 0.0000
|
||||
Ke 0.0000 0.0000 0.0000
|
||||
map_Ka disc_diffuse.JPG
|
||||
map_Kd disc_diffuse.JPG
|
||||
BIN
assets/cabin/cabin.jpg
Normal file
BIN
assets/cabin/cabin.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.8 MiB |
@ -22,7 +22,7 @@ GameLayer::GameLayer() :texturedModel(0,0) //Platzhalter, echtes Model kommt in
|
||||
void GameLayer::onAttach()
|
||||
{
|
||||
texturedModel = *OBJLoader::loadModel("assets/dragon/dragon.obj", "assets/dragon/dragon.png", loader);
|
||||
entity = std::make_unique<Entity>(Entity(std::make_shared<TexturedModel>(texturedModel), glm::vec3(0,0,-25), 0,0,0, 1.f));
|
||||
entities.push_back(std::make_shared<Entity>(Entity(std::make_shared<TexturedModel>(texturedModel), glm::vec3(0,0,-25), 0,0,0, 1.f)));
|
||||
camera = std::make_unique<Camera>();
|
||||
light = std::make_unique<Light>(glm::vec3(0,10,0), glm::vec3(1,1,1));
|
||||
mousePicker = std::make_unique<MousePicker>(renderer->getProjectionMatrix(), MathUtils::createViewMatrix(*camera));
|
||||
@ -40,6 +40,9 @@ void GameLayer::onAttach()
|
||||
//treeEntity = std::make_unique<Entity>(Entity(treeModel, glm::vec3(0,0,0), 0,0,0, 0.5f));
|
||||
MapGenerator::generateHexMap(*map, 10,10,10.f, mapEntities);
|
||||
printf("Generated Terrain with %lu Tiles!\n", map->tiles.size());
|
||||
|
||||
auto cabinModel = AssetManager::loadModel("cabin", "assets/cabin/cabin.obj", "assets/cabin/cabin.jpg", loader);
|
||||
//entities.push_back(std::make_shared<Entity>(Entity(cabinModel, glm::vec3(0,0,0), 0,0,0, 1.f)));
|
||||
}
|
||||
|
||||
void GameLayer::onDetach()
|
||||
@ -58,12 +61,9 @@ void GameLayer::onUpdate()
|
||||
if (InputManager::isKeyPressed(GLFW_KEY_D)) moveDir.x += 1.0f;
|
||||
|
||||
|
||||
|
||||
entity->increaseRotation(0,1,0);
|
||||
camera->move(moveDir, 0.5f);
|
||||
|
||||
renderer->submitEntity(entity.get());
|
||||
for (const auto& entity : mapEntities) {
|
||||
for (const auto& entity : entities) {
|
||||
renderer->submitEntity(entity.get());
|
||||
}
|
||||
|
||||
@ -71,7 +71,26 @@ void GameLayer::onUpdate()
|
||||
glm::vec3 intersectionPoint;
|
||||
bool highlight = tile.intersect(camera->getPosition(), mousePicker->getCurrentRay(), intersectionPoint);
|
||||
tile.isHighlighted = highlight;
|
||||
|
||||
if (tile.isHighlighted) {
|
||||
if (InputManager::isMouseButtonPressed(GLFW_MOUSE_BUTTON_1)) {
|
||||
//On this tile you should build something
|
||||
if (!tile.building && tile.resourceType == RessourceType::WOOD) {
|
||||
tile.entitiesOnTile.clear();
|
||||
tile.building = std::make_shared<Entity>(AssetManager::getModel("cabin"), tile.worldPos, 0,0,0,1.f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (const auto& entity: tile.entitiesOnTile) {
|
||||
renderer->submitEntity(entity.get());
|
||||
}
|
||||
|
||||
if (tile.building) {
|
||||
renderer->submitEntity(tile.building.get());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
std::vector<HexRenderData> terrainRenderData = map->getTerrainRenderData(hexModelDefault, hexModelWood, hexModelStone);
|
||||
|
||||
|
||||
@ -26,7 +26,6 @@ public:
|
||||
private:
|
||||
Loader loader;
|
||||
TexturedModel texturedModel;
|
||||
std::unique_ptr<Entity> entity;
|
||||
std::unique_ptr<Camera> camera;
|
||||
std::unique_ptr<Light> light;
|
||||
std::unique_ptr<MousePicker> mousePicker;
|
||||
@ -36,9 +35,8 @@ private:
|
||||
std::shared_ptr<TexturedModel> hexModelWood;
|
||||
std::shared_ptr<TexturedModel> hexModelStone;
|
||||
|
||||
std::vector<std::shared_ptr<Entity>> tileEntities;
|
||||
|
||||
std::vector<std::shared_ptr<Entity>> mapEntities;
|
||||
std::vector<std::shared_ptr<Entity>> entities;
|
||||
std::unique_ptr<Map> map;
|
||||
};
|
||||
|
||||
|
||||
@ -27,6 +27,7 @@ struct HexTile {
|
||||
bool isHighlighted = false;
|
||||
|
||||
std::vector<std::shared_ptr<Entity>> entitiesOnTile;
|
||||
std::shared_ptr<Entity> building;
|
||||
|
||||
|
||||
bool intersect(const glm::vec3& rayOrigin, const glm::vec3& rayDirection, glm::vec3& intersectionPoint) const {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user