Add hitboxes

This commit is contained in:
2024-01-28 11:00:32 +01:00
parent 0a4c1fd154
commit a61768e912
15 changed files with 494 additions and 200 deletions

View File

@@ -130,7 +130,7 @@ bool initRocksLayer(BzTileMap *map, BzTileLayer *layer) {
posX += sizeX * 0.5f;
posY += sizeY * 0.5f;
ecs_set(ECS, e, Position, {posX, posY});
ecs_set(ECS, e, Size, {sizeX, sizeY});
ecs_set(ECS, e, HitBox, {sizeX, sizeY});
ecs_set(ECS, e, Rotation, {0});
BzTile tileID = bzTilesetGetTileID(tileset, layerTile);
ecs_set(ECS, e, TextureRegion, {tileset->tiles, bzTilesetGetTileRegion(tileset, tileID)});
@@ -155,20 +155,24 @@ bool initTreesLayer(BzTileMap *map, BzTileLayer *layer) {
tile = bzTilesetGetTileID(tileset, tile);
if (tile == -1) continue; // Not a tree
BzTile tileID = bzTilesetGetTileID(tileset, layerTile);
BZ_ASSERT(hasEntityHitBoxRec(tileID));
HitBox hb = getEntityHitBoxRec(tileID);
f32 sizeX = tileset->tileWidth;
f32 sizeY = tileset->tileHeight;
f32 posX = layer->offsetX + x * sizeX;
f32 posY = layer->offsetY + y * sizeY;
ecs_entity_t e = entityCreateEmpty();
SpatialGridID gridID = bzSpatialGridInsert(game->entityGrid, &e, posX, posY, sizeX, sizeY);
SpatialGridID gridID = bzSpatialGridInsert(game->entityGrid, &e,
posX + hb.x, posY + hb.y,
hb.width, hb.height);
ecs_set(ECS, e, SpatialGridID, {gridID});
posX += sizeX * 0.5f;
posY += sizeY * 0.5f;
ecs_set(ECS, e, Position, {posX, posY});
ecs_set(ECS, e, Size, {sizeX, sizeY});
ecs_set_ptr(ECS, e, HitBox, &hb);
ecs_set(ECS, e, Rotation, {0});
BzTile tileID = bzTilesetGetTileID(tileset, layerTile);
ecs_set(ECS, e, TextureRegion, {tileset->tiles, bzTilesetGetTileRegion(tileset, tileID)});
ecs_set(ECS, e, TextureRegion, {tileset->tiles, getTextureRect(tileID)});
ecs_set(ECS, e, Resource, {RES_WOOD, 20});
ecs_add_id(ECS, e, Selectable);
ecs_add_id(ECS, e, Harvestable);