mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-08-04 17:35:37 +00:00
47 lines
1.9 KiB
C++
47 lines
1.9 KiB
C++
#include "MetroidPrime/ScriptObjects/CScriptVisorFlare.hpp"
|
|
|
|
#include "MetroidPrime/CActorParameters.hpp"
|
|
#include "MetroidPrime/CStateManager.hpp"
|
|
#include "MetroidPrime/Player/CPlayer.hpp"
|
|
|
|
CScriptVisorFlare::CScriptVisorFlare(TUniqueId uid, const rstl::string& name,
|
|
const CEntityInfo& info, bool active, const CVector3f& pos,
|
|
CVisorFlare::EBlendMode blendMode, bool b1, float f1, float f2,
|
|
float f3, uint w1, uint w2,
|
|
const rstl::vector< CVisorFlare::CFlareDef >& flares)
|
|
: CActor(uid, active, name, info, CTransform4f::Translate(pos), CModelData::CModelDataNull(),
|
|
CMaterialList(kMT_NoStepLogic), CActorParameters::None(), kInvalidUniqueId)
|
|
, xe8_flare(blendMode, b1, f1, f2, f3, w1, w2, flares)
|
|
, x11c_notInRenderLast(true) {
|
|
SetThermalFlags(kTF_Hot);
|
|
}
|
|
|
|
CScriptVisorFlare::~CScriptVisorFlare() {}
|
|
|
|
void CScriptVisorFlare::Accept(IVisitor& visitor) { visitor.Visit(*this); }
|
|
|
|
void CScriptVisorFlare::Think(float dt, CStateManager& stateMgr) {
|
|
if (GetActive()) {
|
|
xe8_flare.Update(dt, GetTranslation(), this, stateMgr);
|
|
}
|
|
}
|
|
|
|
void CScriptVisorFlare::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objId,
|
|
CStateManager& stateMgr) {
|
|
CActor::AcceptScriptMsg(msg, objId, stateMgr);
|
|
}
|
|
|
|
void CScriptVisorFlare::PreRender(CStateManager& stateMgr, const CFrustumPlanes&) {
|
|
x11c_notInRenderLast = !stateMgr.RenderLast(GetUniqueId());
|
|
}
|
|
|
|
void CScriptVisorFlare::AddToRenderer(const CFrustumPlanes&, const CStateManager& stateMgr) const {
|
|
if (x11c_notInRenderLast) {
|
|
EnsureRendered(stateMgr, stateMgr.GetPlayer()->GetTranslation(), GetSortingBounds(stateMgr));
|
|
}
|
|
}
|
|
|
|
void CScriptVisorFlare::Render(const CStateManager& stateMgr) const {
|
|
xe8_flare.Render(GetTranslation(), stateMgr);
|
|
}
|