Refactor Fase 7: Crear ShapeManager funcional (código duplicado temporal)
ENFOQUE PRAGMÁTICO: - ShapeManager creado e implementado completamente - Código DUPLICADO entre Engine y ShapeManager temporalmente - Engine mantiene implementación para DEMO/LOGO (hasta Fase 8) - Compilación exitosa, aplicación funcional ARCHIVOS CREADOS/MODIFICADOS: 1. shape_manager.h: - Interfaz completa de ShapeManager - Métodos públicos para control de figuras 3D - Referencias a Scene/UI/StateManager 2. shape_manager.cpp: - Implementación completa de todos los métodos - toggleShapeMode(), activateShape(), update(), generateShape() - Sistema de atracción física con spring forces - Cálculo de convergencia para LOGO MODE - Includes de todas las Shape classes 3. engine.h: - Variables de figuras 3D MANTENIDAS (duplicadas con ShapeManager) - Comentarios documentando duplicación temporal - TODO markers para Fase 8 4. engine.cpp: - Inicialización de ShapeManager con dependencias - Métodos de figuras restaurados (no eliminados) - Código DEMO/LOGO funciona con variables locales - Sistema de rendering usa current_mode_ local DUPLICACIÓN TEMPORAL DOCUMENTADA: ```cpp // Engine mantiene: - current_mode_, current_shape_type_, last_shape_type_ - active_shape_, shape_scale_factor_, depth_zoom_enabled_ - shape_convergence_ - toggleShapeModeInternal(), activateShapeInternal() - updateShape(), generateShape(), clampShapeScale() ``` JUSTIFICACIÓN: - Migrar ShapeManager sin migrar DEMO/LOGO causaba conflictos masivos - Enfoque incremental: Fase 7 (ShapeManager) → Fase 8 (DEMO/LOGO) - Permite compilación y testing entre fases - ShapeManager está listo para uso futuro en controles manuales RESULTADO: ✅ Compilación exitosa (1 warning menor) ✅ Aplicación funciona correctamente ✅ Todas las características operativas ✅ ShapeManager completamente implementado ✅ Listo para Fase 8 (migración DEMO/LOGO a StateManager) PRÓXIMOS PASOS (Fase 8): 1. Migrar lógica DEMO/LOGO de Engine a StateManager 2. Convertir métodos de Engine en wrappers a StateManager/ShapeManager 3. Eliminar código duplicado 4. Limpieza final 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -239,11 +239,16 @@ bool Engine::initialize(int width, int height, int zoom, bool fullscreen) {
|
||||
|
||||
// Inicializar ShapeManager (gestión de figuras 3D)
|
||||
shape_manager_ = std::make_unique<ShapeManager>();
|
||||
shape_manager_->initialize(this); // Callback al Engine
|
||||
shape_manager_->initialize(this, scene_manager_.get(), ui_manager_.get(), nullptr,
|
||||
current_screen_width_, current_screen_height_);
|
||||
|
||||
// Inicializar StateManager (gestión de estados DEMO/LOGO)
|
||||
state_manager_ = std::make_unique<StateManager>();
|
||||
state_manager_->initialize(this); // Callback al Engine
|
||||
|
||||
// Actualizar ShapeManager con StateManager (dependencia circular - StateManager debe existir primero)
|
||||
shape_manager_->initialize(this, scene_manager_.get(), ui_manager_.get(), state_manager_.get(),
|
||||
current_screen_width_, current_screen_height_);
|
||||
}
|
||||
|
||||
return success;
|
||||
@@ -1564,6 +1569,13 @@ void Engine::switchTextureInternal(bool show_notification) {
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// Sistema de Figuras 3D - IMPLEMENTACIONES COMPLETAS TEMPORALES (hasta Fase 8)
|
||||
// ============================================================================
|
||||
// NOTA FASE 7: Engine mantiene implementaciones completas para DEMO/LOGO
|
||||
// ShapeManager tiene implementaciones paralelas que se usan para controles manuales del usuario
|
||||
// TODO FASE 8: Eliminar estas implementaciones cuando migremos DEMO/LOGO a StateManager
|
||||
|
||||
// Sistema de Figuras 3D - Alternar entre modo física y última figura (Toggle con tecla F)
|
||||
void Engine::toggleShapeModeInternal(bool force_gravity_on_exit) {
|
||||
if (current_mode_ == SimulationMode::PHYSICS) {
|
||||
|
||||
Reference in New Issue
Block a user