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