|
|
|
@ -1,7 +1,8 @@ |
|
|
|
|
#include "Runtime/MP1/World/CMetroidPrimeProjectile.hpp" |
|
|
|
|
|
|
|
|
|
#include "Runtime/World/CFire.hpp" |
|
|
|
|
#include "Runtime/CSimplePool.hpp" |
|
|
|
|
#include "Runtime/GameGlobalObjects.hpp" |
|
|
|
|
#include "Runtime/CStateManager.hpp" |
|
|
|
|
|
|
|
|
|
namespace metaforce::MP1 { |
|
|
|
|
|
|
|
|
@ -30,4 +31,27 @@ CMetroidPrimeProjectile::CMetroidPrimeProjectile(bool active, const TToken<CWeap |
|
|
|
|
visorParticle, visorSfx, sendCollideMsg) |
|
|
|
|
, x3d8_auxData(auxData) {} |
|
|
|
|
|
|
|
|
|
bool CMetroidPrimeProjectile::Explode(const zeus::CVector3f& pos, const zeus::CVector3f& normal, |
|
|
|
|
const EWeaponCollisionResponseTypes type, CStateManager& mgr, |
|
|
|
|
const CDamageVulnerability& dVuln, TUniqueId hitActor) { |
|
|
|
|
bool result = CEnergyProjectile::Explode(pos, normal, type, mgr, dVuln, hitActor); |
|
|
|
|
if (!x2e4_24_active) { |
|
|
|
|
TUniqueId newId(mgr.AllocateUniqueId()); |
|
|
|
|
|
|
|
|
|
zeus::CAABox box = zeus::CAABox(zeus::CVector3f(-1.f, -1.f, -1.f), zeus::CVector3f(1.f, 1.f, 1.f)) |
|
|
|
|
.getTransformedAABox(GetTransform() * |
|
|
|
|
zeus::CTransform::Scale(x3d8_auxData.GetDamageInfo().GetRadius())); |
|
|
|
|
|
|
|
|
|
CFire* fire = new CFire(x3d8_auxData.x4_particle, newId, GetAreaIdAlways(), true, GetUniqueId(), GetTransform(), |
|
|
|
|
x3d8_auxData.GetDamageInfo(), box, zeus::CVector3f(1.f, 1.f, 1.f), |
|
|
|
|
x3d8_auxData.GetFlag_27(), x3d8_auxData.GetTexture(), x3d8_auxData.GetFlag_24(), |
|
|
|
|
x3d8_auxData.GetFlag_25(), x3d8_auxData.GetFlag_26(), 1.0, x3d8_auxData.Get_0x28(), |
|
|
|
|
x3d8_auxData.Get_0x2c(), x3d8_auxData.Get_0x30()); |
|
|
|
|
if (fire) { |
|
|
|
|
mgr.AddObject(fire); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} // namespace metaforce::MP1
|
|
|
|
|