I search for solutions in this order: Past Code, Unreal Source, Wiki, BUF, groups.yahoo, google, screaming at monitor. – RegularX
Legacy:VariableTimedMover
From Unreal Wiki, The Unreal Engine Documentation Site
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
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();
}
}