98 lines
2.9 KiB
Ucode
98 lines
2.9 KiB
Ucode
//=============================================================================
|
|
// SavedMove is used during network play to buffer recent client moves,
|
|
// for use when the server modifies the clients actual position, etc.
|
|
// This is a built-in Unreal class and it shouldn't be modified.
|
|
//
|
|
// Aren't we rebels - modified to support Red Orchestra movement - Ramm 7/13/05
|
|
//=============================================================================
|
|
class SavedMove extends Info;
|
|
|
|
// also stores info in Acceleration attribute
|
|
var SavedMove NextMove; // Next move in linked list.
|
|
var float TimeStamp; // Time of this move.
|
|
var float Delta; // amount of time for this move
|
|
var bool bRun;
|
|
var bool bDuck;
|
|
var bool bPressedJump;
|
|
var bool bSprint;
|
|
var bool bCrawl;
|
|
var EDoubleClickDir DoubleClickMove; // Double click info.
|
|
var EPhysics SavedPhysics;
|
|
var vector StartLocation, StartRelativeLocation, StartVelocity, StartFloor, SavedLocation, SavedVelocity, SavedRelativeLocation;
|
|
var Actor StartBase, EndBase;
|
|
var rotator WeaponBufferRotation;
|
|
|
|
final function Clear()
|
|
{
|
|
TimeStamp = 0;
|
|
Delta = 0;
|
|
DoubleClickMove = DCLICK_None;
|
|
Acceleration = vect(0,0,0);
|
|
StartVelocity = vect(0,0,0);
|
|
bRun = false;
|
|
bDuck = false;
|
|
bPressedJump = false;
|
|
bSprint = false;
|
|
bCrawl = false;
|
|
}
|
|
|
|
final function PostUpdate(PlayerController P)
|
|
{
|
|
if ( P.Pawn != None )
|
|
{
|
|
SavedLocation = P.Pawn.Location;
|
|
SavedVelocity = P.Pawn.Velocity;
|
|
EndBase = P.Pawn.Base;
|
|
if ( (EndBase != None) && !EndBase.bWorldGeometry )
|
|
SavedRelativeLocation = P.Pawn.Location - EndBase.Location;
|
|
}
|
|
SetRotation(P.Rotation);
|
|
WeaponBufferRotation = P.WeaponBufferRotation;
|
|
}
|
|
|
|
final function bool IsJumpMove()
|
|
{
|
|
return ( bPressedJump || ((DoubleClickMove != DCLICK_None) && (DoubleClickMove != DCLICK_Active) && (DoubleClickMove != DCLICK_Done)) );
|
|
}
|
|
|
|
function vector GetStartLocation()
|
|
{
|
|
if ( (Vehicle(StartBase) != None) || (Mover(StartBase) != None) )
|
|
return StartBase.Location + StartRelativeLocation;
|
|
|
|
return StartLocation;
|
|
|
|
}
|
|
final function SetInitialPosition(Pawn P)
|
|
{
|
|
SavedPhysics = P.Physics;
|
|
StartLocation = P.Location;
|
|
StartVelocity = P.Velocity;
|
|
StartBase = P.Base;
|
|
StartFloor = P.Floor;
|
|
if ( (StartBase != None) && !StartBase.bWorldGeometry )
|
|
StartRelativeLocation = P.Location - StartBase.Location;
|
|
}
|
|
|
|
final function SetMoveFor(PlayerController P, float DeltaTime, vector NewAccel, EDoubleClickDir InDoubleClick)
|
|
{
|
|
Delta = DeltaTime;
|
|
if ( VSize(NewAccel) > 3072 )
|
|
NewAccel = 3072 * Normal(NewAccel);
|
|
if ( P.Pawn != None )
|
|
SetInitialPosition(P.Pawn);
|
|
Acceleration = NewAccel;
|
|
DoubleClickMove = InDoubleClick;
|
|
bRun = (P.bRun > 0);
|
|
bDuck = (P.bDuck > 0);
|
|
bPressedJump = P.bPressedJump;
|
|
bSprint = (P.bSprint > 0);
|
|
bCrawl = (P.bCrawl > 0);
|
|
TimeStamp = Level.TimeSeconds;
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
bHidden=True
|
|
}
|