22 std::string AssetDirectory =
"Assets";
23 std::string AssetRegistryPath{};
24 std::string MeshDirectory{};
26 std::string StartScene{};
28 bool bAutoSave =
true;
29 std::chrono::seconds AutoSaveInterval = 150s;
32 std::string ProjectFileName{};
33 std::string ProjectDirectory{};
50 void Load(
const std::string& ProjectPath);
55 static std::filesystem::path GetAssetDirectory();
56 static std::filesystem::path GetAssetRegistryPath();
57 static std::filesystem::path GetMeshDirectory();
62 const FProjectConfiguration& GetConfiguration()
const {
return Configuration; }
64 FORCEINLINE
static TObjectPtr<IAssetManager> GetAssetManager()
66 LK_CORE_VERIFY(AssetManager);
70 FORCEINLINE
static TObjectPtr<LEditorAssetManager> GetEditorAssetManager()
72 LK_CORE_VERIFY(AssetManager);
73 return AssetManager.As<LEditorAssetManager>();
76 FORCEINLINE
static TObjectPtr<LRuntimeAssetManager> GetRuntimeAssetManager()
78 LK_CORE_VERIFY(AssetManager);
79 return AssetManager.As<LRuntimeAssetManager>();
82 static const std::string& GetProjectName()
84 LK_CORE_VERIFY(ActiveProject,
"No active project");
85 return ActiveProject->GetConfiguration().Name;
88 static std::filesystem::path GetProjectDirectory()
90 LK_CORE_VERIFY(ActiveProject,
"No active project");
91 return ActiveProject->GetConfiguration().ProjectDirectory;
94 static void SetActive(TObjectPtr<LProject> Project);
96 static bool IsActiveProject(
const TObjectPtr<LProject>& Project)
98 return (ActiveProject == Project);
101 void SetName(
const std::string& InName) { Configuration.Name = InName; }
102 const std::string& GetName()
const {
return Configuration.Name; }
105 inline static constexpr const char* FILE_EXTENSION =
"lkproject";
106 static FOnProjectChanged OnProjectChanged;
108 FProjectConfiguration Configuration{};
110 inline static TObjectPtr<LProject> ActiveProject{};
111 inline static TObjectPtr<IAssetManager> AssetManager{};
113 friend class LEditorLayer;