mirror of https://github.com/AxioDL/metaforce.git
CSnakeWeedSwarm: Fix lighting
This commit is contained in:
parent
17b9813b3e
commit
12393d4c4d
|
@ -104,11 +104,11 @@ void CSnakeWeedSwarm::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId id, CS
|
||||||
|
|
||||||
void CSnakeWeedSwarm::PreRender(CStateManager& mgr, const zeus::CFrustum& frustum) {
|
void CSnakeWeedSwarm::PreRender(CStateManager& mgr, const zeus::CFrustum& frustum) {
|
||||||
if (!frustum.aabbFrustumTest(x144_touchBounds)) {
|
if (!frustum.aabbFrustumTest(x144_touchBounds)) {
|
||||||
SetCalculateLighting(true);
|
xe4_30_outOfFrustum = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SetCalculateLighting(false);
|
xe4_30_outOfFrustum = false;
|
||||||
for (const auto& modelData : x1b0_modelData) {
|
for (const auto& modelData : x1b0_modelData) {
|
||||||
modelData->GetAnimationData()->PreRender();
|
modelData->GetAnimationData()->PreRender();
|
||||||
}
|
}
|
||||||
|
@ -225,16 +225,16 @@ void CSnakeWeedSwarm::Think(float dt, CStateManager& mgr) {
|
||||||
int raisedBoids = 0;
|
int raisedBoids = 0;
|
||||||
for (auto& boid : x134_boids) {
|
for (auto& boid : x134_boids) {
|
||||||
const zeus::CVector3f& pos = boid.GetPosition();
|
const zeus::CVector3f& pos = boid.GetPosition();
|
||||||
EBoidState state = boid.GetState();
|
const EBoidState state = boid.GetState();
|
||||||
if (state == EBoidState::Raised) {
|
if (state == EBoidState::Raised) {
|
||||||
raisedBoids++;
|
raisedBoids++;
|
||||||
if (x1f4_particleGen2 && emitParticle) {
|
if (x1f4_particleGen2 && emitParticle) {
|
||||||
EmitParticles2(pos);
|
EmitParticles2(pos);
|
||||||
}
|
}
|
||||||
} else if (state == EBoidState::Raising) {
|
} else if (state == EBoidState::Raising) {
|
||||||
boid.Set_x14(boid.Get_x14() - dt * boid.Get_x18());
|
boid.SetYOffset(boid.GetYOffset() - dt * boid.Get_x18());
|
||||||
if (boid.Get_x14() <= 0.f) {
|
if (boid.GetYOffset() <= 0.f) {
|
||||||
boid.Set_x14(0.f);
|
boid.SetYOffset(0.f);
|
||||||
boid.SetState(EBoidState::Raised);
|
boid.SetState(EBoidState::Raised);
|
||||||
}
|
}
|
||||||
} else if (state == EBoidState::x2) {
|
} else if (state == EBoidState::x2) {
|
||||||
|
@ -245,12 +245,11 @@ void CSnakeWeedSwarm::Think(float dt, CStateManager& mgr) {
|
||||||
EmitParticles1(pos);
|
EmitParticles1(pos);
|
||||||
}
|
}
|
||||||
} else if (state == EBoidState::x3) {
|
} else if (state == EBoidState::x3) {
|
||||||
boid.Set_x14(dt * boid.Get_x18() + boid.Get_x14());
|
boid.SetYOffset(dt * boid.Get_x18() + boid.GetYOffset());
|
||||||
float max = x110_ * boid.Get_x20();
|
const float max = x110_ * boid.Get_x20();
|
||||||
if (boid.Get_x14() >= max) {
|
if (boid.GetYOffset() >= max) {
|
||||||
boid.Set_x14(max);
|
boid.SetYOffset(max);
|
||||||
float random = mgr.GetActiveRandom()->Float();
|
boid.Set_x10(x10c_ * mgr.GetActiveRandom()->Float() + x108_);
|
||||||
boid.Set_x10(x10c_ * random + x108_);
|
|
||||||
boid.SetState(EBoidState::x2);
|
boid.SetState(EBoidState::x2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -412,7 +411,7 @@ void CSnakeWeedSwarm::RenderBoid(u32 idx, const CBoid& boid, u32& posesToBuild)
|
||||||
model.Calculate(modelData->GetAnimationData()->GetPose(), useFlags, {}, nullptr);
|
model.Calculate(modelData->GetAnimationData()->GetPose(), useFlags, {}, nullptr);
|
||||||
}
|
}
|
||||||
const zeus::CTransform& xf =
|
const zeus::CTransform& xf =
|
||||||
zeus::CTransform::Translate(boid.GetPosition() - zeus::CVector3f(0.f, 0.f, boid.Get_x14())) *
|
zeus::CTransform::Translate(boid.GetPosition() - zeus::CVector3f(0.f, 0.f, boid.GetYOffset())) *
|
||||||
zeus::CTransform::Scale(boid.Get_x20());
|
zeus::CTransform::Scale(boid.Get_x20());
|
||||||
CGraphics::SetModelMatrix(xf);
|
CGraphics::SetModelMatrix(xf);
|
||||||
modelData->GetAnimationData()->Render(model, useFlags, {}, nullptr);
|
modelData->GetAnimationData()->Render(model, useFlags, {}, nullptr);
|
||||||
|
|
|
@ -28,24 +28,24 @@ public:
|
||||||
zeus::CVector3f x0_pos;
|
zeus::CVector3f x0_pos;
|
||||||
EBoidState xc_state;
|
EBoidState xc_state;
|
||||||
float x10_ = 0.f; // some timer
|
float x10_ = 0.f; // some timer
|
||||||
float x14_; // height?
|
float x14_yOffset;
|
||||||
float x18_;
|
float x18_;
|
||||||
float x1c_ = 0.f;
|
float x1c_ = 0.f;
|
||||||
float x20_;
|
float x20_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
constexpr CBoid(const zeus::CVector3f& pos, float f1, float f2, float f3)
|
constexpr CBoid(const zeus::CVector3f& pos, float f1, float f2, float f3)
|
||||||
: x0_pos(pos), xc_state(EBoidState::Raising), x14_(f1), x18_(f2), x20_(f3) {}
|
: x0_pos(pos), xc_state(EBoidState::Raising), x14_yOffset(f1), x18_(f2), x20_(f3) {}
|
||||||
|
|
||||||
constexpr const zeus::CVector3f& GetPosition() const { return x0_pos; }
|
constexpr const zeus::CVector3f& GetPosition() const { return x0_pos; }
|
||||||
constexpr EBoidState GetState() const { return xc_state; }
|
constexpr EBoidState GetState() const { return xc_state; }
|
||||||
constexpr float Get_x10() const { return x10_; }
|
constexpr float Get_x10() const { return x10_; }
|
||||||
constexpr float Get_x14() const { return x14_; }
|
constexpr float GetYOffset() const { return x14_yOffset; }
|
||||||
constexpr float Get_x18() const { return x18_; }
|
constexpr float Get_x18() const { return x18_; }
|
||||||
constexpr float Get_x20() const { return x20_; }
|
constexpr float Get_x20() const { return x20_; }
|
||||||
void SetState(EBoidState v) { xc_state = v; fmt::print(fmt("Setting boid state {}"), v); }
|
constexpr void SetState(EBoidState v) { xc_state = v; }
|
||||||
constexpr void Set_x10(float v) { x10_ = v; }
|
constexpr void Set_x10(float v) { x10_ = v; }
|
||||||
constexpr void Set_x14(float v) { x14_ = v; }
|
constexpr void SetYOffset(float v) { x14_yOffset = v; }
|
||||||
constexpr void Set_x18(float v) { x18_ = v; }
|
constexpr void Set_x18(float v) { x18_ = v; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue