aboutsummaryrefslogtreecommitdiffstats
path: root/src/entity.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/entity.c')
-rw-r--r--src/entity.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/entity.c b/src/entity.c
index fa3a414..1d10e4f 100644
--- a/src/entity.c
+++ b/src/entity.c
@@ -239,7 +239,7 @@ void placeEntityOnGround(Entity* entity, const World* world)
if (entityIsBuilding(entity->id))
{
- position.y += ENTITY_BUILDING_GROUND_OFFSET;
+ position.y += TOUCHING_OFFSET;
}
else
{
@@ -335,10 +335,22 @@ EntityBuilding* createEntityBuilding(Image heightmap)
return NULL;
}
+ float widthInWorld = heightmap.width * ENTITY_BUILDING_CUBE_SIZE.x;
+ float heightInWorld = heightmap.height * ENTITY_BUILDING_CUBE_SIZE.z;
+
*entityBuilding = (EntityBuilding){
.model = LoadModelFromMesh(GenMeshCubicmap(heightmap,
ENTITY_BUILDING_CUBE_SIZE)),
- .pixelMap = LoadImageColors(heightmap)
+ .pixelMap = LoadImageColors(heightmap),
+ .width = heightmap.width,
+ .height = heightmap.height,
+ .roofSize = (hypotf(widthInWorld, heightInWorld) +
+ ENTITY_BUILDING_CUBE_SIZE.x) / 2.0,
+ .roofHeight = BUILDING_DEFAULT_ROOF_HEIGHT,
+ .roofOffset = (Vector3){
+ widthInWorld / 2.0 - ENTITY_BUILDING_CUBE_SIZE.x / 2.0,
+ ENTITY_BUILDING_CUBE_SIZE.y + TOUCHING_OFFSET,
+ heightInWorld / 2.0 - ENTITY_BUILDING_CUBE_SIZE.z / 2.0}
};
return entityBuilding;
@@ -353,3 +365,11 @@ void freeEntityBuilding(EntityBuilding* entityBuilding)
FT_FREE(entityBuilding);
}
}
+
+void drawBuildingRoof(const EntityBuilding* building, Vector3 position,
+ Color color)
+{
+ DrawCylinder(Vector3Add(position, building->roofOffset), 1.0,
+ building->roofSize, building->roofHeight, BUILDING_ROOF_SLICES,
+ color);
+}