void F3DAttachTrackEditor::ActorSocketPicked(const FName SocketName, AActor* ParentActor, FGuid ObjectGuid, UMovieSceneSection* Section) { if (ObjectGuid.IsValid()) { TArray<UObject*> OutObjects; GetSequencer()->GetRuntimeObjects( GetSequencer()->GetFocusedMovieSceneSequenceInstance(), ObjectGuid, OutObjects); AnimatablePropertyChanged( FOnKeyProperty::CreateRaw( this, &F3DAttachTrackEditor::AddKeyInternal, OutObjects, SocketName, ParentActor) ); } else if (Section != nullptr) { const FScopedTransaction Transaction(LOCTEXT("UndoSetAttach", "Set Attach")); UMovieScene3DAttachSection* AttachSection = (UMovieScene3DAttachSection*)(Section); FGuid ActorId = FindOrCreateHandleToObject(ParentActor).Handle; if (ActorId.IsValid()) { AttachSection->SetConstraintId(ActorId); AttachSection->AttachSocketName = SocketName; } } }