My program doesn't have bugs. It just develops random features.

Legacy:VariableTimedMover

From Unreal Wiki, The Unreal Engine Documentation Site

Jump to: navigation, search
UT2004 :: Actor >> Mover >> VariableTimedMover (custom)

This version 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

Contents

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

//=============================================================================</span><div class="hidden">// 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

Personal tools