aboutsummaryrefslogtreecommitdiffstats
path: root/src/entity.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/entity.c')
-rw-r--r--src/entity.c54
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;