WwiseProjectDatabaseSource.h 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #pragma once
  2. #include "IWwiseBrowserDataSource.h"
  3. #include "Misc/TextFilter.h"
  4. #include "Wwise/Ref/WwiseRefCollections.h"
  5. struct FWwiseMetadataBasicReference;
  6. struct WwiseItemTreePath
  7. {
  8. FString HierarchyName;
  9. FString RootFolder;
  10. TArray<FString> IntermediateFolders;
  11. FString ItemName;
  12. };
  13. class FWwiseProjectDatabaseDataSource : IWwiseBrowserDataSource
  14. {
  15. public:
  16. DECLARE_DELEGATE(FOnWwiseProjectDatasbaseDataSourceRefreshed)
  17. virtual ~FWwiseProjectDatabaseDataSource() override;
  18. FText GetProjectName();
  19. // IWwiseBrowserDataSource
  20. virtual bool Init() override;
  21. virtual void ConstructTree(bool bShouldRefresh) override;
  22. virtual FWwiseTreeItemPtr ConstructTreeRoot(EWwiseItemType::Type Type) override;
  23. virtual int32 LoadChildren(const FGuid& InParentId, const FString& InParentPath, TArray<FWwiseTreeItemPtr>& OutChildren) override;
  24. virtual int32 LoadChildren(FWwiseTreeItemPtr InParentItem) override;
  25. virtual int32 GetChildItemCount(const FWwiseTreeItemPtr& InParentItem) override;
  26. virtual FWwiseTreeItemPtr GetRootItem(EWwiseItemType::Type RootType) override;
  27. virtual FWwiseTreeItemPtr LoadFilteredRootItem(EWwiseItemType::Type ItemType, TSharedPtr<StringFilter> CurrentFilter) override;
  28. FWwiseTreeItemPtr FindItemFromPath(const FString& InCurrentItemPath);
  29. FWwiseTreeItemPtr FindItem(const FWwiseTreeItemPtr InItem);
  30. FOnWwiseProjectDatasbaseDataSourceRefreshed ProjectDatabaseDataSourceRefreshed;
  31. private:
  32. void BuildEvents(const WwiseEventGlobalIdsMap& Events);
  33. void BuildBusses(const WwiseBusGlobalIdsMap& Busses);
  34. void BuildAuxBusses(const WwiseAuxBusGlobalIdsMap& AuxBusses);
  35. void BuildAcousticTextures(const WwiseAcousticTextureGlobalIdsMap& AcousticTextures);
  36. void BuildStateGroups(const WwiseStateGroupGlobalIdsMap& StateGroups);
  37. void BuildStates(const WwiseStateGlobalIdsMap& States);
  38. void BuildSwitchGroups(const WwiseSwitchGroupGlobalIdsMap& SwitchGroups);
  39. void BuildSwitches(const WwiseSwitchGlobalIdsMap& Switches);
  40. void BuildGameParameters(const WwiseGameParameterGlobalIdsMap& GameParameters);
  41. void BuildTriggers(const WwiseTriggerGlobalIdsMap& Triggers);
  42. void BuildEffectShareSets(const WwisePluginShareSetGlobalIdsMap& EffectShareSets);
  43. bool ParseTreePath(const FString& ObjectPath, WwiseItemTreePath& OutItemPath);
  44. bool BuildFolderHierarchy(const FWwiseMetadataBasicReference& WwiseItem, EWwiseItemType::Type ItemType,
  45. const FWwiseTreeItemPtr
  46. CurrentRootFolder);
  47. void CopyTree(FWwiseTreeItemPtr SourceTreeItem, FWwiseTreeItemPtr DestTreeItem);
  48. void FilterTree(FWwiseTreeItemPtr TreeItem, TSharedPtr<StringFilter> SearchFilter);
  49. bool IsContainer(EWwiseItemType::Type ItemType) const;
  50. /** Root items, one for each type of Wwise object */
  51. FCriticalSection RootItemsLock;
  52. TArray< FWwiseTreeItemPtr > RootItems;
  53. // Map of all tree items
  54. TMap<FGuid, FWwiseTreeItemPtr> AllValidTreeItemsByGuid;
  55. // Container paths along the Browser Tree
  56. TMap<FString, FWwiseTreeItemPtr> NodesByPath;
  57. // Allows some optimization if we have already applied a search
  58. FString OldFilterText;
  59. FDelegateHandle OnDatabaseUpdateCompleteHandle;
  60. };