50 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Fill out your copyright notice in the Description page of Project Settings.
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include "CoreMinimal.h"
 | |
| #include "CSGlueGenerator.h"
 | |
| #include "CSAssetManagerGlueGenerator.generated.h"
 | |
| 
 | |
| UCLASS(DisplayName="Asset Manager Glue Generator", NotBlueprintable, NotBlueprintType)
 | |
| class UCSAssetManagerGlueGenerator : public UCSGlueGenerator
 | |
| {
 | |
| 	GENERATED_BODY()
 | |
| private:
 | |
| 	// UCSGlueGenerator interface
 | |
| 	virtual void Initialize() override;
 | |
| 	virtual void ForceRefresh() override
 | |
| 	{
 | |
| 		ProcessAssetIds();
 | |
| 		ProcessAssetTypes();
 | |
| 	}
 | |
| 	// End of UCSGlueGenerator interface
 | |
| 
 | |
| 	void TryRegisterAssetTypes();
 | |
| 	
 | |
| 	void OnModulesChanged(FName InModuleName, EModuleChangeReason InModuleChangeReason);
 | |
| 	void OnCompletedInitialScan();
 | |
| 
 | |
| 	void OnAssetRemoved(const FAssetData& AssetData);
 | |
| 	void OnAssetRenamed(const FAssetData& AssetData, const FString& OldObjectPath);
 | |
| 	void OnInMemoryAssetCreated(UObject* Object);
 | |
| 	void OnInMemoryAssetDeleted(UObject* Object);
 | |
| 
 | |
| 	void OnAssetSearchRootAdded(const FString& RootPath);
 | |
| 
 | |
| 	void OnAssetManagerSettingsChanged(UObject* Object, FPropertyChangedEvent& PropertyChangedEvent);
 | |
| 
 | |
| 	bool IsRegisteredAssetType(const FAssetData& AssetData) { return IsRegisteredAssetType(AssetData.GetClass()); }
 | |
| 	bool IsRegisteredAssetType(UClass* Class);
 | |
| 
 | |
| 	void WaitUpdateAssetTypes()
 | |
| 	{
 | |
| 		GEditor->GetTimerManager()->SetTimerForNextTick(FTimerDelegate::CreateUObject(this, &ThisClass::ProcessAssetIds));
 | |
| 	}
 | |
| 
 | |
| 	void ProcessAssetIds();
 | |
| 	void ProcessAssetTypes();
 | |
| 
 | |
| 	bool bHasRegisteredAssetTypes = false;
 | |
| };
 |