Refactor new editor scene viewport tools

This commit is contained in:
2026-04-18 18:55:19 +08:00
parent b8e84001fa
commit f544b2792b
17 changed files with 3414 additions and 14 deletions

View File

@@ -12,7 +12,9 @@ namespace XCEngine::UI::Editor::App {
void EditorShellRuntime::Initialize(
const std::filesystem::path& repoRoot,
Host::NativeRenderer& renderer) {
m_nativeRenderer = &renderer;
m_builtInIcons.Initialize(renderer);
m_sceneViewportController.Initialize(repoRoot, renderer);
m_hierarchyPanel.SetBuiltInIcons(&m_builtInIcons);
m_projectPanel.SetBuiltInIcons(&m_builtInIcons);
m_projectPanel.SetTextMeasurer(&renderer);
@@ -37,8 +39,15 @@ void EditorShellRuntime::Shutdown() {
m_shellInteractionState = {};
m_splitterDragCorrectionState = {};
m_traceEntries.clear();
m_sceneEditCommandRoute = {};
if (m_nativeRenderer != nullptr) {
m_sceneViewportController.Shutdown(*m_nativeRenderer);
m_builtInIcons.Shutdown();
m_nativeRenderer = nullptr;
} else {
m_builtInIcons.Shutdown();
}
m_viewportHostService.Shutdown();
m_builtInIcons.Shutdown();
}
void EditorShellRuntime::ResetInteractionState() {
@@ -46,6 +55,7 @@ void EditorShellRuntime::ResetInteractionState() {
m_shellInteractionState = {};
m_splitterDragCorrectionState = {};
m_traceEntries.clear();
m_sceneViewportController.ResetInteractionState();
m_hierarchyPanel.ResetInteractionState();
m_projectPanel.ResetInteractionState();
}