b746578bc8
Sustituye en bloque las cabeceras de los archivos por una sola línea de copyright. Cero rastro de "Visente", "Sergi" o "1999" en el árbol del proyecto. Se eliminan también las variantes "© 2025 Port a C++20", "© 2025 Port a C++20 con SDL3" y "© 2025 Orni Attack" (con todas sus colas descriptivas como "Arquitectura de entidades" o "Sistema de física"), que en este punto eran ruido histórico. Aplicado con un par de sed (find -type f, excluyendo source/external y source/legacy): 1. \|^// © 1999 Visente i Sergi (versión Pascal)$|d 2. s|^// © 2025 (Port a C++20.*|Orni Attack.*)$|// © 2026 JailDesigner| Verificado: la única variante de cabecera tras el sweep es "// © 2026 JailDesigner". Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
33 lines
992 B
C++
33 lines
992 B
C++
// 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 bool check_collision(const Entities::Entity& a, const Entities::Entity& b, float amplifier = 1.0F) {
|
|
// 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
|