Refine editor frame services seam

This commit is contained in:
2026-04-29 14:31:55 +08:00
parent 212d4016e0
commit 749417989a
16 changed files with 77 additions and 112 deletions

View File

@@ -3,7 +3,6 @@
#include "Inspector/Components/IInspectorComponentEditor.h"
#include "Inspector/Components/InspectorComponentEditorRegistry.h"
#include "Scene/EditorSceneRuntime.h"
#include "Windowing/EditorFrameServices.h"
#include <XCEditor/Fields/UIEditorFieldStyle.h>
@@ -123,9 +122,7 @@ void AddComponentPanel::RebuildEntries(
}
}
bool AddComponentPanel::TryActivateEntry(
EditorSceneRuntime& sceneRuntime,
std::size_t entryIndex) {
bool AddComponentPanel::TryActivateEntry(std::size_t entryIndex) {
if (entryIndex >= m_entries.size()) {
return false;
}
@@ -135,14 +132,14 @@ bool AddComponentPanel::TryActivateEntry(
return false;
}
if (!sceneRuntime.AddComponentToSelectedGameObject(entry.componentTypeName)) {
if (!m_sceneRuntime.AddComponentToSelectedGameObject(entry.componentTypeName)) {
return false;
}
const std::optional<EditorSceneObjectSnapshot> selectedObject =
sceneRuntime.GetSelectedObjectSnapshot();
m_sceneRuntime.GetSelectedObjectSnapshot();
m_hasTarget = selectedObject.has_value();
m_targetDisplayName = sceneRuntime.GetSelectedDisplayName();
m_targetDisplayName = m_sceneRuntime.GetSelectedDisplayName();
RebuildEntries(selectedObject.has_value() ? &selectedObject.value() : nullptr);
return true;
}
@@ -158,7 +155,6 @@ std::size_t AddComponentPanel::HitTestEntry(const UIPoint& point) const {
}
void AddComponentPanel::Update(
EditorFrameServices& frameServices,
const EditorUtilityWindowHostContext& hostContext,
const std::vector<UIInputEvent>& inputEvents) {
if (!hostContext.mounted) {
@@ -166,13 +162,12 @@ void AddComponentPanel::Update(
return;
}
EditorSceneRuntime& sceneRuntime = frameServices.GetSceneRuntime();
m_visible = true;
m_bounds = hostContext.bounds;
const std::optional<EditorSceneObjectSnapshot> selectedObject =
sceneRuntime.GetSelectedObjectSnapshot();
m_sceneRuntime.GetSelectedObjectSnapshot();
m_hasTarget = selectedObject.has_value();
m_targetDisplayName = sceneRuntime.GetSelectedDisplayName();
m_targetDisplayName = m_sceneRuntime.GetSelectedDisplayName();
RebuildEntries(selectedObject.has_value() ? &selectedObject.value() : nullptr);
if (hostContext.focusLost) {
@@ -211,7 +206,7 @@ void AddComponentPanel::Update(
m_hoveredEntryIndex = HitTestEntry(event.position);
if (m_pressedEntryIndex != kInvalidEntryIndex &&
m_pressedEntryIndex == m_hoveredEntryIndex) {
TryActivateEntry(sceneRuntime, m_pressedEntryIndex);
TryActivateEntry(m_pressedEntryIndex);
}
m_pressedEntryIndex = kInvalidEntryIndex;
break;