diff --git a/assets/hex/rock/Rocks011.png b/assets/hex/rock/Rocks011.png new file mode 100644 index 0000000..e7fea8a Binary files /dev/null and b/assets/hex/rock/Rocks011.png differ diff --git a/assets/hex/rock/Rocks011_1K-JPG.blend b/assets/hex/rock/Rocks011_1K-JPG.blend new file mode 100644 index 0000000..6f585e1 Binary files /dev/null and b/assets/hex/rock/Rocks011_1K-JPG.blend differ diff --git a/assets/hex/rock/Rocks011_1K-JPG.mtlx b/assets/hex/rock/Rocks011_1K-JPG.mtlx new file mode 100644 index 0000000..ee2d571 --- /dev/null +++ b/assets/hex/rock/Rocks011_1K-JPG.mtlx @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/hex/rock/Rocks011_1K-JPG.tres b/assets/hex/rock/Rocks011_1K-JPG.tres new file mode 100644 index 0000000..42e015f --- /dev/null +++ b/assets/hex/rock/Rocks011_1K-JPG.tres @@ -0,0 +1,19 @@ +[gd_resource type="StandardMaterial3D" load_steps=6 format=3 uid="acg_jx28twvh"] + +[ext_resource type="Texture2D" uid="uid://acg_mhzg860x" id="Color" path="./Rocks011_1K-JPG_Color.jpg"] +[ext_resource type="Texture2D" uid="uid://acg_i7ajteuy" id="AmbientOcclusion" path="./Rocks011_1K-JPG_AmbientOcclusion.jpg"] +[ext_resource type="Texture2D" uid="uid://acg_lk6wadmc" id="Displacement" path="./Rocks011_1K-JPG_Displacement.jpg"] +[ext_resource type="Texture2D" uid="uid://acg_j7o09i6h" id="Roughness" path="./Rocks011_1K-JPG_Roughness.jpg"] +[ext_resource type="Texture2D" uid="uid://acg_rxaf5z96" id="NormalGL" path="./Rocks011_1K-JPG_NormalGL.jpg"] +[resource] +albedo_texture = ExtResource("Color") +ao_enabled = true +ao_texture = ExtResource("AmbientOcclusion") +ao_texture_channel = 4 +roughness_texture = ExtResource("Roughness") +roughness_texture_channel = 4 +normal_texture = ExtResource("NormalGL") +normal_enabled = true +heightmap_texture = ExtResource("Displacement") +heightmap_scale = 1.0 +heightmap_enabled = true diff --git a/assets/hex/rock/Rocks011_1K-JPG.usdc b/assets/hex/rock/Rocks011_1K-JPG.usdc new file mode 100644 index 0000000..077f88d Binary files /dev/null and b/assets/hex/rock/Rocks011_1K-JPG.usdc differ diff --git a/assets/hex/rock/Rocks011_1K-JPG_AmbientOcclusion.jpg b/assets/hex/rock/Rocks011_1K-JPG_AmbientOcclusion.jpg new file mode 100644 index 0000000..1e93e5c Binary files /dev/null and b/assets/hex/rock/Rocks011_1K-JPG_AmbientOcclusion.jpg differ diff --git a/assets/hex/rock/Rocks011_1K-JPG_Color.jpg b/assets/hex/rock/Rocks011_1K-JPG_Color.jpg new file mode 100644 index 0000000..5c25085 Binary files /dev/null and b/assets/hex/rock/Rocks011_1K-JPG_Color.jpg differ diff --git a/assets/hex/rock/Rocks011_1K-JPG_Displacement.jpg b/assets/hex/rock/Rocks011_1K-JPG_Displacement.jpg new file mode 100644 index 0000000..7418438 Binary files /dev/null and b/assets/hex/rock/Rocks011_1K-JPG_Displacement.jpg differ diff --git a/assets/hex/rock/Rocks011_1K-JPG_NormalDX.jpg b/assets/hex/rock/Rocks011_1K-JPG_NormalDX.jpg new file mode 100644 index 0000000..cfbe34d Binary files /dev/null and b/assets/hex/rock/Rocks011_1K-JPG_NormalDX.jpg differ diff --git a/assets/hex/rock/Rocks011_1K-JPG_NormalGL.jpg b/assets/hex/rock/Rocks011_1K-JPG_NormalGL.jpg new file mode 100644 index 0000000..1031bfc Binary files /dev/null and b/assets/hex/rock/Rocks011_1K-JPG_NormalGL.jpg differ diff --git a/assets/hex/rock/Rocks011_1K-JPG_Roughness.jpg b/assets/hex/rock/Rocks011_1K-JPG_Roughness.jpg new file mode 100644 index 0000000..4162bc9 Binary files /dev/null and b/assets/hex/rock/Rocks011_1K-JPG_Roughness.jpg differ diff --git a/src/game/GameLayer.cpp b/src/game/GameLayer.cpp index c6c6041..33f24c1 100644 --- a/src/game/GameLayer.cpp +++ b/src/game/GameLayer.cpp @@ -30,6 +30,7 @@ void GameLayer::onAttach() //Map Generation hexModelDefault = std::make_shared(HexModelFactory::createTexturedHexModel(loader, 10.0f, RessourceType::NONE)); hexModelWood = std::make_shared(HexModelFactory::createTexturedHexModel(loader, 10.0f, RessourceType::WOOD)); + hexModelStone = std::make_shared(HexModelFactory::createTexturedHexModel(loader, 10.0f, RessourceType::STONE)); map = std::make_unique(); AssetManager::loadModel("lowPolyTree", "assets/trees/lowPolyTree.obj", "assets/trees/lowPolyTree.png", loader); @@ -72,7 +73,7 @@ void GameLayer::onUpdate() tile.isHighlighted = highlight; } - std::vector terrainRenderData = map->getTerrainRenderData(hexModelDefault, hexModelWood); + std::vector terrainRenderData = map->getTerrainRenderData(hexModelDefault, hexModelWood, hexModelStone); for (auto& renderData : terrainRenderData) { diff --git a/src/game/GameLayer.h b/src/game/GameLayer.h index e5ccafc..eaf2990 100644 --- a/src/game/GameLayer.h +++ b/src/game/GameLayer.h @@ -34,6 +34,7 @@ private: std::shared_ptr hexModelDefault; std::shared_ptr hexModelWood; + std::shared_ptr hexModelStone; std::vector> tileEntities; diff --git a/src/game/hexWorld/HexModelFactory.cpp b/src/game/hexWorld/HexModelFactory.cpp index 5049a10..ef94280 100644 --- a/src/game/hexWorld/HexModelFactory.cpp +++ b/src/game/hexWorld/HexModelFactory.cpp @@ -54,8 +54,10 @@ TexturedModel HexModelFactory::createTexturedHexModel(Loader &loader, float radi std::shared_ptr modelTexture; if (ressourceType == RessourceType::NONE) { modelTexture = std::make_shared(loader.loadTextureFromFile("assets/hex/white.png")); - } else { + } else if (ressourceType == RessourceType::WOOD){ modelTexture = std::make_shared(loader.loadTextureFromFile("assets/hex/wood/Ground053_1K-JPG_Color.jpg")); + } else if (ressourceType == RessourceType::STONE) { + modelTexture = std::make_shared(loader.loadTextureFromFile("assets/hex/rock/Rocks011_1K-JPG_Color.jpg")); } return {std::make_shared(rawModel), std::move(modelTexture)}; diff --git a/src/game/hexWorld/HexTile.h b/src/game/hexWorld/HexTile.h index 45d6b75..230ee47 100644 --- a/src/game/hexWorld/HexTile.h +++ b/src/game/hexWorld/HexTile.h @@ -14,7 +14,8 @@ enum class RessourceType { NONE, - WOOD + WOOD, + STONE }; struct HexTile { diff --git a/src/game/hexWorld/Map.cpp b/src/game/hexWorld/Map.cpp index 790679e..fb2b153 100644 --- a/src/game/hexWorld/Map.cpp +++ b/src/game/hexWorld/Map.cpp @@ -4,15 +4,18 @@ #include "Map.h" -std::vector Map::getTerrainRenderData(const std::shared_ptr& hexModel, const std::shared_ptr& woodModel) { +std::vector Map::getTerrainRenderData(const std::shared_ptr& hexModel, + const std::shared_ptr& woodModel, const std::shared_ptr& stoneModel) { std::vector renderData; renderData.reserve(tiles.size()); for (auto& tile : tiles) { HexRenderData data; if (tile.resourceType == RessourceType::WOOD) { data = HexRenderData(woodModel, tile.worldPos, tile.isHighlighted); - } else { + } else if (tile.resourceType == RessourceType::NONE) { data = HexRenderData(hexModel, tile.worldPos, tile.isHighlighted); + } else if (tile.resourceType == RessourceType::STONE) { + data =HexRenderData(stoneModel, tile.worldPos, tile.isHighlighted); } renderData.push_back(data); } diff --git a/src/game/hexWorld/Map.h b/src/game/hexWorld/Map.h index 4bd0484..b6d02b2 100644 --- a/src/game/hexWorld/Map.h +++ b/src/game/hexWorld/Map.h @@ -16,7 +16,8 @@ public: std::vector areas; std::vector tiles; - std::vector getTerrainRenderData(const std::shared_ptr &hexModel, const std::shared_ptr &woodModel); + std::vector getTerrainRenderData(const std::shared_ptr &hexModel, const std::shared_ptr &woodModel, const std::shared_ptr< + TexturedModel> &stoneModel); }; diff --git a/src/game/hexWorld/MapGenerator.h b/src/game/hexWorld/MapGenerator.h index 2afc880..5226947 100644 --- a/src/game/hexWorld/MapGenerator.h +++ b/src/game/hexWorld/MapGenerator.h @@ -42,6 +42,8 @@ public: ForestTileGenerator forestTileGenerator; const std::vector> forestEntities = forestTileGenerator.generateHexTile(random, tile.worldPos, mapEntities); tile.entitiesOnTile = forestEntities; + } else if (randomValue < 0.75f) { + tile.resourceType = RessourceType::STONE; } map.tiles.push_back(tile); }