2026-04-27 19:16:08 +08:00
|
|
|
#include "Scene/SceneViewportFeature.h"
|
2026-04-19 15:52:28 +08:00
|
|
|
|
2026-04-28 03:22:36 +08:00
|
|
|
#include "Scene/EditorSceneRuntime.h"
|
2026-04-28 01:57:06 +08:00
|
|
|
#include "State/EditorCommandFocusService.h"
|
2026-04-19 15:52:28 +08:00
|
|
|
|
|
|
|
|
namespace XCEngine::UI::Editor::App {
|
|
|
|
|
|
|
|
|
|
void SceneViewportFeature::Initialize(
|
2026-04-28 02:57:49 +08:00
|
|
|
const EditorIconService* iconService,
|
|
|
|
|
EditorSceneViewportRuntime& sceneViewportRuntime) {
|
|
|
|
|
m_sceneViewportRuntime = &sceneViewportRuntime;
|
|
|
|
|
m_controller.Initialize(iconService);
|
2026-04-19 15:52:28 +08:00
|
|
|
}
|
|
|
|
|
|
2026-04-28 02:57:49 +08:00
|
|
|
void SceneViewportFeature::Shutdown() {
|
|
|
|
|
m_controller.Shutdown();
|
|
|
|
|
m_sceneViewportRuntime = nullptr;
|
2026-04-19 15:52:28 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SceneViewportFeature::ResetInteractionState() {
|
|
|
|
|
m_controller.ResetInteractionState();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SceneViewportFeature::SetCommandFocusService(
|
|
|
|
|
EditorCommandFocusService* commandFocusService) {
|
|
|
|
|
m_controller.SetCommandFocusService(commandFocusService);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SceneViewportFeature::SyncRenderRequest(EditorSceneRuntime& sceneRuntime) {
|
2026-04-28 02:57:49 +08:00
|
|
|
if (m_sceneViewportRuntime != nullptr) {
|
|
|
|
|
m_sceneViewportRuntime->SetRenderRequest(
|
|
|
|
|
sceneRuntime.BuildSceneViewportRenderRequest());
|
|
|
|
|
}
|
2026-04-19 15:52:28 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SceneViewportFeature::Update(
|
|
|
|
|
EditorSceneRuntime& sceneRuntime,
|
|
|
|
|
const UIEditorWorkspaceComposeState& composeState,
|
|
|
|
|
const UIEditorWorkspaceComposeFrame& composeFrame) {
|
2026-04-28 02:57:49 +08:00
|
|
|
if (m_sceneViewportRuntime == nullptr) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-19 15:52:28 +08:00
|
|
|
m_controller.Update(
|
|
|
|
|
sceneRuntime,
|
2026-04-28 02:57:49 +08:00
|
|
|
m_sceneViewportRuntime->GetObjectPicker(),
|
2026-04-19 15:52:28 +08:00
|
|
|
composeState,
|
|
|
|
|
composeFrame);
|
|
|
|
|
SyncRenderRequest(sceneRuntime);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SceneViewportFeature::Append(::XCEngine::UI::UIDrawList& drawList) const {
|
|
|
|
|
m_controller.Append(drawList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // namespace XCEngine::UI::Editor::App
|