#pragma once #include "src/Core/Core.h" #include "src/Scene/Entities/Entity.h" #include "src/Rendering/SceneRenderer.h" #include "src/Resource/Resource.h" #include "Engine.h" enum EditorSelectionType { None, Entity, File, Resource, Directory }; class EditorSelection { public: EditorSelectionType Type = EditorSelectionType::None; Ref File; Ref Directory; Nuake::Entity Entity; Nuake::Resource Resource; public: EditorSelection() { Type = None; if (const auto& scene = Nuake::Engine::GetCurrentScene(); scene) { Nuake::Engine::GetCurrentScene()->m_SceneRenderer->mOutlineEntityID = -1; } } EditorSelection(const Nuake::Entity& entity) { Type = EditorSelectionType::Entity; Nuake::Engine::GetCurrentScene()->m_SceneRenderer->mOutlineEntityID = (uint32_t)entity.GetHandle(); Entity = entity; } EditorSelection(const Ref& file) { Type = EditorSelectionType::File; Nuake::Engine::GetCurrentScene()->m_SceneRenderer->mOutlineEntityID = -1; File = file; } EditorSelection(const Ref& dir) { Type = EditorSelectionType::Directory; Nuake::Engine::GetCurrentScene()->m_SceneRenderer->mOutlineEntityID = -1; Directory = dir; } EditorSelection(const Nuake::Resource& resource) { Type = EditorSelectionType::Resource; Nuake::Engine::GetCurrentScene()->m_SceneRenderer->mOutlineEntityID = -1; Resource = resource; } operator bool() { return Type != None; } };