1 // Copyright 2001-2018 Crytek GmbH / Crytek Group. All rights reserved.
9 #include <CrySandbox/CrySignal.h>
18 class CAssetsManager final
22 CAssetsManager(CAssetsManager
const&) = delete;
23 CAssetsManager(CAssetsManager
&&) = delete;
24 CAssetsManager
& operator=(CAssetsManager
const&) = delete;
25 CAssetsManager
& operator=(CAssetsManager
&&) = delete;
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;
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
;
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
;
102 ModifiedSystemTypes m_modifiedTypes
;
103 FileNames m_modifiedLibraryNames
;
104 bool m_isLoading
= false;
106 string m_configFolderPath
;