45class TurretGun :
public Weapon
56 float m_fMaxIdlePitch;
60 float m_fIdlePitchSpeed;
62 float m_fAIPitchSpeed;
64 float m_fPitchDownCap;
66 float m_fMaxYawOffset;
67 float m_fUserDistance;
68 float m_fMinBurstTime;
69 float m_fMaxBurstTime;
70 float m_fMinBurstDelay;
71 float m_fMaxBurstDelay;
72 float m_fFireToggleTime;
75 CameraPtr m_pUserCamera;
77 float m_fCurrViewJitter;
78 Vector m_vAIBulletSpread[MAX_FIREMODES];
80 SentientPtr m_pAIEnemy;
90 float m_fAIConvergeTime;
91 int m_iAISuppressTime;
92 int m_iAISuppressWaitTime;
93 int m_iAILastTrackTime;
94 int m_iAIStartSuppressTime;
95 vec3_t m_vDesiredTargetAngles;
96 float m_fAIDesiredTargetSpeed;
97 vec3_t m_vAIDesiredTargetPosition;
98 vec3_t m_vAITargetPosition;
99 vec3_t m_vAICurrentTargetPosition;
100 vec3_t m_vAITargetSpeed;
101 int m_iAINextSuppressTime;
102 float m_fAISuppressWidth;
103 float m_fAISuppressHeight;
105 float m_fMaxUseAngle;
109 void P_SetTargetAngles(
Vector &vTargAngles);
110 virtual void P_ThinkActive();
113 CLASS_PROTOTYPE(TurretGun);
116 virtual ~TurretGun();
120 void AI_SetTargetAngles(vec3_t vTargAngles,
float speed);
121 void AI_SetDesiredTargetAngles(
const vec3_t angles,
float speed);
122 void AI_DoTargetNone();
123 void AI_MoveToDefaultPosition();
124 void AI_DoTargetAutoDefault();
125 void AI_StartDefault();
126 void AI_StartSuppress();
127 void AI_StartSuppressWait();
128 void AI_StartTrack();
129 void AI_DoTargetAutoTrack();
130 void AI_DoSuppressionAiming();
131 void AI_DoTargetAutoSuppress();
132 void AI_DoTargetAutoSuppressWait();
133 void AI_DoTargetAuto();
136 void AI_ThinkActive();
139 void Think()
override;
141 void PlaceTurret(
Event *ev);
143 virtual void P_UserAim(usercmd_t *ucmd);
144 qboolean UserAim(usercmd_t *ucmd);
145 virtual void TurretBeginUsed(Sentient *pEnt);
146 virtual void P_TurretBeginUsed(Player *pEnt);
147 virtual void AI_TurretBeginUsed(Sentient *pEnt);
148 virtual void TurretEndUsed();
149 virtual void P_TurretEndUsed();
150 virtual void AI_TurretEndUsed();
151 void RemoveUserCamera();
152 virtual void TurretUsed(Sentient *pEnt);
153 virtual void P_TurretUsed(Player *player);
155 void TurretUsed(
Event *ev);
156 void P_SetPlayerUsable(
Event *ev);
157 void EventSetUsable(
Event *ev);
158 void P_SetViewOffset(
Event *ev);
159 void EventMaxIdlePitch(
Event *ev);
160 void EventMaxIdleYaw(
Event *ev);
161 void SetIdleCheckOffset(
Event *ev);
163 void CalcFiringViewJitter();
164 void P_ApplyFiringViewJitter(
Vector& vAng);
165 void AI_TurnSpeed(
float speed);
166 void AI_PitchSpeed(
float speed);
167 void PitchCaps(
float upcap,
float downcap);
168 void MaxYawOffset(
float max);
169 void YawCenter(
float center);
170 void P_UserDistance(
float dist);
171 void AI_BurstFireSettings(
float min_bursttime,
float max_bursttime,
float min_burstdelay,
float max_burstdelay);
172 void AI_EventSetAimTarget(
Event *ev);
173 void AI_EventSetAimOffset(
Event *ev);
174 void AI_EventClearAimTarget(
Event *ev);
175 void AI_EventStartFiring(
Event *ev);
176 void AI_EventStopFiring(
Event *ev);
177 void AI_EventTurnSpeed(
Event *ev);
178 void AI_EventPitchSpeed(
Event *ev);
179 void EventPitchCaps(
Event *ev);
180 void EventMaxYawOffset(
Event *ev);
181 void EventYawCenter(
Event *ev);
182 void P_EventUserDistance(
Event *ev);
183 void P_EventViewJitter(
Event *ev);
184 void P_EventDoJitter(
Event *ev);
185 void AI_EventBurstFireSettings(
Event *ev);
186 void P_EventSetThread(
Event *ev);
187 void P_SetMaxUseAngle(
Event *ev);
188 void P_SetStartYaw(
Event *ev);
189 void P_SetViewangles(
Event *ev);
190 void P_SetViewAnglesForTurret(
Event *ev);
191 void P_GetViewangles(
Event *ev);
192 void P_CreateViewModel();
193 void P_DeleteViewModel();
195 qboolean AI_SetWeaponAnim(
const char *anim,
Event *ev = NULL);
196 qboolean P_SetWeaponAnim(
const char *anim,
Event *ev = NULL);
197 qboolean SetWeaponAnim(
const char *anim,
Event *ev = NULL)
override;
198 void AI_StopWeaponAnim();
199 void P_StopWeaponAnim();
200 void StopWeaponAnim()
override;
202 bool AI_CanTarget(
const vec3_t org);
203 virtual float FireDelay(firemode_t mode)
override;
204 virtual void SetFireDelay(
Event *ev)
override;
205 void ShowInfo(
float fDot,
float fDist)
override;
209 void AI_EventSetTargetType(
Event *ev);
210 void AI_EventGetTargetType(
Event *ev);
211 void AI_EventSetConvergeTime(
Event *ev);
212 void AI_EventSetSuppressTime(
Event *ev);
213 void AI_EventSetSuppressWaitTime(
Event *ev);
214 void AI_EventSetSuppressWidth(
Event *ev);
215 void AI_EventSetSuppressHeight(
Event *ev);
216 void AI_EventSetBulletSpread(
Event *ev);
217 void GetMuzzlePosition(
218 vec3_t position, vec3_t vBarrelPos = NULL, vec3_t forward = NULL, vec3_t right = NULL, vec3_t up = NULL
221 void setAngles(
Vector ang)
override;
224 const Vector& GetUserViewAngles()
const;
225 void SetUserViewAngles(
const Vector& vAngles);
227 void Archive(
Archiver& arc)
override;