From f77e73c01a15426bcc6e3d7fe5826d2a741fed38 Mon Sep 17 00:00:00 2001 From: hnOsmium0001 Date: Mon, 18 Apr 2022 20:18:09 -0700 Subject: Add Uid for IresObject --- source/Ires.hpp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'source/Ires.hpp') diff --git a/source/Ires.hpp b/source/Ires.hpp index 9b055af..f821d87 100644 --- a/source/Ires.hpp +++ b/source/Ires.hpp @@ -2,6 +2,7 @@ #include "EditorAttachment.hpp" #include "RcPtr.hpp" +#include "Uid.hpp" #include "Utils.hpp" #include @@ -26,10 +27,11 @@ public: }; private: - std::string mName; - std::unique_ptr mEditorAttachment; - IresManager* mMan = nullptr; - Kind mKind; + std::string mName; // Serialized as filename + Uid mUid; // Serialized in full mode + std::unique_ptr mEditorAttachment; // Transient + IresManager* mMan = nullptr; // Transient + Kind mKind; // Serialized in full mode public: IresObject(Kind kind); @@ -44,6 +46,7 @@ public: bool IsAnnoymous() const; const std::string& GetName() const { return mName; } void SetName(std::string name); + const Uid& GetUid() const { return mUid; } virtual void ShowEditor(EditorInstance& editor); @@ -53,8 +56,8 @@ public: static void WriteFull(IresObject* ires, rapidjson::Value& value, rapidjson::Document& root); static std::unique_ptr ReadFull(const rapidjson::Value& value); static bool ReadPartial(IresObject* ires, const rapidjson::Value& value); - virtual void Write(rapidjson::Value& value, rapidjson::Document& root) const = 0; - virtual void Read(const rapidjson::Value& value) = 0; + virtual void Write(rapidjson::Value& value, rapidjson::Document& root) const; + virtual void Read(const rapidjson::Value& value); }; class IresManager { @@ -62,21 +65,21 @@ public: static inline IresManager* instance = nullptr; private: - robin_hood::unordered_map> mObjects; + robin_hood::unordered_map> mObjByUid; public: void DiscoverFilesDesignatedLocation(); void DiscoverFiles(const std::filesystem::path& dir); std::pair Add(IresObject* mat); + IresObject* Load(const std::filesystem::path& filePath); void Delete(IresObject* ires); bool Rename(IresObject* ires, std::string newName); - IresObject* Load(const std::filesystem::path& path); void Reload(IresObject* ires); void Save(IresObject* ires); void Save(IresObject* ires, const std::filesystem::path& filePath); - const auto& GetObjects() const { return mObjects; } - IresObject* FindIres(std::string_view path); + const auto& GetObjects() const { return mObjByUid; } + IresObject* FindIres(const Uid& uid); }; -- cgit v1.2.3-70-g09d2