mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-08 21:47:42 +00:00
Fix visigen/hecl dependencies; Cleanup ViewManager; Various implementations
This commit is contained in:
@@ -12,15 +12,15 @@ namespace urde
|
||||
|
||||
CScriptSpecialFunction::CScriptSpecialFunction(TUniqueId uid, const std::string& name, const CEntityInfo& info,
|
||||
const zeus::CTransform& xf, ESpecialFunction func,
|
||||
const std::string& lcName, float radius, float f2, float f3, float f4,
|
||||
const std::string& lcName, float f1, float f2, float f3, float f4,
|
||||
const zeus::CVector3f& vec, const zeus::CColor& col, bool active,
|
||||
const CDamageInfo& dInfo, CAssetId aId1, CAssetId aId2, CAssetId aId3, s16 sId1,
|
||||
s16 sId2, s16 sId3)
|
||||
const CDamageInfo& dInfo, CAssetId aId1, CAssetId aId2, CAssetId aId3,
|
||||
s16 sId1, s16 sId2, s16 sId3)
|
||||
: CActor(uid, active, name, info, xf, CModelData::CModelDataNull(), CMaterialList(), CActorParameters::None(),
|
||||
kInvalidUniqueId)
|
||||
, xe8_function(func)
|
||||
, xec_locatorName(lcName)
|
||||
, xfc_radius(radius)
|
||||
, xfc_(f1)
|
||||
, x100_(f2)
|
||||
, x104_(f3)
|
||||
, x108_(f4)
|
||||
@@ -39,35 +39,19 @@ CScriptSpecialFunction::CScriptSpecialFunction(TUniqueId uid, const std::string&
|
||||
x1c8_ = {{zeus::CVector3f(-1.f), zeus::CVector3f(1.f)}};
|
||||
}
|
||||
|
||||
void CScriptSpecialFunction::Accept(IVisitor& visitor)
|
||||
void CScriptSpecialFunction::Accept(IVisitor& visitor) { visitor.Visit(this); }
|
||||
|
||||
void CScriptSpecialFunction::Think(float, CStateManager&) {}
|
||||
|
||||
void CScriptSpecialFunction::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr)
|
||||
{
|
||||
visitor.Visit(this);
|
||||
}
|
||||
|
||||
void CScriptSpecialFunction::Think(float, CStateManager &)
|
||||
{
|
||||
void CScriptSpecialFunction::PreRender(CStateManager&, const zeus::CFrustum&) {}
|
||||
|
||||
}
|
||||
void CScriptSpecialFunction::AddToRenderer(const zeus::CFrustum&, const CStateManager&) const {}
|
||||
|
||||
void CScriptSpecialFunction::AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CScriptSpecialFunction::PreRender(CStateManager &, const zeus::CFrustum &)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CScriptSpecialFunction::AddToRenderer(const zeus::CFrustum &, const CStateManager &) const
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CScriptSpecialFunction::Render(const CStateManager &) const
|
||||
{
|
||||
|
||||
}
|
||||
void CScriptSpecialFunction::Render(const CStateManager&) const {}
|
||||
|
||||
void CScriptSpecialFunction::SkipCinematic(CStateManager& stateMgr)
|
||||
{
|
||||
@@ -75,9 +59,46 @@ void CScriptSpecialFunction::SkipCinematic(CStateManager& stateMgr)
|
||||
stateMgr.SetSkipCinematicSpecialFunction(kInvalidUniqueId);
|
||||
}
|
||||
|
||||
void CScriptSpecialFunction::ThinkActorScale(float dt, CStateManager& mgr)
|
||||
{
|
||||
float deltaScale = dt * xfc_;
|
||||
|
||||
for (const SConnection& conn : x20_conns)
|
||||
{
|
||||
if (conn.x0_state != EScriptObjectState::Play || conn.x4_msg != EScriptObjectMessage::Activate)
|
||||
continue;
|
||||
if (TCastToPtr<CActor> act = mgr.ObjectById(mgr.GetIdForScript(conn.x8_objId)))
|
||||
{
|
||||
CModelData* mData = act->ModelData();
|
||||
if (mData && (mData->HasAnimData() || mData->HasNormalModel()))
|
||||
{
|
||||
zeus::CVector3f scale = mData->GetScale();
|
||||
|
||||
if (deltaScale > 0.f)
|
||||
scale = zeus::min(deltaScale + scale, {x100_});
|
||||
else
|
||||
scale = zeus::max(deltaScale + scale, {x100_});
|
||||
|
||||
mData->SetScale(scale);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CScriptSpecialFunction::ThinkSaveStation(float, CStateManager& mgr)
|
||||
{
|
||||
if (x1e5_24_doSave && mgr.GetDeferredStateTransition() != EStateManagerTransition::SaveGame)
|
||||
{
|
||||
x1e5_24_doSave = false;
|
||||
if (mgr.GetInSaveUI())
|
||||
SendScriptMsgs(EScriptObjectState::MaxReached, mgr, EScriptObjectMessage::None);
|
||||
else
|
||||
SendScriptMsgs(EScriptObjectState::Zero, mgr, EScriptObjectMessage::None);
|
||||
}
|
||||
}
|
||||
|
||||
bool CScriptSpecialFunction::ShouldSkipCinematic(CStateManager& stateMgr) const
|
||||
{
|
||||
return g_GameState->SystemOptions().GetCinematicState(stateMgr.GetWorld()->IGetWorldAssetId(), GetEditorId());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user