aboutsummaryrefslogtreecommitdiffstats
path: root/src/entity.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/entity.c')
-rw-r--r--src/entity.c29
1 files changed, 20 insertions, 9 deletions
diff --git a/src/entity.c b/src/entity.c
index 4895d9e..f094f8d 100644
--- a/src/entity.c
+++ b/src/entity.c
@@ -326,10 +326,10 @@ BoundingBox entityBoxFromScale(float scale, float width, float height)
EntityBuilding* createEntityBuilding(Image heightmap)
{
- EntityBuilding* entityBuilding =
+ EntityBuilding* building =
(EntityBuilding*)FT_MALLOC(sizeof(EntityBuilding));
- if (entityBuilding == NULL)
+ if (building == NULL)
{
ALLOCATION_ERROR;
return NULL;
@@ -338,7 +338,7 @@ EntityBuilding* createEntityBuilding(Image heightmap)
float widthInWorld = heightmap.width * ENTITY_BUILDING_CUBE_SIZE.x;
float heightInWorld = heightmap.height * ENTITY_BUILDING_CUBE_SIZE.z;
- *entityBuilding = (EntityBuilding){
+ *building = (EntityBuilding){
.model = LoadModelFromMesh(GenMeshCubicmap(heightmap,
ENTITY_BUILDING_CUBE_SIZE)),
.pixelMap = LoadImageColors(heightmap),
@@ -354,19 +354,30 @@ EntityBuilding* createEntityBuilding(Image heightmap)
}
};
- return entityBuilding;
+ return building;
}
-void freeEntityBuilding(EntityBuilding* entityBuilding)
+void freeEntityBuilding(EntityBuilding* building)
{
- if (entityBuilding != NULL)
+ if (building != NULL)
{
- UnloadModel(entityBuilding->model);
- UnloadImageColors(entityBuilding->pixelMap);
- FT_FREE(entityBuilding);
+ UnloadModel(building->model);
+ UnloadImageColors(building->pixelMap);
+ FT_FREE(building);
}
}
+bool isBuildingBlockWall(const EntityBuilding* building, int x, int y)
+{
+ if (x < 0 || x >= building->width ||
+ y < 0 || y >= building->height)
+ {
+ return false;
+ }
+
+ return building->pixelMap[y * building->width + x].r == 255;
+}
+
void drawBuildingRoof(const EntityBuilding* building, Vector3 position,
Color color)
{