Movers

Movers are entites that move and rotate smoothly. script_mover allows for smooth movement and rotation contrary to script_mover_lightweight which is not able to rotate.

Create a Mover

entity CreateExpensiveScriptMover(vector origin, vector angles)

returns script_mover

entity CreateExpensiveScriptMoverModel(asset model, vector origin, vector angles, int solidType, float fadeDist)

returns script_mover which has a model

entity CreateScriptMover(vector origin, vector angles)

returns script_mover_lightweight

entity CreateScriptMoverModel(asset model, vector origin, vector angles, int solidType, float fadeDist)

returns script_mover_lightweight which has a model

entity CreateOwnedScriptMover(entity owner)

returns script_mover which will be at the location of the owner

Moving

void NonPhysicsMoveTo(vector position, float time, float easeIn, float easeOut)
void NonPhysicsMoveInWorldSpaceToLocalPos(vector localPos, float time, float easeIn, float easeOut)
void NonPhysicsMoveWithGravity(vector velocityForOthers, vector fakeGravity)
void NonPhysicsRotateTo(vector angles, float time, float easeIn, float easeOut)

Only usable by expensive movers

void NonPhysicsRotate(vector angles, float speed)

Only usable by expensive movers

void NonPhysicsStop()

Immediately stop this mover from moving

Behaviour

void ChangeNPCPathsOnMove(bool recalculate)
void SetPusher(bool isPusher)

Pushers move everything that stands on top of them or next to them and can also kill entities by crushing them.

void NonPhysicsSetRotateModeLocal(bool useLocal)
void PhysicsDummyEnableMotion(bool enabled)

Examples

entity mover = CreateScriptMover( <0,0,0> )

// moving the mover to <0,0,10> in 1 second
mover.NonPhysicsMoveTo( <0,0,10>, 1, 0, 0 )

// wating so the mover gets to the destination
wait 1

// sending it back
mover.NonPhysicsMoveTo( <0,0,0>, 1, 0, 0 )

// then stoping the mover in 0.5 seconds
wait 0.5
mover.NonPhysicsStop()
// creating a elevator
// using a mover with a model
entity mover = CreateScriptMoverModel( $"models/props/turret_base/turret_base.mdl", < -40.5605, -1827.87, -223.944 >, <0,0,0>, SOLID_VPHYSICS, 1000 )
mover.SetPusher( true ) // making it into a pusher

// for loop to move the elevator up and down
for(;;)
{
    mover.NonPhysicsMoveTo( < -35.4312, -1827.87, 523.046 >, 4.8, 0.1, 0.1 )
    wait 6

    mover.NonPhysicsMoveTo( < -35.4312, -1827.87, -223.944 >, 4.8, 0.1, 0.1 )
    wait 6
}
// Phase shifting the player to a destination
// setting a position
vector destination = <250,1000,100>
// checking if the player is valid
if ( IsValid( player ) )
{
    // creating the mover
    entity mover = CreateOwnedScriptMover( player )
    player.SetParent( mover ) // parenting the player ( so they move with the mover )
    mover.NonPhysicsMoveTo( destination, 0.5, 0, 0 ) // saying to the moveer to move
    vector angles = player.GetAngles() // angles saved
    PhaseShift( player, 0.1, 1 ) // phase shifitng the player
    player.SetAngles( angles ) // setting the player to the original angles
}
wait 0.6 // wating so the mover moves

if ( IsValid( player ) )
{
    player.ClearParent() // removing the player from the mover
}