GiiGaTeam / GiiGaEngine

0 stars 0 forks source link

Resource Database #15

Open if0ne opened 1 month ago

if0ne commented 1 month ago
if0ne commented 1 week ago

Diagram

Plant Uml

``` @startuml abstract class BaseResourceManager { - BaseAssetDatabase Database - unordered_map> LoadedAssets - unordered_map> AssetLoaders + abstract AssetRef GetAsset(AssetId) } class RuntimeResourceManager { AssetRef GetAsset(AssetId) } class EditorResourceManager { AssetRef GetAsset(AssetId) } class AssetId { - Uuid Id } class AssetHandle { - Uuid Id - AssetType Ty } abstract class AssetBase { # Uuid Id # vector Dependenies # vector Related + void AddDependency(AssetHandle dependency) + void RemoveDependency(AssetHandle dependency) + void AddRelated(AssetHandle related) + void RemoveRelated(AssetHandle related) + abstract AssetType GetType() + abstract void Save() } enum AssetType { + Mesh + SkeletalMesh + Texture2D + Scene + Prefab + Audio } abstract class AssetLoader { - string Pattern - AssetType Ty - vector)>> LoadCallbacks + shared_ptr Load(string path) + void LoadAsync(string path, function)> callback) } class AssetMeta { + AssetHandle Id + string Path + vector Dependenies + vector Related } abstract class BaseAssetDatabase { - std::string RegistryPath - File RegistryFile - unordered_map RegistryMap + AssetMeta GetAssetMeta(AssetHandle handle) } class RuntimeAssetDatabase { } class EditorAssetDatabase { - ProjectWatcher watcher + AssetId CreateAsset(T asset, string path) + AssetHandle ImportAsset(string path) + void TryRemoveAsset(string path) + void UpdateAssetPath(string OldPath, string NewPath) } class ProjectWatcher { } BaseResourceManager <|-- RuntimeResourceManager BaseResourceManager <|-- EditorResourceManager RuntimeResourceManager *-- EditorResourceManager BaseAssetDatabase <|-- RuntimeAssetDatabase BaseAssetDatabase <|-- EditorAssetDatabase RuntimeAssetDatabase *-- RuntimeResourceManager EditorAssetDatabase *-- EditorResourceManager RuntimeAssetDatabase *-- EditorAssetDatabase BaseAssetDatabase *-- BaseResourceManager AssetLoader o-- BaseResourceManager AssetBase *-- BaseResourceManager AssetHandle *-- BaseResourceManager AssetType *-- AssetBase ProjectWatcher *-- EditorAssetDatabase AssetMeta *-- BaseAssetDatabase @enduml ```

fLRTRzem47_FNs6fBz32onuhXChArY6D3QMfzZYP-82iYHFP3bsqxN-Vl-9ycgwQX9JptU--psVkkC1Cb5aQ17ZF1SEnG76AEKVlCOSGU5wo6BQOuYEmu5U0q5nBLfo3M6E1z_A0QaABIvep0Wp8zmmN2mtyX2b90V4JLkn2CCDMXfPBz3d718ZcS9-5g2fWXiuGYzmgQorsBVLRHwKl

damibran commented 1 week ago
  • Файл-регистр, куда записаны все файлы проекта/игры

Это точно норм? Это делает невозможным совместную работу над одним проектом с системой контроля версий.

if0ne commented 1 week ago
  • Файл-регистр, куда записаны все файлы проекта/игры

Это точно норм? Это делает невозможным совместную работу над одним проектом с системой контроля версий.

Файл-регистр будет человекочитаемым. Он будет по аналогии с файлом-проектом из visual studio, в котором есть список всех файлов проекта, вроде при мердже особых проблем не возникает