Refactor editor rendering contracts

This commit is contained in:
2026-04-28 02:57:49 +08:00
parent 3bc0cfcf08
commit b1ae6c462d
47 changed files with 798 additions and 377 deletions

View File

@@ -0,0 +1,60 @@
#pragma once
#include "HostFwd.h"
#include <XCEngine/UI/Types.h>
#include <cstdint>
#include <filesystem>
#include <string>
namespace XCEngine::UI::Editor::Rendering::Host {
class UiTextureHost;
} // namespace XCEngine::UI::Editor::Rendering::Host
namespace XCEngine::UI::Editor::App {
enum class BuiltInIconKind : std::uint8_t {
Folder = 0,
GameObject,
Scene,
CameraGizmo,
DirectionalLightGizmo,
PointLightGizmo,
SpotLightGizmo,
PlayButton,
PauseButton,
StepButton,
ViewMoveTool,
ViewMoveToolActive,
MoveTool,
MoveToolActive,
RotateTool,
RotateToolActive,
ScaleTool,
ScaleToolActive,
TransformTool,
TransformToolActive
};
class EditorIconService {
public:
virtual ~EditorIconService() = default;
virtual void Initialize(
Rendering::Host::UiTextureHost& renderer,
Host::EditorHostResourceService& resourceService) = 0;
virtual void Shutdown() = 0;
virtual void BeginFrame() = 0;
[[nodiscard]] virtual const ::XCEngine::UI::UITextureHandle& Resolve(
BuiltInIconKind kind) const = 0;
[[nodiscard]] virtual const ::XCEngine::UI::UITextureHandle* ResolveAssetPreview(
const std::filesystem::path& assetPath,
const std::filesystem::path& projectRoot) = 0;
[[nodiscard]] virtual const std::string& GetLastError() const = 0;
};
} // namespace XCEngine::UI::Editor::App