// collision.hpp - Utilitats de detecció de colisiones // © 2026 JailDesigner #pragma once #include "core/entities/entity.hpp" #include "core/types.hpp" namespace Physics { // Comprobación genèrica de colisión entre dues entidades inline auto checkCollision(const Entities::Entity& a, const Entities::Entity& b, float amplifier = 1.0F) -> bool { // Comprovar si ambdós són col·lisionables if (!a.isCollidable() || !b.isCollidable()) { return false; } // Calcular radi combinat (con amplificador per hitbox generós) float suma_radis = (a.getCollisionRadius() + b.getCollisionRadius()) * amplifier; float suma_radis_sq = suma_radis * suma_radis; // Comprobación distancia al cuadrado (sin sqrt) const Vec2& pos_a = a.getCenter(); const Vec2& pos_b = b.getCenter(); float dx = pos_a.x - pos_b.x; float dy = pos_a.y - pos_b.y; float dist_sq = (dx * dx) + (dy * dy); return dist_sq <= suma_radis_sq; } } // namespace Physics