CBodyState: Eliminate usages of const_cast

This is clearly modifying the command, so we should allow for modifying
of command instances if necessary.
This commit is contained in:
Lioncash 2020-04-05 03:20:52 -04:00
parent 1fb28a03a3
commit 71e3fb1817
2 changed files with 16 additions and 5 deletions

View File

@ -1120,12 +1120,14 @@ pas::EAnimationState CBSHurled::GetBodyStateTransition(float dt, CBodyController
if (bc.GetCommandMgr().GetCmd(EBodyStateCmd::NextState)) { if (bc.GetCommandMgr().GetCmd(EBodyStateCmd::NextState)) {
return pas::EAnimationState::LieOnGround; return pas::EAnimationState::LieOnGround;
} }
if (x18_curTime > 0.25f) { if (x18_curTime > 0.25f) {
if (const auto* cmd = static_cast<const CBCHurledCmd*>(bc.GetCommandMgr().GetCmd(EBodyStateCmd::Hurled))) { if (auto* cmd = static_cast<CBCHurledCmd*>(bc.GetCommandMgr().GetCmd(EBodyStateCmd::Hurled))) {
const_cast<CBCHurledCmd*>(cmd)->SetSkipLaunchState(true); cmd->SetSkipLaunchState(true);
return pas::EAnimationState::Hurled; return pas::EAnimationState::Hurled;
} }
} }
return pas::EAnimationState::Invalid; return pas::EAnimationState::Invalid;
} }

View File

@ -452,11 +452,20 @@ public:
void BlendSteeringCmds(); void BlendSteeringCmds();
void Reset(); void Reset();
void ClearLocomotionCmds(); void ClearLocomotionCmds();
const CBodyStateCmd* GetCmd(EBodyStateCmd cmd) const {
if (xb4_deliveredCmdMask & (1 << int(cmd))) CBodyStateCmd* GetCmd(EBodyStateCmd cmd) {
return x40_commandTable[int(cmd)]; if ((xb4_deliveredCmdMask & (1U << u32(cmd))) != 0) {
return x40_commandTable[size_t(cmd)];
}
return nullptr; return nullptr;
} }
const CBodyStateCmd* GetCmd(EBodyStateCmd cmd) const {
if ((xb4_deliveredCmdMask & (1U << u32(cmd))) != 0) {
return x40_commandTable[size_t(cmd)];
}
return nullptr;
}
const zeus::CVector3f& GetMoveVector() const { return x0_move; } const zeus::CVector3f& GetMoveVector() const { return x0_move; }
const zeus::CVector3f& GetFaceVector() const { return xc_face; } const zeus::CVector3f& GetFaceVector() const { return xc_face; }
const zeus::CVector3f& GetTargetVector() const { return x18_target; } const zeus::CVector3f& GetTargetVector() const { return x18_target; }