I want to duplicate a AnimBlueprint to a file named “” which is already exist, just only change the skeleton. Crashed when call the function StaticDuplicateObject. Cannt use for the exist file?
bool AUtil::MakeNewAnimBlueprint(UAnimBlueprint* AnimBlueprint, USkeleton* NewSkeleton, const FString& FilePath, const FString& Name,)
{
if (!NewSkeleton)
return false;
FString PackageNameStr = FilePath + "/" + Name;
UObject* Asset = LoadObject<UAnimBlueprint>(NULL, *PackageNameStr);
if (Asset)
Asset = DuplicateAnimBlueprintOverwrite(Asset, AnimBlueprint, NewSkeleton);
}
UObject* AUtil::DuplicateAnimBlueprintOverwrite(UObject* DestObject, UObject* SourceObject, USkeleton* NewSkeleton)
{
UObject* NewObject = NULL;
EDuplicateMode::Type DuplicateMode = SourceObject->IsA(UWorld::StaticClass()) ? EDuplicateMode::World : EDuplicateMode::Normal;
NewObject = StaticDuplicateObject(SourceObject, DestObject->GetOuter(), *DestObject->GetName(), RF_AllFlags, nullptr, DuplicateMode);
if (!NewObject)
return NULL;
UAnimBlueprint* NewAnimBlueprint = Cast<UAnimBlueprint>(NewObject);
NewAnimBlueprint->TargetSkeleton = NewSkeleton;
FBlueprintEditorUtils::RefreshAllNodes(NewAnimBlueprint);
bool bIsRegeneratingOnLoad = false;
bool bSkipGarbageCollection = true;
FKismetEditorUtilities::CompileBlueprint(NewAnimBlueprint, bIsRegeneratingOnLoad, bSkipGarbageCollection);
return NewObject;
}