CarryableObjectTransform only reports the device location

Summary

I’ve been working with the new carryable_spawner_device in Verse, and I want to use Verse code to track the live location of a carryable object after it has been thrown. after writing a loop script, I notice that it only reports the coordinates of the device, not the item.

Please select what you are reporting on:

Verse

What Type of Bug are you experiencing?

Devices

Steps to Reproduce

  1. Write the following code, with the belonging packages and editables (BeachBallBlue is the device):

ForCarryableThrown(Agent:agent):void=
spawn:
CarryableThrown(Agent)

CarryableThrown(Agent:agent):void=
loop:
Sleep(0.1)
if (BallTransform := BeachBallBlue.CarryableObjectTransform?, BallLocation := BallTransform.Translation):
Print(“{BallTransform.Translation.X}”)

  1. Enter a session and start the game
  2. Pick up the carryable item, move your character somewhere and throw the item
  3. Check if the output log reports the X-coordinate of the stationary device or of the actual item

Expected Result

The X-coordinate of the item would be printed, showing different values each time as the item travels.

Observed Result

The same value is printed each time, which is in fact the X-coordinate of the carryable item device.

Platform(s)

PC

Additional Notes

Fortnite.digest says the following about CarryableObjectTransform:

The carryable transform, if the carryable exists in-world.

    var<private> CarryableObjectTransform<public>:?(/UnrealEngine.com/Temporary/SpatialMath:)transform = external {}

You must be doing something wrong, as I’m able to update my beacon’s location to point to where the carryable is currently located at just fine with the following function:

UpdateCarryableBeacon(Carryable: carryable_spawner_device, Beacon: beacon_device)<suspends>:void=
        loop:
            Carryable.SpawnEvent.Await()
            Beacon.Enable()
            loop:
                if(Carryable.IsSpawned[]):
                    if:
                        CarryableTransform:= Carryable.CarryableObjectTransform?
                        CarryableLoc:= CarryableTransform.Translation
                    then:
                        if(Beacon.TeleportTo[Position:= vector3{X:=CarryableLoc.X, Y:= CarryableLoc.Y, Z:= CarryableLoc.Z-100.0},
                        Rotation:= IdentityRotation()]){}
                else:
                    Beacon.Disable()
                    break
                Sleep(0.1)

Let me know if this worked for you, cheers!

(post deleted by author)