38class VehicleTurretGun :
public TurretGun
45 float m_mBaseOrientation[3][3];
51 bool m_bUseRemoteControl;
55 bool m_bRemoveOnDeath;
59 SOUND_STATE_TURRET m_eSoundState;
60 float m_fNextSoundState;
66 float m_fWarmupTimeRemaining;
67 float m_fFireWarmupDelay;
68 float m_fTargetReloadTime;
72 float m_fReloadTimeRemaining;
74 SentientPtr m_pRemoteOwner;
78 CLASS_PROTOTYPE(VehicleTurretGun);
86 virtual ~VehicleTurretGun();
88 void Think(
void)
override;
89 void P_UserAim(usercmd_t *ucmd)
override;
91 void SetBaseOrientation(
const vec3_t borientation[3],
const vec3_t bangles);
92 void SetBaseEntity(
Entity *e);
93 void SetVehicleOwner(
Entity *e);
94 void SetRemoteOwner(Sentient *e);
95 virtual void RemoteControl(usercmd_t *ucmd, Sentient *owner);
96 void CollisionCorrect(
trace_t *pTr);
97 void UpdateOrientation(
bool bCollisionCheck);
98 void UpdateSound(
void);
99 void UpdateOwner(Sentient *pOwner);
100 void SetBaseEntity(
Event *ev);
101 void PlaceTurret(
Event *ev);
102 void TurretBeginUsed(Sentient *pEnt)
override;
103 void TurretEndUsed(
void)
override;
104 void TurretUsed(Sentient *pEnt)
override;
105 void TurretUsed(
Event *ev);
106 void EventKilled(
Event *ev);
107 void EventDamage(
Event *ev);
108 void EventRemoveOnDeath(
Event *ev);
109 void EventSetCollisionModel(
Event *ev);
110 void EventGetCollisionModel(
Event *ev);
111 void EventTurnSpeed(
Event *ev);
112 void EventLock(
Event *ev);
113 void EventUnlock(
Event *ev);
114 void SetSoundSet(
Event *ev);
118 bool UseRemoteControl(
void);
120 virtual void EndRemoteControl();
121 virtual SentientPtr GetSentientOwner();
122 virtual SentientPtr GetRemoteOwner(
void);
123 virtual bool IsRemoteControlled();
124 virtual void RestrictPitch();
125 virtual void RestrictYaw();
126 virtual void TurretHasBeenMounted();
128 void UpdateRemoteControl();
129 void UpdateAimTarget();
130 Entity *GetParent()
const;
131 float GetWarmupFraction()
const;
133 qboolean ReadyToFire(firemode_t mode, qboolean playsound)
override;
134 void AdjustReloadStatus();
135 void GetMuzzlePosition(vec3_t position, vec3_t vBarrelPos, vec3_t forward, vec3_t right, vec3_t up)
override;
136 void ApplyFireKickback(
const Vector& org,
float kickback)
override;
137 float FireDelay(firemode_t mode)
override;
141 void SetWarmupDelay(
Event *ev);
142 void SetFireWarmupDelay(
Event *ev);
143 void SetReloadDelay(
Event *ev);
144 void SetReloadShots(
Event *ev);
145 void SetAimOffset(
Event *ev);
146 void SetAimTolerance(
Event *ev);
147 void SetTargetEntity(
Event *ev);
149 void PlayReloadSound(
Event *ev);
150 void SetTargetEntity(
Entity *ent);
151 void UpdateAndMoveOwner();
152 void UpdateTimers(
float& yawTimer,
float& pitchTimer);
153 void UpdateCaps(
float maxYawOffset,
float maxPitchOffset);
154 void IdleToRestPosition();
155 void UpdateFireControl();
156 void UpdateCollisionEntity();
157 EntityPtr GetVehicle()
const;
158 SentientPtr GetRawRemoteOwner()
const;
160 void Archive(
Archiver& arc)
override;
166class VehicleTurretGunTandem :
public VehicleTurretGun
173 float m_fSwitchTimeRemaining;
174 float m_fSwitchDelay;
178 CLASS_PROTOTYPE(VehicleTurretGunTandem);
181 VehicleTurretGunTandem();
182 ~VehicleTurretGunTandem();
184 virtual void EventLinkTurret(
Event *ev);
185 virtual void EventSetSwitchThread(
Event *ev);
186 virtual void AttachLinkedTurret(
Entity *ent);
187 virtual void UpdateLinkedTurret();
188 virtual void OpenSlotsByModel();
190 void Think()
override;
191 bool IsRemoteControlled()
override;
192 SentientPtr GetRemoteOwner()
override;
193 void EndRemoteControl()
override;
195 virtual void SetPrimaryTurret(VehicleTurretGunTandem *pTurret);
196 virtual void SetActiveTurret(VehicleTurretGunTandem *pTurret);
197 VehicleTurretGunTandem *GetPrimaryTurret();
198 bool IsActiveTurret()
const;
200 void RemoteControl(usercmd_t *ucmd, Sentient *owner)
override;
201 virtual void RemoteControlSecondary(usercmd_t *ucmd, Sentient *owner);
202 virtual void RemoteControlFire(usercmd_t *ucmd, Sentient *owner);
204 virtual void SwitchToLinkedTurret();
205 virtual void ThinkPrimary();
206 virtual void ThinkSecondary();
208 void RestrictYaw()
override;
210 void Archive(
Archiver& arc)
override;