diff options
author | nathan <nathansmith@disroot.org> | 2025-09-20 21:35:16 +0000 |
---|---|---|
committer | nathan <nathansmith@disroot.org> | 2025-09-20 21:35:16 +0000 |
commit | 9e3eafcb8b948eebfd189323138415ba672cdaa5 (patch) | |
tree | 5ca1a79f31163089d9a8131d3e3e6dcab122ece2 /src/entity.c | |
parent | 96b7a7205751c76f74d6a5fecb3b5b2ff168b9cd (diff) | |
download | FindThings-9e3eafcb8b948eebfd189323138415ba672cdaa5.tar.gz FindThings-9e3eafcb8b948eebfd189323138415ba672cdaa5.tar.bz2 FindThings-9e3eafcb8b948eebfd189323138415ba672cdaa5.zip |
Trash yippee!
Diffstat (limited to 'src/entity.c')
-rw-r--r-- | src/entity.c | 54 |
1 files changed, 40 insertions, 14 deletions
diff --git a/src/entity.c b/src/entity.c index 8de3eab..329aed1 100644 --- a/src/entity.c +++ b/src/entity.c @@ -66,7 +66,8 @@ Entity createEntity(EntityId id, Vector3 position) break; case TRASHCAN: - entity.box = entityBoxFromScale(TRASHCAN_SCALE, 45.0, 60.0); + entity.box = entityBoxFromScale(TRASHCAN_SCALE, TRASHCAN_WIDTH, + TRASHCAN_HEIGHT); break; default: break; @@ -77,9 +78,44 @@ Entity createEntity(EntityId id, Vector3 position) return entity; } +void updateSamantha(Entity* entity, Game* game) +{ + // silly tv static effect. + game->assets.models[SAMANTHA_MODEL].materials[0] + .maps[MATERIAL_MAP_DIFFUSE].texture = + game->assets.textures[ + SAMANTHA_1_TEXTURE + ((int)(GetTime() * SAMANTHA_STATIC_SPEED) % + SAMANTHA_STATIC_FRAMES)]; + + DrawModel(game->assets.models[SAMANTHA_MODEL], entity->position, 1.0, + WHITE); +} + +void updateTrashcan(Entity* entity, Game* game) +{ + int frame = (int)(GetTime() * TRASHCAN_ANIMATION_SPEED) % TRASHCAN_FRAMES; + + Rectangle rect = (Rectangle){ + .x = frame * TRASHCAN_WIDTH, + .y = 0.0, + .width = TRASHCAN_WIDTH, + .height = TRASHCAN_HEIGHT + }; + + DrawBillboardRec( + game->player.camera, + game->assets.textures[TRASHCAN_TEXTURE], + rect, + entity->position, + (Vector2){TRASHCAN_SCALE + * (TRASHCAN_WIDTH / TRASHCAN_HEIGHT), + TRASHCAN_SCALE}, + WHITE); +} + void updateEntity(Entity* entity, Game* game) { - //DrawBoundingBox(entity->box, RED); + DrawBoundingBox(entity->box, RED); switch (entity->id) { @@ -109,20 +145,10 @@ void updateEntity(Entity* entity, Game* game) (Vector2){POND_SIZE * 2.5, POND_SIZE * 2.5}, BLUE); break; case SAMANTHA: - // silly tv static effect - game->assets.models[SAMANTHA_MODEL].materials[0] - .maps[MATERIAL_MAP_DIFFUSE].texture = - game->assets.textures[ - SAMANTHA_1_TEXTURE + ((int)(GetTime() * SAMANTHA_STATIC_SPEED) % - SAMANTHA_STATIC_FRAMES)]; - - DrawModel(game->assets.models[SAMANTHA_MODEL], entity->position, 1.0, - WHITE); + updateSamantha(entity, game); break; case TRASHCAN: - DrawBillboard(game->player.camera, - game->assets.textures[TRASHCAN_TEXTURE], - entity->position, FLOWER_SCALE, WHITE); + updateTrashcan(entity, game); break; default: break; |