102 lines
2.4 KiB
Ucode
102 lines
2.4 KiB
Ucode
/*
|
|
--------------------------------------------------------------
|
|
KF_StoryPRI
|
|
--------------------------------------------------------------
|
|
|
|
Custom Player ReplicationInfo class for Objective Mode
|
|
|
|
Author : Alex Quick
|
|
|
|
--------------------------------------------------------------
|
|
*/
|
|
|
|
|
|
class KF_StoryPRI extends KFPlayerReplicationInfo;
|
|
|
|
/* Struct that contains information for rendering a hovering icon
|
|
overtop of a player which is not relevant to clients */
|
|
|
|
struct SPlayerIconData
|
|
{
|
|
var Material IconMat; // Icon to render over top of the pawn's head.
|
|
var Vector CurrentPawnLoc; // current location of the player pawn.
|
|
var Vector LastPawnLoc;
|
|
};
|
|
|
|
var private vector InterpolatedPawnLoc;
|
|
|
|
var private SPlayerIconData FloatingIconData;
|
|
|
|
/* Reference to the pawn this PRI belongs to */
|
|
var private KFHumanPawn_Story OwnerPawn;
|
|
|
|
var float LastIconUpdateTime;
|
|
|
|
replication
|
|
{
|
|
unreliable if(Role == Role_Authority && bNetDirty)
|
|
FloatingIconData,OwnerPawn;
|
|
|
|
}
|
|
|
|
function SetReplicatedPawnLoc(vector NewLoc)
|
|
{
|
|
if(Level.TimeSeconds - LastIconUpdateTime > NetUpdateFrequency)
|
|
{
|
|
LastIconUpdateTime = Level.TimeSeconds;
|
|
FloatingIconData.LastPawnLoc = FloatingIconData.CurrentPawnLoc;
|
|
}
|
|
|
|
if(NewLoc != FloatingIconData.CurrentPawnLoc)
|
|
{
|
|
FloatingIconData.CurrentPawnLoc = NewLoc;
|
|
}
|
|
}
|
|
|
|
function SetOwnerPawn(KFHumanPawn_Story NewOwnerPawn)
|
|
{
|
|
OwnerPawn = NewOwnerPawn;
|
|
}
|
|
|
|
function SetFloatingIconMat(material NewMat)
|
|
{
|
|
FloatingIconData.IconMat = NewMat;
|
|
}
|
|
|
|
/* Returns the current position of the pawn this PRI belongs to (or as close as we can get) */
|
|
simulated function Vector GetCurrentPawnLoc()
|
|
{
|
|
return FloatingIconData.CurrentPawnLoc;
|
|
}
|
|
|
|
simulated function Vector GetlastPawnLoc()
|
|
{
|
|
return FloatingIconData.LastPawnLoc;
|
|
}
|
|
|
|
|
|
simulated function Vector GetInterpolatedPawnLoc()
|
|
{
|
|
return InterpolatedPawnLoc;
|
|
}
|
|
|
|
/* Set on the client only */
|
|
simulated function SetInterpolatedPawnLoc(vector NewValue)
|
|
{
|
|
InterpolatedPawnLoc = NewValue;
|
|
}
|
|
|
|
|
|
/* Returns the Icon to render overtop of our pawn's head (if one is set) */
|
|
simulated function Material GetFloatingIconMat()
|
|
{
|
|
return FloatingIconData.IconMat;
|
|
}
|
|
|
|
simulated function KFHumanPawn_Story GetOwnerPawn()
|
|
{
|
|
return OwnerPawn;
|
|
}
|
|
|
|
|