Compare commits
34 Commits
13da8293c1
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 6eca4fc94b | |||
| 4a98c6402b | |||
| f6efc00c73 | |||
| 34280de44a | |||
| ac91e4e8f9 | |||
| c7ec3e9653 | |||
| d9ed016297 | |||
| 67ac3ffab7 | |||
| 8f7476d2db | |||
| b9ec67f9ff | |||
| 2a53d12e68 | |||
| 49cb480e15 | |||
| 7f2600f0b8 | |||
| c520f3ccd9 | |||
| 2f8633d23b | |||
| 98de4dff6f | |||
| b51f063d52 | |||
| 93b9c7d927 | |||
| 050ea4eb2f | |||
| 9877c1b6de | |||
| 721c9bb5c3 | |||
| e999a11349 | |||
| bc491b7b94 | |||
| b069c20af3 | |||
| d9d358e694 | |||
| 5b9174bdcd | |||
| bc226338e0 | |||
| bdceecbe56 | |||
| 4181801635 | |||
| 75f54e27c4 | |||
| 4b0a182013 | |||
| b08b17d762 | |||
| 4354b8c96e | |||
| cd43ae6adc |
@@ -1,4 +1,4 @@
|
|||||||
- [PS_Editor plugin project](project_ps_editor.md) — Runtime editor plugin for UE 5.5, Phases 1-4 done, outline material pending
|
- [PS_Editor plugin project](project_ps_editor.md) — Runtime editor plugin for UE 5.7 (migrated from 5.5 in April 2026), Phases 1-4 done, outline material pending
|
||||||
- [Underscore naming](feedback_naming.md) — Always use PS_Editor_ prefix with underscores in file/class names
|
- [Underscore naming](feedback_naming.md) — Always use PS_Editor_ prefix with underscores in file/class names
|
||||||
- [UE5 build process](reference_build.md) — CLI build command for the project (Build.bat path, target name, flags)
|
- [UE5 build process](reference_build.md) — CLI build command for PROSERVE_UE_5_7 (5.5 host deprecated), Build.bat path, target name, junction check
|
||||||
- [Build workflow](feedback_build_workflow.md) — Prefer Live Coding (Ctrl+Alt+F11) when UE is open, CLI build only when UE is closed
|
- [Build workflow](feedback_build_workflow.md) — Prefer Live Coding (Ctrl+Alt+F11) when UE is open, CLI build only when UE is closed
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
name: PS_Editor plugin project
|
name: PS_Editor plugin project
|
||||||
description: Runtime editor plugin for UE 5.5 - object placement, scene editing, JSON save/load in packaged builds
|
description: Runtime editor plugin for UE 5.7 - object placement, scene editing, JSON save/load in packaged builds
|
||||||
type: project
|
type: project
|
||||||
---
|
---
|
||||||
|
|
||||||
PS_Editor is a runtime editor plugin for Unreal Engine 5.5 for the PROSERVE project.
|
PS_Editor is a runtime editor plugin for Unreal Engine 5.7 for the PROSERVE project. The plugin was started on UE 5.5; the host project migrated to UE 5.7 in April 2026 and the plugin follows. Build details in reference_build.md.
|
||||||
|
|
||||||
Key decisions:
|
Key decisions:
|
||||||
- UI: UMG driven by C++ (Slate)
|
- UI: UMG driven by C++ (Slate)
|
||||||
|
|||||||
@@ -1,18 +1,30 @@
|
|||||||
---
|
---
|
||||||
name: UE5 build process
|
name: UE5 build process
|
||||||
description: How to build the PS_ProserveEditor UE 5.5 project from command line on Windows
|
description: How to build the PROSERVE host project (currently UE 5.7) from command line on Windows
|
||||||
type: reference
|
type: reference
|
||||||
---
|
---
|
||||||
|
|
||||||
UE 5.5 is installed at `C:\Program Files\Epic Games\UE_5.5` (found via registry key `HKLM\SOFTWARE\EpicGames\Unreal Engine\5.5`).
|
The PS_Editor plugin is developed in `E:\ASTERION\GIT\PS_Editor\Unreal\Plugins\PS_Editor` and consumed by the PROSERVE host project via an NTFS junction. Always build the host project, not the plugin in isolation.
|
||||||
|
|
||||||
|
**Current host project (April 2026):** `E:\ASTERION\SVN\DEV\PROSERVE_UE_5_7\PROSERVE_UE_5_7.uproject` (Unreal Engine 5.7)
|
||||||
|
|
||||||
|
The previous 5.5 host (`PROSERVE_UE_5_5`) is deprecated — do not use unless explicitly asked.
|
||||||
|
|
||||||
|
UE 5.7 is installed at `C:\Program Files\Epic Games\UE_5.7` (found via registry key `HKLM\SOFTWARE\EpicGames\Unreal Engine\5.7`).
|
||||||
|
|
||||||
Build command (Editor target, Development):
|
Build command (Editor target, Development):
|
||||||
```
|
```
|
||||||
"C:/Program Files/Epic Games/UE_5.5/Engine/Build/BatchFiles/Build.bat" PS_ProserveEditorEditor Win64 Development -Project="C:/ASTERION/GIT/PS_ProserveEditor/Unreal/PS_ProserveEditor.uproject" -WaitMutex -FromMsBuild
|
"C:/Program Files/Epic Games/UE_5.7/Engine/Build/BatchFiles/Build.bat" PROSERVE_UE_5_7Editor Win64 Development -Project="E:/ASTERION/SVN/DEV/PROSERVE_UE_5_7/PROSERVE_UE_5_7.uproject" -WaitMutex -FromMsBuild
|
||||||
```
|
```
|
||||||
|
|
||||||
**How to apply:** Use this command to compile after code changes. Timeout should be set to 600000ms (10 min) for safety. The target name is `PS_ProserveEditorEditor` (Editor suffix) for editor builds.
|
**How to apply:** Use this command to compile after code changes. Timeout should be set to 600000ms (10 min) for safety. The target name is `PROSERVE_UE_5_7Editor` (Editor suffix) for editor builds.
|
||||||
|
|
||||||
**When to use CLI vs Live Coding:**
|
**When to use CLI vs Live Coding:**
|
||||||
- Live Coding (Ctrl+Alt+F11): .cpp only changes (no new UCLASS, USTRUCT, UENUM, UPROPERTY in headers)
|
- Live Coding (Ctrl+Alt+F11): .cpp only changes (no new UCLASS, USTRUCT, UENUM, UPROPERTY in headers)
|
||||||
- Full CLI build (UE must be closed): new files, header changes with new reflected types, Build.cs changes
|
- Full CLI build (UE must be closed): new files, header changes with new reflected types, Build.cs changes
|
||||||
|
|
||||||
|
**Plugin junction verification:**
|
||||||
|
```
|
||||||
|
ls -la E:/ASTERION/SVN/DEV/PROSERVE_UE_5_7/Plugins/ | grep PS_Editor
|
||||||
|
```
|
||||||
|
Should show a symlink pointing to `/e/ASTERION/GIT/PS_Editor/Unreal/Plugins/PS_Editor`. If broken, the host project will build against a stale or missing plugin copy.
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
{
|
|
||||||
"permissions": {
|
|
||||||
"allow": [
|
|
||||||
"Bash(reg query:*)",
|
|
||||||
"Bash(\"C:/Program Files/Epic Games/UE_5.5/Engine/Build/BatchFiles/Build.bat\" PS_ProserveEditorEditor Win64 Development -Project=\"C:/ASTERION/GIT/PS_ProserveEditor/Unreal/PS_ProserveEditor.uproject\" -WaitMutex -FromMsBuild)",
|
|
||||||
"Bash(cp \"C:/Users/j_foucher/.claude/projects/C--ASTERION-GIT-PS-ProserveEditor/memory/MEMORY.md\" \"C:/ASTERION/GIT/PS_ProserveEditor/.claude/memory/MEMORY.md\")",
|
|
||||||
"Bash(cp \"C:/Users/j_foucher/.claude/projects/C--ASTERION-GIT-PS-ProserveEditor/memory/project_ps_editor.md\" \"C:/ASTERION/GIT/PS_ProserveEditor/.claude/memory/project_ps_editor.md\")",
|
|
||||||
"Bash(cp \"C:/Users/j_foucher/.claude/projects/C--ASTERION-GIT-PS-ProserveEditor/memory/feedback_naming.md\" \"C:/ASTERION/GIT/PS_ProserveEditor/.claude/memory/feedback_naming.md\")",
|
|
||||||
"Bash(cp \"C:/Users/j_foucher/.claude/projects/C--ASTERION-GIT-PS-ProserveEditor/memory/reference_build.md\" \"C:/ASTERION/GIT/PS_ProserveEditor/.claude/memory/reference_build.md\")",
|
|
||||||
"Bash(cp \"C:/Users/j_foucher/.claude/projects/C--ASTERION-GIT-PS-ProserveEditor/memory/feedback_build_workflow.md\" \"C:/ASTERION/GIT/PS_ProserveEditor/.claude/memory/feedback_build_workflow.md\")",
|
|
||||||
"Bash(powershell -Command \"\\(Get-ItemProperty 'HKLM:\\\\SOFTWARE\\\\EpicGames\\\\Unreal Engine\\\\5.5' -Name 'InstalledDirectory'\\).InstalledDirectory\")",
|
|
||||||
"Bash(\"C:\\\\Program Files\\\\Epic Games\\\\UE_5.5\\\\Engine\\\\Build\\\\BatchFiles\\\\Build.bat\" PS_ProserveEditorEditor Win64 Development -Project=\"C:\\\\ASTERION\\\\GIT\\\\PS_ProserveEditor\\\\Unreal\\\\PS_ProserveEditor.uproject\" -WaitMutex -FromMsBuild)",
|
|
||||||
"Bash(tasklist)",
|
|
||||||
"Bash(fsutil reparsepoint:*)",
|
|
||||||
"Bash(svn propget:*)",
|
|
||||||
"Bash(where svn:*)",
|
|
||||||
"Bash(where TortoiseProc)",
|
|
||||||
"Bash(dir \"C:\\\\Program Files\\\\Epic Games\\\\UE_5.5\\\\Engine\\\\Build\\\\BatchFiles\\\\Build.bat\")",
|
|
||||||
"Bash(dir \"D:\\\\Program Files\\\\Epic Games\\\\UE_5.5\\\\Engine\\\\Build\\\\BatchFiles\\\\Build.bat\")",
|
|
||||||
"Bash(dir \"E:\\\\UE_5.5\\\\Engine\\\\Build\\\\BatchFiles\\\\Build.bat\")",
|
|
||||||
"Bash(where UnrealBuildTool)",
|
|
||||||
"Bash(git add:*)",
|
|
||||||
"Bash(git commit -m ':*)",
|
|
||||||
"Bash(cmd //c mklink /J \"C:\\\\ASTERION\\\\SVN\\\\DEV\\\\PROSERVE_UE_5_5\\\\Plugins\\\\PS_BehaviorEditor\" \"C:\\\\ASTERION\\\\GIT\\\\PS_ProserveEditor\\\\Unreal\\\\Plugins\\\\PS_BehaviorEditor\")",
|
|
||||||
"Bash(cmd /c \"mklink /J \\\\\"C:\\\\ASTERION\\\\SVN\\\\DEV\\\\PROSERVE_UE_5_5\\\\Plugins\\\\PS_BehaviorEditor\\\\\" \\\\\"C:\\\\ASTERION\\\\GIT\\\\PS_ProserveEditor\\\\Unreal\\\\Plugins\\\\PS_BehaviorEditor\\\\\"\")",
|
|
||||||
"Bash(cmd /c \"dir C:\\\\ASTERION\\\\SVN\\\\DEV\\\\PROSERVE_UE_5_5\\\\Plugins\\\\PS_BehaviorEditor\")",
|
|
||||||
"Bash(powershell -Command \"New-Item -ItemType Junction -Path 'C:\\\\ASTERION\\\\SVN\\\\DEV\\\\PROSERVE_UE_5_5\\\\Plugins\\\\PS_BehaviorEditor' -Target 'C:\\\\ASTERION\\\\GIT\\\\PS_ProserveEditor\\\\Unreal\\\\Plugins\\\\PS_BehaviorEditor'\")",
|
|
||||||
"Read(//c/ASTERION/SVN/DEV/PROSERVE_UE_5_5/**)"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
3
.gitignore
vendored
@@ -16,3 +16,6 @@ Unreal/Plugins/*/Intermediate/
|
|||||||
Thumbs.db
|
Thumbs.db
|
||||||
Desktop.ini
|
Desktop.ini
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
|
# Claude Code per-user local settings
|
||||||
|
.claude/settings.local.json
|
||||||
|
|||||||
110
CLAUDE.md
@@ -1,7 +1,7 @@
|
|||||||
# PS_ProserveEditor - Project Guidelines
|
# PS_ProserveEditor - Project Guidelines
|
||||||
|
|
||||||
## Project Overview
|
## Project Overview
|
||||||
Unreal Engine 5.5 project with runtime editor plugin (PS_Editor). The plugin enables runtime scene editing in packaged builds: object placement, property editing, scenario definition, splines, lighting, and JSON scene save/load.
|
Unreal Engine 5.7 project with runtime editor plugin (PS_Editor). The plugin enables runtime scene editing in packaged builds: object placement, property editing, scenario definition, splines, lighting, and JSON scene save/load. The plugin was started on UE 5.5; the host project migrated to UE 5.7 in April 2026.
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
- **Plugin**: PS_Editor (runtime plugin, must work in packaged builds)
|
- **Plugin**: PS_Editor (runtime plugin, must work in packaged builds)
|
||||||
@@ -10,6 +10,91 @@ Unreal Engine 5.5 project with runtime editor plugin (PS_Editor). The plugin ena
|
|||||||
- **Serialization**: JSON via Json/JsonUtilities modules (FJsonObjectConverter)
|
- **Serialization**: JSON via Json/JsonUtilities modules (FJsonObjectConverter)
|
||||||
- **Input**: Enhanced Input system (AZERTY: arrows + A/Q movement, E/R/T modes)
|
- **Input**: Enhanced Input system (AZERTY: arrows + A/Q movement, E/R/T modes)
|
||||||
|
|
||||||
|
## Editor vs. Gameplay execution boundary — CRITICAL
|
||||||
|
|
||||||
|
The plugin runs in two distinct modes and it's essential never to leak editor-only code
|
||||||
|
into the gameplay runtime loaded via `UPS_Editor_SceneLoader::LoadScene` (standalone).
|
||||||
|
|
||||||
|
### Editor runtime mode
|
||||||
|
Activated when the `APS_Editor_PlayerController` + `APS_Editor_HUD` + `UPS_Editor_MainWidget*`
|
||||||
|
stack is created (typical during authoring — the user is in the runtime editor).
|
||||||
|
- `UPS_Editor_SceneLoader::bIsEditorModeActive == true`
|
||||||
|
- The HUD widget drives property editing, catalogue spawn, save/load, simulate, timeline
|
||||||
|
- Interface methods called **only** by the widget (never in gameplay):
|
||||||
|
- `GetCustomOptionsForProperty` / `GetCustomOptionsWithValuesForProperty` / `GetCurrentDisplayForProperty`
|
||||||
|
- `OnEditorModeChanged`, `OnEditorTick`
|
||||||
|
- `OnEditorNeedsReinit`, `OnEditorNeedsRespawn`
|
||||||
|
|
||||||
|
### Gameplay mode
|
||||||
|
The project (PROSERVE) loads a scenario via `UPS_Editor_SceneLoader::LoadScene` from a GameMode
|
||||||
|
BeginPlay, without ever instantiating the editor PlayerController / HUD / widget.
|
||||||
|
- `UPS_Editor_SceneLoader::bIsEditorModeActive == false`
|
||||||
|
- Actors spawn, their properties are applied from JSON, `OnPropertiesLoaded` fires once
|
||||||
|
- The timeline subsystem auto-plays if the scenario has tracks, driven **server-side only**
|
||||||
|
|
||||||
|
### Interface methods that fire in BOTH modes
|
||||||
|
- `OnPropertiesLoaded` — after every scene load, editor or gameplay (applied once post-spawn)
|
||||||
|
- `OnEditorPropertyChanged` — fires both in editor (on UI edit via `ApplyPropertyFromUI`) AND
|
||||||
|
in gameplay (on server when the timeline applies a new keyframe value via
|
||||||
|
`TimelineSubsystem::ApplyTrackAtTime`). Despite the name, the "Editor" refers to the
|
||||||
|
PS_Editor plugin — the event is the canonical hook for "a property changed at runtime".
|
||||||
|
In gameplay only the **server** invokes it; client-side reaction must go through
|
||||||
|
`ReplicatedUsing=OnRep_X` RepNotify on the replicated property.
|
||||||
|
|
||||||
|
### Rule when adding new features
|
||||||
|
- Anything tied to property panel UI (new interface method, new widget logic, dropdown
|
||||||
|
helpers, etc.) lives in the widget only — no extra work to scope it out of gameplay
|
||||||
|
- Anything added to the `SceneLoader::LoadScene` path runs in gameplay and must handle
|
||||||
|
`NM_Client`, replication, and server-authority correctly (the timeline subsystem is the
|
||||||
|
reference pattern)
|
||||||
|
- Expensive BP implementations of editor-UI interface methods (DataTable lookups, class
|
||||||
|
resolution, etc.) can stay expensive — they never run outside the authoring session
|
||||||
|
|
||||||
|
### How to guard code that could run in either mode
|
||||||
|
```cpp
|
||||||
|
if (UPS_Editor_SceneLoader::IsInEditorMode())
|
||||||
|
{
|
||||||
|
// editor-only behaviour
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Known PIE-only AI quirk — use Standalone for AI testing
|
||||||
|
|
||||||
|
When the editor's "Play" button calls `UGameplayStatics::OpenLevel(BaseLevel)` from a PIE
|
||||||
|
session, the BaseLevel's `RecastNavMesh` actor ends up pending-kill at registration time
|
||||||
|
(UE logs `RegistrationFailed_DataPendingKill` ×2 and silently spawns an empty
|
||||||
|
`AbstractNavData-Default` as fallback). All `FindPathAsync` / `ProjectPointToNavigation`
|
||||||
|
queries return empty after that — pathfinding looks broken with no error.
|
||||||
|
|
||||||
|
This is **PIE-specific**:
|
||||||
|
- Standalone Game (Window → Standalone) — works correctly
|
||||||
|
- Packaged builds — work correctly
|
||||||
|
- PIE direct on BaseLevel (no editor map / OpenLevel involved) — works correctly
|
||||||
|
- PIE on editor map → click Play (OpenLevel transition inside PIE) — broken
|
||||||
|
|
||||||
|
Multiple workaround attempts have all failed (cascading re-registrations through
|
||||||
|
`RegisterNavData` / `OnInitializeActors` / `AddNavigationSystemToWorld` / `Build` /
|
||||||
|
`SpawnMissingNavigationData`; transition map; duplicated sublevel suffixed `_default`).
|
||||||
|
The cause is internal to PIE's OpenLevel handling and cannot be fixed from the plugin
|
||||||
|
side without engine modifications.
|
||||||
|
|
||||||
|
**Workflow:** for AI iteration, run **Standalone Game** instead of PIE. It exercises the
|
||||||
|
exact same code path as packaged builds.
|
||||||
|
or gate on `bIsCurrentlyLoading` to skip BP init during JSON restore.
|
||||||
|
|
||||||
|
## UI Modes — IMPORTANT for widget changes
|
||||||
|
|
||||||
|
The runtime editor ships with **multiple widget implementations** that must all stay in sync:
|
||||||
|
- `PS_Editor_MainWidget.cpp/.h` — modern UMG-based widget (primary target long-term)
|
||||||
|
- `PS_Editor_MainWidget_Legacy.cpp/.h` — Slate-only legacy widget (**currently active** as of April 2026)
|
||||||
|
- `PS_Editor_MainWidget_UMG.cpp/.h` — UMG variant
|
||||||
|
|
||||||
|
The user can switch between them via a `UIMode` setting. At any given time only one is running, but the project keeps all three compiled.
|
||||||
|
|
||||||
|
**Rule:** when changing any behavior inside a widget (new interface calls, new property row logic, new UI controls, bug fixes in RebuildDynamicProperties / ApplyPropertyFromUI / RefreshDynamicPropertyValues, etc.), **apply the change to ALL widget implementations at the same time**. Otherwise the user's current UIMode gets the fix and the others don't — the "it's like you didn't change anything" bug.
|
||||||
|
|
||||||
|
Symptom that the wrong widget was edited: logs you added don't appear in the Output Log despite the build being clean and the DLL being correctly loaded. Always grep for the function name across all `PS_Editor_MainWidget*.cpp` files before assuming a single edit is sufficient.
|
||||||
|
|
||||||
## Naming Conventions
|
## Naming Conventions
|
||||||
- All plugin files and classes use the `PS_Editor_` prefix (e.g., `PS_Editor_GameMode`, `PS_Editor_Pawn`)
|
- All plugin files and classes use the `PS_Editor_` prefix (e.g., `PS_Editor_GameMode`, `PS_Editor_Pawn`)
|
||||||
- Code and comments in English
|
- Code and comments in English
|
||||||
@@ -21,15 +106,28 @@ Unreal Engine 5.5 project with runtime editor plugin (PS_Editor). The plugin ena
|
|||||||
- When fixing a bug, fix the root cause, not the symptom.
|
- When fixing a bug, fix the root cause, not the symptom.
|
||||||
- If something requires error handling or validation to work reliably, include it without asking.
|
- If something requires error handling or validation to work reliably, include it without asking.
|
||||||
|
|
||||||
|
## Workflow — CRITICAL
|
||||||
|
- **Do not make behavior / logic changes without first explaining the plan and waiting for the
|
||||||
|
user's go-ahead.** Explain what the change will be, why it fixes the issue, and what side
|
||||||
|
effects it could have. Only after the user approves (or asks to proceed), apply the edit.
|
||||||
|
- Diagnostic-only additions (temporary `UE_LOG`, read-only inspections) are fine without
|
||||||
|
approval because they can't regress the project.
|
||||||
|
- Refactors, algorithm changes, comportement changes, new defaults, removed features — all
|
||||||
|
require approval first, even when they seem obvious.
|
||||||
|
- When revealing new data (e.g. logs) suggests a fix, STATE the proposed fix in plain words
|
||||||
|
and wait. Don't pre-emptively write + apply the code change in the same turn.
|
||||||
|
|
||||||
## Build
|
## Build
|
||||||
- Engine: Unreal Engine 5.5
|
- Engine: Unreal Engine 5.7 (host project migrated from 5.5 in April 2026)
|
||||||
- Plugin location: `Unreal/Plugins/PS_Editor/`
|
- Plugin location: `Unreal/Plugins/PS_Editor/` (consumed via NTFS junction from the PROSERVE host project's `Plugins/` directory)
|
||||||
- Game module: `PS_ProserveEditor` (in `Unreal/Source/PS_ProserveEditor/`)
|
- Host project: `E:\ASTERION\SVN\DEV\PROSERVE_UE_5_7\PROSERVE_UE_5_7.uproject` — always build this, not the plugin in isolation
|
||||||
|
- Game module: `PROSERVE_UE_5_7` (in the host project's `Source/`)
|
||||||
- CLI build command (Editor, Development):
|
- CLI build command (Editor, Development):
|
||||||
```
|
```
|
||||||
"<UE_INSTALL>/Engine/Build/BatchFiles/Build.bat" PS_ProserveEditorEditor Win64 Development -Project="<REPO>/Unreal/PS_ProserveEditor.uproject" -WaitMutex -FromMsBuild
|
"C:/Program Files/Epic Games/UE_5.7/Engine/Build/BatchFiles/Build.bat" PROSERVE_UE_5_7Editor Win64 Development -Project="E:/ASTERION/SVN/DEV/PROSERVE_UE_5_7/PROSERVE_UE_5_7.uproject" -WaitMutex -FromMsBuild
|
||||||
```
|
```
|
||||||
UE install path can be found via registry: `HKLM\SOFTWARE\EpicGames\Unreal Engine\5.5` > `InstalledDirectory`
|
UE install path can be found via registry: `HKLM\SOFTWARE\EpicGames\Unreal Engine\5.7` > `InstalledDirectory`
|
||||||
|
- The 5.5 host (`PROSERVE_UE_5_5`) is deprecated — do not build against it unless explicitly asked.
|
||||||
|
|
||||||
## Project Memory
|
## Project Memory
|
||||||
Shared project memory is stored in `.claude/memory/` (versioned in the repository). When starting a new session on any machine, read these files to restore context:
|
Shared project memory is stored in `.claude/memory/` (versioned in the repository). When starting a new session on any machine, read these files to restore context:
|
||||||
|
|||||||
BIN
UI/BP_PS_Editor_HUD.uasset
Normal file
BIN
UI/assets/gizmo_rotate.png
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
UI/assets/gizmo_scale.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
UI/assets/gizmo_translate.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
UI/assets/thumb_fx.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
UI/assets/thumb_npc.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
UI/assets/thumb_prop.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
UI/assets/thumb_spline.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
UI/assets/thumb_weapon.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
UI/icons/Bell.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
UI/icons/Box.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
UI/icons/Camera.png
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
UI/icons/Check.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
UI/icons/ChevronDown.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
UI/icons/ChevronLeft.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
UI/icons/ChevronRight.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
UI/icons/Command.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
UI/icons/Diamond.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
UI/icons/Download.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
UI/icons/Eye.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
UI/icons/EyeOff.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
UI/icons/Film.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
UI/icons/Flag.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
UI/icons/Folder.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
UI/icons/Globe.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
UI/icons/Grid.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
UI/icons/Help.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
UI/icons/Layers.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
UI/icons/Lightbulb.png
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
UI/icons/Lock.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
UI/icons/Map.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
UI/icons/Minus.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
UI/icons/More.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
UI/icons/Move.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
UI/icons/PanelBottom.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
UI/icons/PanelRight.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
UI/icons/Pause.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
UI/icons/Play.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
UI/icons/Plus.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
UI/icons/Record.png
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
BIN
UI/icons/Rotate.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
UI/icons/Save.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
UI/icons/Scale.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
UI/icons/Search.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
UI/icons/Settings.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
UI/icons/Sidebar.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
UI/icons/SkipBack.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
UI/icons/SkipFwd.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
UI/icons/Snap.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
UI/icons/Spline.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
UI/icons/Stop.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
UI/icons/Target.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
UI/icons/Unlock.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
UI/icons/User.png
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
BIN
UI/icons/Zap.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
UI/icons/icons_16/Bell.png
Normal file
|
After Width: | Height: | Size: 324 B |
BIN
UI/icons/icons_16/Box.png
Normal file
|
After Width: | Height: | Size: 408 B |
BIN
UI/icons/icons_16/Camera.png
Normal file
|
After Width: | Height: | Size: 374 B |
BIN
UI/icons/icons_16/Check.png
Normal file
|
After Width: | Height: | Size: 231 B |
BIN
UI/icons/icons_16/ChevronDown.png
Normal file
|
After Width: | Height: | Size: 218 B |
BIN
UI/icons/icons_16/ChevronLeft.png
Normal file
|
After Width: | Height: | Size: 216 B |
BIN
UI/icons/icons_16/ChevronRight.png
Normal file
|
After Width: | Height: | Size: 218 B |
BIN
UI/icons/icons_16/Command.png
Normal file
|
After Width: | Height: | Size: 340 B |
BIN
UI/icons/icons_16/Diamond.png
Normal file
|
After Width: | Height: | Size: 262 B |
BIN
UI/icons/icons_16/Download.png
Normal file
|
After Width: | Height: | Size: 292 B |
BIN
UI/icons/icons_16/Eye.png
Normal file
|
After Width: | Height: | Size: 397 B |
BIN
UI/icons/icons_16/EyeOff.png
Normal file
|
After Width: | Height: | Size: 382 B |
BIN
UI/icons/icons_16/Film.png
Normal file
|
After Width: | Height: | Size: 302 B |
BIN
UI/icons/icons_16/Flag.png
Normal file
|
After Width: | Height: | Size: 246 B |
BIN
UI/icons/icons_16/Folder.png
Normal file
|
After Width: | Height: | Size: 250 B |
BIN
UI/icons/icons_16/Globe.png
Normal file
|
After Width: | Height: | Size: 461 B |
BIN
UI/icons/icons_16/Grid.png
Normal file
|
After Width: | Height: | Size: 338 B |
BIN
UI/icons/icons_16/Help.png
Normal file
|
After Width: | Height: | Size: 441 B |
BIN
UI/icons/icons_16/Layers.png
Normal file
|
After Width: | Height: | Size: 382 B |
BIN
UI/icons/icons_16/Lightbulb.png
Normal file
|
After Width: | Height: | Size: 338 B |
BIN
UI/icons/icons_16/Lock.png
Normal file
|
After Width: | Height: | Size: 320 B |
BIN
UI/icons/icons_16/Map.png
Normal file
|
After Width: | Height: | Size: 349 B |
BIN
UI/icons/icons_16/Minus.png
Normal file
|
After Width: | Height: | Size: 145 B |
BIN
UI/icons/icons_16/More.png
Normal file
|
After Width: | Height: | Size: 220 B |
BIN
UI/icons/icons_16/Move.png
Normal file
|
After Width: | Height: | Size: 370 B |
BIN
UI/icons/icons_16/PanelBottom.png
Normal file
|
After Width: | Height: | Size: 226 B |
BIN
UI/icons/icons_16/PanelRight.png
Normal file
|
After Width: | Height: | Size: 239 B |
BIN
UI/icons/icons_16/Pause.png
Normal file
|
After Width: | Height: | Size: 206 B |
BIN
UI/icons/icons_16/Play.png
Normal file
|
After Width: | Height: | Size: 292 B |
BIN
UI/icons/icons_16/Plus.png
Normal file
|
After Width: | Height: | Size: 200 B |
BIN
UI/icons/icons_16/Record.png
Normal file
|
After Width: | Height: | Size: 287 B |
BIN
UI/icons/icons_16/Rotate.png
Normal file
|
After Width: | Height: | Size: 375 B |
BIN
UI/icons/icons_16/Save.png
Normal file
|
After Width: | Height: | Size: 335 B |
BIN
UI/icons/icons_16/Scale.png
Normal file
|
After Width: | Height: | Size: 307 B |
BIN
UI/icons/icons_16/Search.png
Normal file
|
After Width: | Height: | Size: 389 B |
BIN
UI/icons/icons_16/Settings.png
Normal file
|
After Width: | Height: | Size: 441 B |
BIN
UI/icons/icons_16/Sidebar.png
Normal file
|
After Width: | Height: | Size: 241 B |
BIN
UI/icons/icons_16/SkipBack.png
Normal file
|
After Width: | Height: | Size: 307 B |
BIN
UI/icons/icons_16/SkipFwd.png
Normal file
|
After Width: | Height: | Size: 299 B |