// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved. #include "GeometryCacheModulePrivatePCH.h" #include "GeometryCache.h" #include "ActorFactoryGeometryCache.h" #include "GeometryCacheActor.h" #include "GeometryCacheComponent.h" UActorFactoryGeometryCache::UActorFactoryGeometryCache(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) { DisplayName = FText::FromString( "Geometry Cache" ); NewActorClass = AGeometryCacheActor::StaticClass(); bUseSurfaceOrientation = true; } bool UActorFactoryGeometryCache::CanCreateActorFrom(const FAssetData& AssetData, FText& OutErrorMsg) { if (!AssetData.IsValid() || !AssetData.GetClass()->IsChildOf(UGeometryCache::StaticClass())) { OutErrorMsg = FText::FromString("A valid GeometryCache must be specified."); return false; } return true; } void UActorFactoryGeometryCache::PostSpawnActor(UObject* Asset, AActor* NewActor) { Super::PostSpawnActor(Asset, NewActor); UGeometryCache* GeometryCache = CastChecked(Asset); // Change properties AGeometryCacheActor* GeometryCacheActor = CastChecked(NewActor); UGeometryCacheComponent* GeometryCacheComponent = GeometryCacheActor->GetGeometryCacheComponent(); check(GeometryCacheComponent); GeometryCacheComponent->UnregisterComponent(); // Set GeometryCache (data) instance GeometryCacheComponent->GeometryCache = GeometryCache; // Init Component GeometryCacheComponent->RegisterComponent(); } void UActorFactoryGeometryCache::PostCreateBlueprint(UObject* Asset, AActor* CDO) { if (Asset != NULL && CDO != NULL) { // Set GeometryCache (data) instance UGeometryCache* GeometryCache = CastChecked(Asset); AGeometryCacheActor* GeometryCacheActor = CastChecked(CDO); UGeometryCacheComponent* GeometryCacheComponent = GeometryCacheActor->GetGeometryCacheComponent(); GeometryCacheComponent->GeometryCache = GeometryCache; } }