[Scene Graph] Character teleports toward world origin when floor component is disabled (Physics disabled in Island Settings)

Summary

Since the v41.00 update when physics is disabled in Island Settings, disabling an entity’s mesh_component via Verse while a character is standing on it causes the character to instantly teleport toward the world origin coordinates (0,0,0). During this teleportation, the character respects world collisions and stops at the first solid object encountered along the path. This causes players to glitch into random locations instead of falling down when losing their footing. Tested on both the Standard and Fall Guys templates.

Please select what you are reporting on:

Unreal Editor for Fortnite

What Type of Bug are you experiencing?

Scene Graph

Steps to Reproduce

  1. Create a custom component using the Scene Graph framework.
  2. Use a loop to periodically disable and enable mesh_component of an entity.
  3. Place this entity in the world as a platform and start a Live Edit session.
  4. Stand on the platform and wait for the mesh to be disabled.

Expected Result

The character should lose ground support and fall straight down naturally due to gravity.

Observed Result

When mesh_component is disabled, the character does not fall. Instead, they are instantly pulled/teleported along a trajectory toward (0,0,0), stopping at the first object with collision on that path.

Platform(s)

PC

There’s also snapping when you remove the mesh’s entity from its parent.

FORT-1113832 has been created and its status is ‘Unconfirmed’. This is now in a queue to be reproduced and confirmed.

I can confirm this, huge bug and I expect to be VERY game breaking. Here’s simple code to speed up the process of reproducing this as it’s super simple to recreate

using { /Verse.org }
using { /Verse.org/Native }
using { /Verse.org/SceneGraph }
using { /Verse.org/Simulation }

FloorComponent<public> := class<final_super>(component):

    var IsDisabled<public>:logic = false
  
    OnBeginSimulation<override>():void =
        (super:)OnBeginSimulation()

    OnSimulate<override>()<suspends>:void =
        loop:
            Sleep(5.0)
            if(ThisMesh:=Entity.GetComponent[mesh_component]):
                if(IsDisabled = true):
                    set IsDisabled = false
                    ThisMesh.Enable()
                else:
                    set IsDisabled = true
                    ThisMesh.Disable()