class BoneRotatingActor extends Actor;
const TIRE_FRONT_RIGHT = 'TIRE';
const TIRE_FRONT_LEFT = 'TIRE03';
const TIRE_REAR_RIGHT = 'TIRE02';
const TIRE_REAR_LEFT = 'TIRE04';
var EvilCatModern Chassis;
[B][COLOR="Red"]// These variables calculated server-side then sent to client
var rotator Tire1RotT, Tire2RotT, Tire3RotT, Tire4RotT;
var vector Dir;
replication
{
// Send calculated variables to client
unreliable if (Role == ROLE_Authority)
Chassis, Dir, Tire1RotT, Tire2RotT, Tire3RotT, Tire4RotT;
}
[/COLOR][/B]
simulated event Tick(float DeltaTime)
{
local rotator ChassisRot;
[B][COLOR="Red"]// Check whether chassis is valid, otherwise will get
// "Accessed None" before replication is completed
if (Chassis == None) return;
// Only update this stuff server-side
if (Role == ROLE_Authority)
{[/COLOR][/B]
ChassisRot = Chassis.Rotation;
Dir = vector(ChassisRot);
Tire1RotT = Chassis.SteerTireRight.Rotation; // tires are invisible kactors
Tire2RotT = Chassis.SteerTireLeft.Rotation;
Tire3RotT = Chassis.EngTireRight.Rotation;
Tire4RotT = Chassis.EngTireLeft.Rotation;
[B][COLOR="Red"]}[/COLOR][/B]
Chassis.SetBoneDirection( TIRE_FRONT_RIGHT , Tire1RotT , Dir , 1 );
Chassis.SetBoneDirection( TIRE_FRONT_LEFT , Tire2RotT , Dir , 1 );
Chassis.SetBoneDirection( TIRE_REAR_RIGHT , Tire3RotT , Dir , 1 );
Chassis.SetBoneDirection( TIRE_REAR_LEFT , Tire4RotT , Dir , 1 );
}
defaultproperties
{
RemoteRole=[B][COLOR="Red"]ROLE_SimulatedProxy[/COLOR][/B]
}