mirror of
https://github.com/jmarshall23/DoomRTX.git
synced 2026-08-20 04:30:12 +02:00
Quake 4 integrated with DoomRTX
This commit is contained in:
@@ -0,0 +1,177 @@
|
||||
#include "precompiled.h"
|
||||
#pragma hdrstop
|
||||
|
||||
#include "../Game_local.h"
|
||||
#include "VehicleStatic.h"
|
||||
|
||||
class rvVehicleDropPod : public rvVehicleStatic {
|
||||
public:
|
||||
|
||||
CLASS_PROTOTYPE( rvVehicleDropPod );
|
||||
|
||||
rvVehicleDropPod ( void );
|
||||
|
||||
void Spawn ( void );
|
||||
|
||||
virtual bool GetPhysicsToVisualTransform ( idVec3 &origin, idMat3 &axis );
|
||||
|
||||
private:
|
||||
|
||||
stateResult_t State_Idle ( const stateParms_t& parms );
|
||||
stateResult_t State_IdleThink ( const stateParms_t& parms );
|
||||
stateResult_t State_IdleOffline ( const stateParms_t& parms );
|
||||
stateResult_t State_ScriptedAnim ( const stateParms_t& parms );
|
||||
|
||||
void Event_ScriptedAnim ( const char* animname, int blendFrames, bool loop, bool endWithIdle );
|
||||
void Event_ScriptedDone ( void );
|
||||
void Event_ScriptedStop ( void );
|
||||
|
||||
CLASS_STATES_PROTOTYPE ( rvVehicleDropPod );
|
||||
};
|
||||
|
||||
CLASS_DECLARATION( rvVehicleStatic, rvVehicleDropPod )
|
||||
EVENT( AI_ScriptedAnim, rvVehicleDropPod::Event_ScriptedAnim )
|
||||
EVENT( AI_ScriptedDone, rvVehicleDropPod::Event_ScriptedDone )
|
||||
EVENT( AI_ScriptedStop, rvVehicleDropPod::Event_ScriptedStop )
|
||||
END_CLASS
|
||||
|
||||
/*
|
||||
================
|
||||
rvVehicleDropPod::rvVehicleDropPod
|
||||
================
|
||||
*/
|
||||
rvVehicleDropPod::rvVehicleDropPod ( void ) {
|
||||
}
|
||||
|
||||
/*
|
||||
================
|
||||
rvVehicleDropPod::Spawn
|
||||
================
|
||||
*/
|
||||
void rvVehicleDropPod::Spawn ( void ) {
|
||||
SetAnimState ( ANIMCHANNEL_LEGS, "State_IdleOffline", 0 );
|
||||
}
|
||||
|
||||
/*
|
||||
===============================================================================
|
||||
|
||||
States
|
||||
|
||||
===============================================================================
|
||||
*/
|
||||
|
||||
CLASS_STATES_DECLARATION ( rvVehicleDropPod )
|
||||
STATE ( "State_Idle", rvVehicleDropPod::State_Idle )
|
||||
STATE ( "State_IdleThink", rvVehicleDropPod::State_IdleThink )
|
||||
STATE ( "State_IdleOffline", rvVehicleDropPod::State_IdleOffline )
|
||||
|
||||
STATE ( "State_ScriptedAnim", rvVehicleDropPod::State_ScriptedAnim )
|
||||
END_CLASS_STATES
|
||||
|
||||
/*
|
||||
================
|
||||
rvVehicleDropPod::State_IdleOffline
|
||||
================
|
||||
*/
|
||||
stateResult_t rvVehicleDropPod::State_IdleOffline ( const stateParms_t& parms ) {
|
||||
vfl.frozen = true;
|
||||
|
||||
PlayCycle ( ANIMCHANNEL_LEGS, "idle", parms.blendFrames );
|
||||
PostAnimState ( ANIMCHANNEL_LEGS, "Wait_Driver", 0 );
|
||||
PostAnimState ( ANIMCHANNEL_LEGS, "State_Idle", 0 );
|
||||
|
||||
return SRESULT_DONE;
|
||||
}
|
||||
|
||||
/*
|
||||
================
|
||||
rvVehicleDropPod::State_Idle
|
||||
================
|
||||
*/
|
||||
stateResult_t rvVehicleDropPod::State_Idle ( const stateParms_t& parms ) {
|
||||
if ( SRESULT_WAIT != State_IdleThink ( parms ) ) {
|
||||
return SRESULT_DONE;
|
||||
}
|
||||
|
||||
return SRESULT_DONE;
|
||||
}
|
||||
|
||||
/*
|
||||
================
|
||||
rvVehicleDropPod::State_IdleThink
|
||||
================
|
||||
*/
|
||||
stateResult_t rvVehicleDropPod::State_IdleThink ( const stateParms_t& parms ) {
|
||||
if ( !vfl.driver ) {
|
||||
PostAnimState ( ANIMCHANNEL_LEGS, "State_IdleOffline", parms.blendFrames );
|
||||
return SRESULT_DONE;
|
||||
}
|
||||
|
||||
return SRESULT_WAIT;
|
||||
}
|
||||
|
||||
/*
|
||||
================
|
||||
rvVehicleDropPod::State_ScriptedAnim
|
||||
================
|
||||
*/
|
||||
stateResult_t rvVehicleDropPod::State_ScriptedAnim ( const stateParms_t& parms ) {
|
||||
if ( !AnimDone ( ANIMCHANNEL_LEGS, parms.blendFrames ) ) {
|
||||
return SRESULT_WAIT;
|
||||
}
|
||||
Event_ScriptedStop();
|
||||
return SRESULT_DONE;
|
||||
}
|
||||
|
||||
/*
|
||||
================
|
||||
rvVehicleDropPod::Event_ScriptedAnim
|
||||
================
|
||||
*/
|
||||
void rvVehicleDropPod::Event_ScriptedAnim( const char* animname, int blendFrames, bool loop, bool endWithIdle ) {
|
||||
vfl.endWithIdle = endWithIdle;
|
||||
if ( loop ) {
|
||||
PlayCycle ( ANIMCHANNEL_LEGS, animname, blendFrames );
|
||||
} else {
|
||||
PlayAnim ( ANIMCHANNEL_LEGS, animname, blendFrames );
|
||||
}
|
||||
SetAnimState ( ANIMCHANNEL_LEGS, "State_ScriptedAnim", blendFrames );
|
||||
vfl.scripted = true;
|
||||
}
|
||||
|
||||
/*
|
||||
================
|
||||
rvVehicleDropPod::Event_ScriptedDone
|
||||
================
|
||||
*/
|
||||
void rvVehicleDropPod::Event_ScriptedDone( void ) {
|
||||
idThread::ReturnInt( !vfl.scripted );
|
||||
}
|
||||
|
||||
/*
|
||||
================
|
||||
rvVehicleDropPod::Event_ScriptedStop
|
||||
================
|
||||
*/
|
||||
void rvVehicleDropPod::Event_ScriptedStop( void ) {
|
||||
vfl.scripted = false;
|
||||
|
||||
if ( vfl.endWithIdle ) {
|
||||
SetAnimState ( ANIMCHANNEL_LEGS, "State_Idle", 1 );
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
================
|
||||
rvVehicleDropPod::GetPhysicsToVisualTransform
|
||||
================
|
||||
*/
|
||||
bool rvVehicleDropPod::GetPhysicsToVisualTransform ( idVec3 &origin, idMat3 &axis ) {
|
||||
// if ( GetBindMaster() ) {
|
||||
// axis = viewAxis;
|
||||
// origin.Zero();
|
||||
// return true;
|
||||
// }
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user