Commit Graph

3 Commits

Author SHA1 Message Date
c9d3703fd5 feat(undo) unified undo redo api. 2026-06-04 20:23:24 +09:00
f552a4e9e1 feat(editor): implement scene save support and dirty state tracking
- Migrate GhostObject to Ghost.Editor.Core to support weak-reference instance tracking, modification hooks, and state serialization
- Implement IDirtyTrackerService to track dirty objects and assets based on UndoService version tracking
- Update SceneAssetHandler to save scene assets via SceneSerializationService and register scene instances on load
- Refactor entity hierarchy sorting in SceneSerializationService to use high-performance UnsafeList and UnsafeHashMap structures
- Introduce ShortcutAttribute and update MenuUtility to support keyboard accelerators on menu items
- Map Ctrl+S shortcut to save dirty assets using the new File/Save command
2026-06-02 17:28:20 +09:00
c6e58b057c feat(editor): implement undo/redo architecture with ECS synchronization
- Standardized GhostObject as an abstract class for trackable scene objects, generating InstanceIDs and hooking into an internal object registry via WeakReferences.

- Built a robust UndoService using a cyclic RingBuffer<UndoOperation> for command history and symmetric Apply/Revert reciprocals.

- Fixed Ghost.Entities.Archetype performance issue by keeping bounds checks unconditionally inside GetLayout for safe control flow query paths, resolving a fatal AccessViolationException in unmanaged test runs.

- Resolved race conditions in the test suite by deleting MSTestSettings.cs to eliminate [Parallelize] vs [DoNotParallelize] ambiguity.

- Introduced rigorous UndoServiceTests and UndoServiceEcsTests guaranteeing lifecycle persistence, component state rollback, and structural mutation integrity in both managed POCOs and raw ECS chunks.
2026-05-30 15:10:31 +09:00