fix(debris): bug rotacion cuadratica + shrink exponencial; geometria autoritativa

This commit is contained in:
JailDesigner committed 2026-05-21 13:37:12 +02:00
1 parent e84f555a66
commit 9b25e875f3
5 files changed
+55 -38

No files matched your search

+5 -3
View File
@@ -34,9 +34,10 @@ namespace Effects {
// - velocitat_objecte: velocity de l'objecte que explota (px/s, per defecte 0)
// - velocitat_angular: velocity angular heretada (rad/s, per defecte 0)
// - factor_herencia_visual: factor de herència rotación visual (0.0-1.0, per defecte 0.0)
// - lifetime: temps de vida del debris (s, per defecte TEMPS_VIDA = 2s)
// - lifetime: temps INTACTE del debris (s, per defecte INTACT_TIME)
// - friction: desacceleració del debris (px/s², per defecte ACCELERACIO = -60)
// - segment_multiplier: nombre de còpies per segment (per defecte 1 = sense duplicar)
// - shrink_rate: velocity de mengua durant MENGUANT (1/s, per defecte SHRINK_RATE)
void explode(const std::shared_ptr<Graphics::Shape>& shape,
const Vec2& centro,
float angle,
@@ -50,7 +51,8 @@ namespace Effects {
SDL_Color color = {0, 0, 0, 0}, // alpha==0 → fragmentos usan oscilador global
float lifetime = Defaults::Physics::Debris::INTACT_TIME,
float friction = Defaults::Physics::Debris::ACCELERACIO,
int segment_multiplier = 1);
int segment_multiplier = 1,
float shrink_rate = Defaults::Physics::Debris::SHRINK_RATE);
// Actualitzar todos los fragments active
void update(float delta_time);
@@ -86,7 +88,7 @@ namespace Effects {
-> std::vector<std::pair<Vec2, Vec2>>;
// Inicialitza un debris en un slot lliure i el deixa actiu. Retorna
// false si el pool está ple (la cridadora ha d'aturar el bucle).
auto spawnDebris(const Vec2& world_p1, const Vec2& world_p2, const Vec2& centro, float velocitat_base, float brightness, const Vec2& velocitat_objecte, float velocitat_angular, float factor_herencia_visual, SDL_Color color, float lifetime, float friction) -> bool;
auto spawnDebris(const Vec2& world_p1, const Vec2& world_p2, const Vec2& centro, float velocitat_base, float brightness, const Vec2& velocitat_objecte, float velocitat_angular, float factor_herencia_visual, SDL_Color color, float lifetime, float friction, float shrink_rate) -> bool;
static void applyAngularVelocity(Debris& debris, const Vec2& direccio, float velocitat_angular);
static void applyVisualRotation(Debris& debris, float velocitat_angular, float factor_herencia_visual);
};