Cogito, ergo sum

Legacy:SuperApe/VariableTimedMover

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
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