diff --git a/source/engine.cpp b/source/engine.cpp index ec49cfa..66855fa 100644 --- a/source/engine.cpp +++ b/source/engine.cpp @@ -790,6 +790,17 @@ void Engine::toggleRealFullscreen() { // Actualizar tamaño de pantalla para boids (wrapping boundaries) boid_manager_->updateScreenSize(current_screen_width_, current_screen_height_); + + // Si estamos en modo SHAPE, regenerar la figura con nuevas dimensiones + if (current_mode_ == SimulationMode::SHAPE) { + generateShape(); // Regenerar figura con nuevas dimensiones de pantalla + + // Activar atracción física en las bolas nuevas (crítico tras changeScenario) + auto& balls = scene_manager_->getBallsMutable(); + for (auto& ball : balls) { + ball->enableShapeAttraction(true); + } + } } SDL_free(displays); } @@ -812,6 +823,17 @@ void Engine::toggleRealFullscreen() { // Reinicar la escena con resolución original scene_manager_->updateScreenSize(current_screen_width_, current_screen_height_); scene_manager_->changeScenario(scene_manager_->getCurrentScenario(), current_mode_); + + // Si estamos en modo SHAPE, regenerar la figura con nuevas dimensiones + if (current_mode_ == SimulationMode::SHAPE) { + generateShape(); // Regenerar figura con nuevas dimensiones de pantalla + + // Activar atracción física en las bolas nuevas (crítico tras changeScenario) + auto& balls = scene_manager_->getBallsMutable(); + for (auto& ball : balls) { + ball->enableShapeAttraction(true); + } + } } }