mirror of https://github.com/AxioDL/metaforce.git
CPlayer: Enclose translation-unit-local data within an anonymous namespace
Keeps all local data within one spot and prevents any potential ODR violations related to them from occurring.
This commit is contained in:
parent
33f10e2552
commit
70fb763180
|
@ -1,5 +1,9 @@
|
||||||
#include "Runtime/World/CPlayer.hpp"
|
#include "Runtime/World/CPlayer.hpp"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
#include <cmath>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
#include "Runtime/CDependencyGroup.hpp"
|
#include "Runtime/CDependencyGroup.hpp"
|
||||||
#include "Runtime/CGameState.hpp"
|
#include "Runtime/CGameState.hpp"
|
||||||
#include "Runtime/CSimplePool.hpp"
|
#include "Runtime/CSimplePool.hpp"
|
||||||
|
@ -29,46 +33,183 @@
|
||||||
#include <logvisor/logvisor.hpp>
|
#include <logvisor/logvisor.hpp>
|
||||||
|
|
||||||
namespace urde {
|
namespace urde {
|
||||||
|
namespace {
|
||||||
|
logvisor::Module Log("urde::CPlayer");
|
||||||
|
|
||||||
static logvisor::Module Log("urde::CPlayer");
|
const CMaterialFilter SolidMaterialFilter = CMaterialFilter::MakeInclude(CMaterialList(EMaterialTypes::Solid));
|
||||||
|
|
||||||
static const CMaterialFilter SolidMaterialFilter = CMaterialFilter::MakeInclude(CMaterialList(EMaterialTypes::Solid));
|
const CMaterialFilter LineOfSightFilter = CMaterialFilter::MakeIncludeExclude(
|
||||||
|
|
||||||
static const CMaterialFilter LineOfSightFilter = CMaterialFilter::MakeIncludeExclude(
|
|
||||||
{EMaterialTypes::Solid},
|
{EMaterialTypes::Solid},
|
||||||
{EMaterialTypes::ProjectilePassthrough, EMaterialTypes::ScanPassthrough, EMaterialTypes::Player});
|
{EMaterialTypes::ProjectilePassthrough, EMaterialTypes::ScanPassthrough, EMaterialTypes::Player});
|
||||||
|
|
||||||
static const CMaterialFilter OccluderFilter = CMaterialFilter::MakeIncludeExclude(
|
const CMaterialFilter OccluderFilter = CMaterialFilter::MakeIncludeExclude(
|
||||||
{EMaterialTypes::Solid, EMaterialTypes::Occluder},
|
{EMaterialTypes::Solid, EMaterialTypes::Occluder},
|
||||||
{EMaterialTypes::ProjectilePassthrough, EMaterialTypes::ScanPassthrough, EMaterialTypes::Player});
|
{EMaterialTypes::ProjectilePassthrough, EMaterialTypes::ScanPassthrough, EMaterialTypes::Player});
|
||||||
|
|
||||||
static CModelData MakePlayerAnimRes(CAssetId resId, const zeus::CVector3f& scale) {
|
const CMaterialFilter BallTransitionCollide = CMaterialFilter::MakeIncludeExclude(
|
||||||
|
{EMaterialTypes::Solid}, {EMaterialTypes::ProjectilePassthrough, EMaterialTypes::Player, EMaterialTypes::Character,
|
||||||
|
EMaterialTypes::CameraPassthrough});
|
||||||
|
|
||||||
|
constexpr float skStrafeDistances[] = {
|
||||||
|
11.8f, 11.8f, 11.8f, 5.0f, 6.0f, 5.0f, 5.0f, 6.0f,
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr float skDashStrafeDistances[] = {
|
||||||
|
30.0f, 22.6f, 10.0f, 10.0f, 10.0f, 10.0f, 10.0f,
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr float skOrbitForwardDistances[] = {
|
||||||
|
11.8f, 11.8f, 11.8f, 5.0f, 6.0f, 5.0f, 5.0f, 6.0f,
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr const char* UnlockMessageResBases[] = {
|
||||||
|
"STRG_SlideShow_Unlock1_",
|
||||||
|
"STRG_SlideShow_Unlock2_",
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr u16 skPlayerLandSfxSoft[] = {
|
||||||
|
0xFFFF,
|
||||||
|
SFXsam_landstone_00,
|
||||||
|
SFXsam_landmetl_00,
|
||||||
|
SFXsam_landgrass_00,
|
||||||
|
SFXsam_landice_00,
|
||||||
|
0xFFFF,
|
||||||
|
SFXsam_landgrate_00,
|
||||||
|
SFXsam_landphazon_00,
|
||||||
|
SFXsam_landdirt_00,
|
||||||
|
SFXlav_landlava_00,
|
||||||
|
SFXsam_landlavastone_00,
|
||||||
|
SFXsam_landsnow_00,
|
||||||
|
SFXsam_landmud_00,
|
||||||
|
0xFFFF,
|
||||||
|
SFXsam_landgrass_00,
|
||||||
|
SFXsam_landmetl_00,
|
||||||
|
SFXsam_landmetl_00,
|
||||||
|
SFXsam_landdirt_00,
|
||||||
|
0xFFFF,
|
||||||
|
0xFFFF,
|
||||||
|
0xFFFF,
|
||||||
|
0xFFFF,
|
||||||
|
SFXsam_landwood_00,
|
||||||
|
SFXsam_b_landorg_00,
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr u16 skPlayerLandSfxHard[] = {
|
||||||
|
0xFFFF,
|
||||||
|
SFXsam_landstone_02,
|
||||||
|
SFXsam_b_landmetl_02,
|
||||||
|
SFXsam_landgrass_02,
|
||||||
|
SFXsam_landice_02,
|
||||||
|
0xFFFF,
|
||||||
|
SFXsam_landgrate_02,
|
||||||
|
SFXsam_landphazon_02,
|
||||||
|
SFXsam_landdirt_02,
|
||||||
|
SFXlav_landlava_02,
|
||||||
|
SFXsam_landlavastone_02,
|
||||||
|
SFXsam_landsnow_02,
|
||||||
|
SFXsam_landmud_02,
|
||||||
|
0xFFFF,
|
||||||
|
SFXsam_landgrass_02,
|
||||||
|
SFXsam_b_landmetl_02,
|
||||||
|
SFXsam_b_landmetl_02,
|
||||||
|
SFXsam_landdirt_02,
|
||||||
|
0xFFFF,
|
||||||
|
0xFFFF,
|
||||||
|
0xFFFF,
|
||||||
|
0xFFFF,
|
||||||
|
SFXsam_landwood_02,
|
||||||
|
SFXsam_landorg_02,
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr u16 skLeftStepSounds[] = {
|
||||||
|
0xFFFF,
|
||||||
|
SFXsam_wlkstone_00,
|
||||||
|
SFXsam_wlkmetal_00,
|
||||||
|
SFXsam_b_wlkgrass_00,
|
||||||
|
SFXsam_wlkice_00,
|
||||||
|
0xFFFF,
|
||||||
|
SFXsam_wlkgrate_00,
|
||||||
|
SFXsam_wlkphazon_00,
|
||||||
|
SFXsam_wlkdirt_00,
|
||||||
|
SFXlav_wlklava_00,
|
||||||
|
SFXsam_wlklavastone_00,
|
||||||
|
SFXsam_wlksnow_00,
|
||||||
|
SFXsam_wlkmud_00,
|
||||||
|
0xFFFF,
|
||||||
|
SFXsam_b_wlkorg_00,
|
||||||
|
SFXsam_wlkmetal_00,
|
||||||
|
SFXsam_wlkmetal_00,
|
||||||
|
SFXsam_wlkdirt_00,
|
||||||
|
0xFFFF,
|
||||||
|
0xFFFF,
|
||||||
|
0xFFFF,
|
||||||
|
0xFFFF,
|
||||||
|
SFXsam_wlkwood_00,
|
||||||
|
SFXsam_b_wlkorg_00,
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr u16 skRightStepSounds[] = {
|
||||||
|
0xFFFF,
|
||||||
|
SFXsam_wlkstone_01,
|
||||||
|
SFXsam_wlkmetal_01,
|
||||||
|
SFXsam_b_wlkgrass_01,
|
||||||
|
SFXsam_wlkice_01,
|
||||||
|
0xFFFF,
|
||||||
|
SFXsam_wlkgrate_01,
|
||||||
|
SFXsam_wlkphazon_01,
|
||||||
|
SFXsam_wlkdirt_01,
|
||||||
|
SFXlav_wlklava_01,
|
||||||
|
SFXsam_wlklavastone_01,
|
||||||
|
SFXsam_wlksnow_01,
|
||||||
|
SFXsam_wlkmud_01,
|
||||||
|
0xFFFF,
|
||||||
|
SFXsam_b_wlkorg_01,
|
||||||
|
SFXsam_wlkmetal_01,
|
||||||
|
SFXsam_wlkmetal_01,
|
||||||
|
SFXsam_wlkdirt_01,
|
||||||
|
0xFFFF,
|
||||||
|
0xFFFF,
|
||||||
|
0xFFFF,
|
||||||
|
0xFFFF,
|
||||||
|
SFXsam_wlkwood_01,
|
||||||
|
SFXsam_b_wlkorg_01,
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr std::pair<CPlayerState::EItemType, ControlMapper::ECommands> skVisorToItemMapping[] = {
|
||||||
|
{CPlayerState::EItemType::CombatVisor, ControlMapper::ECommands::NoVisor},
|
||||||
|
{CPlayerState::EItemType::XRayVisor, ControlMapper::ECommands::XrayVisor},
|
||||||
|
{CPlayerState::EItemType::ScanVisor, ControlMapper::ECommands::InviroVisor},
|
||||||
|
{CPlayerState::EItemType::ThermalVisor, ControlMapper::ECommands::ThermoVisor},
|
||||||
|
};
|
||||||
|
|
||||||
|
CModelData MakePlayerAnimRes(CAssetId resId, const zeus::CVector3f& scale) {
|
||||||
return {CAnimRes(resId, 0, scale, 0, true), 1};
|
return {CAnimRes(resId, 0, scale, 0, true), 1};
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t GetOrbitScreenBoxHalfExtentXScaled(int zone) {
|
uint32_t GetOrbitScreenBoxHalfExtentXScaled(int zone) {
|
||||||
return g_tweakPlayer->GetOrbitScreenBoxHalfExtentX(zone) * g_Viewport.x8_width / 640;
|
return g_tweakPlayer->GetOrbitScreenBoxHalfExtentX(zone) * g_Viewport.x8_width / 640;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t GetOrbitScreenBoxHalfExtentYScaled(int zone) {
|
uint32_t GetOrbitScreenBoxHalfExtentYScaled(int zone) {
|
||||||
return g_tweakPlayer->GetOrbitScreenBoxHalfExtentY(zone) * g_Viewport.xc_height / 448;
|
return g_tweakPlayer->GetOrbitScreenBoxHalfExtentY(zone) * g_Viewport.xc_height / 448;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t GetOrbitScreenBoxCenterXScaled(int zone) {
|
uint32_t GetOrbitScreenBoxCenterXScaled(int zone) {
|
||||||
return g_tweakPlayer->GetOrbitScreenBoxCenterX(zone) * g_Viewport.x8_width / 640;
|
return g_tweakPlayer->GetOrbitScreenBoxCenterX(zone) * g_Viewport.x8_width / 640;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t GetOrbitScreenBoxCenterYScaled(int zone) {
|
uint32_t GetOrbitScreenBoxCenterYScaled(int zone) {
|
||||||
return g_tweakPlayer->GetOrbitScreenBoxCenterY(zone) * g_Viewport.xc_height / 448;
|
return g_tweakPlayer->GetOrbitScreenBoxCenterY(zone) * g_Viewport.xc_height / 448;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t GetOrbitZoneIdealXScaled(int zone) {
|
uint32_t GetOrbitZoneIdealXScaled(int zone) {
|
||||||
return g_tweakPlayer->GetOrbitZoneIdealX(zone) * g_Viewport.x8_width / 640;
|
return g_tweakPlayer->GetOrbitZoneIdealX(zone) * g_Viewport.x8_width / 640;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t GetOrbitZoneIdealYScaled(int zone) {
|
uint32_t GetOrbitZoneIdealYScaled(int zone) {
|
||||||
return g_tweakPlayer->GetOrbitZoneIdealY(zone) * g_Viewport.xc_height / 448;
|
return g_tweakPlayer->GetOrbitZoneIdealY(zone) * g_Viewport.xc_height / 448;
|
||||||
}
|
}
|
||||||
|
} // Anonymous namespace
|
||||||
|
|
||||||
CPlayer::CPlayer(TUniqueId uid, const zeus::CTransform& xf, const zeus::CAABox& aabb, CAssetId resId,
|
CPlayer::CPlayer(TUniqueId uid, const zeus::CTransform& xf, const zeus::CAABox& aabb, CAssetId resId,
|
||||||
const zeus::CVector3f& playerScale, float mass, float stepUp, float stepDown, float ballRadius,
|
const zeus::CVector3f& playerScale, float mass, float stepUp, float stepDown, float ballRadius,
|
||||||
|
@ -144,10 +285,6 @@ float CPlayer::GetTransitionAlpha(const zeus::CVector3f& camPos, float zNear) co
|
||||||
return 0.f;
|
return 0.f;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const CMaterialFilter BallTransitionCollide = CMaterialFilter::MakeIncludeExclude(
|
|
||||||
{EMaterialTypes::Solid}, {EMaterialTypes::ProjectilePassthrough, EMaterialTypes::Player, EMaterialTypes::Character,
|
|
||||||
EMaterialTypes::CameraPassthrough});
|
|
||||||
|
|
||||||
s32 CPlayer::ChooseTransitionToAnimation(float dt, CStateManager& mgr) const {
|
s32 CPlayer::ChooseTransitionToAnimation(float dt, CStateManager& mgr) const {
|
||||||
if (x258_movementState == EPlayerMovementState::ApplyJump)
|
if (x258_movementState == EPlayerMovementState::ApplyJump)
|
||||||
return 3; // B_airposetoball_samus
|
return 3; // B_airposetoball_samus
|
||||||
|
@ -564,12 +701,6 @@ void CPlayer::Update(float dt, CStateManager& mgr) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const float skStrafeDistances[] = {11.8f, 11.8f, 11.8f, 5.0f, 6.0f, 5.0f, 5.0f, 6.0f};
|
|
||||||
|
|
||||||
static const float skDashStrafeDistances[] = {30.0f, 22.6f, 10.0f, 10.0f, 10.0f, 10.0f, 10.0f};
|
|
||||||
|
|
||||||
static const float skOrbitForwardDistances[] = {11.8f, 11.8f, 11.8f, 5.0f, 6.0f, 5.0f, 5.0f, 6.0f};
|
|
||||||
|
|
||||||
float CPlayer::UpdateCameraBob(float dt, CStateManager& mgr) {
|
float CPlayer::UpdateCameraBob(float dt, CStateManager& mgr) {
|
||||||
float bobMag = 0.f;
|
float bobMag = 0.f;
|
||||||
CPlayerCameraBob::ECameraBobState state;
|
CPlayerCameraBob::ECameraBobState state;
|
||||||
|
@ -1034,8 +1165,6 @@ static bool IsDataLoreResearchScan(CAssetId id) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char* UnlockMessageResBases[] = {"STRG_SlideShow_Unlock1_", "STRG_SlideShow_Unlock2_"};
|
|
||||||
|
|
||||||
static CAssetId UpdatePersistentScanPercent(u32 prevLogScans, u32 logScans, u32 totalLogScans) {
|
static CAssetId UpdatePersistentScanPercent(u32 prevLogScans, u32 logScans, u32 totalLogScans) {
|
||||||
if (prevLogScans == logScans)
|
if (prevLogScans == logScans)
|
||||||
return {};
|
return {};
|
||||||
|
@ -2331,56 +2460,6 @@ void CPlayer::PreThink(float dt, CStateManager& mgr) {
|
||||||
xa04_preThinkDt = dt;
|
xa04_preThinkDt = dt;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const u16 skPlayerLandSfxSoft[] = {0xFFFF,
|
|
||||||
SFXsam_landstone_00,
|
|
||||||
SFXsam_landmetl_00,
|
|
||||||
SFXsam_landgrass_00,
|
|
||||||
SFXsam_landice_00,
|
|
||||||
0xFFFF,
|
|
||||||
SFXsam_landgrate_00,
|
|
||||||
SFXsam_landphazon_00,
|
|
||||||
SFXsam_landdirt_00,
|
|
||||||
SFXlav_landlava_00,
|
|
||||||
SFXsam_landlavastone_00,
|
|
||||||
SFXsam_landsnow_00,
|
|
||||||
SFXsam_landmud_00,
|
|
||||||
0xFFFF,
|
|
||||||
SFXsam_landgrass_00,
|
|
||||||
SFXsam_landmetl_00,
|
|
||||||
SFXsam_landmetl_00,
|
|
||||||
SFXsam_landdirt_00,
|
|
||||||
0xFFFF,
|
|
||||||
0xFFFF,
|
|
||||||
0xFFFF,
|
|
||||||
0xFFFF,
|
|
||||||
SFXsam_landwood_00,
|
|
||||||
SFXsam_b_landorg_00};
|
|
||||||
|
|
||||||
static const u16 skPlayerLandSfxHard[] = {0xFFFF,
|
|
||||||
SFXsam_landstone_02,
|
|
||||||
SFXsam_b_landmetl_02,
|
|
||||||
SFXsam_landgrass_02,
|
|
||||||
SFXsam_landice_02,
|
|
||||||
0xFFFF,
|
|
||||||
SFXsam_landgrate_02,
|
|
||||||
SFXsam_landphazon_02,
|
|
||||||
SFXsam_landdirt_02,
|
|
||||||
SFXlav_landlava_02,
|
|
||||||
SFXsam_landlavastone_02,
|
|
||||||
SFXsam_landsnow_02,
|
|
||||||
SFXsam_landmud_02,
|
|
||||||
0xFFFF,
|
|
||||||
SFXsam_landgrass_02,
|
|
||||||
SFXsam_b_landmetl_02,
|
|
||||||
SFXsam_b_landmetl_02,
|
|
||||||
SFXsam_landdirt_02,
|
|
||||||
0xFFFF,
|
|
||||||
0xFFFF,
|
|
||||||
0xFFFF,
|
|
||||||
0xFFFF,
|
|
||||||
SFXsam_landwood_02,
|
|
||||||
SFXsam_landorg_02};
|
|
||||||
|
|
||||||
void CPlayer::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender, CStateManager& mgr) {
|
void CPlayer::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender, CStateManager& mgr) {
|
||||||
switch (msg) {
|
switch (msg) {
|
||||||
case EScriptObjectMessage::OnFloor:
|
case EScriptObjectMessage::OnFloor:
|
||||||
|
@ -2538,56 +2617,6 @@ void CPlayer::SetVisorSteam(float targetAlpha, float alphaInDur, float alphaOutD
|
||||||
x7a0_visorSteam.SetSteam(targetAlpha, alphaInDur, alphaOutDur, txtr, affectsThermal);
|
x7a0_visorSteam.SetSteam(targetAlpha, alphaInDur, alphaOutDur, txtr, affectsThermal);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const u16 skLeftStepSounds[] = {0xFFFF,
|
|
||||||
SFXsam_wlkstone_00,
|
|
||||||
SFXsam_wlkmetal_00,
|
|
||||||
SFXsam_b_wlkgrass_00,
|
|
||||||
SFXsam_wlkice_00,
|
|
||||||
0xFFFF,
|
|
||||||
SFXsam_wlkgrate_00,
|
|
||||||
SFXsam_wlkphazon_00,
|
|
||||||
SFXsam_wlkdirt_00,
|
|
||||||
SFXlav_wlklava_00,
|
|
||||||
SFXsam_wlklavastone_00,
|
|
||||||
SFXsam_wlksnow_00,
|
|
||||||
SFXsam_wlkmud_00,
|
|
||||||
0xFFFF,
|
|
||||||
SFXsam_b_wlkorg_00,
|
|
||||||
SFXsam_wlkmetal_00,
|
|
||||||
SFXsam_wlkmetal_00,
|
|
||||||
SFXsam_wlkdirt_00,
|
|
||||||
0xFFFF,
|
|
||||||
0xFFFF,
|
|
||||||
0xFFFF,
|
|
||||||
0xFFFF,
|
|
||||||
SFXsam_wlkwood_00,
|
|
||||||
SFXsam_b_wlkorg_00};
|
|
||||||
|
|
||||||
static const u16 skRightStepSounds[] = {0xFFFF,
|
|
||||||
SFXsam_wlkstone_01,
|
|
||||||
SFXsam_wlkmetal_01,
|
|
||||||
SFXsam_b_wlkgrass_01,
|
|
||||||
SFXsam_wlkice_01,
|
|
||||||
0xFFFF,
|
|
||||||
SFXsam_wlkgrate_01,
|
|
||||||
SFXsam_wlkphazon_01,
|
|
||||||
SFXsam_wlkdirt_01,
|
|
||||||
SFXlav_wlklava_01,
|
|
||||||
SFXsam_wlklavastone_01,
|
|
||||||
SFXsam_wlksnow_01,
|
|
||||||
SFXsam_wlkmud_01,
|
|
||||||
0xFFFF,
|
|
||||||
SFXsam_b_wlkorg_01,
|
|
||||||
SFXsam_wlkmetal_01,
|
|
||||||
SFXsam_wlkmetal_01,
|
|
||||||
SFXsam_wlkdirt_01,
|
|
||||||
0xFFFF,
|
|
||||||
0xFFFF,
|
|
||||||
0xFFFF,
|
|
||||||
0xFFFF,
|
|
||||||
SFXsam_wlkwood_01,
|
|
||||||
SFXsam_b_wlkorg_01};
|
|
||||||
|
|
||||||
void CPlayer::UpdateFootstepSounds(const CFinalInput& input, CStateManager& mgr, float dt) {
|
void CPlayer::UpdateFootstepSounds(const CFinalInput& input, CStateManager& mgr, float dt) {
|
||||||
if (x2f8_morphBallState != EPlayerMorphBallState::Unmorphed || x258_movementState != EPlayerMovementState::OnGround ||
|
if (x2f8_morphBallState != EPlayerMorphBallState::Unmorphed || x258_movementState != EPlayerMovementState::OnGround ||
|
||||||
x3dc_inFreeLook || x3dd_lookButtonHeld)
|
x3dc_inFreeLook || x3dd_lookButtonHeld)
|
||||||
|
@ -2697,12 +2726,6 @@ void CPlayer::UpdateVisorTransition(float dt, CStateManager& mgr) {
|
||||||
mgr.GetPlayerState()->UpdateVisorTransition(dt);
|
mgr.GetPlayerState()->UpdateVisorTransition(dt);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const std::pair<CPlayerState::EItemType, ControlMapper::ECommands> skVisorToItemMapping[] = {
|
|
||||||
{CPlayerState::EItemType::CombatVisor, ControlMapper::ECommands::NoVisor},
|
|
||||||
{CPlayerState::EItemType::XRayVisor, ControlMapper::ECommands::XrayVisor},
|
|
||||||
{CPlayerState::EItemType::ScanVisor, ControlMapper::ECommands::InviroVisor},
|
|
||||||
{CPlayerState::EItemType::ThermalVisor, ControlMapper::ECommands::ThermoVisor}};
|
|
||||||
|
|
||||||
void CPlayer::UpdateVisorState(const CFinalInput& input, float dt, CStateManager& mgr) {
|
void CPlayer::UpdateVisorState(const CFinalInput& input, float dt, CStateManager& mgr) {
|
||||||
x7a0_visorSteam.Update(dt);
|
x7a0_visorSteam.Update(dt);
|
||||||
if (x7a0_visorSteam.AffectsThermal())
|
if (x7a0_visorSteam.AffectsThermal())
|
||||||
|
|
Loading…
Reference in New Issue