本文整理汇总了C++中TInlineComponentArray::AddUnique方法的典型用法代码示例。如果您正苦于以下问题:C++ TInlineComponentArray::AddUnique方法的具体用法?C++ TInlineComponentArray::AddUnique怎么用?C++ TInlineComponentArray::AddUnique使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TInlineComponentArray
的用法示例。
在下文中一共展示了TInlineComponentArray::AddUnique方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: StartRecordingActorProperties
void UActorRecording::StartRecordingActorProperties(ULevelSequence* CurrentSequence, float CurrentSequenceTime)
{
if(CurrentSequence != nullptr)
{
// set up our spawnable or possessable for this actor
UMovieScene* MovieScene = CurrentSequence->GetMovieScene();
AActor* Actor = GetActorToRecord();
if (bRecordToPossessable)
{
Guid = MovieScene->AddPossessable(Actor->GetActorLabel(), Actor->GetClass());
CurrentSequence->BindPossessableObject(Guid, *Actor, Actor->GetWorld());
}
else
{
FString TemplateName = GetUniqueSpawnableName(MovieScene, Actor->GetName());
AActor* ObjectTemplate = CastChecked<AActor>(CurrentSequence->MakeSpawnableTemplateFromInstance(*Actor, *TemplateName));
if (ObjectTemplate)
{
TInlineComponentArray<USkeletalMeshComponent*> SkeletalMeshComponents;
ObjectTemplate->GetComponents(SkeletalMeshComponents);
for (USkeletalMeshComponent* SkeletalMeshComponent : SkeletalMeshComponents)
{
SkeletalMeshComponent->SetAnimationMode(EAnimationMode::AnimationSingleNode);
SkeletalMeshComponent->bEnableUpdateRateOptimizations = false;
SkeletalMeshComponent->MeshComponentUpdateFlag = EMeshComponentUpdateFlag::AlwaysTickPoseAndRefreshBones;
SkeletalMeshComponent->ForcedLodModel = 1;
}
Guid = MovieScene->AddSpawnable(TemplateName, *ObjectTemplate);
}
}
// now add tracks to record
if(Guid.IsValid())
{
// add our folder
FindOrAddFolder(MovieScene);
// force set recording to record translations as we need this with no animation
UMovieScene3DTransformSectionRecorderSettings* TransformSettings = ActorSettings.GetSettingsObject<UMovieScene3DTransformSectionRecorderSettings>();
check(TransformSettings);
TransformSettings->bRecordTransforms = true;
// grab components so we can track attachments
// don't include non-CDO here as they wont be part of our initial BP (duplicated above)
// we will catch these 'extra' components on the first tick
const bool bIncludeNonCDO = false;
SyncTrackedComponents(bIncludeNonCDO);
TInlineComponentArray<USceneComponent*> SceneComponents(GetActorToRecord());
// check if components need recording
TInlineComponentArray<USceneComponent*> ValidSceneComponents;
for(TWeakObjectPtr<USceneComponent>& SceneComponent : TrackedComponents)
{
if(ValidComponent(SceneComponent.Get()))
{
ValidSceneComponents.Add(SceneComponent.Get());
// add all parent components too
TArray<USceneComponent*> ParentComponents;
SceneComponent->GetParentComponents(ParentComponents);
for(USceneComponent* ParentComponent : ParentComponents)
{
ValidSceneComponents.AddUnique(ParentComponent);
}
}
}
ProcessNewComponentArray(ValidSceneComponents);
TSharedPtr<FMovieSceneAnimationSectionRecorder> FirstAnimRecorder = nullptr;
for(USceneComponent* SceneComponent : ValidSceneComponents)
{
TSharedPtr<FMovieSceneAnimationSectionRecorder> AnimRecorder = StartRecordingComponentProperties(SceneComponent->GetFName(), SceneComponent, GetActorToRecord(), CurrentSequence, CurrentSequenceTime, AnimationSettings);
if(!FirstAnimRecorder.IsValid() && AnimRecorder.IsValid() && GetActorToRecord()->IsA<ACharacter>())
{
FirstAnimRecorder = AnimRecorder;
}
}
// we need to create a transform track even if we arent recording transforms
if (FSequenceRecorder::Get().GetTransformRecorderFactory().CanRecordObject(GetActorToRecord()))
{
TSharedPtr<IMovieSceneSectionRecorder> Recorder = FSequenceRecorder::Get().GetTransformRecorderFactory().CreateSectionRecorder(TransformSettings->bRecordTransforms, FirstAnimRecorder);
if(Recorder.IsValid())
{
Recorder->CreateSection(GetActorToRecord(), MovieScene, Guid, CurrentSequenceTime);
Recorder->Record(CurrentSequenceTime);
SectionRecorders.Add(Recorder);
}
}
TArray<IMovieSceneSectionRecorderFactory*> ModularFeatures = IModularFeatures::Get().GetModularFeatureImplementations<IMovieSceneSectionRecorderFactory>(MovieSceneSectionRecorderFactoryName);
for (IMovieSceneSectionRecorderFactory* Factory : ModularFeatures)
{
//.........这里部分代码省略.........