- Decouple Panel from Core::Layer (P0 issue resolved) - Add EventBus with type-safe event system - Add ISelectionManager interface with SelectionManagerImpl - Add IEditorContext for dependency injection - Update EditorLayer to use new architecture - Update Application to create and inject EditorContext New files: - editor/src/Core/EventBus.h - editor/src/Core/EditorEvents.h - editor/src/Core/ISelectionManager.h - editor/src/Core/SelectionManagerImpl.h - editor/src/Core/IEditorContext.h - editor/src/Core/EditorContextImpl.h This enables future improvements: Undo/Redo, serialization, component extensibility.
28 lines
763 B
C++
28 lines
763 B
C++
#pragma once
|
|
|
|
#include <vector>
|
|
#include <cstdint>
|
|
|
|
namespace XCEngine {
|
|
namespace Editor {
|
|
|
|
class ISelectionManager {
|
|
public:
|
|
virtual ~ISelectionManager() = default;
|
|
|
|
virtual void SetSelectedEntity(uint64_t entityId) = 0;
|
|
virtual void SetSelectedEntities(const std::vector<uint64_t>& entityIds) = 0;
|
|
virtual void AddToSelection(uint64_t entityId) = 0;
|
|
virtual void RemoveFromSelection(uint64_t entityId) = 0;
|
|
virtual void ClearSelection() = 0;
|
|
|
|
virtual uint64_t GetSelectedEntity() const = 0;
|
|
virtual const std::vector<uint64_t>& GetSelectedEntities() const = 0;
|
|
virtual bool HasSelection() const = 0;
|
|
virtual size_t GetSelectionCount() const = 0;
|
|
virtual bool IsSelected(uint64_t entityId) const = 0;
|
|
};
|
|
|
|
}
|
|
}
|