mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-08-12 02:19:05 +00:00
CFlyingPirate: Small fixes
This commit is contained in:
parent
8897d38c6a
commit
57386e6269
@ -59,9 +59,9 @@ constexpr std::array<const SBurst* const, 5> skBursts{
|
|||||||
skBurst1.data(), skBurst2.data(), skBurst3.data(), skBurst4.data(), nullptr,
|
skBurst1.data(), skBurst2.data(), skBurst3.data(), skBurst4.data(), nullptr,
|
||||||
};
|
};
|
||||||
|
|
||||||
constexpr std::array<const std::string_view, 14> skParts{
|
constexpr std::array<const std::string_view, 15> skParts{
|
||||||
"Head_1", "R_shoulder", "R_elbow", "R_wrist", "L_shoulder", "L_elbow", "L_wrist",
|
"Collar"sv, "Head_1"sv, "R_shoulder"sv, "R_elbow"sv, "R_wrist"sv, "L_shoulder"sv, "L_elbow"sv, "L_wrist"sv,
|
||||||
"R_hip", "R_knee", "R_ankle", "L_hip", "L_knee", "L_ankle", "rocket_LCTR",
|
"R_hip"sv, "R_knee"sv, "R_ankle"sv, "L_hip"sv, "L_knee"sv, "L_ankle"sv, "rocket_LCTR"sv,
|
||||||
};
|
};
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
@ -210,15 +210,15 @@ CFlyingPirate::CFlyingPirate(TUniqueId uid, std::string_view name, const CEntity
|
|||||||
, x6a2_27_sparksActive(false)
|
, x6a2_27_sparksActive(false)
|
||||||
, x6a2_28_(false)
|
, x6a2_28_(false)
|
||||||
, x6a8_pathFindSearch(nullptr, 0 /* TODO */, pInfo.GetHalfExtent(), pInfo.GetHeight(), pInfo.GetPathfindingIndex())
|
, x6a8_pathFindSearch(nullptr, 0 /* TODO */, pInfo.GetHalfExtent(), pInfo.GetHeight(), pInfo.GetPathfindingIndex())
|
||||||
, x7a0_boneTracking(*GetModelData()->GetAnimationData(), "Head_1", zeus::degToRad(80.f), zeus::degToRad(180.f),
|
, x7a0_boneTracking(*GetModelData()->GetAnimationData(), "Head_1"sv, zeus::degToRad(80.f), zeus::degToRad(180.f),
|
||||||
EBoneTrackingFlags::None)
|
EBoneTrackingFlags::None)
|
||||||
, x7ec_burstFire(skBursts.data(), 0) {
|
, x7ec_burstFire(skBursts.data(), 0) {
|
||||||
const CModelData* modelData = GetModelData();
|
const CModelData* modelData = GetModelData();
|
||||||
const CAnimData* animData = modelData->GetAnimationData();
|
const CAnimData* animData = modelData->GetAnimationData();
|
||||||
x798_headSegId = animData->GetLocatorSegId("Head_1");
|
x798_headSegId = animData->GetLocatorSegId("Head_1"sv);
|
||||||
x7e0_gunSegId = animData->GetLocatorSegId("L_gun_LCTR");
|
x7e0_gunSegId = animData->GetLocatorSegId("L_gun_LCTR"sv);
|
||||||
x864_missileSegments.push_back(animData->GetLocatorSegId("L_Missile_LCTR"));
|
x864_missileSegments.push_back(animData->GetLocatorSegId("L_Missile_LCTR"sv));
|
||||||
x864_missileSegments.push_back(animData->GetLocatorSegId("R_Missile_LCTR"));
|
x864_missileSegments.push_back(animData->GetLocatorSegId("R_Missile_LCTR"sv));
|
||||||
x850_height =
|
x850_height =
|
||||||
modelData->GetScale().x() * GetAnimationDistance({3, CPASAnimParm::FromEnum(3), CPASAnimParm::FromEnum(1)});
|
modelData->GetScale().x() * GetAnimationDistance({3, CPASAnimParm::FromEnum(3), CPASAnimParm::FromEnum(1)});
|
||||||
if (x568_data.xd8_particleGen1.IsValid() && x568_data.xdc_particleGen2.IsValid() &&
|
if (x568_data.xd8_particleGen1.IsValid() && x568_data.xdc_particleGen2.IsValid() &&
|
||||||
@ -283,7 +283,7 @@ void CFlyingPirate::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CSt
|
|||||||
AddToTeam(mgr);
|
AddToTeam(mgr);
|
||||||
}
|
}
|
||||||
UpdateParticleEffects(mgr, 0.f, x6a0_24_);
|
UpdateParticleEffects(mgr, 0.f, x6a0_24_);
|
||||||
GetModelData()->GetAnimationData()->SetParticleEffectState("Eyes", true, mgr);
|
GetModelData()->GetAnimationData()->SetParticleEffectState("Eyes"sv, true, mgr);
|
||||||
break;
|
break;
|
||||||
case EScriptObjectMessage::Jumped:
|
case EScriptObjectMessage::Jumped:
|
||||||
if (CScriptCoverPoint* cover = GetCoverPoint(mgr, x6a4_currentCoverPoint)) {
|
if (CScriptCoverPoint* cover = GetCoverPoint(mgr, x6a4_currentCoverPoint)) {
|
||||||
@ -532,7 +532,7 @@ void CFlyingPirate::Dead(CStateManager& mgr, EStateMsg msg, float arg) {
|
|||||||
CPatterned::Dead(mgr, msg, arg);
|
CPatterned::Dead(mgr, msg, arg);
|
||||||
if (msg == EStateMsg::Activate) {
|
if (msg == EStateMsg::Activate) {
|
||||||
x7a0_boneTracking.SetActive(false);
|
x7a0_boneTracking.SetActive(false);
|
||||||
GetModelData()->GetAnimationData()->SetParticleEffectState("Eyes", false, mgr);
|
GetModelData()->GetAnimationData()->SetParticleEffectState("Eyes"sv, false, mgr);
|
||||||
CTeamAiMgr::ResetTeamAiRole(CTeamAiMgr::EAttackType::Ranged, mgr, x890_teamAiMgr, x8_uid, true);
|
CTeamAiMgr::ResetTeamAiRole(CTeamAiMgr::EAttackType::Ranged, mgr, x890_teamAiMgr, x8_uid, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -846,7 +846,7 @@ void CFlyingPirate::KnockBack(const zeus::CVector3f& pos, CStateManager& mgr, co
|
|||||||
if (x460_knockBackController.GetActiveParms().x0_animState == EKnockBackAnimationState::Hurled) {
|
if (x460_knockBackController.GetActiveParms().x0_animState == EKnockBackAnimationState::Hurled) {
|
||||||
if (x400_25_alive) {
|
if (x400_25_alive) {
|
||||||
if (!x450_bodyController->IsFrozen()) {
|
if (!x450_bodyController->IsFrozen()) {
|
||||||
x330_stateMachineState.SetState(mgr, *this, GetStateMachine(), "GetUpNow");
|
x330_stateMachineState.SetState(mgr, *this, GetStateMachine(), "GetUpNow"sv);
|
||||||
x330_stateMachineState.SetDelay(x568_data.x88_knockBackDelay);
|
x330_stateMachineState.SetDelay(x568_data.x88_knockBackDelay);
|
||||||
}
|
}
|
||||||
x6a1_28_ = false;
|
x6a1_28_ = false;
|
||||||
@ -1140,7 +1140,7 @@ bool CFlyingPirate::ShouldDodge(CStateManager& mgr, float arg) {
|
|||||||
if (x6a1_28_ || x6a1_25_)
|
if (x6a1_28_ || x6a1_25_)
|
||||||
return false;
|
return false;
|
||||||
return 0.f < (GetTargetPos(mgr) - x34_transform.origin).dot(x34_transform.frontVector()) &&
|
return 0.f < (GetTargetPos(mgr) - x34_transform.origin).dot(x34_transform.frontVector()) &&
|
||||||
(x854_ < 0.33f || (x858_ < 0.33f && x7d8_ < 0.5f));
|
(x854_ < 0.33f || x858_ < 0.33f) && x7d8_ < 0.5f;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CFlyingPirate::ShouldMove(CStateManager& mgr, float arg) {
|
bool CFlyingPirate::ShouldMove(CStateManager& mgr, float arg) {
|
||||||
@ -1250,25 +1250,22 @@ void CFlyingPirate::UpdateLandingSmoke(CStateManager& mgr, bool active) {
|
|||||||
x684_particleGens[idx]->SetParticleEmission(true);
|
x684_particleGens[idx]->SetParticleEmission(true);
|
||||||
x684_particleGens[idx]->SetTranslation({origin.x(), origin.y(), particleLevel});
|
x684_particleGens[idx]->SetTranslation({origin.x(), origin.y(), particleLevel});
|
||||||
}
|
}
|
||||||
GetModelData()->GetAnimationData()->SetParticleEffectState("LandingSmoke", true, mgr);
|
GetModelData()->GetAnimationData()->SetParticleEffectState("LandingSmoke"sv, true, mgr);
|
||||||
} else {
|
} else {
|
||||||
for (const auto& gen : x684_particleGens) {
|
for (const auto& gen : x684_particleGens) {
|
||||||
gen->SetParticleEmission(false);
|
gen->SetParticleEmission(false);
|
||||||
}
|
}
|
||||||
GetModelData()->GetAnimationData()->SetParticleEffectState("LandingSmoke", false, mgr);
|
GetModelData()->GetAnimationData()->SetParticleEffectState("LandingSmoke"sv, false, mgr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFlyingPirate::UpdateParticleEffects(CStateManager& mgr, float intensity, bool active) {
|
void CFlyingPirate::UpdateParticleEffects(CStateManager& mgr, float intensity, bool active) {
|
||||||
CAnimData* const animData = GetModelData()->GetAnimationData();
|
CAnimData* const animData = GetModelData()->GetAnimationData();
|
||||||
std::string_view name = "JetPack";
|
std::string_view name = x6a0_25_isUnderwater ? "ScubaGear"sv : "JetPack"sv;
|
||||||
if (x6a0_25_isUnderwater) {
|
|
||||||
name = "ScubaGear";
|
|
||||||
}
|
|
||||||
if (active != x6a2_26_jetpackActive) {
|
if (active != x6a2_26_jetpackActive) {
|
||||||
animData->SetParticleEffectState(name, active, mgr);
|
animData->SetParticleEffectState(name, active, mgr);
|
||||||
if (x6a0_25_isUnderwater) {
|
if (x6a0_25_isUnderwater) {
|
||||||
animData->SetParticleEffectState("ScubaBubbles", active, mgr);
|
animData->SetParticleEffectState("ScubaBubbles"sv, active, mgr);
|
||||||
}
|
}
|
||||||
x6a2_26_jetpackActive = active;
|
x6a2_26_jetpackActive = active;
|
||||||
}
|
}
|
||||||
@ -1279,7 +1276,7 @@ void CFlyingPirate::UpdateParticleEffects(CStateManager& mgr, float intensity, b
|
|||||||
if (!x6a0_25_isUnderwater) {
|
if (!x6a0_25_isUnderwater) {
|
||||||
const bool sparksActive = active && intensity > 0.8f;
|
const bool sparksActive = active && intensity > 0.8f;
|
||||||
if (sparksActive != x6a2_27_sparksActive) {
|
if (sparksActive != x6a2_27_sparksActive) {
|
||||||
animData->SetParticleEffectState("Sparks", sparksActive, mgr);
|
animData->SetParticleEffectState("Sparks"sv, sparksActive, mgr);
|
||||||
x6a2_27_sparksActive = sparksActive;
|
x6a2_27_sparksActive = sparksActive;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1371,7 +1368,9 @@ void CFlyingPirate::Taunt(CStateManager& mgr, EStateMsg msg, float arg) {
|
|||||||
void CFlyingPirate::TurnAround(CStateManager& mgr, EStateMsg msg, float arg) {
|
void CFlyingPirate::TurnAround(CStateManager& mgr, EStateMsg msg, float arg) {
|
||||||
if (msg == EStateMsg::Activate) {
|
if (msg == EStateMsg::Activate) {
|
||||||
x2e0_destPos = GetTargetPos(mgr);
|
x2e0_destPos = GetTargetPos(mgr);
|
||||||
if (x34_transform.frontVector().dot((x2e0_destPos - GetTranslation()).normalized()) < 0.8f) {
|
zeus::CVector3f dist = x2e0_destPos - GetTranslation();
|
||||||
|
dist.z() = 0.f;
|
||||||
|
if (x34_transform.frontVector().dot(dist.normalized()) < 0.8f) {
|
||||||
x32c_animState = EAnimState::Ready;
|
x32c_animState = EAnimState::Ready;
|
||||||
}
|
}
|
||||||
} else if (msg == EStateMsg::Update) {
|
} else if (msg == EStateMsg::Update) {
|
||||||
@ -1385,7 +1384,7 @@ void CFlyingPirate::Walk(CStateManager& mgr, EStateMsg msg, float arg) {
|
|||||||
if (msg == EStateMsg::Activate) {
|
if (msg == EStateMsg::Activate) {
|
||||||
UpdateParticleEffects(mgr, 0.f, false);
|
UpdateParticleEffects(mgr, 0.f, false);
|
||||||
} else if (msg == EStateMsg::Update) {
|
} else if (msg == EStateMsg::Update) {
|
||||||
if (x32c_animState != EAnimState::Ready) {
|
if (x32c_animState != EAnimState::NotReady) {
|
||||||
TryCommand(mgr, pas::EAnimationState::Turn, &CPatterned::TryTurn, 0);
|
TryCommand(mgr, pas::EAnimationState::Turn, &CPatterned::TryTurn, 0);
|
||||||
}
|
}
|
||||||
if (x32c_animState != EAnimState::Repeat) {
|
if (x32c_animState != EAnimState::Repeat) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user