652 lines
14 KiB
Text
652 lines
14 KiB
Text
|
/***********************************************************************
|
||
|
|
||
|
This script contains any player state machine specific code for vehicles.
|
||
|
|
||
|
***********************************************************************/
|
||
|
|
||
|
object player {
|
||
|
//default
|
||
|
void Torso_VehicleDefault();
|
||
|
void Legs_VehicleDefault();
|
||
|
|
||
|
|
||
|
//badger
|
||
|
float BadgerCalcState();
|
||
|
void Torso_VehicleBadgerDriver_TurnLeft();
|
||
|
void Torso_VehicleBadgerDriver_TurnRight();
|
||
|
void Torso_VehicleBadgerDriver();
|
||
|
void Legs_VehicleBadgerDriver();
|
||
|
|
||
|
void Legs_VehicleBadgerGunner();
|
||
|
void Legs_VehicleBadgerGunnerIdle();
|
||
|
void Legs_VehicleBadgerGunnerClockWise();
|
||
|
void Legs_VehicleBadgerGunnerAntiClockWise();
|
||
|
void Torso_VehicleBadgerGunner();
|
||
|
|
||
|
void Torso_VehicleBadgerRearLeftPassenger();
|
||
|
void Legs_VehicleBadgerRearLeftPassenger();
|
||
|
|
||
|
void Torso_VehicleBadgerRearRightPassenger();
|
||
|
void Legs_VehicleBadgerRearRightPassenger();
|
||
|
|
||
|
void Torso_VehicleBadgerFrontRightPassenger();
|
||
|
void Legs_VehicleBadgerFrontRightPassenger();
|
||
|
|
||
|
|
||
|
//trojan
|
||
|
|
||
|
|
||
|
void Torso_VehicleTrojanDriver();
|
||
|
void Legs_VehicleTrojanDriver();
|
||
|
|
||
|
void Torso_VehicleTrojanPassenger1();
|
||
|
void Legs_VehicleTrojanPassenger1();
|
||
|
|
||
|
void Torso_VehicleTrojanPassenger2();
|
||
|
void Legs_VehicleTrojanPassenger2();
|
||
|
|
||
|
void Torso_VehicleTrojanPassenger3();
|
||
|
void Legs_VehicleTrojanPassenger3();
|
||
|
|
||
|
void Torso_VehicleTrojanPassenger4();
|
||
|
void Legs_VehicleTrojanPassenger4();
|
||
|
|
||
|
//manned deployables
|
||
|
|
||
|
void Torso_DeployableStroggAntivehicle();
|
||
|
void Legs_DeployableStroggAntivehicle();
|
||
|
|
||
|
void Torso_DeployableStroggAntipersonnel();
|
||
|
void Legs_DeployableStroggAntipersonnel();
|
||
|
|
||
|
|
||
|
void Torso_DeployableGDFAntipersonnel();
|
||
|
void Legs_DeployableGDFAntipersonnel();
|
||
|
|
||
|
|
||
|
|
||
|
//bumblebee
|
||
|
|
||
|
void Torso_VehicleBumblebeePilot();
|
||
|
void Legs_VehicleBumblebeePilot();
|
||
|
|
||
|
void Torso_VehicleBumblebeeLeftPassenger();
|
||
|
void Legs_VehicleBumblebeeLeftPassenger();
|
||
|
|
||
|
void Torso_VehicleBumblebeeRightPassenger();
|
||
|
void Legs_VehicleBumblebeeRightPassenger();
|
||
|
|
||
|
void Torso_VehicleBumblebeeGunnerLeft();
|
||
|
void Legs_VehicleBumblebeeGunnerLeft();
|
||
|
|
||
|
void Torso_VehicleBumblebeeGunnerRight();
|
||
|
void Legs_VehicleBumblebeeGunnerRight();
|
||
|
|
||
|
void Anim_VehicleBumblebeeGunner( float channel, float minYaw, float maxYaw );
|
||
|
|
||
|
|
||
|
//icarus
|
||
|
void Torso_VehicleIcarus();
|
||
|
void Legs_VehicleIcarus();
|
||
|
|
||
|
|
||
|
//titan
|
||
|
void Torso_VehicleTitanPassenger();
|
||
|
void Legs_VehicleTitanPassenger();
|
||
|
|
||
|
//anansi
|
||
|
void Torso_VehicleAnansiPilot();
|
||
|
void Legs_VehicleAnansiPilot();
|
||
|
|
||
|
void Torso_VehicleAnansiGunner();
|
||
|
void Legs_VehicleAnansiGunner();
|
||
|
|
||
|
|
||
|
//hornet
|
||
|
void Torso_VehicleHornetPilot();
|
||
|
void Legs_VehicleHornetPilot();
|
||
|
|
||
|
//platypus
|
||
|
void Torso_VehiclePlatypusDriver();
|
||
|
void Legs_VehiclePlatypusDriver();
|
||
|
|
||
|
|
||
|
//mounted gpmg
|
||
|
|
||
|
void Torso_MountedGPMG();
|
||
|
void Legs_MountedGPMG();
|
||
|
|
||
|
|
||
|
//mounted default
|
||
|
|
||
|
void Torso_MountedDefault();
|
||
|
void Legs_MountedDefault();
|
||
|
|
||
|
void Torso_MountedDefaultGunner( float minYaw, float maxYaw );
|
||
|
void Legs_MountedDefaultGunner( float minYaw, float maxYaw );
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
//*********************************************************************************************************
|
||
|
|
||
|
|
||
|
|
||
|
// Default
|
||
|
|
||
|
void player::Torso_VehicleDefault() {
|
||
|
playCycle( ANIMCHANNEL_TORSO, "cockpit" );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleDefault() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "cockpit" );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
// Anansi
|
||
|
|
||
|
|
||
|
void player::Torso_VehicleAnansiPilot() {
|
||
|
playCycle( ANIMCHANNEL_TORSO, "anansi_pilot" );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleAnansiPilot() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "anansi_pilot" );
|
||
|
}
|
||
|
|
||
|
|
||
|
void player::Torso_VehicleAnansiGunner() {
|
||
|
playCycle( ANIMCHANNEL_TORSO, "anansi_gunner" );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleAnansiGunner() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "anansi_gunner" );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
// Icarus
|
||
|
|
||
|
void player::Torso_VehicleIcarus() {
|
||
|
playCycle( ANIMCHANNEL_TORSO, "icarus" );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleIcarus() {
|
||
|
animState( ANIMCHANNEL_LEGS, "Legs_Idle", 0 );
|
||
|
}
|
||
|
|
||
|
//================================================
|
||
|
// Badger=========================================
|
||
|
|
||
|
#define BADGER_STATE_TURN_LEFT 0
|
||
|
#define BADGER_STATE_TURN_RIGHT 1
|
||
|
#define BADGER_STATE_IDLE 2
|
||
|
|
||
|
float player::BadgerCalcState() {
|
||
|
entity vehicle = getVehicle();
|
||
|
|
||
|
if ( vehicle != $null_entity ) {
|
||
|
if ( vehicle.vGetSteerScale() <= -0.4 ) {
|
||
|
return BADGER_STATE_TURN_LEFT;
|
||
|
}
|
||
|
if ( vehicle.vGetSteerScale() >= 0.4 ) {
|
||
|
return BADGER_STATE_TURN_RIGHT;
|
||
|
}
|
||
|
}
|
||
|
return BADGER_STATE_IDLE;
|
||
|
}
|
||
|
|
||
|
void player::Torso_VehicleBadgerDriver() {
|
||
|
playCycle( ANIMCHANNEL_TORSO, "badger_driver" );
|
||
|
|
||
|
while ( true ) {
|
||
|
float newstate = BadgerCalcState();
|
||
|
if ( newstate == BADGER_STATE_TURN_LEFT ) {
|
||
|
animState( ANIMCHANNEL_TORSO, "Torso_VehicleBadgerDriver_TurnLeft", 6 );
|
||
|
}
|
||
|
if ( newstate == BADGER_STATE_TURN_RIGHT ) {
|
||
|
animState( ANIMCHANNEL_TORSO, "Torso_VehicleBadgerDriver_TurnRight", 6 );
|
||
|
}
|
||
|
sys.waitFrame();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void player::Torso_VehicleBadgerDriver_TurnLeft() {
|
||
|
playAnim( ANIMCHANNEL_TORSO, "badger_driver_turn_left" );
|
||
|
|
||
|
while ( true ) {
|
||
|
float newstate = BadgerCalcState();
|
||
|
if ( newstate == BADGER_STATE_IDLE ) {
|
||
|
animState( ANIMCHANNEL_TORSO, "Torso_VehicleBadgerDriver", 6 );
|
||
|
}
|
||
|
if ( newstate == BADGER_STATE_TURN_RIGHT ) {
|
||
|
animState( ANIMCHANNEL_TORSO, "Torso_VehicleBadgerDriver_TurnRight", 6 );
|
||
|
}
|
||
|
sys.waitFrame();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void player::Torso_VehicleBadgerDriver_TurnRight() {
|
||
|
playAnim( ANIMCHANNEL_TORSO, "badger_driver_turn_right" );
|
||
|
|
||
|
while ( true ) {
|
||
|
float newstate = BadgerCalcState();
|
||
|
if ( newstate == BADGER_STATE_TURN_LEFT ) {
|
||
|
animState( ANIMCHANNEL_TORSO, "Torso_VehicleBadgerDriver_TurnLeft", 6 );
|
||
|
}
|
||
|
if ( newstate == BADGER_STATE_IDLE ) {
|
||
|
animState( ANIMCHANNEL_TORSO, "Torso_VehicleBadgerDriver", 6 );
|
||
|
}
|
||
|
sys.waitFrame();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleBadgerDriver() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "badger_driver" );
|
||
|
}
|
||
|
|
||
|
|
||
|
void player::Legs_VehicleBadgerGunner() {
|
||
|
animState( ANIMCHANNEL_LEGS, "Legs_VehicleBadgerGunnerIdle", 0 );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleBadgerGunnerIdle() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "mounted_gpmg_idle" );
|
||
|
|
||
|
vector baseViewAngles = getViewAngles();
|
||
|
while ( true ) {
|
||
|
vector viewAngles = getViewAngles();
|
||
|
|
||
|
float diff = baseViewAngles_y - viewAngles_y;
|
||
|
|
||
|
if ( diff < -10.f ) {
|
||
|
animState( ANIMCHANNEL_LEGS, "Legs_VehicleBadgerGunnerAntiClockWise", 2 );
|
||
|
} else if ( diff > 10.f ) {
|
||
|
animState( ANIMCHANNEL_LEGS, "Legs_VehicleBadgerGunnerClockWise", 2 );
|
||
|
}
|
||
|
|
||
|
sys.waitFrame();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleBadgerGunnerClockWise() {
|
||
|
playAnim( ANIMCHANNEL_LEGS, "mounted_gpmg_clockwise" );
|
||
|
waitUntil( animDone( ANIMCHANNEL_LEGS, 2 ) );
|
||
|
animState( ANIMCHANNEL_LEGS, "Legs_VehicleBadgerGunnerIdle", 2 );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleBadgerGunnerAntiClockWise() {
|
||
|
playAnim( ANIMCHANNEL_LEGS, "mounted_gpmg_anticlockwise" );
|
||
|
waitUntil( animDone( ANIMCHANNEL_LEGS, 2 ) );
|
||
|
animState( ANIMCHANNEL_LEGS, "Legs_VehicleBadgerGunnerIdle", 2 );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void player::Torso_VehicleBadgerGunner() {
|
||
|
string gunnerAnim = "mounted_gpmg_aimupdown";
|
||
|
float gunnerAnimFrames = getNumFrames( gunnerAnim );
|
||
|
|
||
|
float minPitch = -55;
|
||
|
float maxPitch = 15;
|
||
|
float pitchTotal = maxPitch - minPitch;
|
||
|
|
||
|
float oldFrac = -1.f;
|
||
|
|
||
|
while ( true ) {
|
||
|
vector viewAngles = getViewAngles();
|
||
|
|
||
|
float frac = ( viewAngles_x - minPitch ) / pitchTotal;
|
||
|
|
||
|
if ( frac != oldFrac ) {
|
||
|
setAnimFrame( gunnerAnim, ANIMCHANNEL_TORSO, frac * gunnerAnimFrames );
|
||
|
oldFrac = frac;
|
||
|
}
|
||
|
|
||
|
sys.waitFrame();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
void player::Torso_VehicleBadgerRearLeftPassenger() {
|
||
|
animState( ANIMCHANNEL_TORSO, "Torso_Idle", 0 );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleBadgerRearLeftPassenger() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "badger_rear_left_passenger" );
|
||
|
}
|
||
|
|
||
|
|
||
|
void player::Torso_VehicleBadgerRearRightPassenger() {
|
||
|
animState( ANIMCHANNEL_TORSO, "Torso_Idle", 0 );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleBadgerRearRightPassenger() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "badger_rear_right_passenger" );
|
||
|
}
|
||
|
|
||
|
|
||
|
void player::Torso_VehicleBadgerFrontRightPassenger() {
|
||
|
playCycle( ANIMCHANNEL_TORSO, "badger_front_right_passenger" );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleBadgerFrontRightPassenger() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "badger_front_right_passenger" );
|
||
|
}
|
||
|
|
||
|
|
||
|
// Trojan
|
||
|
|
||
|
void player::Torso_VehicleTrojanDriver() {
|
||
|
playCycle( ANIMCHANNEL_TORSO, "trojan_driver" );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleTrojanDriver() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "trojan_driver" );
|
||
|
}
|
||
|
|
||
|
void player::Torso_VehicleTrojanPassenger1() {
|
||
|
playCycle( ANIMCHANNEL_TORSO, "trojan_passenger1" );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleTrojanPassenger1() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "trojan_passenger1" );
|
||
|
}
|
||
|
|
||
|
void player::Torso_VehicleTrojanPassenger2() {
|
||
|
playCycle( ANIMCHANNEL_TORSO, "trojan_passenger2" );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleTrojanPassenger2() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "trojan_passenger2" );
|
||
|
}
|
||
|
|
||
|
void player::Torso_VehicleTrojanPassenger3() {
|
||
|
playCycle( ANIMCHANNEL_TORSO, "trojan_passenger3" );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleTrojanPassenger3() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "trojan_passenger3" );
|
||
|
}
|
||
|
|
||
|
void player::Torso_VehicleTrojanPassenger4() {
|
||
|
playCycle( ANIMCHANNEL_TORSO, "trojan_passenger4" );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleTrojanPassenger4() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "trojan_passenger4" );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// Titan
|
||
|
|
||
|
void player::Torso_VehicleTitanPassenger() {
|
||
|
setBlendFrames( ANIMCHANNEL_TORSO, 0 );
|
||
|
playCycle( ANIMCHANNEL_TORSO, "titan_passenger" );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleTitanPassenger() {
|
||
|
setBlendFrames( ANIMCHANNEL_LEGS, 0 );
|
||
|
playCycle( ANIMCHANNEL_LEGS, "titan_passenger" );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// Hornet
|
||
|
|
||
|
void player::Torso_VehicleHornetPilot() {
|
||
|
playCycle( ANIMCHANNEL_TORSO, "hornet_pilot" );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleHornetPilot() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "hornet_pilot" );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// Platypus
|
||
|
|
||
|
void player::Torso_VehiclePlatypusDriver() {
|
||
|
playCycle( ANIMCHANNEL_TORSO, "platypus_driver" );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehiclePlatypusDriver() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "platypus_driver" );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// manned deployables
|
||
|
|
||
|
|
||
|
void player::Torso_DeployableStroggAntivehicle() {
|
||
|
playCycle( ANIMCHANNEL_TORSO, "strogg_antivehicle_gunner" );
|
||
|
}
|
||
|
|
||
|
void player::Legs_DeployableStroggAntivehicle() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "strogg_antivehicle_gunner" );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void player::Torso_DeployableStroggAntipersonnel() {
|
||
|
playCycle( ANIMCHANNEL_TORSO, "strogg_antipersonnel_gunner" );
|
||
|
}
|
||
|
|
||
|
void player::Legs_DeployableStroggAntipersonnel() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "strogg_antipersonnel_gunner" );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
void player::Torso_DeployableGDFAntipersonnel() {
|
||
|
playCycle( ANIMCHANNEL_TORSO, "gdf_antipersonnel_control" );
|
||
|
}
|
||
|
|
||
|
void player::Legs_DeployableGDFAntipersonnel() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "gdf_antipersonnel_control" );
|
||
|
}
|
||
|
|
||
|
|
||
|
// Bumblebee
|
||
|
|
||
|
|
||
|
void player::Torso_VehicleBumblebeePilot() {
|
||
|
playCycle( ANIMCHANNEL_TORSO, "bumblebee_pilot" );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleBumblebeePilot() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "bumblebee_pilot" );
|
||
|
}
|
||
|
|
||
|
|
||
|
void player::Torso_VehicleBumblebeeRightPassenger() {
|
||
|
animState( ANIMCHANNEL_TORSO, "Torso_Idle", 0 );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleBumblebeeRightPassenger() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "bumblebee_right_passenger" );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void player::Torso_VehicleBumblebeeLeftPassenger() {
|
||
|
animState( ANIMCHANNEL_TORSO, "Torso_Idle", 0 );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleBumblebeeLeftPassenger() {
|
||
|
playCycle( ANIMCHANNEL_LEGS, "bumblebee_left_passenger" );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
void player::Anim_VehicleBumblebeeGunner( float channel, float minYaw, float maxYaw ) {
|
||
|
string gunnerAnim = "bumblebee_gunner_righttoleft_aimcenter";
|
||
|
float gunnerAnimFrames = getNumFrames( gunnerAnim );
|
||
|
|
||
|
float yawTotal = maxYaw - minYaw;
|
||
|
|
||
|
float oldFrac = -1.f;
|
||
|
|
||
|
entity proxy = getProxyEntity();
|
||
|
|
||
|
while ( true ) {
|
||
|
vector viewAngles = getRenderViewAngles();
|
||
|
if ( proxy == $null_entity ) {
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
viewAngles = sys.rotateAngles( viewAngles, -proxy.getAngles() );
|
||
|
|
||
|
float frac = ( viewAngles_y - minYaw ) / yawTotal;
|
||
|
|
||
|
if ( frac != oldFrac ) {
|
||
|
setAnimFrame( gunnerAnim, channel, frac * gunnerAnimFrames );
|
||
|
oldFrac = frac;
|
||
|
}
|
||
|
|
||
|
sys.waitFrame();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
void player::Torso_VehicleBumblebeeGunnerLeft() {
|
||
|
Anim_VehicleBumblebeeGunner( ANIMCHANNEL_TORSO, 30, 160 );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleBumblebeeGunnerLeft() {
|
||
|
Anim_VehicleBumblebeeGunner( ANIMCHANNEL_LEGS, 30, 160 );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void player::Torso_VehicleBumblebeeGunnerRight() {
|
||
|
Anim_VehicleBumblebeeGunner( ANIMCHANNEL_TORSO, -160, -30 );
|
||
|
}
|
||
|
|
||
|
void player::Legs_VehicleBumblebeeGunnerRight() {
|
||
|
Anim_VehicleBumblebeeGunner( ANIMCHANNEL_LEGS, -160, -30 );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// GPMG
|
||
|
|
||
|
void player::Torso_MountedGPMG() {
|
||
|
string gunnerAnim = "mounted_gpmg_aimupdown";
|
||
|
float gunnerAnimFrames = getNumFrames( gunnerAnim );
|
||
|
|
||
|
float minPitch = -40;
|
||
|
float maxPitch = 40;
|
||
|
float pitchTotal = maxPitch - minPitch;
|
||
|
|
||
|
float oldFrac = -1.f;
|
||
|
|
||
|
while ( true ) {
|
||
|
vector viewAngles = getViewAngles();
|
||
|
|
||
|
float frac = ( viewAngles_x - minPitch ) / pitchTotal;
|
||
|
|
||
|
if ( frac != oldFrac ) {
|
||
|
setAnimFrame( gunnerAnim, ANIMCHANNEL_TORSO, frac * gunnerAnimFrames );
|
||
|
oldFrac = frac;
|
||
|
}
|
||
|
|
||
|
sys.waitFrame();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void player::Legs_MountedGPMG() {
|
||
|
Legs_VehicleBadgerGunner();
|
||
|
}
|
||
|
|
||
|
// Mounted Weapons
|
||
|
|
||
|
void player::Torso_MountedDefaultGunner( float minYaw, float maxYaw ) {
|
||
|
string gunnerAnim = "mounted_emplacement_righttoleft";
|
||
|
float gunnerAnimFrames = getNumFrames( gunnerAnim );
|
||
|
|
||
|
float yawTotal = maxYaw - minYaw;
|
||
|
|
||
|
float oldFrac = -1.f;
|
||
|
|
||
|
while ( true ) {
|
||
|
vector viewAngles = getViewAngles();
|
||
|
|
||
|
float frac = ( viewAngles_y - minYaw ) / yawTotal;
|
||
|
|
||
|
if ( frac != oldFrac ) {
|
||
|
setAnimFrame( gunnerAnim, ANIMCHANNEL_TORSO, frac * gunnerAnimFrames );
|
||
|
oldFrac = frac;
|
||
|
}
|
||
|
|
||
|
sys.waitFrame();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
void player::Legs_MountedDefaultGunner( float minYaw, float maxYaw ) {
|
||
|
string gunnerAnim = "mounted_emplacement_righttoleft";
|
||
|
float gunnerAnimFrames = getNumFrames( gunnerAnim );
|
||
|
|
||
|
float yawTotal = maxYaw - minYaw;
|
||
|
|
||
|
float oldFrac = -1.f;
|
||
|
|
||
|
while ( true ) {
|
||
|
vector viewAngles = getViewAngles();
|
||
|
|
||
|
float frac = ( viewAngles_y - minYaw ) / yawTotal;
|
||
|
|
||
|
if ( frac != oldFrac ) {
|
||
|
setAnimFrame( gunnerAnim, ANIMCHANNEL_LEGS, frac * gunnerAnimFrames );
|
||
|
oldFrac = frac;
|
||
|
}
|
||
|
|
||
|
sys.waitFrame();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
void player::Legs_MountedDefault() {
|
||
|
Legs_MountedDefaultGunner( -190, 190 );
|
||
|
}
|
||
|
|
||
|
void player::Torso_MountedDefault() {
|
||
|
Torso_MountedDefaultGunner( -190, 190 );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
//*****************************************************************************************************************
|
||
|
|