I have a simple blueprint actor which has a InterpToMovement component in it. When I spawn that actor I set two control points for it, one for the initial position and another for the end position, then finalize control points. InterpToMovement component tries to set an invalid location at alpha time nearing 1.0. Location of the control points nor the duration for InterpToMovement does not seem to matter.
It results in a location with all NaN’s which crashes in an assertion checking if the new transform is valid.
Here is the callstack from Visual :
UE4Editor-Engine.dll!USceneComponent::UpdateComponentToWorldWithParent(USceneComponent * Parent, FName SocketName, bool bSkipPhysicsMove, const FQuat & RelativeRotationQuat, ETeleportType Teleport) Line 384 C++
UE4Editor-Engine.dll!USceneComponent::InternalSetWorldLocationAndRotation(FVector NewLocation, const FQuat & RotationQuat, bool bNoPhysics, ETeleportType Teleport) Line 2176 C++
UE4Editor-Engine.dll!USceneComponent::MoveComponentImpl(const FVector & Delta, const FQuat & NewRotation, bool bSweep, FHitResult * OutHit, EMoveComponentFlags MoveFlags, ETeleportType Teleport) Line 2297 C++
UE4Editor-Engine.dll!UMovementComponent::MoveUpdatedComponentImpl(const FVector & Delta, const FQuat & NewRotation, bool bSweep, FHitResult * OutHit, ETeleportType Teleport) Line 471 C++
UE4Editor-Engine.dll!UInterpToMovementComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction * ThisTickFunction) Line 112 C++
UE4Editor-Engine.dll!FActorComponentTickFunction::ExecuteTickHelper<void (float) >(UActorComponent * Target, bool bTickInEditor, float DeltaTime, ELevelTick TickType, const FActorComponentTickFunction::ExecuteTick::l2::void (float) & ExecuteTickFunc) Line 2722 C++
UE4Editor-Engine.dll!FActorComponentTickFunction::ExecuteTick(float DeltaTime, ELevelTick TickType, ENamedThreads::Type CurrentThread, const TRefCountPtr & MyCompletionGraphEvent) Line 710 C++
UE4Editor-Engine.dll!FTickFunctionTask::DoTask(ENamedThreads::Type CurrentThread, const TRefCountPtr & MyCompletionGraphEvent) Line 228 C++
UE4Editor-Engine.dll!TGraphTask::ExecuteTask(TArray<FBaseGraphTask *,FDefaultAllocator> & NewTasks, ENamedThreads::Type CurrentThread) Line 886 C++
UE4Editor-Core.dll!FNamedTaskThread::ProcessTasksNamedThread(int QueueIndex, bool bAllowStall) Line 779 C++
UE4Editor-Core.dll!FNamedTaskThread::ProcessTasksUntilQuit(int QueueIndex) Line 526 C++
UE4Editor-Core.dll!FTaskGraphImplementation::WaitUntilTasksComplete(const TArray<TRefCountPtr,TInlineAllocator<4,FDefaultAllocator> > & Tasks, ENamedThreads::Type CurrentThreadIfKnown) Line 1534 C++
UE4Editor-Engine.dll!FTickTaskSequencer::ReleaseTickGroup(ETickingGroup WorldTickGroup, bool bBlockTillComplete) Line 486 C++
UE4Editor-Engine.dll!FTickTaskManager::RunTickGroup(ETickingGroup Group, bool bBlockTillComplete) Line 1373 C++
UE4Editor-Engine.dll!UWorld::RunTickGroup(ETickingGroup Group, bool bBlockTillComplete) Line 702 C++
UE4Editor-Engine.dll!UWorld::Tick(ELevelTick TickType, float DeltaSeconds) Line 1187 C++
UE4Editor-UnrealEd.dll!UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 1356 C++
UE4Editor-UnrealEd.dll!UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 370 C++
UE4Editor.exe!FEngineLoop::Tick() Line 2643 C++
UE4Editor.exe!GuardedMain(const wchar_t * CmdLine, HINSTANCE * hInInstance, HINSTANCE__ * hPrevInstance, int nCmdShow) Line 142 C++
UE4Editor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow) Line 189 C++
[External Code]
value of NewTransform is:
- NewTransform {Rotation={m128_f32=0x0000004d0e6cd4b0 {0.000000000, -0.000000000, 0.607823968, 0.794071734} m128_u64=...} ...} FTransform
+ Rotation {m128_f32=0x0000004d0e6cd4b0 {0.000000000, -0.000000000, 0.607823968, 0.794071734} m128_u64=0x0000004d0e6cd4b0 {...} ...} __m128
+ Translation {m128_f32=0x0000004d0e6cd4c0 {-nan(ind), -nan(ind), -nan(ind), 0.000000000} m128_u64=0x0000004d0e6cd4c0 {...} ...} __m128
+ Scale3D {m128_f32=0x0000004d0e6cd4d0 {1.00000000, 1.00000000, 1.00000000, 0.000000000} m128_u64=0x0000004d0e6cd4d0 {...} ...} __m128