mirror of https://github.com/AxioDL/metaforce.git
CSnakeWeedSwarm: Implement ApplyRadiusDamage
This commit is contained in:
parent
f50f5cedef
commit
34a80aab81
|
@ -151,7 +151,9 @@ void CSnakeWeedSwarm::AddToRenderer(const zeus::CFrustum& frustum, const CStateM
|
|||
g_Renderer->AddParticleGen(*x1f4_particleGen2);
|
||||
}
|
||||
if (x90_actorLights) {
|
||||
// x90_actorLights->ActivateLights(); FIXME pass what here?
|
||||
for (auto modelData : x1b0_modelData) {
|
||||
x90_actorLights->ActivateLights(*modelData->PickAnimatedModel(x1c4_).GetModelInst());
|
||||
}
|
||||
} else {
|
||||
CGraphics::DisableAllLights();
|
||||
g_Renderer->SetAmbientColor(zeus::skWhite);
|
||||
|
@ -181,8 +183,8 @@ void CSnakeWeedSwarm::Touch(CActor& actor, CStateManager& mgr) {
|
|||
}
|
||||
}
|
||||
|
||||
void CSnakeWeedSwarm::sub_8023ca48(float param_1, CStateManager& mgr, const zeus::CVector3f& pos) {
|
||||
float dVar8 = param_1 * param_1;
|
||||
void CSnakeWeedSwarm::sub_8023ca48(float radius, CStateManager& mgr, const zeus::CVector3f& pos) {
|
||||
float dVar8 = radius * radius;
|
||||
for (auto boid : x134_boids) {
|
||||
const zeus::CVector3f& boidPosition = boid.GetPosition();
|
||||
if ((boidPosition - pos).magSquared() < dVar8 &&
|
||||
|
@ -444,4 +446,11 @@ void CSnakeWeedSwarm::RenderBoid(u32 p1, const CBoid* boid, u32* p3) const {
|
|||
*p3 = var3;
|
||||
}
|
||||
|
||||
void CSnakeWeedSwarm::ApplyRadiusDamage(const zeus::CVector3f& pos, const CDamageInfo& info, CStateManager& mgr) {
|
||||
EWeaponType type = info.GetWeaponMode().GetType();
|
||||
if (type == EWeaponType::Bomb || type == EWeaponType::PowerBomb) {
|
||||
sub_8023ca48(info.GetRadius(), mgr, pos);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace urde
|
||||
|
|
|
@ -91,7 +91,7 @@ public:
|
|||
CAssetId, float);
|
||||
|
||||
void Accept(IVisitor&) override;
|
||||
void ApplyRadiusDamage(const zeus::CVector3f& pos, const CDamageInfo& info, CStateManager& stateMgr) {}
|
||||
void ApplyRadiusDamage(const zeus::CVector3f& pos, const CDamageInfo& info, CStateManager& stateMgr);
|
||||
std::optional<zeus::CAABox> GetTouchBounds() const override {
|
||||
if (x140_24_) {
|
||||
return {};
|
||||
|
@ -106,7 +106,7 @@ public:
|
|||
|
||||
private:
|
||||
void AllocateSkinnedModels(CStateManager& mgr, CModelData::EWhichModel which);
|
||||
void sub_8023ca48(float param_1, CStateManager& mgr, const zeus::CVector3f& pos);
|
||||
void sub_8023ca48(float radius, CStateManager& mgr, const zeus::CVector3f& pos);
|
||||
void sub_8023c238(const CStateManager& mgr);
|
||||
zeus::CAABox sub_8023d3f4();
|
||||
int sub_8023c0fc();
|
||||
|
|
Loading…
Reference in New Issue