| Home Page | Recent Changes

SuperApe/VariableTimedMover

UT2004 :: Actor >> Mover >> VariableTimedMover (custom)

This verion is for use with any number of Keys and in all Mover InitialStates. Mover → MoveTime becomes a multiplier for the VariableTimedMover → KeyMoveTime array, so keep MoveTime at 1.0 to allow the KeyMoveTime values to represent seconds.

A test map file with this actor is available on this UnrealPlayground Forum thread: [VariableTimedMover]

Properties

Main

bool bActAsClientMover
This mover will be disabled on Servers, just as ClientMover.
array<float> KeyMoveTime
The time (multiplier of MoveTime) it takes to go from this key number to the next. (Tip: Keep MoveTime at 1.0 to allow the KeyMoveTime values to represent seconds.)

Hidden

array<float> KeyMoveSpeed
The actual time in seconds it takes to go from this key number to the next.

Source Code

//=============================================================================
// VariableTimedMover
// Allows custom MoveTimes per key (modified from a version by Fataloverdose)
// by SuperApe -- Sept 2005
//=============================================================================
class VariableTimedMover extends Mover;

var()       bool                bActAsClientMover;
var()       array<float>        KeyMoveTime;
var         array<float>        KeyMoveSpeed;

function PostBeginPlay()
{
    local   int     n;

    for ( n = 0; n < KeyMoveTime.length; n++ )
        KeyMoveSpeed[n] = KeyMoveTime[n] * MoveTime;

    Super.PostBeginPlay();

    MoveTime = KeyMoveSpeed[ KeyNum ];

    if ( bActAsClientMover && Level.NetMode == NM_DedicatedServer )
    {
        SetTimer( 0, false );
        SetPhysics( PHYS_None );
        GotoState('ServerIdle');
    }
}

simulated event KeyFrameReached()
{
    MoveTime = KeyMoveSpeed[ KeyNum ];
    Super.KeyFrameReached();
}

function DoOpen()
{
    MoveTime = KeyMoveSpeed[ KeyNum ];
    Super.DoOpen();
}

function DoClose()
{                                                   
    MoveTime = KeyMoveSpeed[ KeyNum ];
    Super.DoClose();
}

state ServerIdle
{
    // Do nothing on the Server
}

state() LoopMove
{
    event KeyFrameReached()
    {
        MoveTime = KeyMoveSpeed[ KeyNum ];
        Super.KeyFrameReached();
    }
}

state() ConstantLoop
{
    event KeyFrameReached()
    {
        MoveTime = KeyMoveSpeed[ KeyNum ];
        Super.KeyFrameReached();
    }
}

state() LeadInOutLooper
{
    event KeyFrameReached()
    {
        MoveTime = KeyMoveSpeed[ KeyNum ];
        Super.KeyFrameReached();
    }
}

state LeadInOutLooping
{
    event KeyFrameReached()
    {
        MoveTime = KeyMoveSpeed[ KeyNum ];
        Super.KeyFrameReached();
    }
}

Related Topics

Discussion


Category Custom Class

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

FAQs

Help Desk

Mapping Topics

Mapping Lessons

UnrealEd Interface

UnrealScript Topics

UnrealScript Lessons

Making Mods

Class Tree

Modeling Topics

Chongqing Page

Log In