Scene Graph Collision Scaling

I made a video on youtube demonstrating how to recreate it https://youtu.be/8VeLe6H4ILs. And here is the script I used:

using { /Fortnite.com }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Devices }
using { /Fortnite.com/Devices/CreativeAnimation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SceneGraph }
using { /UnrealEngine.com/Temporary/SceneGraph/KeyframedMovement }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /Verse.org }
using { /Verse.org/Assets }
using { /Verse.org/Concurrency }
using { /Verse.org/Native }
using { /Verse.org/Random }
using { /Verse.org/Simulation }

testing_collision_component := class<final_super>(component):


    @editable
    TestingTrigger : trigger_device = trigger_device{}

    var CancelAnimationEvent<protected> : event() = event(){}


    EntityEntered<protected>(MyEntity : entity) : void = 
        Print("Entity Entered Event")

    EntityExited<protected>(MyEntity : entity) : void = 
        Print("Entity Exited Event")



    StartFollowPlayer(MaybeAgent : ?agent) : void = 
        if(Player := player[MaybeAgent?], Player.IsActive[]):
            spawn. FollowPlayer(Player)
    
    FollowPlayer(Player : player)<suspends> : void =
        race:
            CancelAnimationEvent.Await()
            loop:
                if(Player.IsActive[], FC := Player.GetFortCharacter[], FC.IsActive[]):
                    NewTranslation := FC.GetTransform().Translation + vector3{ X := 500.0, Y := 0.0, Z := 0.0 }
                    CurrentTransform := Entity.GetGlobalTransform()
                    Entity.SetGlobalTransform(
                        transform:
                            Translation := NewTranslation
                            Rotation := CurrentTransform.Rotation
                            Scale := CurrentTransform.Scale
                    )
                    

                Sleep(0.15)

    OnBeginSimulation<override>():void =
        (super:)OnBeginSimulation()
        Print("OnBeginSimulation")

        if(MeshComponent := Entity.GetComponent[mesh_component]):
            MeshComponent.EntityEnteredEvent.Subscribe(EntityEntered)
            MeshComponent.EntityExitedEvent.Subscribe(EntityExited)

        ## TESTING ##
        TestingTrigger.TriggeredEvent.Subscribe(StartFollowPlayer)

    OnSimulate<override>()<suspends> : void =
        Print("OnSimulate")
        Sleep(30.0)
        Print("Changing object scale")
        CurrentTransform := Entity.GetGlobalTransform()
        Entity.SetGlobalTransform(
            transform:
                Translation := CurrentTransform.Translation
                Rotation := CurrentTransform.Rotation
                Scale := CurrentTransform.Scale / 5.0
        )
        

    OnEndSimulation<override>():void = 
        Print("On End simulation")

        CancelAnimationEvent.Signal()


1 Like