From 8a8ed6d3fa7059dbb2a95072bbae4bf4618349a0 Mon Sep 17 00:00:00 2001 From: BoredGuy Date: Thu, 21 Aug 2025 20:07:04 +0300 Subject: Work on animation subsystem - Also incomplete refactor of inline functions --- include/utils.h | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 include/utils.h (limited to 'include/utils.h') diff --git a/include/utils.h b/include/utils.h new file mode 100644 index 0000000..59c1bc4 --- /dev/null +++ b/include/utils.h @@ -0,0 +1,55 @@ +#ifndef UTILS_H_ +#define UTILS_H_ + +#include +#include "game.h" + +static inline bool EntityAllocated(const Entity* e) { + return (e->flags & ENTITY_ALLOCATED); +} + +static inline bool PhysicsEnabled(const Entity* e) { + return EntityAllocated(e) && (e->flags & ENTITY_PHYSICS_ACTIVE); +} + +static inline bool SameEntity(const Entity* a, const Entity* b) { + return a->id == b->id; +} + +static inline void AddSpriteToEntity(Entity* e, Sprite s) { + if (e->numSprites < MAX_SPRITE_COUNT) { + e->sprites[e->numSprites++] = s; + } +} + +static inline bool IsAnimated(const Sprite* s) { + return s->numAnimations > 0; +} + +static inline bool ShouldDrawEntity(const Entity* e, DrawLayer layerDrawing) { + return EntityAllocated(e) + && (e->flags & ENTITY_VISIBLE); +} + +static inline Rectangle GetSpriteDrawDestinationRectGlobal(const Entity* e, int spriteIndex) { + Rectangle destRectGlobal = e->sprites[spriteIndex].destRect; + + destRectGlobal.x += e->position.x; + destRectGlobal.y += e->position.y; + + return destRectGlobal; +} + +static inline Rectangle GetPhysicsColliderGlobal(const Entity* e) { + Rectangle physicsColliderGlobal = e->physicsCollider; + physicsColliderGlobal.x += e->position.x; + physicsColliderGlobal.y += e->position.y; + + return physicsColliderGlobal; +} + +static inline Animation* GetCurrentAnimation(Sprite* s) { + return &s->animations[s->currentAnimation]; +} + +#endif // UTILS_H_ -- cgit v1.2.3