本文整理汇总了C++中FArchive::HasAllPortFlags方法的典型用法代码示例。如果您正苦于以下问题:C++ FArchive::HasAllPortFlags方法的具体用法?C++ FArchive::HasAllPortFlags怎么用?C++ FArchive::HasAllPortFlags使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FArchive
的用法示例。
在下文中一共展示了FArchive::HasAllPortFlags方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Serialize
void UChildActorComponent::Serialize(FArchive& Ar)
{
Super::Serialize(Ar);
if (Ar.HasAllPortFlags(PPF_DuplicateForPIE))
{
// PIE duplication should just work normally
Ar << ChildActorTemplate;
}
else if (Ar.HasAllPortFlags(PPF_Duplicate))
{
if (GIsEditor && Ar.IsLoading() && !IsTemplate())
{
// If we're not a template then we do not want the duplicate so serialize manually and destroy the template that was created for us
Ar.Serialize(&ChildActorTemplate, sizeof(UObject*));
if (AActor* UnwantedDuplicate = static_cast<AActor*>(FindObjectWithOuter(this, AActor::StaticClass())))
{
UnwantedDuplicate->MarkPendingKill();
}
}
else if (!GIsEditor && !Ar.IsLoading() && !GIsDuplicatingClassForReinstancing)
{
// Avoid the archiver in the duplicate writer case because we want to avoid the duplicate being created
Ar.Serialize(&ChildActorTemplate, sizeof(UObject*));
}
else
{
// When we're loading outside of the editor we won't have created the duplicate, so its fine to just use the normal path
// When we're loading a template then we want the duplicate, so it is fine to use normal archiver
// When we're saving in the editor we'll create the duplicate, but on loading decide whether to take it or not
Ar << ChildActorTemplate;
}
}
#if WITH_EDITOR
// Since we sometimes serialize properties in instead of using duplication if we are a template
// and are not pointing at a component we own we'll need to fix that
if (ChildActorTemplate && ChildActorTemplate->GetOuter() != this && IsTemplate())
{
const FString TemplateName = FString::Printf(TEXT("%s_%s_CAT"), *GetName(), *ChildActorClass->GetName());
ChildActorTemplate = CastChecked<AActor>(StaticDuplicateObject(ChildActorTemplate, this, *TemplateName));
}
#endif
}