Files
XCEngine/editor/src/Core/ISceneManager.h

52 lines
2.3 KiB
C++

#pragma once
#include "SceneSnapshot.h"
#include <string>
#include <vector>
#include <cstdint>
#include <XCEngine/Components/GameObject.h>
namespace XCEngine {
namespace Components {
class Scene;
}
namespace Editor {
class ISceneManager {
public:
virtual ~ISceneManager() = default;
virtual ::XCEngine::Components::GameObject* CreateEntity(const std::string& name, ::XCEngine::Components::GameObject* parent = nullptr) = 0;
virtual void DeleteEntity(::XCEngine::Components::GameObject::ID id) = 0;
virtual void RenameEntity(::XCEngine::Components::GameObject::ID id, const std::string& newName) = 0;
virtual ::XCEngine::Components::GameObject* GetEntity(::XCEngine::Components::GameObject::ID id) = 0;
virtual const std::vector<::XCEngine::Components::GameObject*>& GetRootEntities() const = 0;
virtual void CopyEntity(::XCEngine::Components::GameObject::ID id) = 0;
virtual ::XCEngine::Components::GameObject::ID PasteEntity(::XCEngine::Components::GameObject::ID parent = 0) = 0;
virtual ::XCEngine::Components::GameObject::ID DuplicateEntity(::XCEngine::Components::GameObject::ID id) = 0;
virtual void MoveEntity(::XCEngine::Components::GameObject::ID id, ::XCEngine::Components::GameObject::ID newParent) = 0;
virtual bool HasClipboardData() const = 0;
virtual void NewScene(const std::string& name = "Untitled Scene") = 0;
virtual bool LoadScene(const std::string& filePath) = 0;
virtual bool SaveScene() = 0;
virtual bool SaveSceneAs(const std::string& filePath) = 0;
virtual bool LoadStartupScene(const std::string& projectPath) = 0;
virtual bool HasActiveScene() const = 0;
virtual bool IsSceneDirty() const = 0;
virtual void MarkSceneDirty() = 0;
virtual void SetSceneDocumentDirtyTrackingEnabled(bool enabled) = 0;
virtual bool IsSceneDocumentDirtyTrackingEnabled() const = 0;
virtual const std::string& GetCurrentScenePath() const = 0;
virtual const std::string& GetCurrentSceneName() const = 0;
virtual ::XCEngine::Components::Scene* GetScene() = 0;
virtual const ::XCEngine::Components::Scene* GetScene() const = 0;
virtual SceneSnapshot CaptureSceneSnapshot() const = 0;
virtual bool RestoreSceneSnapshot(const SceneSnapshot& snapshot) = 0;
virtual void CreateDemoScene() = 0;
};
}
}