!XT (Audio) ACE: Generate asset id's based on the asset name and type.
[CRYENGINE.git] / Code / Sandbox / Plugins / EditorAudioControlsEditor / AssetsManager.h
blob31fe250d9e8c6b2fa94a1ad5b10a62c8eef6db8e
1 // Copyright 2001-2018 Crytek GmbH / Crytek Group. All rights reserved.
3 #pragma once
5 #include "Control.h"
6 #include "Folder.h"
7 #include "Library.h"
9 #include <CrySandbox/CrySignal.h>
11 namespace ACE
13 namespace Impl
15 struct IItem;
16 } // namespace Impl
18 class CAssetsManager final
20 public:
22 CAssetsManager(CAssetsManager const&) = delete;
23 CAssetsManager(CAssetsManager&&) = delete;
24 CAssetsManager& operator=(CAssetsManager const&) = delete;
25 CAssetsManager& operator=(CAssetsManager&&) = delete;
27 CAssetsManager();
28 ~CAssetsManager();
30 void Initialize();
31 void Clear();
33 CLibrary* CreateLibrary(string const& name);
34 CLibrary* GetLibrary(size_t const index) const { return m_libraries[index]; }
35 size_t GetLibraryCount() const { return m_libraries.size(); }
37 CAsset* CreateFolder(string const& name, CAsset* const pParent);
38 CControl* CreateControl(string const& name, EAssetType const type, CAsset* const pParent);
39 CControl* CreateDefaultControl(string const& name, EAssetType const type, CAsset* const pParent, EAssetFlags const flags, string const& description);
41 CControl* FindControl(string const& name, EAssetType const type, CAsset* const pParent = nullptr) const;
42 CControl* FindControlById(ControlId const id) const;
44 Controls const& GetControls() const { return m_controls; }
46 void ClearAllConnections();
47 void BackupAndClearAllConnections();
48 void ReloadAllConnections();
49 void DeleteAsset(CAsset* const pAsset);
50 void MoveAssets(CAsset* const pParent, Assets const& assets);
51 void CreateAndConnectImplItems(Impl::IItem* const pIItem, CAsset* const pParent);
53 bool IsTypeDirty(EAssetType const type) const;
54 bool IsDirty() const;
55 void ClearDirtyFlags();
56 bool IsLoading() const { return m_isLoading; }
58 void SetAssetModified(CAsset* const pAsset, bool const isModified);
60 void UpdateAllConnectionStates();
62 void ChangeContext(CryAudio::ContextId const oldContextId, CryAudio::ContextId const newContextId);
64 void OnBeforeControlModified(CControl* const pControl);
65 void OnAfterControlModified(CControl* const pControl);
66 void OnConnectionAdded(CControl* const pControl);
67 void OnConnectionRemoved(CControl* const pControl);
68 void OnAssetRenamed(CAsset* const pAsset);
70 void UpdateConfigFolderPath();
71 string const& GetConfigFolderPath() const;
73 FileNames const& GetModifiedLibraries() const { return m_modifiedLibraryNames; }
75 CCrySignal<void(bool)> SignalIsDirty;
76 CCrySignal<void()> SignalOnBeforeLibraryAdded;
77 CCrySignal<void(CLibrary*)> SignalOnAfterLibraryAdded;
78 CCrySignal<void(CLibrary*)> SignalOnBeforeLibraryRemoved;
79 CCrySignal<void()> SignalOnAfterLibraryRemoved;
80 CCrySignal<void(CAsset*)> SignalOnBeforeAssetAdded;
81 CCrySignal<void(CAsset*)> SignalOnAfterAssetAdded;
82 CCrySignal<void(CAsset*)> SignalOnBeforeAssetRemoved;
83 CCrySignal<void(CAsset*, CAsset*)> SignalOnAfterAssetRemoved;
84 CCrySignal<void(CAsset*)> SignalAssetRenamed;
85 CCrySignal<void(CControl*)> SignalControlModified;
86 CCrySignal<void(CControl*)> SignalConnectionAdded;
87 CCrySignal<void(CControl*)> SignalConnectionRemoved;
89 private:
91 CAsset* CreateAndConnectImplItemsRecursively(Impl::IItem* const pIItem, CAsset* const pParent);
93 void SetTypeModified(EAssetType const type, bool const isModified);
95 void UpdateLibraryConnectionStates(CAsset* const pAsset);
96 void UpdateAssetConnectionStates(CAsset* const pAsset);
98 using ModifiedSystemTypes = std::set<EAssetType>;
100 Libraries m_libraries;
101 Controls m_controls;
102 ModifiedSystemTypes m_modifiedTypes;
103 FileNames m_modifiedLibraryNames;
104 bool m_isLoading = false;
106 string m_configFolderPath;
108 } // namespace ACE