Description

The following functions have been found to perform unchecked casts of the pawn's "UpdatedComponent" to class UCapsuleComponent, possibly resulting in crashes:

  • UFloorQueryUtils::ComputeFloorDist()
  • UGroundMovementUtils::TryMoveToStepUp()
  • UGroundMovementUtils::TestMoveToStepOver()

Although the documentation ([Link Removed]) mentions that the built-in "Default Character Movement Set" assumes a vertical capsule primitive for all actors, the functions above are not organized as part of that set, but rather as part of a "MoveLibrary". For a user implementing his own custom movement mode(s) aiming to support different collision shapes as allowed by the Mover plugin, this library seems to be a collection of general-use utility functions, but the Editor simply crashes when a non-capsule collision is used, which is perceived as a bug.

If such functions from the MoveLibrary cannot be made to support non-capsule collision shapes, maybe they could issue an error or warning in the log instead of crashing. This could also be documented similarly to the stated limitations of the Default Character Movement Set.

 

Steps to Reproduce

1. Enable plugins "Mover" and "Mover Examples"
2. Edit "/MoverExamples/Pawns/BaseAnimatedMannyPawn", add a "Sphere Collision" as the new root component
3. Open map "/MoverExamples/Maps/L_CharacterMovementBasics"
4. PIE

Resulting behavior on different engine versions:

Up to 5.5: The player character falls straight through the floor
From 5.6+: The Editor crashes

Callstack

UnrealEditor-Mover.dll!UFloorQueryUtils::ComputeFloorDist(const FMovingComponentSet & MovingComps, float LineTraceDistance, float FloorSweepDistance, float MaxWalkSlopeCosine, const UE::Math::TVector<double> & Location, bool bUseFlatBaseForFloorChecks, FFloorCheckResult & OutFloorResult) Line 47 C++
UnrealEditor-Mover.dll!UFloorQueryUtils::FindFloor(const FMovingComponentSet & MovingComps, float FloorSweepDistance, float MaxWalkSlopeCosine, bool bUseFlatBaseForFloorChecks, const UE::Math::TVector<double> & Location, FFloorCheckResult & OutFloorResult) Line 31 C++
UnrealEditor-Mover.dll!UFallingMode::SimulationTick_Implementation(const FSimulationTickParams & Params, FMoverTickEndData & OutputState) Line 190 C++
UnrealEditor-Mover.dll!UBaseMovementMode::SimulationTick(const FSimulationTickParams & Params, FMoverTickEndData & OutputState) Line 454 C++
UnrealEditor-Mover.dll!UMovementModeStateMachine::OnSimulationTick(USceneComponent * UpdatedComponent, UPrimitiveComponent * UpdatedPrimitive, UMoverBlackboard * SimBlackboard, const FMoverTickStartData & StartState, const FMoverTimeStep & TimeStep, FMoverTickEndData & OutputState) Line 395 C++
UnrealEditor-Mover.dll!UMoverComponent::SimulationTick(const FMoverTimeStep & InTimeStep, const FMoverTickStartData & SimInput, FMoverTickEndData & SimOutput) Line 618 C++
UnrealEditor-Mover.dll!UMoverNetworkPredictionLiaisonComponent::SimulationTick(const FNetSimTimeStep & TimeStep, const TNetworkPredictionState<TNetworkPredictionStateTypes<FMoverInputCmdContext,FMoverSyncState,FMoverAuxStateContext>> & SimInput, const TNetSimOutput<TNetworkPredictionStateTypes<FMoverInputCmdContext,FMoverSyncState,FMoverAuxStateContext>> & SimOutput) Line 149 C++
UnrealEditor-Mover.dll!TTickUtil<FMoverActorModelDef>::DoTick<UMoverNetworkPredictionLiaisonComponent>(TInstanceData<FMoverActorModelDef> & Instance, TInstanceFrameState<FMoverActorModelDef>::FFrame & InputFrameData, TInstanceFrameState<FMoverActorModelDef>::FFrame & OutputFrameData, const FNetSimTimeStep & Step, const int CueTimeMS, ESimulationTickContext TickContext) Line 42 C++
UnrealEditor-Mover.dll!TLocalTickServiceBase<FMoverActorModelDef>::Tick_Internal<0>(const FNetSimTimeStep & Step, const FServiceTimeStep & ServiceStep) Line 123 C++
UnrealEditor-NetworkPrediction.dll!UNetworkPredictionWorldManager::BeginNewSimulationFrame_Internal(float DeltaTimeSeconds) Line 345 C++
UnrealEditor-NetworkPrediction.dll!UNetworkPredictionWorldManager::BeginNewSimulationFrame(UWorld * InWorld, ELevelTick InLevelTick, float DeltaTimeSeconds) Line 287 C++
[Inline Frame] UnrealEditor-NetworkPrediction.dll!Invoke(void(UNetworkPredictionWorldManager::*)(UWorld *, ELevelTick, float) PtrMemFun, UNetworkPredictionWorldManager * &) Line 66 C++
[Inline Frame] UnrealEditor-NetworkPrediction.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(void(UNetworkPredictionWorldManager::*)(UWorld *, ELevelTick, float) &) Line 326 C++
UnrealEditor-NetworkPrediction.dll!TBaseUObjectMethodDelegateInstance<0,UNetworkPredictionWorldManager,void __cdecl(UWorld *,enum ELevelTick,float),FDefaultDelegateUserPolicy>::ExecuteIfSafe(UWorld * <Params_0>, ELevelTick <Params_1>, float <Params_2>) Line 713 C++
[Inline Frame] UnrealEditor-Engine.dll!TMulticastDelegateBase<FDefaultDelegateUserPolicy>::Broadcast(UWorld *) Line 301 C++
UnrealEditor-Engine.dll!TMulticastDelegate<void __cdecl(UWorld *,enum ELevelTick,float),FDefaultDelegateUserPolicy>::Broadcast(UWorld * <Params_0>, ELevelTick <Params_1>, float <Params_2>) Line 1076 C++
UnrealEditor-Engine.dll!UWorld::Tick(ELevelTick TickType, float DeltaSeconds) Line 1646 C++
UnrealEditor-UnrealEd.dll!UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 2171 C++
UnrealEditor-UnrealEd.dll!UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 537 C++
UnrealEditor.exe!FEngineLoop::Tick() Line 5828 C++
[Inline Frame] UnrealEditor.exe!EngineTick() Line 60 C++
UnrealEditor.exe!GuardedMain(const wchar_t * CmdLine) Line 190 C++
UnrealEditor.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 266 C++
UnrealEditor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 334 C++
[External Code]

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-356713 in the post.

0
Login to Vote

Unresolved
CreatedDec 4, 2025
UpdatedDec 8, 2025
View Jira Issue