3.2 KiB
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, andMetaPlayer - 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
DearImGuiEditorShellis 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
MetaRenderimplementation
What is implemented now
- Top-level CMake project and presets
- Core domain objects: project, scene, assets, editor state, render interfaces
- Minimal
MetaEditorandMetaPlayerentry points - Project bootstrap that creates:
MetaCore.project.jsonScenes/Main.mcscene.jsonLibrary/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/pandaMetaCore/engine/runtime_uiMetaCore/engine/renderMetaEditor/IEditorShell.hMetaEditor/NullEditorShell.cppMetaEditor/DearImGuiEditorShell.cpp
This keeps project, scene, asset, and editor-domain code isolated while the platform and GUI backends evolve.
Suggested next steps
- Replace the safe Panda-linked adapter with real Panda window/context creation and message pumping.
- Replace the current
DearImGuiEditorShellfallback path with a real Dear ImGui renderer/backend pair. - Bind ImGuizmo to
TransformGizmoServiceand the editor viewport state. - Add RmlUi backend glue into
MetaPlayer. - Replace the current placeholder Panda render backend with a real
MetaRender. - Copy the full simplepbr shader set and integrate the first PBR pass.
Configure
cmake --preset vs2022-debug
cmake --build --preset build-debug
ctest --preset test-debug
Integration build
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:
$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.