#pragma once #include "BsEditorPrerequisites.h" #include "BsProjectLibrary.h" #include "BsIReflectable.h" namespace BansheeEngine { /** * @brief Contains a list of entries used by the ProjectLibrary. Used primarily * for serialization purposes, i.e. persisting ProjectLibrary state * between application runs. */ class ProjectLibraryEntries : public IReflectable { struct ConstructPrivately { }; public: explicit ProjectLibraryEntries(const ConstructPrivately& dummy); ProjectLibraryEntries(const ProjectLibrary::DirectoryEntry& rootEntry); /** * @brief Creates new project library entries based on a ProjectLibrary root directory entry. * * @param rootEntry Root directory entry in ProjectLibrary. */ static std::shared_ptr create(const ProjectLibrary::DirectoryEntry& rootEntry); /** * @brief Returns the root directory entry that references the entire entry hierarchy. */ const ProjectLibrary::DirectoryEntry& getRootEntry() const { return mRootEntry; } private: ProjectLibrary::DirectoryEntry mRootEntry; /************************************************************************/ /* SERIALIZATION */ /************************************************************************/ /** * @brief Creates new empty project library entries object. Used for serialization * purposes. */ static std::shared_ptr createEmpty(); public: friend class ProjectLibraryEntriesRTTI; static RTTITypeBase* getRTTIStatic(); virtual RTTITypeBase* getRTTI() const override; }; }