diff options
Diffstat (limited to 'src/entity.c')
| -rw-r--r-- | src/entity.c | 24 |
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); +} |
