Refactor fase 10: Implementar BoidManager completo
Cambios realizados: - Creado BoidManager (source/boids_mgr/) con algoritmo de Reynolds (1987) * Separación: Evitar colisiones con vecinos cercanos * Alineación: Seguir dirección promedio del grupo * Cohesión: Moverse hacia centro de masa del grupo * Wrapping boundaries (teletransporte en bordes) * Velocidad y fuerza limitadas (steering behavior) - Añadido BOIDS a enum SimulationMode (defines.h) - Añadidas constantes de configuración boids (defines.h) - Integrado BoidManager en Engine (inicialización, update, toggle) - Añadido binding de tecla J para toggleBoidsMode() (input_handler.cpp) - Añadidos helpers en Ball: getVelocity(), setVelocity(), setPosition() - Actualizado CMakeLists.txt para incluir source/boids_mgr/*.cpp Arquitectura: - BoidManager sigue el patrón establecido (similar a ShapeManager) - Gestión independiente del comportamiento de enjambre - Tres reglas de Reynolds implementadas correctamente - Compatible con sistema de resolución dinámica Estado: Compilación exitosa, BoidManager funcional Próximo paso: Testing y ajuste de parámetros boids 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -71,6 +71,13 @@ class Ball {
|
||||
GravityDirection getGravityDirection() const { return gravity_direction_; }
|
||||
bool isOnSurface() const { return on_surface_; }
|
||||
|
||||
// Getters/Setters para velocidad (usado por BoidManager)
|
||||
void getVelocity(float& vx, float& vy) const { vx = vx_; vy = vy_; }
|
||||
void setVelocity(float vx, float vy) { vx_ = vx; vy_ = vy; }
|
||||
|
||||
// Setter para posición simple (usado por BoidManager)
|
||||
void setPosition(float x, float y) { pos_.x = x; pos_.y = y; }
|
||||
|
||||
// Getters/Setters para batch rendering
|
||||
SDL_FRect getPosition() const { return pos_; }
|
||||
Color getColor() const { return color_; }
|
||||
|
||||
Reference in New Issue
Block a user