diff --git a/source/engine.cpp b/source/engine.cpp index b4f6e2b..8a918c8 100644 --- a/source/engine.cpp +++ b/source/engine.cpp @@ -340,6 +340,12 @@ void Engine::update() { // Gravedad y física void Engine::handleGravityToggle() { + // Si estamos en modo boids, salir a modo física primero + if (current_mode_ == SimulationMode::BOIDS) { + toggleBoidsMode(); // Esto cambia a PHYSICS y activa gravedad + return; // La notificación ya se muestra en toggleBoidsMode + } + // Si estamos en modo figura, salir a modo física SIN GRAVEDAD if (current_mode_ == SimulationMode::SHAPE) { toggleShapeModeInternal(false); // Desactivar figura sin forzar gravedad ON @@ -354,6 +360,12 @@ void Engine::handleGravityToggle() { } void Engine::handleGravityDirectionChange(GravityDirection direction, const char* notification_text) { + // Si estamos en modo boids, salir a modo física primero + if (current_mode_ == SimulationMode::BOIDS) { + toggleBoidsMode(); // Esto cambia a PHYSICS y activa gravedad + // Continuar para aplicar la dirección de gravedad + } + // Si estamos en modo figura, salir a modo física CON gravedad if (current_mode_ == SimulationMode::SHAPE) { toggleShapeModeInternal(); // Desactivar figura (activa gravedad automáticamente) @@ -754,6 +766,9 @@ void Engine::toggleRealFullscreen() { // Reinicar la escena con nueva resolución scene_manager_->updateScreenSize(current_screen_width_, current_screen_height_); scene_manager_->changeScenario(scene_manager_->getCurrentScenario()); + + // Actualizar tamaño de pantalla para boids (wrapping boundaries) + boid_manager_->updateScreenSize(current_screen_width_, current_screen_height_); } SDL_free(displays); }