86 lines
3.2 KiB
Markdown
86 lines
3.2 KiB
Markdown
# MetaCore
|
|
|
|
MetaCore is a new pure C++ editor/runtime workspace scaffolded from the EG redesign plan.
|
|
|
|
## Current status
|
|
|
|
- New greenfield project structure under `D:\MetaCore`
|
|
- Clear module boundaries for `foundation`, `platform`, `engine`, `MetaEditor`, and `MetaPlayer`
|
|
- JSON-based project and scene persistence without external dependencies
|
|
- Panda3D 1.10.16 SDK, Dear ImGui, ImGuizmo, and RmlUi are now wired into the integration build
|
|
- Stable runtime path currently uses a safe Panda-linked platform adapter and shell abstractions
|
|
- `DearImGuiEditorShell` is now a real integration handoff point, with a default stable mode and an experimental headless ImGui frame mode
|
|
- simplepbr shader resource mirror directory for the future `MetaRender` implementation
|
|
|
|
## What is implemented now
|
|
|
|
- Top-level CMake project and presets
|
|
- Core domain objects: project, scene, assets, editor state, render interfaces
|
|
- Minimal `MetaEditor` and `MetaPlayer` entry points
|
|
- Project bootstrap that creates:
|
|
- `MetaCore.project.json`
|
|
- `Scenes/Main.mcscene.json`
|
|
- `Library/AssetDB.json`
|
|
- default editor layout cache
|
|
- Basic tests covering project persistence, scene serialization, and command stack behavior
|
|
|
|
## Dependency strategy
|
|
|
|
The project still supports a dependency-light scaffold build, and now also supports an integration build with the
|
|
installed SDKs and packages. The real integrations are isolated behind:
|
|
|
|
- `MetaCore/platform/panda`
|
|
- `MetaCore/engine/runtime_ui`
|
|
- `MetaCore/engine/render`
|
|
- `MetaEditor/IEditorShell.h`
|
|
- `MetaEditor/NullEditorShell.cpp`
|
|
- `MetaEditor/DearImGuiEditorShell.cpp`
|
|
|
|
This keeps project, scene, asset, and editor-domain code isolated while the platform and GUI backends evolve.
|
|
|
|
## Suggested next steps
|
|
|
|
1. Replace the safe Panda-linked adapter with real Panda window/context creation and message pumping.
|
|
2. Replace the current `DearImGuiEditorShell` fallback path with a real Dear ImGui renderer/backend pair.
|
|
3. Bind ImGuizmo to `TransformGizmoService` and the editor viewport state.
|
|
4. Add RmlUi backend glue into `MetaPlayer`.
|
|
5. Replace the current placeholder Panda render backend with a real `MetaRender`.
|
|
6. Copy the full simplepbr shader set and integrate the first PBR pass.
|
|
|
|
## Configure
|
|
|
|
```powershell
|
|
cmake --preset vs2022-debug
|
|
cmake --build --preset build-debug
|
|
ctest --preset test-debug
|
|
```
|
|
|
|
## Integration build
|
|
|
|
```powershell
|
|
cmake --preset vs2022-integration-debug
|
|
cmake --build --preset build-integration-debug
|
|
ctest --preset test-integration-debug
|
|
```
|
|
|
|
`MetaEditor` shell selection:
|
|
|
|
- default shell: `NullEditorShell`
|
|
- Dear shell: set `METACORE_EDITOR_SHELL=dearimgui`
|
|
|
|
Experimental headless ImGui frame generation can be toggled with:
|
|
|
|
```powershell
|
|
$env:METACORE_ENABLE_HEADLESS_IMGUI = "1"
|
|
```
|
|
|
|
This mode is still treated as experimental and is not part of the stable runtime path yet.
|
|
|
|
Optional runtime toggles:
|
|
|
|
- enable Panda window bootstrap: `METACORE_ENABLE_PANDA_WINDOW=1`
|
|
- limit editor frame count for automation/headless runs: `METACORE_EDITOR_FRAME_COUNT=<n>`
|
|
|
|
When Panda window bootstrap is enabled and `METACORE_EDITOR_FRAME_COUNT` is not set, `MetaEditor` now keeps running
|
|
until the window is closed. For automation, set an explicit frame count to force exit after a bounded number of frames.
|