9#include "../Thirdparty/thirdparty.h"
13#include <unordered_map>
28 template<
class Archive>
29 void serialize(Archive & ar,
const unsigned int version) {
39 template<
class Archive>
40 void serialize(Archive & ar,
const unsigned int version)
50 template<
class Archive>
51 void serialize(Archive & ar,
const unsigned int version)
70 void loadScenePathList();
71 void newScene(
const std::string& sceneName);
72 void updateModelPathList();
73 std::vector<entt::registry*> currentRegistries()
const;
74 void appendRegistry(entt::registry* registry);
75 void removeRegistry(entt::registry* registry);
76 void openScene(
const std::string& uuid);
77 void closeScene(
const std::string& uuid);
78 void loadProjectSetting();
81 void setInitialSceneUuid(
const std::string& uuid);
82 std::string getInitialSceneUuid()
const;
98 std::string scenePath = sceneIt->second;
99 std::string sceneDataPath = scenePath +
"/scene.dat";
102 throw DataError(
"场景目录不存在: " + scenePath);
105 auto scene = std::make_shared<Scene>(
this,uuid);
119 }
catch (
const std::exception& e) {
120 throw DataError(
"加载场景失败: " + std::string(e.what()));
123 bool saveScene(
const std::string& uuid);
124 std::string getCurrentSceneUuid()
const;
125 std::string getSceneNameByUuid(
const std::string& uuid)
const;
131 std::string getModelPathByUuid(
const std::string& uuid)
const;
132 std::string getModelRelativePathByUuid(
const std::string& uuid)
const;
133 Scene* getCurrentScene()
const;
152 std::vector<std::string> modelDirs =
m_dataLoader->getSubDirectories(
"./res/models");
154 for (
const std::string& modelDir : modelDirs) {
155 std::string uuidFilePath = modelDir +
"/model.uuid";
159 auto inputStream =
m_dataLoader->openBinaryInputStream(uuidFilePath);
161 if (inputStream && inputStream->is_open()) {
162 boost::archive::binary_iarchive archive(*inputStream);
165 archive >> modelUuidFile;
173 catch (
const std::exception& e) {
182 catch (
const std::exception& e) {
193 std::vector<std::string> sceneDirs =
m_dataLoader->getSubDirectories(
"./res/scenes");
194 for (
const std::string& sceneDir : sceneDirs) {
195 std::string uuidFilePath = sceneDir +
"/scene.uuid";
199 auto inputStream =
m_dataLoader->openBinaryInputStream(uuidFilePath);
201 if (inputStream && inputStream->is_open()) {
202 boost::archive::binary_iarchive archive(*inputStream);
205 archive >> sceneUuidFile;
214 catch (
const std::exception& e) {
223 catch (
const std::exception& e) {
#define ENGINE_API
定义 EnginePCH.h:14
void loadScene(const std::string &uuid)
定义 DataManager.h:85
std::vector< entt::registry * > m_currentRegistries
定义 DataManager.h:138
ProjectSetting m_projectSetting
定义 DataManager.h:145
DataManager()
定义 DataManager.h:60
std::unordered_map< std::string, std::string > m_uuidToScenePath
定义 DataManager.h:141
std::unordered_map< std::string, std::string > m_uuidToSceneName
定义 DataManager.h:142
std::vector< std::string > getModelList()
定义 DataManager.h:64
std::vector< std::string > m_scenePathList
定义 DataManager.h:139
bool m_isEditorMode
定义 DataManager.h:135
void updateModelPathList()
定义 DataManager.cpp:27
void loadModelUuidMapping()
定义 DataManager.h:146
std::vector< std::string > m_modelPathList
定义 DataManager.h:143
void setEditorMode(bool isEditorMode)
定义 DataManager.h:127
std::unique_ptr< DataLoader > m_dataLoader
定义 DataManager.h:144
std::string m_currentScene
定义 DataManager.h:136
void loadScenePathList()
定义 DataManager.cpp:15
void loadSceneUuidMapping()
定义 DataManager.h:186
std::unordered_map< std::string, std::shared_ptr< Scene > > m_loadScenes
定义 DataManager.h:137
std::unordered_map< std::string, std::string > m_uuidToModel
定义 DataManager.h:140
void serialize(Archive &ar, const unsigned int version)
定义 DataManager.h:29
std::string modelRelativePath
定义 DataManager.h:26
std::string uuid
定义 DataManager.h:25
void serialize(Archive &ar, const unsigned int version)
定义 DataManager.h:51
std::string initialSceneUuid
定义 DataManager.h:48
std::string uuid
定义 DataManager.h:37
void serialize(Archive &ar, const unsigned int version)
定义 DataManager.h:40