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; | |||
|  | }; |