- 添加新的UI控件系统(Core.h, ScalarControls.h, VectorControls.h, UI.h) - 更新SceneManager支持场景层级管理 - 优化SelectionManager选择管理 - 改进InspectorPanel/GameViewPanel/HierarchyPanel等面板 - 更新RHI文档说明Vulkan实现计划
42 lines
974 B
C++
42 lines
974 B
C++
#pragma once
|
|
|
|
#include <unordered_set>
|
|
|
|
#include <XCEngine/Core/Event.h>
|
|
#include <XCEngine/Components/GameObject.h>
|
|
|
|
namespace XCEngine {
|
|
namespace Editor {
|
|
|
|
class SelectionManager {
|
|
public:
|
|
static SelectionManager& Get() {
|
|
static SelectionManager instance;
|
|
return instance;
|
|
}
|
|
|
|
::XCEngine::Components::GameObject* GetSelectedEntity() const { return m_selectedEntity; }
|
|
|
|
void SetSelectedEntity(::XCEngine::Components::GameObject* entity) {
|
|
m_selectedEntity = entity;
|
|
OnSelectionChanged.Invoke(entity ? entity->GetID() : 0);
|
|
}
|
|
|
|
void ClearSelection() {
|
|
SetSelectedEntity(nullptr);
|
|
}
|
|
|
|
bool IsSelected(::XCEngine::Components::GameObject* entity) const {
|
|
return m_selectedEntity == entity;
|
|
}
|
|
|
|
::XCEngine::Core::Event<uint64_t> OnSelectionChanged;
|
|
|
|
private:
|
|
SelectionManager() = default;
|
|
::XCEngine::Components::GameObject* m_selectedEntity = nullptr;
|
|
};
|
|
|
|
}
|
|
}
|