diff options
| author | nathan <nathansmith@disroot.org> | 2026-01-05 09:30:25 +0000 |
|---|---|---|
| committer | nathan <nathansmith@disroot.org> | 2026-01-05 09:30:25 +0000 |
| commit | a8d803916883e49790981beed6438726406e0995 (patch) | |
| tree | cc354d1231c94dbfdb67268f57a3819e03949dce /src/entity.c | |
| parent | e507ecbb95a2c7a1ffb8c13f1bd39433d6c49ba3 (diff) | |
| download | FindThings-a8d803916883e49790981beed6438726406e0995.tar.gz FindThings-a8d803916883e49790981beed6438726406e0995.tar.bz2 FindThings-a8d803916883e49790981beed6438726406e0995.zip | |
Collision with buildings working
Diffstat (limited to 'src/entity.c')
| -rw-r--r-- | src/entity.c | 29 |
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) { |
