diff --git a/.claude/memory/project_ps_editor.md b/.claude/memory/project_ps_editor.md index 61efaab..643be94 100644 --- a/.claude/memory/project_ps_editor.md +++ b/.claude/memory/project_ps_editor.md @@ -8,11 +8,11 @@ PS_Editor is a runtime editor plugin for Unreal Engine 5.5 for the PROSERVE proj Key decisions: - UI: UMG driven by C++ (Slate) -- Gizmos: Custom actor with BasicShapes + unlit material (ITF is editor-only) +- Gizmos: Custom actor (BasicShapes + ProceduralMeshComponent for arcs) - Serialization: JSON via Json/JsonUtilities (FJsonObjectConverter) - Naming: PS_Editor_ prefix on all files/classes - Plugin path: Unreal/Plugins/PS_Editor/ -- AZERTY keyboard: arrows + A/Q for movement, E/R/T for modes +- AZERTY keyboard: arrows + A/Q movement, Z/E/R for translate/rotate/scale - Selection outline: auto-generated post-process material (C++), 8-neighbor edge detection on CustomStencil ## Completed Phases @@ -23,28 +23,32 @@ Key decisions: ### Phase 2 - Selection + Transform + Undo - Click-to-select (Movable actors only), Ctrl+click multi-select -- Custom gizmo (R/G/B arrows + cones, SDPG_Foreground, constant screen size) -- Translate/Rotate/Scale via gizmo drag, hotkeys E/R/T -- Snap to ground (End), soft-delete (Delete + confirmation dialog) +- Gizmo modes: + - Translate (Z): arrows + cones, world or local space + - Rotate (E): quarter-arc rings (ProceduralMesh), dynamic octant facing, local orientation during drag + - Scale (R): arrows + cubes + center cube (uniform), always local space +- World/Local space toggle (UI button), Scale always local +- Snap system: configurable translation/rotation/scale snapping (UI toggle + value field) +- Snap to ground (End), soft-delete (Delete + in-game confirmation dialog) - Undo/Redo (Ctrl+Z/Y, 50 action stack) - Properties panel + toolbar UI -- Materials: M_PS_Editor_Gizmo (Unlit, "Color" param, Translucent, Disable Depth Test) -- Selection outline: auto-generated PP material, BL_SceneColorAfterDOF, Lerp blend, color AF1500, 1px -- Outline material auto-created via OnPostEngineInit, uses InvSize for resolution-independent offsets +- Selection outline: auto-generated PP material, BL_SceneColorAfterDOF, color AF1500, 1px +- Rotation: screen-space direction with magnitude speed, fixed axis during drag ### Phase 3 - Object Spawning - SpawnableComponent: marker on BPs (name, category, thumbnail) -- SpawnCatalog DataAsset + Factory for easy creation -- SpawnManager: spawns in front of camera, tracks all spawned actors -- Catalogue UI: thumbnail cards (80x80), click to spawn, grouped by category -- CaptureAllThumbnails on DataAsset: auto-generates from UE thumbnails -- Spawn undo/redo, auto-deselect hidden actors +- SpawnCatalog DataAsset + Factory +- CaptureAllThumbnails on DataAsset +- Catalogue UI: thumbnail cards (80x80), grouped by category ### Phase 4 - JSON Serialization -- SceneData USTRUCT (Version, SceneName, Timestamp, Actors[ClassPath, Location, Rotation, Scale]) - SceneSerializer: Save/Load/Clear/GetSavedSceneNames - Files in Saved/PS_Editor/Scenes/{name}.json -- UI: Save field + button, New Scene, saved scenes list with click-to-load +- UI: Save field + button, New Scene, saved scenes list + +## Materials (plugin Content/) +- M_PS_Editor_Gizmo: Unlit, "Color" Vector Parameter, Translucent, Disable Depth Test +- M_PS_Editor_SelectionOutline: auto-generated via C++ OnPostEngineInit ## Next: Phase 5 - Advanced Editing - Splines, lighting, AI characters, property editing, duplication (Ctrl+D)