2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-15 07:26:10 +00:00

CSegId: Add member functions for querying validity

Allows querying validity of segment IDs without hardcoding the magic
value that signifies an invalid ID.
This commit is contained in:
Lioncash
2019-10-26 21:53:11 -04:00
parent 30af6f0bfb
commit 660d092cad
14 changed files with 112 additions and 78 deletions

View File

@@ -1498,15 +1498,17 @@ void CSpacePirate::Deactivate(CStateManager& mgr, EStateMsg msg, float dt) {
}
void CSpacePirate::CheckBlade(CStateManager& mgr) {
if (!x638_25_appliedBladeDamage && x7b9_swooshSeg != 0xff) {
if (TCastToPtr<CPhysicsActor> act = mgr.ObjectById(x7c0_targetId)) {
zeus::CVector3f extent = x64_modelData->GetScale() * 0.5f;
zeus::CVector3f swooshPos = GetLctrTransform(x7b9_swooshSeg).origin;
if (zeus::CAABox(swooshPos - extent, swooshPos + extent).intersects(act->GetBoundingBox())) {
mgr.ApplyDamage(GetUniqueId(), act->GetUniqueId(), GetUniqueId(), x568_pirateData.x4c_BladeDamage,
CMaterialFilter::MakeIncludeExclude({EMaterialTypes::Solid}, {}), zeus::skZero3f);
x638_25_appliedBladeDamage = true;
}
if (x638_25_appliedBladeDamage || x7b9_swooshSeg.IsInvalid()) {
return;
}
if (TCastToPtr<CPhysicsActor> act = mgr.ObjectById(x7c0_targetId)) {
zeus::CVector3f extent = x64_modelData->GetScale() * 0.5f;
zeus::CVector3f swooshPos = GetLctrTransform(x7b9_swooshSeg).origin;
if (zeus::CAABox(swooshPos - extent, swooshPos + extent).intersects(act->GetBoundingBox())) {
mgr.ApplyDamage(GetUniqueId(), act->GetUniqueId(), GetUniqueId(), x568_pirateData.x4c_BladeDamage,
CMaterialFilter::MakeIncludeExclude({EMaterialTypes::Solid}, {}), zeus::skZero3f);
x638_25_appliedBladeDamage = true;
}
}
}