diff options
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; |