Skip to content

Commit 3d8bd50

Browse files
authored
Fix #3037: Add ResetPedVoice function - Bug fix (#3129)
The function ResetPedVoice never worked (it was added in PR #3037) but now it does.
1 parent 77ab3e6 commit 3d8bd50

File tree

4 files changed

+93
-79
lines changed

4 files changed

+93
-79
lines changed

Client/game_sa/CPedSA.cpp

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,8 @@ extern CGameSA* pGame;
2727

2828
int g_bOnlyUpdateRotations = false;
2929

30-
CPedSA::CPedSA() : m_pPedIntelligence(NULL), m_pPedInterface(NULL), m_pPedSound(NULL),
31-
m_pDefaultPedSound(NULL), m_iCustomMoveAnim(0)
32-
{
33-
MemSetFast(m_pWeapons, 0, sizeof(CWeaponSA*) * WEAPONSLOT_MAX);
34-
}
35-
36-
CPedSA::CPedSA(CPedSAInterface* pPedInterface) : m_pPedIntelligence(NULL), m_pPedInterface(pPedInterface),
37-
m_pPedSound(NULL), m_pDefaultPedSound(NULL), m_iCustomMoveAnim(0)
30+
CPedSA::CPedSA(CPedSAInterface* pPedInterface) noexcept
31+
: m_pPedInterface(pPedInterface)
3832
{
3933
MemSetFast(m_pWeapons, 0, sizeof(CWeaponSA*) * WEAPONSLOT_MAX);
4034
}
@@ -50,8 +44,6 @@ CPedSA::~CPedSA()
5044
delete m_pPedIntelligence;
5145
if (m_pPedSound)
5246
delete m_pPedSound;
53-
if (m_pDefaultPedSound)
54-
delete m_pDefaultPedSound;
5547

5648
for (int i = 0; i < WEAPONSLOT_MAX; i++)
5749
{
@@ -94,7 +86,9 @@ void CPedSA::Init()
9486
CPedIntelligenceSAInterface* m_pPedIntelligenceInterface = (CPedIntelligenceSAInterface*)(dwPedIntelligence);
9587
m_pPedIntelligence = new CPedIntelligenceSA(m_pPedIntelligenceInterface, this);
9688
m_pPedSound = new CPedSoundSA(&pedInterface->pedSound);
97-
m_pDefaultPedSound = new CPedSoundSA(&pedInterface->pedSound);
89+
90+
m_sDefaultVoiceType = m_pPedSound->GetVoiceTypeID();
91+
m_sDefaultVoiceID = m_pPedSound->GetVoiceID();
9892

9993
for (int i = 0; i < WEAPONSLOT_MAX; i++)
10094
m_pWeapons[i] = new CWeaponSA(&(pedInterface->Weapons[i]), this, (eWeaponSlot)i);
@@ -953,7 +947,7 @@ void CPedSA::SetVoice(const char* szVoiceType, const char* szVoice)
953947

954948
void CPedSA::ResetVoice()
955949
{
956-
SetVoice(m_pDefaultPedSound->GetVoiceTypeID(), m_pDefaultPedSound->GetVoiceID());
950+
SetVoice(m_sDefaultVoiceType, m_sDefaultVoiceID);
957951
}
958952

959953
// GetCurrentWeaponStat will only work if the game ped context is currently set to this ped

Client/game_sa/CPedSA.h

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -264,22 +264,23 @@ class CPedSA : public virtual CPed, public virtual CPhysicalSA
264264
friend class CPoolsSA;
265265

266266
private:
267-
CWeaponSA* m_pWeapons[WEAPONSLOT_MAX];
268-
CPedIKSA* m_pPedIK;
269-
CPedIntelligenceSA* m_pPedIntelligence;
270-
CPedSAInterface* m_pPedInterface;
271-
CPedSoundSA* m_pPedSound;
272-
CPedSoundSA* m_pDefaultPedSound;
267+
CWeaponSA* m_pWeapons[WEAPONSLOT_MAX]{};
268+
CPedIKSA* m_pPedIK{};
269+
CPedIntelligenceSA* m_pPedIntelligence{};
270+
CPedSAInterface* m_pPedInterface{};
271+
CPedSoundSA* m_pPedSound{};
272+
273+
short m_sDefaultVoiceType;
274+
short m_sDefaultVoiceID;
273275

274276
DWORD m_dwType;
275277
unsigned char m_ucOccupiedSeat;
276278

277279
protected:
278-
int m_iCustomMoveAnim;
280+
int m_iCustomMoveAnim{ 0 };
279281

280282
public:
281-
CPedSA();
282-
CPedSA(CPedSAInterface* pedInterface);
283+
CPedSA(CPedSAInterface* pedInterface = nullptr) noexcept;
283284
~CPedSA();
284285

285286
void SetInterface(CEntitySAInterface* intInterface);

Client/mods/deathmatch/logic/CClientBuilding.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class CClientBuilding : public CClientEntity
4141
uint16_t GetModel() const noexcept { return m_usModelId; };
4242
void SetModel(uint16_t ulModel);
4343

44-
eClientEntityType GetType() const noexcept { return CCLIENTBUILDING; }
44+
eClientEntityType GetType() const { return CCLIENTBUILDING; }
4545

4646
void Create();
4747
void Destroy();

Client/mods/deathmatch/logic/CClientPed.h

Lines changed: 76 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -165,24 +165,24 @@ class CClientPed : public CClientStreamElement, public CAntiCheatModule
165165
CClientPed(CClientManager* pManager, unsigned long ulModelID, ElementID ID);
166166
~CClientPed();
167167

168-
void Unlink(){};
168+
void Unlink() {};
169169

170170
virtual eClientEntityType GetType() const { return CCLIENTPED; }
171171

172-
CPlayerPed* GetGamePlayer() { return m_pPlayerPed; }
173-
CEntity* GetGameEntity() { return m_pPlayerPed; }
174-
const CEntity* GetGameEntity() const { return m_pPlayerPed; }
172+
CPlayerPed* GetGamePlayer() noexcept { return m_pPlayerPed; }
173+
CEntity* GetGameEntity() noexcept { return m_pPlayerPed; }
174+
const CEntity* GetGameEntity() const noexcept { return m_pPlayerPed; }
175175

176-
bool IsLocalPlayer() { return m_bIsLocalPlayer; }
177-
bool IsSyncing() { return m_bIsSyncing; }
176+
bool IsLocalPlayer() const noexcept { return m_bIsLocalPlayer; }
177+
bool IsSyncing() const noexcept { return m_bIsSyncing; }
178178
void SetSyncing(bool bIsSyncing);
179179

180180
bool GetMatrix(CMatrix& Matrix) const;
181181
bool SetMatrix(const CMatrix& Matrix);
182182
virtual CSphere GetWorldBoundingSphere();
183183

184184
void GetPosition(CVector& vecPosition) const;
185-
void SetPosition(const CVector& vecPosition) { SetPosition(vecPosition, true, true); }
185+
void SetPosition(const CVector& vecPosition) noexcept { SetPosition(vecPosition, true, true); }
186186
void SetPosition(const CVector& vecPosition, bool bResetInterpolation, bool bAllowGroundLoadFreeze = true);
187187

188188
void SetInterior(unsigned char ucInterior);
@@ -231,19 +231,24 @@ class CClientPed : public CClientStreamElement, public CAntiCheatModule
231231

232232
void SetTargetTarget(unsigned long ulDelay, const CVector& vecSource, const CVector& vecTarget);
233233

234-
int GetVehicleInOutState() { return m_iVehicleInOutState; };
235-
void SetVehicleInOutState(int iState) { m_iVehicleInOutState = iState; };
234+
int GetVehicleInOutState() const noexcept { return m_iVehicleInOutState; };
235+
void SetVehicleInOutState(int iState) noexcept { m_iVehicleInOutState = iState; };
236236

237-
unsigned long GetModel() { return m_ulModel; };
237+
unsigned long GetModel() const noexcept { return m_ulModel; };
238238
bool SetModel(unsigned long ulModel, bool bTemp = false);
239239

240240
bool GetCanBeKnockedOffBike();
241241
void SetCanBeKnockedOffBike(bool bCanBeKnockedOffBike);
242242

243-
bool IsInVehicle() { return GetOccupiedVehicle() != NULL; };
244-
CClientVehicle* GetOccupiedVehicle() { return m_pOccupiedVehicle; };
245-
unsigned int GetOccupiedVehicleSeat() { return m_uiOccupiedVehicleSeat; };
246-
CClientVehicle* GetOccupyingVehicle() { return m_pOccupyingVehicle; };
243+
bool IsInVehicle() const noexcept { return GetOccupiedVehicle() != NULL; };
244+
245+
CClientVehicle* GetOccupiedVehicle() noexcept { return m_pOccupiedVehicle; };
246+
const CClientVehicle* GetOccupiedVehicle() const noexcept { return m_pOccupiedVehicle; };
247+
248+
unsigned int GetOccupiedVehicleSeat() const noexcept { return m_uiOccupiedVehicleSeat; };
249+
250+
CClientVehicle* GetOccupyingVehicle() noexcept { return m_pOccupyingVehicle; };
251+
const CClientVehicle* GetOccupyingVehicle() const noexcept { return m_pOccupyingVehicle; };
247252

248253
CClientVehicle* GetRealOccupiedVehicle();
249254
CClientVehicle* GetClosestEnterableVehicle(bool bGetPositionFromClosestDoor, bool bCheckDriverDoor, bool bCheckPassengerDoors,
@@ -274,21 +279,21 @@ class CClientPed : public CClientStreamElement, public CAntiCheatModule
274279

275280
void LockHealth(float fHealth);
276281
void LockArmor(float fArmor);
277-
void UnlockHealth() { m_bHealthLocked = false; };
278-
void UnlockArmor() { m_bArmorLocked = false; };
279-
bool IsHealthLocked() const { return m_bHealthLocked; };
280-
bool IsArmorLocked() const { return m_bArmorLocked; };
282+
void UnlockHealth() noexcept { m_bHealthLocked = false; };
283+
void UnlockArmor() noexcept { m_bArmorLocked = false; };
284+
bool IsHealthLocked() const noexcept { return m_bHealthLocked; };
285+
bool IsArmorLocked() const noexcept { return m_bArmorLocked; };
281286

282287
bool IsDying();
283288
bool IsDead();
284-
void SetIsDead(bool bDead) { m_bDead = bDead; };
289+
void SetIsDead(bool bDead) noexcept { m_bDead = bDead; };
285290
void Kill(eWeaponType weaponType, unsigned char ucBodypart, bool bStealth = false, bool bSetDirectlyDead = false, AssocGroupId animGroup = 0,
286291
AnimationId animID = 15);
287292
void StealthKill(CClientPed* pPed);
288293
void BeHit(CClientPed* pClientPedAttacker, ePedPieceTypes hitBodyPart, int hitBodySide, int weaponId);
289294

290-
int GetRespawnState() { return m_pRespawnState; };
291-
void SetRespawnState(int iRespawnState) { m_pRespawnState = iRespawnState; };
295+
int GetRespawnState() const noexcept { return m_pRespawnState; };
296+
void SetRespawnState(int iRespawnState) noexcept { m_pRespawnState = iRespawnState; };
292297

293298
CWeapon* GiveWeapon(eWeaponType weaponType, unsigned int uiAmmo, bool bSetAsCurrent = false);
294299
bool SetCurrentWeaponSlot(eWeaponSlot weaponSlot);
@@ -328,9 +333,9 @@ class CClientPed : public CClientStreamElement, public CAntiCheatModule
328333
}
329334
};
330335
CVector GetAim() const;
331-
const CVector& GetAimSource() { return m_shotSyncData->m_vecShotOrigin; };
332-
const CVector& GetAimTarget() { return m_shotSyncData->m_vecShotTarget; };
333-
eVehicleAimDirection GetVehicleAimAnim() { return m_shotSyncData->m_cInVehicleAimDirection; };
336+
const CVector& GetAimSource() const noexcept { return m_shotSyncData->m_vecShotOrigin; };
337+
const CVector& GetAimTarget() const noexcept { return m_shotSyncData->m_vecShotTarget; };
338+
eVehicleAimDirection GetVehicleAimAnim() const noexcept { return m_shotSyncData->m_cInVehicleAimDirection; };
334339
void SetAim(float fArmDirectionX, float fArmDirectionY, eVehicleAimDirection cInVehicleAimAnim);
335340
void SetAimInterpolated(unsigned long ulDelay, float fArmDirectionX, float fArmDirectionY, bool bAkimboAimUp, eVehicleAimDirection cInVehicleAimAnim);
336341
void SetAimingData(unsigned long ulDelay, const CVector& vecTargetPosition, float fArmDirectionX, float fArmDirectionY,
@@ -356,7 +361,8 @@ class CClientPed : public CClientStreamElement, public CAntiCheatModule
356361
float GetStat(unsigned short usStat);
357362
void ResetStats();
358363

359-
CClientPlayerClothes* GetClothes() { return m_pClothes; }
364+
CClientPlayerClothes* GetClothes() noexcept { return m_pClothes; }
365+
const CClientPlayerClothes* GetClothes() const noexcept { return m_pClothes; }
360366

361367
// This is kinda hacky, should be private but something depends on this. Should depend on some
362368
// streamer func. Perhaps use SetNeverStreamOut, but need something to reset that.
@@ -375,13 +381,14 @@ class CClientPed : public CClientStreamElement, public CAntiCheatModule
375381
bool IsOnGround();
376382

377383
bool IsClimbing();
378-
bool IsRadioOn() { return m_bRadioOn; };
384+
bool IsRadioOn() const noexcept { return m_bRadioOn; };
379385
void NextRadioChannel();
380386
void PreviousRadioChannel();
381387
bool SetCurrentRadioChannel(unsigned char ucChannel);
382-
unsigned char GetCurrentRadioChannel() { return m_ucRadioChannel; };
388+
unsigned char GetCurrentRadioChannel() const noexcept { return m_ucRadioChannel; };
383389

384-
CTaskManager* GetTaskManager() { return m_pTaskManager; }
390+
CTaskManager* GetTaskManager() noexcept { return m_pTaskManager; }
391+
const CTaskManager* GetTaskManager() const noexcept { return m_pTaskManager; }
385392

386393
bool GetShotData(CVector* pvecOrigin, CVector* pvecTarget = NULL, CVector* pvecGunMuzzle = NULL, CVector* pvecFireOffset = NULL, float* fAimX = NULL,
387394
float* fAimY = NULL);
@@ -399,10 +406,14 @@ class CClientPed : public CClientStreamElement, public CAntiCheatModule
399406
std::list<CClientProjectile*>::iterator ProjectilesEnd() { return m_Projectiles.end(); }
400407
unsigned int CountProjectiles(eWeaponType weaponType = WEAPONTYPE_UNARMED);
401408

409+
std::list<CClientProjectile*>& GetProjectiles() noexcept { return m_Projectiles; }
410+
const std::list<CClientProjectile*>& GetProjectiles() const noexcept { return m_Projectiles; }
411+
402412
void RemoveAllProjectiles();
403413
void DestroySatchelCharges(bool bBlow = true, bool bDestroy = true);
404414

405-
CRemoteDataStorage* GetRemoteData() { return m_remoteDataStorage; }
415+
CRemoteDataStorage* GetRemoteData() noexcept { return m_remoteDataStorage; }
416+
const CRemoteDataStorage* GetRemoteData() const noexcept { return m_remoteDataStorage; }
406417

407418
bool IsEnteringVehicle();
408419
bool IsLeavingVehicle();
@@ -416,11 +427,12 @@ class CClientPed : public CClientStreamElement, public CAntiCheatModule
416427

417428
float GetDistanceFromCentreOfMassToBaseOfModel();
418429

419-
unsigned char GetAlpha() { return m_ucAlpha; }
430+
unsigned char GetAlpha() const noexcept { return m_ucAlpha; }
420431
void SetAlpha(unsigned char ucAlpha);
421432

422-
bool HasTargetPosition() { return (m_interp.pos.ulFinishTime != 0); }
423-
CClientEntity* GetTargetOriginSource() { return m_interp.pTargetOriginSource; }
433+
bool HasTargetPosition() const noexcept { return m_interp.pos.ulFinishTime != 0; }
434+
CClientEntity* GetTargetOriginSource() noexcept { return m_interp.pTargetOriginSource; }
435+
const CClientEntity* GetTargetOriginSource() const noexcept { return m_interp.pTargetOriginSource; }
424436
void GetTargetPosition(CVector& vecPosition);
425437
void SetTargetPosition(const CVector& vecPosition, unsigned long ulDelay, CClientEntity* pTargetOriginSource = NULL);
426438
void RemoveTargetPosition();
@@ -430,8 +442,9 @@ class CClientPed : public CClientStreamElement, public CAntiCheatModule
430442
CClientEntity* GetTargetedEntity();
431443
CClientPed* GetTargetedPed();
432444

433-
CClientEntity* GetCurrentContactEntity() { return m_pCurrentContactEntity; }
434-
void SetCurrentContactEntity(CClientEntity* pEntity) { m_pCurrentContactEntity = pEntity; }
445+
CClientEntity* GetCurrentContactEntity() noexcept { return m_pCurrentContactEntity; }
446+
const CClientEntity* GetCurrentContactEntity() const noexcept { return m_pCurrentContactEntity; }
447+
void SetCurrentContactEntity(CClientEntity* pEntity) noexcept { m_pCurrentContactEntity = pEntity; }
435448

436449
bool IsSunbathing();
437450
void SetSunbathing(bool bSunbathing, bool bStartStanding = true);
@@ -453,22 +466,22 @@ class CClientPed : public CClientStreamElement, public CAntiCheatModule
453466
bool bOffsetPed = false, bool bHoldLastFrame = false);
454467
void KillAnimation();
455468
std::unique_ptr<CAnimBlock> GetAnimationBlock();
456-
const SAnimationCache& GetAnimationCache() { return m_AnimationCache; }
469+
const SAnimationCache& GetAnimationCache() const noexcept { return m_AnimationCache; }
457470

458471
bool IsUsingGun();
459472

460-
bool IsHeadless() { return m_bHeadless; }
473+
bool IsHeadless() const noexcept { return m_bHeadless; }
461474
void SetHeadless(bool bHeadless);
462475

463-
bool IsFrozen() const { return m_bFrozen; }
476+
bool IsFrozen() const noexcept { return m_bFrozen; }
464477
void SetFrozen(bool bFrozen);
465478
bool IsFrozenWaitingForGroundToLoad() const;
466479
void SetFrozenWaitingForGroundToLoad(bool bFrozen);
467480

468481
bool IsFootBloodEnabled();
469482
void SetFootBloodEnabled(bool bHasFootBlood);
470483

471-
bool IsBleeding() const { return m_bBleeding; };
484+
bool IsBleeding() const noexcept { return m_bBleeding; };
472485
void SetBleeding(bool bBleeding);
473486

474487
bool IsOnFire();
@@ -502,27 +515,33 @@ class CClientPed : public CClientStreamElement, public CAntiCheatModule
502515
std::unique_ptr<CAnimBlendAssociation> GetFirstAnimation();
503516

504517
void DereferenceCustomAnimationBlock() { m_pCustomAnimationIFP = nullptr; }
505-
std::shared_ptr<CClientIFP> GetCustomAnimationIFP() { return m_pCustomAnimationIFP; }
506-
bool IsCustomAnimationPlaying() { return ((m_bRequestedAnimation || m_AnimationCache.bLoop) && m_pAnimationBlock && m_bisCurrentAnimationCustom); }
507-
void SetCustomAnimationUntriggerable()
518+
std::shared_ptr<CClientIFP> GetCustomAnimationIFP() const noexcept { return m_pCustomAnimationIFP; }
519+
bool IsCustomAnimationPlaying() noexcept
520+
{
521+
return (m_bRequestedAnimation || m_AnimationCache.bLoop)
522+
&& m_pAnimationBlock && m_bisCurrentAnimationCustom;
523+
}
524+
void SetCustomAnimationUntriggerable() noexcept
508525
{
509526
m_bRequestedAnimation = false;
510527
m_AnimationCache.bLoop = false;
511528
}
512-
bool IsNextAnimationCustom() { return m_bisNextAnimationCustom; }
529+
bool IsNextAnimationCustom() const noexcept { return m_bisNextAnimationCustom; }
513530
void SetNextAnimationCustom(const std::shared_ptr<CClientIFP>& pIFP, const SString& strAnimationName);
514-
void SetCurrentAnimationCustom(bool bCustom) { m_bisCurrentAnimationCustom = bCustom; }
515-
bool IsCurrentAnimationCustom() { return m_bisCurrentAnimationCustom; }
516-
CIFPAnimations* GetIFPAnimationsPointer() { return m_pIFPAnimations; }
517-
void SetIFPAnimationsPointer(CIFPAnimations* pIFPAnimations) { m_pIFPAnimations = pIFPAnimations; }
531+
void SetCurrentAnimationCustom(bool bCustom) noexcept { m_bisCurrentAnimationCustom = bCustom; }
532+
bool IsCurrentAnimationCustom() const noexcept { return m_bisCurrentAnimationCustom; }
533+
CIFPAnimations* GetIFPAnimationsPointer() noexcept { return m_pIFPAnimations; }
534+
const CIFPAnimations* GetIFPAnimationsPointer() const noexcept { return m_pIFPAnimations; }
535+
536+
void SetIFPAnimationsPointer(CIFPAnimations* pIFPAnimations) noexcept { m_pIFPAnimations = pIFPAnimations; }
518537

519538
// This will indicate that we have played custom animation, so next animation can be internal GTA animation
520539
// You must call this function after playing a custom animation
521-
void SetNextAnimationNormal() { m_bisNextAnimationCustom = false; }
522-
const SString& GetNextAnimationCustomBlockName() { return m_strCustomIFPBlockName; }
523-
const SString& GetNextAnimationCustomName() { return m_strCustomIFPAnimationName; }
524-
const unsigned int& GetCustomAnimationBlockNameHash() { return m_u32CustomBlockNameHash; }
525-
const unsigned int& GetCustomAnimationNameHash() { return m_u32CustomAnimationNameHash; }
540+
void SetNextAnimationNormal() noexcept { m_bisNextAnimationCustom = false; }
541+
const SString& GetNextAnimationCustomBlockName() const noexcept { return m_strCustomIFPBlockName; }
542+
const SString& GetNextAnimationCustomName() const noexcept { return m_strCustomIFPAnimationName; }
543+
const unsigned int& GetCustomAnimationBlockNameHash() const noexcept { return m_u32CustomBlockNameHash; }
544+
const unsigned int& GetCustomAnimationNameHash() const noexcept { return m_u32CustomAnimationNameHash; }
526545

527546
void ReplaceAnimation(std::unique_ptr<CAnimBlendHierarchy>& pInternalAnimHierarchy, const std::shared_ptr<CClientIFP>& pIFP,
528547
CAnimBlendHierarchySAInterface* pCustomAnimHierarchy);
@@ -579,13 +598,13 @@ class CClientPed : public CClientStreamElement, public CAntiCheatModule
579598

580599
void Respawn(CVector* pvecPosition = NULL, bool bRestoreState = false, bool bCameraCut = false);
581600

582-
void SetTaskToBeRestoredOnAnimEnd(bool bSetOnEnd) { m_bTaskToBeRestoredOnAnimEnd = bSetOnEnd; }
583-
bool IsTaskToBeRestoredOnAnimEnd() { return m_bTaskToBeRestoredOnAnimEnd; }
584-
void SetTaskTypeToBeRestoredOnAnimEnd(eTaskType taskType) { m_eTaskTypeToBeRestoredOnAnimEnd = taskType; }
585-
eTaskType GetTaskTypeToBeRestoredOnAnimEnd() { return m_eTaskTypeToBeRestoredOnAnimEnd; }
601+
void SetTaskToBeRestoredOnAnimEnd(bool bSetOnEnd) noexcept { m_bTaskToBeRestoredOnAnimEnd = bSetOnEnd; }
602+
bool IsTaskToBeRestoredOnAnimEnd() const noexcept { return m_bTaskToBeRestoredOnAnimEnd; }
603+
void SetTaskTypeToBeRestoredOnAnimEnd(eTaskType taskType) noexcept { m_eTaskTypeToBeRestoredOnAnimEnd = taskType; }
604+
eTaskType GetTaskTypeToBeRestoredOnAnimEnd() const noexcept { return m_eTaskTypeToBeRestoredOnAnimEnd; }
586605

587-
bool IsWarpInToVehicleRequired() { return m_bWarpInToVehicleRequired; }
588-
void SetWarpInToVehicleRequired(bool warp) { m_bWarpInToVehicleRequired = warp; }
606+
bool IsWarpInToVehicleRequired() const noexcept { return m_bWarpInToVehicleRequired; }
607+
void SetWarpInToVehicleRequired(bool warp) noexcept { m_bWarpInToVehicleRequired = warp; }
589608

590609
void NotifyCreate();
591610
void NotifyDestroy();

0 commit comments

Comments
 (0)