Merge pull request #42 from lioncash/const

Runtime: Make const/non-const getters have the same name
This commit is contained in:
Phillip Stephens 2019-08-14 12:47:52 -07:00 committed by GitHub
commit ea12a54a41
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
60 changed files with 284 additions and 284 deletions

View File

@ -102,8 +102,8 @@ void ViewManager::TestGameView::think() {
} }
const urde::TAreaId aId = g_GameState->CurrentWorldState().GetCurrentAreaId(); const urde::TAreaId aId = g_GameState->CurrentWorldState().GetCurrentAreaId();
if (areaInfo && areaInfo->toBoolean() && g_StateManager->WorldNC() && if (areaInfo && areaInfo->toBoolean() && g_StateManager->GetWorld() &&
g_StateManager->WorldNC()->DoesAreaExist(aId)) { g_StateManager->GetWorld()->DoesAreaExist(aId)) {
const auto& layerStates = g_GameState->CurrentWorldState().GetLayerState(); const auto& layerStates = g_GameState->CurrentWorldState().GetLayerState();
std::string layerBits; std::string layerBits;
u32 totalActive = 0; u32 totalActive = 0;
@ -117,7 +117,7 @@ void ViewManager::TestGameView::think() {
overlayText += fmt::format(fmt( overlayText += fmt::format(fmt(
"Area AssetId: 0x{}, Total Objects: {}\n" "Area AssetId: 0x{}, Total Objects: {}\n"
"Active Layer bits: {}\n"), "Active Layer bits: {}\n"),
g_StateManager->WorldNC()->GetArea(aId)->GetAreaAssetId(), g_StateManager->GetWorld()->GetArea(aId)->GetAreaAssetId(),
g_StateManager->GetAllObjectList().size(), layerBits); g_StateManager->GetAllObjectList().size(), layerBits);
} }

View File

@ -42,7 +42,7 @@ void CMapWorld::SetWhichMapAreasLoaded(const IWorld& wld, int start, int count)
for (int i = 0; i < 2; ++i) { for (int i = 0; i < 2; ++i) {
for (CMapAreaData* data = x10_listHeads[i]; data;) { for (CMapAreaData* data = x10_listHeads[i]; data;) {
CMapAreaData* nextData = data->NextMapAreaData(); CMapAreaData* nextData = data->GetNextMapAreaData();
if (!IsMapAreaInBFSInfoVector(data, bfsInfos)) { if (!IsMapAreaInBFSInfoVector(data, bfsInfos)) {
data->Unlock(); data->Unlock();
MoveMapAreaToList(data, EMapAreaList::Unloaded); MoveMapAreaToList(data, EMapAreaList::Unloaded);
@ -64,11 +64,11 @@ bool CMapWorld::IsMapAreasStreaming() const {
CMapAreaData* data = x10_listHeads[1]; CMapAreaData* data = x10_listHeads[1];
while (data != nullptr) { while (data != nullptr) {
if (data->IsLoaded()) { if (data->IsLoaded()) {
CMapAreaData* next = data->NextMapAreaData(); CMapAreaData* next = data->GetNextMapAreaData();
const_cast<CMapWorld*>(this)->MoveMapAreaToList(data, EMapAreaList::Loaded); const_cast<CMapWorld*>(this)->MoveMapAreaToList(data, EMapAreaList::Loaded);
data = next; data = next;
} else { } else {
data = data->NextMapAreaData(); data = data->GetNextMapAreaData();
ret = true; ret = true;
} }
} }
@ -78,13 +78,13 @@ bool CMapWorld::IsMapAreasStreaming() const {
void CMapWorld::MoveMapAreaToList(CMapWorld::CMapAreaData* data, CMapWorld::EMapAreaList list) { void CMapWorld::MoveMapAreaToList(CMapWorld::CMapAreaData* data, CMapWorld::EMapAreaList list) {
CMapAreaData* last = nullptr; CMapAreaData* last = nullptr;
for (CMapAreaData* head = x10_listHeads[int(data->GetContainingList())];; for (CMapAreaData* head = x10_listHeads[int(data->GetContainingList())];;
last = head, head = head->NextMapAreaData()) { last = head, head = head->GetNextMapAreaData()) {
if (head != data) if (head != data)
continue; continue;
if (!last) if (!last)
x10_listHeads[int(data->GetContainingList())] = head->NextMapAreaData(); x10_listHeads[int(data->GetContainingList())] = head->GetNextMapAreaData();
else else
last->SetNextMapArea(head->NextMapAreaData()); last->SetNextMapArea(head->GetNextMapAreaData());
break; break;
} }
data->SetNextMapArea(x10_listHeads[int(list)]); data->SetNextMapArea(x10_listHeads[int(list)]);

View File

@ -67,9 +67,9 @@ public:
void Unlock() { x0_area.Unlock(); } void Unlock() { x0_area.Unlock(); }
bool IsLoaded() const { return x0_area.IsLoaded(); } bool IsLoaded() const { return x0_area.IsLoaded(); }
const CMapArea* GetMapArea() const { return x0_area.GetObj(); } const CMapArea* GetMapArea() const { return x0_area.GetObj(); }
CMapAreaData* GetNextMapAreaData() { return x14_next; }
const CMapAreaData* GetNextMapAreaData() const { return x14_next; } const CMapAreaData* GetNextMapAreaData() const { return x14_next; }
EMapAreaList GetContainingList() const { return x10_list; } EMapAreaList GetContainingList() const { return x10_list; }
CMapAreaData* NextMapAreaData() { return x14_next; }
void SetContainingList(EMapAreaList list) { x10_list = list; } void SetContainingList(EMapAreaList list) { x10_list = list; }
void SetNextMapArea(CMapAreaData* next) { x14_next = next; } void SetNextMapArea(CMapAreaData* next) { x14_next = next; }
}; };

View File

@ -36,7 +36,7 @@ void CRelayTracker::RemoveRelay(TEditorId id) {
} }
void CRelayTracker::SendMsgs(TAreaId areaId, CStateManager& stateMgr) { void CRelayTracker::SendMsgs(TAreaId areaId, CStateManager& stateMgr) {
const CWorld* world = stateMgr.WorldNC(); const CWorld* world = stateMgr.GetWorld();
u32 relayCount = world->GetRelayCount(); u32 relayCount = world->GetRelayCount();
bool hasActiveRelays = false; bool hasActiveRelays = false;

View File

@ -381,7 +381,7 @@ public:
CEnvFxManager* GetEnvFxManager() { return x880_envFxManager; } CEnvFxManager* GetEnvFxManager() { return x880_envFxManager; }
const CEnvFxManager* GetEnvFxManager() const { return x880_envFxManager; } const CEnvFxManager* GetEnvFxManager() const { return x880_envFxManager; }
CWorld* WorldNC() { return x850_world.get(); } CWorld* GetWorld() { return x850_world.get(); }
const CWorld* GetWorld() const { return x850_world.get(); } const CWorld* GetWorld() const { return x850_world.get(); }
CRelayTracker* GetRelayTracker() { return x8bc_relayTracker.get(); } CRelayTracker* GetRelayTracker() { return x8bc_relayTracker.get(); }
const CRelayTracker* GetRelayTracker() const { return x8bc_relayTracker.get(); } const CRelayTracker* GetRelayTracker() const { return x8bc_relayTracker.get(); }
@ -391,7 +391,8 @@ public:
const std::shared_ptr<CMapWorldInfo>& MapWorldInfo() const { return x8c0_mapWorldInfo; } const std::shared_ptr<CMapWorldInfo>& MapWorldInfo() const { return x8c0_mapWorldInfo; }
const std::shared_ptr<CWorldTransManager>& WorldTransManager() const { return x8c4_worldTransManager; } const std::shared_ptr<CWorldTransManager>& WorldTransManager() const { return x8c4_worldTransManager; }
const std::shared_ptr<CWorldLayerState>& LayerState() const { return x8c8_worldLayerState; } const std::shared_ptr<CWorldLayerState>& WorldLayerState() const { return x8c8_worldLayerState; }
std::shared_ptr<CWorldLayerState>& WorldLayerState() { return x8c8_worldLayerState; }
CPlayer& GetPlayer() const { return *x84c_player; } CPlayer& GetPlayer() const { return *x84c_player; }
CPlayer* Player() const { return x84c_player.get(); } CPlayer* Player() const { return x84c_player.get(); }
@ -442,7 +443,6 @@ public:
void SetPlayerActorHead(TUniqueId id) { xf6c_playerActorHead = id; } void SetPlayerActorHead(TUniqueId id) { xf6c_playerActorHead = id; }
std::list<TUniqueId>& GetActiveFlickerBats() { return xf3c_activeFlickerBats; } std::list<TUniqueId>& GetActiveFlickerBats() { return xf3c_activeFlickerBats; }
std::list<TUniqueId>& GetActiveParasites() { return xf54_activeParasites; } std::list<TUniqueId>& GetActiveParasites() { return xf54_activeParasites; }
std::shared_ptr<CWorldLayerState>& WorldLayerStateNC() { return x8c8_worldLayerState; }
static float g_EscapeShakeCountdown; static float g_EscapeShakeCountdown;
static bool g_EscapeShakeCountdownInit; static bool g_EscapeShakeCountdownInit;

View File

@ -46,7 +46,7 @@ pas::EAnimationState CABSAim::UpdateBody(float dt, CBodyController& bc, CStateMa
if (st == pas::EAnimationState::Invalid) { if (st == pas::EAnimationState::Invalid) {
const zeus::CVector3f& target = bc.GetCommandMgr().GetAdditiveTargetVector(); const zeus::CVector3f& target = bc.GetCommandMgr().GetAdditiveTargetVector();
if (target.canBeNormalized()) { if (target.canBeNormalized()) {
CAnimData& animData = *bc.GetOwner().ModelData()->AnimationData(); CAnimData& animData = *bc.GetOwner().GetModelData()->GetAnimationData();
float hAngle = zeus::clamp(-x18_angles[0], std::atan2(target.x(), target.y()), x18_angles[1]); float hAngle = zeus::clamp(-x18_angles[0], std::atan2(target.x(), target.y()), x18_angles[1]);
hAngle *= 0.63661975f; hAngle *= 0.63661975f;
@ -85,7 +85,7 @@ pas::EAnimationState CABSAim::UpdateBody(float dt, CBodyController& bc, CStateMa
} }
void CABSAim::Shutdown(CBodyController& bc) { void CABSAim::Shutdown(CBodyController& bc) {
CAnimData& animData = *bc.GetOwner().ModelData()->AnimationData(); CAnimData& animData = *bc.GetOwner().GetModelData()->GetAnimationData();
if (x28_hWeight != 0.f) if (x28_hWeight != 0.f)
animData.DelAdditiveAnimation(x8_anims[x28_hWeight < 0.f ? 0 : 1]); animData.DelAdditiveAnimation(x8_anims[x28_hWeight < 0.f ? 0 : 1]);
@ -102,7 +102,7 @@ void CABSFlinch::Start(CBodyController& bc, CStateManager& mgr) {
std::pair<float, s32> best = bc.GetPASDatabase().FindBestAnimation(parms, *mgr.GetActiveRandom(), -1); std::pair<float, s32> best = bc.GetPASDatabase().FindBestAnimation(parms, *mgr.GetActiveRandom(), -1);
x8_anim = best.second; x8_anim = best.second;
CAnimData& animData = *bc.GetOwner().ModelData()->AnimationData(); CAnimData& animData = *bc.GetOwner().GetModelData()->GetAnimationData();
animData.AddAdditiveAnimation(x8_anim, x4_weight, false, true); animData.AddAdditiveAnimation(x8_anim, x4_weight, false, true);
} }
@ -115,7 +115,7 @@ pas::EAnimationState CABSFlinch::GetBodyStateTransition(float dt, CBodyControlle
pas::EAnimationState CABSFlinch::UpdateBody(float dt, CBodyController& bc, CStateManager& mgr) { pas::EAnimationState CABSFlinch::UpdateBody(float dt, CBodyController& bc, CStateManager& mgr) {
const pas::EAnimationState st = GetBodyStateTransition(dt, bc); const pas::EAnimationState st = GetBodyStateTransition(dt, bc);
if (st == pas::EAnimationState::Invalid) { if (st == pas::EAnimationState::Invalid) {
CAnimData& animData = *bc.GetOwner().ModelData()->AnimationData(); CAnimData& animData = *bc.GetOwner().GetModelData()->GetAnimationData();
CCharAnimTime rem = animData.GetAdditiveAnimationTree(x8_anim)->VGetTimeRemaining(); CCharAnimTime rem = animData.GetAdditiveAnimationTree(x8_anim)->VGetTimeRemaining();
if (std::fabs(rem.GetSeconds()) < 0.00001f) if (std::fabs(rem.GetSeconds()) < 0.00001f)
return pas::EAnimationState::AdditiveIdle; return pas::EAnimationState::AdditiveIdle;
@ -149,7 +149,7 @@ void CABSReaction::Start(CBodyController& bc, CStateManager& mgr) {
x8_anim = best.second; x8_anim = best.second;
if (x8_anim != -1) { if (x8_anim != -1) {
CAnimData& animData = *bc.GetOwner().ModelData()->AnimationData(); CAnimData& animData = *bc.GetOwner().GetModelData()->GetAnimationData();
animData.AddAdditiveAnimation(x8_anim, x4_weight, x10_active, false); animData.AddAdditiveAnimation(x8_anim, x4_weight, x10_active, false);
} }
} }
@ -166,7 +166,7 @@ pas::EAnimationState CABSReaction::UpdateBody(float dt, CBodyController& bc, CSt
if (x8_anim == -1) if (x8_anim == -1)
return pas::EAnimationState::AdditiveIdle; return pas::EAnimationState::AdditiveIdle;
CAnimData& animData = *bc.GetOwner().ModelData()->AnimationData(); CAnimData& animData = *bc.GetOwner().GetModelData()->GetAnimationData();
if (x10_active) { if (x10_active) {
if (bc.GetCommandMgr().GetCmd(EBodyStateCmd::StopReaction)) { if (bc.GetCommandMgr().GetCmd(EBodyStateCmd::StopReaction)) {
StopAnimation(bc); StopAnimation(bc);
@ -190,7 +190,7 @@ pas::EAnimationState CABSReaction::UpdateBody(float dt, CBodyController& bc, CSt
void CABSReaction::StopAnimation(CBodyController& bc) { void CABSReaction::StopAnimation(CBodyController& bc) {
if (x8_anim != -1) { if (x8_anim != -1) {
CAnimData& animData = *bc.GetOwner().ModelData()->AnimationData(); CAnimData& animData = *bc.GetOwner().GetModelData()->GetAnimationData();
animData.DelAdditiveAnimation(x8_anim); animData.DelAdditiveAnimation(x8_anim);
x8_anim = -1; x8_anim = -1;
} }

View File

@ -15,7 +15,7 @@ CBodyController::CBodyController(CActor& actor, float turnSpeed, EBodyType bodyT
x2a4_bodyStateInfo.x18_bodyController = this; x2a4_bodyStateInfo.x18_bodyController = this;
} }
void CBodyController::EnableAnimation(bool e) { x0_actor.ModelData()->AnimationData()->EnableAnimation(e); } void CBodyController::EnableAnimation(bool e) { x0_actor.GetModelData()->GetAnimationData()->EnableAnimation(e); }
void CBodyController::Activate(CStateManager& mgr) { void CBodyController::Activate(CStateManager& mgr) {
x300_25_active = true; x300_25_active = true;
@ -77,8 +77,8 @@ void CBodyController::Update(float dt, CStateManager& mgr) {
bool CBodyController::HasBodyState(pas::EAnimationState s) const { return GetPASDatabase().HasState(s32(s)); } bool CBodyController::HasBodyState(pas::EAnimationState s) const { return GetPASDatabase().HasState(s32(s)); }
void CBodyController::SetCurrentAnimation(const CAnimPlaybackParms& parms, bool loop, bool noTrans) { void CBodyController::SetCurrentAnimation(const CAnimPlaybackParms& parms, bool loop, bool noTrans) {
x0_actor.ModelData()->AnimationData()->SetAnimation(parms, noTrans); x0_actor.GetModelData()->GetAnimationData()->SetAnimation(parms, noTrans);
x0_actor.ModelData()->EnableLooping(loop); x0_actor.GetModelData()->EnableLooping(loop);
x2f8_curAnim = parms.GetAnimationId(); x2f8_curAnim = parms.GetAnimationId();
} }
@ -86,13 +86,13 @@ float CBodyController::GetAnimTimeRemaining() const {
return x0_actor.GetModelData()->GetAnimationData()->GetAnimTimeRemaining("Whole Body"); return x0_actor.GetModelData()->GetAnimationData()->GetAnimTimeRemaining("Whole Body");
} }
void CBodyController::SetPlaybackRate(float r) { x0_actor.ModelData()->AnimationData()->SetPlaybackRate(r); } void CBodyController::SetPlaybackRate(float r) { x0_actor.GetModelData()->GetAnimationData()->SetPlaybackRate(r); }
const CPASDatabase& CBodyController::GetPASDatabase() const { const CPASDatabase& CBodyController::GetPASDatabase() const {
return x0_actor.GetModelData()->GetAnimationData()->GetCharacterInfo().GetPASDatabase(); return x0_actor.GetModelData()->GetAnimationData()->GetCharacterInfo().GetPASDatabase();
} }
void CBodyController::MultiplyPlaybackRate(float r) { x0_actor.ModelData()->AnimationData()->MultiplyPlaybackRate(r); } void CBodyController::MultiplyPlaybackRate(float r) { x0_actor.GetModelData()->GetAnimationData()->MultiplyPlaybackRate(r); }
void CBodyController::FaceDirection(const zeus::CVector3f& v0, float dt) { void CBodyController::FaceDirection(const zeus::CVector3f& v0, float dt) {
if (x300_26_frozen) if (x300_26_frozen)

View File

@ -133,7 +133,7 @@ public:
void DisintegrateDraw(EWhichModel which, const zeus::CTransform& xf, const CTexture& tex, void DisintegrateDraw(EWhichModel which, const zeus::CTransform& xf, const CTexture& tex,
const zeus::CColor& addColor, float t); const zeus::CColor& addColor, float t);
CAnimData* AnimationData() { return x10_animData.get(); } CAnimData* GetAnimationData() { return x10_animData.get(); }
const CAnimData* GetAnimationData() const { return x10_animData.get(); } const CAnimData* GetAnimationData() const { return x10_animData.get(); }
const TLockedToken<CModel>& GetNormalModel() const { return x1c_normalModel; } const TLockedToken<CModel>& GetNormalModel() const { return x1c_normalModel; }
const TLockedToken<CModel>& GetXRayModel() const { return x2c_xrayModel; } const TLockedToken<CModel>& GetXRayModel() const { return x2c_xrayModel; }

View File

@ -305,7 +305,7 @@ void CRagDoll::Update(CStateManager& mgr, float dt, float waterTop) {
void CRagDoll::Prime(CStateManager& mgr, const zeus::CTransform& xf, CModelData& mData) { void CRagDoll::Prime(CStateManager& mgr, const zeus::CTransform& xf, CModelData& mData) {
zeus::CVector3f scale = mData.GetScale(); zeus::CVector3f scale = mData.GetScale();
CAnimData* aData = mData.AnimationData(); CAnimData* aData = mData.GetAnimationData();
aData->BuildPose(); aData->BuildPose();
for (auto& particle : x4_particles) for (auto& particle : x4_particles)
if (particle.x0_id != 0xff) if (particle.x0_id != 0xff)

View File

@ -186,7 +186,7 @@ void CMFGame::Touch() {
if (gunVisible) if (gunVisible)
player.GetPlayerGun()->TouchModel(*x14_stateManager); player.GetPlayerGun()->TouchModel(*x14_stateManager);
if (samusVisible) if (samusVisible)
player.ModelData()->Touch(*x14_stateManager, 0); player.GetModelData()->Touch(*x14_stateManager, 0);
if (ballVisible) if (ballVisible)
player.GetMorphBall()->TouchModel(*x14_stateManager); player.GetMorphBall()->TouchModel(*x14_stateManager);
} }

View File

@ -107,7 +107,7 @@ CModelData CSamusDoll::BuildSuitModelData1(CPlayerState::EPlayerSuit suit) {
CModelData ret(CAnimRes(g_ResFactory->GetResourceIdByName("ANCS_ItemScreenSamus")->id, Character1Idxs[int(suit)], CModelData ret(CAnimRes(g_ResFactory->GetResourceIdByName("ANCS_ItemScreenSamus")->id, Character1Idxs[int(suit)],
zeus::skOne3f, 2, true)); zeus::skOne3f, 2, true));
CAnimPlaybackParms parms(2, -1, 1.f, true); CAnimPlaybackParms parms(2, -1, 1.f, true);
ret.AnimationData()->SetAnimation(parms, false); ret.GetAnimationData()->SetAnimation(parms, false);
return ret; return ret;
} }
@ -115,7 +115,7 @@ CModelData CSamusDoll::BuildSuitModelDataBoots(CPlayerState::EPlayerSuit suit) {
CModelData ret(CAnimRes(g_ResFactory->GetResourceIdByName("ANCS_ItemScreenSamus")->id, CharacterBootsIdxs[int(suit)], CModelData ret(CAnimRes(g_ResFactory->GetResourceIdByName("ANCS_ItemScreenSamus")->id, CharacterBootsIdxs[int(suit)],
zeus::skOne3f, 2, true)); zeus::skOne3f, 2, true));
CAnimPlaybackParms parms(2, -1, 1.f, true); CAnimPlaybackParms parms(2, -1, 1.f, true);
ret.AnimationData()->SetAnimation(parms, false); ret.GetAnimationData()->SetAnimation(parms, false);
return ret; return ret;
} }
@ -177,8 +177,8 @@ void CSamusDoll::Update(float dt, CRandom16& rand) {
if (x54_remTransitionTime == 0.f) { if (x54_remTransitionTime == 0.f) {
x4c_completedMorphball = x4d_selectedMorphball; x4c_completedMorphball = x4d_selectedMorphball;
if (!x4d_selectedMorphball) { if (!x4d_selectedMorphball) {
xc8_suitModel0->AnimationData()->SetAnimation(CAnimPlaybackParms(2, -1, 1.f, true), false); xc8_suitModel0->GetAnimationData()->SetAnimation(CAnimPlaybackParms(2, -1, 1.f, true), false);
x134_suitModelBoots->AnimationData()->SetAnimation(CAnimPlaybackParms(2, -1, 1.f, true), false); x134_suitModelBoots->GetAnimationData()->SetAnimation(CAnimPlaybackParms(2, -1, 1.f, true), false);
} }
} }
} }
@ -293,10 +293,10 @@ void CSamusDoll::Draw(const CStateManager& mgr, float alpha) {
for (size_t i = 0; i <= x118_suitModel1and2.size(); ++i) { for (size_t i = 0; i <= x118_suitModel1and2.size(); ++i) {
TCachedToken<CSkinnedModel> backupModelData = xc8_suitModel0->GetAnimationData()->GetModelData(); TCachedToken<CSkinnedModel> backupModelData = xc8_suitModel0->GetAnimationData()->GetModelData();
if (i < x118_suitModel1and2.size()) if (i < x118_suitModel1and2.size())
xc8_suitModel0->AnimationData()->SubstituteModelData(x118_suitModel1and2[i]); xc8_suitModel0->GetAnimationData()->SubstituteModelData(x118_suitModel1and2[i]);
xc8_suitModel0->InvSuitDraw(CModelData::EWhichModel::Normal, zeus::CTransform(), x24c_actorLights.get(), xc8_suitModel0->InvSuitDraw(CModelData::EWhichModel::Normal, zeus::CTransform(), x24c_actorLights.get(),
zeus::CColor(1.f, alpha), zeus::CColor(1.f, alpha * suitPulse)); zeus::CColor(1.f, alpha), zeus::CColor(1.f, alpha * suitPulse));
xc8_suitModel0->AnimationData()->SubstituteModelData(backupModelData); xc8_suitModel0->GetAnimationData()->SubstituteModelData(backupModelData);
} }
x134_suitModelBoots->InvSuitDraw(CModelData::EWhichModel::Normal, zeus::CTransform(), x134_suitModelBoots->InvSuitDraw(CModelData::EWhichModel::Normal, zeus::CTransform(),
@ -522,9 +522,9 @@ void CSamusDoll::Draw(const CStateManager& mgr, float alpha) {
void CSamusDoll::Touch() { void CSamusDoll::Touch() {
if (!CheckLoadComplete()) if (!CheckLoadComplete())
return; return;
xc8_suitModel0->AnimationData()->PreRender(); xc8_suitModel0->GetAnimationData()->PreRender();
x134_suitModelBoots->AnimationData()->PreRender(); x134_suitModelBoots->GetAnimationData()->PreRender();
x184_ballModelData->AnimationData()->PreRender(); x184_ballModelData->GetAnimationData()->PreRender();
xc8_suitModel0->Touch(CModelData::EWhichModel::Normal, 0); xc8_suitModel0->Touch(CModelData::EWhichModel::Normal, 0);
x134_suitModelBoots->Touch(CModelData::EWhichModel::Normal, 0); x134_suitModelBoots->Touch(CModelData::EWhichModel::Normal, 0);
x184_ballModelData->Touch(CModelData::EWhichModel::Normal, 0); x184_ballModelData->Touch(CModelData::EWhichModel::Normal, 0);
@ -547,13 +547,13 @@ void CSamusDoll::SetInMorphball(bool morphball) {
void CSamusDoll::SetTransitionAnimation() { void CSamusDoll::SetTransitionAnimation() {
if (!x4c_completedMorphball) { if (!x4c_completedMorphball) {
/* Into morphball */ /* Into morphball */
xc8_suitModel0->AnimationData()->SetAnimation(CAnimPlaybackParms{0, -1, 1.f, true}, false); xc8_suitModel0->GetAnimationData()->SetAnimation(CAnimPlaybackParms{0, -1, 1.f, true}, false);
x134_suitModelBoots->AnimationData()->SetAnimation(CAnimPlaybackParms{0, -1, 1.f, true}, false); x134_suitModelBoots->GetAnimationData()->SetAnimation(CAnimPlaybackParms{0, -1, 1.f, true}, false);
x50_totalTransitionTime = x54_remTransitionTime = xc8_suitModel0->GetAnimationData()->GetAnimationDuration(0); x50_totalTransitionTime = x54_remTransitionTime = xc8_suitModel0->GetAnimationData()->GetAnimationDuration(0);
} else if (!x4d_selectedMorphball) { } else if (!x4d_selectedMorphball) {
/* Outta morphball */ /* Outta morphball */
xc8_suitModel0->AnimationData()->SetAnimation(CAnimPlaybackParms{1, -1, 1.f, true}, false); xc8_suitModel0->GetAnimationData()->SetAnimation(CAnimPlaybackParms{1, -1, 1.f, true}, false);
x134_suitModelBoots->AnimationData()->SetAnimation(CAnimPlaybackParms{1, -1, 1.f, true}, false); x134_suitModelBoots->GetAnimationData()->SetAnimation(CAnimPlaybackParms{1, -1, 1.f, true}, false);
x50_totalTransitionTime = x54_remTransitionTime = xc8_suitModel0->GetAnimationData()->GetAnimationDuration(1); x50_totalTransitionTime = x54_remTransitionTime = xc8_suitModel0->GetAnimationData()->GetAnimationDuration(1);
} }
} }

View File

@ -15,7 +15,7 @@ CSamusFaceReflection::CSamusFaceReflection(CStateManager& stateMgr)
, x4c_lights(std::make_unique<CActorLights>(8, zeus::skZero3f, 4, 4, false, false, false, 0.1f)) { , x4c_lights(std::make_unique<CActorLights>(8, zeus::skZero3f, 4, 4, false, false, false, 0.1f)) {
x60_lookDir = zeus::skForward; x60_lookDir = zeus::skForward;
CAnimPlaybackParms parms(0, -1, 1.f, true); CAnimPlaybackParms parms(0, -1, 1.f, true);
x0_modelData.AnimationData()->SetAnimation(parms, false); x0_modelData.GetAnimationData()->SetAnimation(parms, false);
} }
void CSamusFaceReflection::PreDraw(const CStateManager& mgr) { void CSamusFaceReflection::PreDraw(const CStateManager& mgr) {
@ -24,7 +24,7 @@ void CSamusFaceReflection::PreDraw(const CStateManager& mgr) {
x70_hidden = true; x70_hidden = true;
} else { } else {
x70_hidden = false; x70_hidden = false;
x0_modelData.AnimationData()->PreRender(); x0_modelData.GetAnimationData()->PreRender();
} }
} }
} }

View File

@ -59,7 +59,7 @@ CBabygoth::CBabygoth(TUniqueId uid, std::string_view name, const CEntityInfo& in
, x6ec_pathSearch(nullptr, 1, pInfo.GetPathfindingIndex(), 1.f, 1.f) , x6ec_pathSearch(nullptr, 1, pInfo.GetPathfindingIndex(), 1.f, 1.f)
, x7d0_approachPathSearch(nullptr, 1, pInfo.GetPathfindingIndex(), 1.f, 1.f) , x7d0_approachPathSearch(nullptr, 1, pInfo.GetPathfindingIndex(), 1.f, 1.f)
, x8d0_initialSpeed(x3b4_speed) , x8d0_initialSpeed(x3b4_speed)
, x8f0_boneTracking(*ModelData()->AnimationData(), "Head_1"sv, zeus::degToRad(80.f), zeus::degToRad(180.f), , x8f0_boneTracking(*GetModelData()->GetAnimationData(), "Head_1"sv, zeus::degToRad(80.f), zeus::degToRad(180.f),
EBoneTrackingFlags::None) EBoneTrackingFlags::None)
, x930_aabox(GetBoundingBox(), GetMaterialList()) , x930_aabox(GetBoundingBox(), GetMaterialList())
, x958_iceProjectile(babyData.x8_fireballWeapon, babyData.xc_fireballDamage) , x958_iceProjectile(babyData.x8_fireballWeapon, babyData.xc_fireballDamage)
@ -72,7 +72,7 @@ CBabygoth::CBabygoth(TUniqueId uid, std::string_view name, const CEntityInfo& in
TLockedToken<CSkinRules> skin = g_SimplePool->GetObj({SBIG('CSKR'), babyData.x13c_noShellSkin}); TLockedToken<CSkinRules> skin = g_SimplePool->GetObj({SBIG('CSKR'), babyData.x13c_noShellSkin});
xa08_noShellModel = xa08_noShellModel =
CToken(TObjOwnerDerivedFromIObj<CSkinnedModel>::GetNewDerivedObject(std::make_unique<CSkinnedModel>( CToken(TObjOwnerDerivedFromIObj<CSkinnedModel>::GetNewDerivedObject(std::make_unique<CSkinnedModel>(
model, skin, x64_modelData->AnimationData()->GetModelData()->GetLayoutInfo(), 1, 1))); model, skin, x64_modelData->GetAnimationData()->GetModelData()->GetLayoutInfo(), 1, 1)));
xa14_crackOneParticle = g_SimplePool->GetObj({SBIG('PART'), babyData.x14c_crackOneParticle}); xa14_crackOneParticle = g_SimplePool->GetObj({SBIG('PART'), babyData.x14c_crackOneParticle});
xa20_crackTwoParticle = g_SimplePool->GetObj({SBIG('PART'), babyData.x150_crackTwoParticle}); xa20_crackTwoParticle = g_SimplePool->GetObj({SBIG('PART'), babyData.x150_crackTwoParticle});
xa2c_destroyShellParticle = g_SimplePool->GetObj({SBIG('PART'), babyData.x154_destroyShellParticle}); xa2c_destroyShellParticle = g_SimplePool->GetObj({SBIG('PART'), babyData.x154_destroyShellParticle});
@ -218,9 +218,9 @@ void CBabygoth::Think(float dt, CStateManager& mgr) {
if (x450_bodyController->IsElectrocuting()) if (x450_bodyController->IsElectrocuting())
x8f0_boneTracking.SetActive(false); x8f0_boneTracking.SetActive(false);
UpdateTimers(dt); UpdateTimers(dt);
ModelData()->AnimationData()->PreRender(); GetModelData()->GetAnimationData()->PreRender();
x8f0_boneTracking.Update(dt); x8f0_boneTracking.Update(dt);
x8f0_boneTracking.PreRender(mgr, *ModelData()->AnimationData(), GetTransform(), GetModelData()->GetScale(), x8f0_boneTracking.PreRender(mgr, *GetModelData()->GetAnimationData(), GetTransform(), GetModelData()->GetScale(),
*x450_bodyController); *x450_bodyController);
x928_colActMgr->Update(dt, mgr, CCollisionActorManager::EUpdateOptions(!xa49_29_objectSpaceCollision)); x928_colActMgr->Update(dt, mgr, CCollisionActorManager::EUpdateOptions(!xa49_29_objectSpaceCollision));
xa49_29_objectSpaceCollision = true; xa49_29_objectSpaceCollision = true;
@ -1094,7 +1094,7 @@ bool CBabygoth::IsDestinationObstructed(CStateManager& mgr) {
} }
void CBabygoth::DestroyShell(CStateManager& mgr) { void CBabygoth::DestroyShell(CStateManager& mgr) {
ModelData()->AnimationData()->SubstituteModelData(xa08_noShellModel); GetModelData()->GetAnimationData()->SubstituteModelData(xa08_noShellModel);
for (TUniqueId uid : x9f8_shellIds) { for (TUniqueId uid : x9f8_shellIds) {
if (TCastToPtr<CCollisionActor> colAct = mgr.ObjectById(uid)) { if (TCastToPtr<CCollisionActor> colAct = mgr.ObjectById(uid)) {

View File

@ -79,11 +79,11 @@ static std::string_view sFireEffects[3] = {
}; };
void CBloodFlower::TurnEffectsOn(u32 effect, CStateManager& mgr) { void CBloodFlower::TurnEffectsOn(u32 effect, CStateManager& mgr) {
ModelData()->AnimationData()->SetParticleEffectState(sFireEffects[effect], true, mgr); GetModelData()->GetAnimationData()->SetParticleEffectState(sFireEffects[effect], true, mgr);
} }
void CBloodFlower::TurnEffectsOff(u32 effect, CStateManager& mgr) { void CBloodFlower::TurnEffectsOff(u32 effect, CStateManager& mgr) {
ModelData()->AnimationData()->SetParticleEffectState(sFireEffects[effect], false, mgr); GetModelData()->GetAnimationData()->SetParticleEffectState(sFireEffects[effect], false, mgr);
} }
void CBloodFlower::Think(float dt, CStateManager& mgr) { void CBloodFlower::Think(float dt, CStateManager& mgr) {

View File

@ -97,8 +97,8 @@ void CEyeball::Think(float dt, CStateManager& mgr) {
x5a8_targetPosition = player.GetTranslation() - (0.5f * player.GetVelocity()); x5a8_targetPosition = player.GetTranslation() - (0.5f * player.GetVelocity());
x570_boneTracking.SetTargetPosition(x5a8_targetPosition); x570_boneTracking.SetTargetPosition(x5a8_targetPosition);
x570_boneTracking.Update(dt); x570_boneTracking.Update(dt);
ModelData()->AnimationData()->PreRender(); GetModelData()->GetAnimationData()->PreRender();
x570_boneTracking.PreRender(mgr, *ModelData()->AnimationData(), GetTransform(), GetModelData()->GetScale(), x570_boneTracking.PreRender(mgr, *GetModelData()->GetAnimationData(), GetTransform(), GetModelData()->GetScale(),
*x450_bodyController.get()); *x450_bodyController.get());
} else } else
x570_boneTracking.SetActive(false); x570_boneTracking.SetActive(false);
@ -232,7 +232,7 @@ void CEyeball::FireBeam(CStateManager& mgr, const zeus::CTransform& xf) {
void CEyeball::PreRender(CStateManager& mgr, const zeus::CFrustum& frustum) { void CEyeball::PreRender(CStateManager& mgr, const zeus::CFrustum& frustum) {
CPatterned::PreRender(mgr, frustum); CPatterned::PreRender(mgr, frustum);
x570_boneTracking.PreRender(mgr, *ModelData()->AnimationData(), GetTransform(), GetModelData()->GetScale(), x570_boneTracking.PreRender(mgr, *GetModelData()->GetAnimationData(), GetTransform(), GetModelData()->GetScale(),
*x450_bodyController); *x450_bodyController);
} }

View File

@ -61,7 +61,7 @@ CFireFlea::CFireFlea(TUniqueId uid, std::string_view name, const CEntityInfo& in
filter.ExcludeList().Add(EMaterialTypes::Character); filter.ExcludeList().Add(EMaterialTypes::Character);
SetMaterialFilter(filter); SetMaterialFilter(filter);
ModelData()->AnimationData()->SetParticleLightIdx(sLightIdx); GetModelData()->GetAnimationData()->SetParticleLightIdx(sLightIdx);
++sLightIdx; ++sLightIdx;
} }

View File

@ -119,7 +119,7 @@ void CFlaahgra::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateM
switch (msg) { switch (msg) {
case EScriptObjectMessage::InitializedInArea: { case EScriptObjectMessage::InitializedInArea: {
if (!x8e4_25_loading && !x8e4_24_loaded) { if (!x8e4_25_loading && !x8e4_24_loaded) {
const_cast<CGameArea::CPostConstructed*>(mgr.WorldNC()->GetAreaAlways(GetAreaIdAlways())->GetPostConstructed()) const_cast<CGameArea::CPostConstructed*>(mgr.GetWorld()->GetAreaAlways(GetAreaIdAlways())->GetPostConstructed())
->x113c_playerActorsLoading++; ->x113c_playerActorsLoading++;
x8e4_25_loading = true; x8e4_25_loading = true;
} }
@ -396,7 +396,7 @@ void CFlaahgra::LoadTokens(CStateManager& mgr) {
void CFlaahgra::FinalizeLoad(CStateManager& mgr) { void CFlaahgra::FinalizeLoad(CStateManager& mgr) {
x8e4_24_loaded = true; x8e4_24_loaded = true;
if (x8e4_25_loading) { if (x8e4_25_loading) {
const_cast<CGameArea::CPostConstructed*>(mgr.WorldNC()->GetAreaAlways(GetAreaIdAlways())->GetPostConstructed()) const_cast<CGameArea::CPostConstructed*>(mgr.GetWorld()->GetAreaAlways(GetAreaIdAlways())->GetPostConstructed())
->x113c_playerActorsLoading--; ->x113c_playerActorsLoading--;
x8e4_25_loading = false; x8e4_25_loading = false;
} }
@ -411,7 +411,7 @@ void CFlaahgra::Think(float dt, CStateManager& mgr) {
CPatterned::Think(dt, mgr); CPatterned::Think(dt, mgr);
x6cc_boneTracking->Update(dt); x6cc_boneTracking->Update(dt);
UpdateCollisionManagers(dt, mgr); UpdateCollisionManagers(dt, mgr);
x6cc_boneTracking->PreRender(mgr, *ModelData()->AnimationData(), GetTransform(), GetModelData()->GetScale(), x6cc_boneTracking->PreRender(mgr, *GetModelData()->GetAnimationData(), GetTransform(), GetModelData()->GetScale(),
*x450_bodyController); *x450_bodyController);
UpdateSmallScaleReGrowth(dt); UpdateSmallScaleReGrowth(dt);
UpdateHealthInfo(mgr); UpdateHealthInfo(mgr);
@ -508,7 +508,7 @@ void CFlaahgra::SetupCollisionManagers(CStateManager& mgr) {
{EMaterialTypes::CollisionActor, EMaterialTypes::AIPassthrough, EMaterialTypes::Player})); {EMaterialTypes::CollisionActor, EMaterialTypes::AIPassthrough, EMaterialTypes::Player}));
AddMaterial(EMaterialTypes::ProjectilePassthrough, EMaterialTypes::Target, EMaterialTypes::Orbit, mgr); AddMaterial(EMaterialTypes::ProjectilePassthrough, EMaterialTypes::Target, EMaterialTypes::Orbit, mgr);
RemoveMaterial(EMaterialTypes::Solid, mgr); RemoveMaterial(EMaterialTypes::Solid, mgr);
ModelData()->SetScale(oldScale); GetModelData()->SetScale(oldScale);
x7a4_sphereCollision->AddMaterial(mgr, {EMaterialTypes::AIJoint, EMaterialTypes::CameraPassthrough}); x7a4_sphereCollision->AddMaterial(mgr, {EMaterialTypes::AIJoint, EMaterialTypes::CameraPassthrough});
x79c_leftArmCollision->AddMaterial(mgr, {EMaterialTypes::AIJoint, EMaterialTypes::CameraPassthrough}); x79c_leftArmCollision->AddMaterial(mgr, {EMaterialTypes::AIJoint, EMaterialTypes::CameraPassthrough});
x7a0_rightArmCollision->AddMaterial(mgr, {EMaterialTypes::AIJoint, EMaterialTypes::CameraPassthrough}); x7a0_rightArmCollision->AddMaterial(mgr, {EMaterialTypes::AIJoint, EMaterialTypes::CameraPassthrough});
@ -797,7 +797,7 @@ void CFlaahgra::SetCollisionActorBounds(CStateManager& mgr, const std::unique_pt
} }
void CFlaahgra::UpdateScale(float t, float min, float max) { void CFlaahgra::UpdateScale(float t, float min, float max) {
float scale = (t * (max - min) + min); float scale = (t * (max - min) + min);
ModelData()->SetScale(zeus::skOne3f * scale); GetModelData()->SetScale(zeus::skOne3f * scale);
} }
float CFlaahgra::GetEndActionTime() const { float CFlaahgra::GetEndActionTime() const {

View File

@ -12,7 +12,7 @@ CFlaahgraTentacle::CFlaahgraTentacle(TUniqueId uid, std::string_view name, const
: CPatterned(ECharacter::FlaahgraTentacle, uid, name, EFlavorType::Zero, info, xf, std::move(mData), pInfo, : CPatterned(ECharacter::FlaahgraTentacle, uid, name, EFlavorType::Zero, info, xf, std::move(mData), pInfo,
EMovementType::Flyer, EColliderType::One, EBodyType::Restricted, actParms, EKnockBackVariant::Large) { EMovementType::Flyer, EColliderType::One, EBodyType::Restricted, actParms, EKnockBackVariant::Large) {
x58e_24_ = false; x58e_24_ = false;
ActorLights()->SetCastShadows(false); GetActorLights()->SetCastShadows(false);
x460_knockBackController.SetAutoResetImpulse(false); x460_knockBackController.SetAutoResetImpulse(false);
CreateShadow(false); CreateShadow(false);
} }

View File

@ -214,10 +214,10 @@ void CNewIntroBoss::Think(float dt, CStateManager& mgr) {
if (x63c_attackTime > 0.f) if (x63c_attackTime > 0.f)
x63c_attackTime -= dt; x63c_attackTime -= dt;
ModelData()->AnimationData()->PreRender(); GetModelData()->GetAnimationData()->PreRender();
if (x400_25_alive) if (x400_25_alive)
x574_boneTracking.PreRender(mgr, *ModelData()->AnimationData(), x34_transform, ModelData()->GetScale(), x574_boneTracking.PreRender(mgr, *GetModelData()->GetAnimationData(), x34_transform, GetModelData()->GetScale(),
*x450_bodyController); *x450_bodyController);
x5ec_collisionManager->Update(dt, mgr, CCollisionActorManager::EUpdateOptions::ObjectSpace); x5ec_collisionManager->Update(dt, mgr, CCollisionActorManager::EUpdateOptions::ObjectSpace);

View File

@ -72,7 +72,7 @@ CParasite::CParasite(TUniqueId uid, std::string_view name, EFlavorType flavor, c
TLockedToken<CModel> skin = g_SimplePool->GetObj({FOURCC('CSKR'), skinRes}); TLockedToken<CModel> skin = g_SimplePool->GetObj({FOURCC('CSKR'), skinRes});
x624_extraModel = x624_extraModel =
CToken(TObjOwnerDerivedFromIObj<CSkinnedModel>::GetNewDerivedObject(std::make_unique<CSkinnedModel>( CToken(TObjOwnerDerivedFromIObj<CSkinnedModel>::GetNewDerivedObject(std::make_unique<CSkinnedModel>(
model, skin, x64_modelData->AnimationData()->GetModelData()->GetLayoutInfo(), 1, 1))); model, skin, x64_modelData->GetAnimationData()->GetModelData()->GetLayoutInfo(), 1, 1)));
break; break;
} }
default: default:
@ -205,7 +205,7 @@ void CParasite::UpdateCollisionActors(float dt, CStateManager& mgr) {
AddMaterial(EMaterialTypes::Solid, mgr); AddMaterial(EMaterialTypes::Solid, mgr);
RemoveMaterial(EMaterialTypes::ProjectilePassthrough, mgr); RemoveMaterial(EMaterialTypes::ProjectilePassthrough, mgr);
DestroyActorManager(mgr); DestroyActorManager(mgr);
x64_modelData->AnimationData()->SubstituteModelData(x624_extraModel); x64_modelData->GetAnimationData()->SubstituteModelData(x624_extraModel);
} }
} }
} }
@ -219,7 +219,7 @@ void CParasite::Think(float dt, CStateManager& mgr) {
UpdateCollisionActors(dt, mgr); UpdateCollisionActors(dt, mgr);
x5d6_26_playerObstructed = false; x5d6_26_playerObstructed = false;
CGameArea* area = mgr.WorldNC()->GetArea(GetAreaIdAlways()); CGameArea* area = mgr.GetWorld()->GetArea(GetAreaIdAlways());
CGameArea::EOcclusionState r6 = CGameArea::EOcclusionState::Occluded; CGameArea::EOcclusionState r6 = CGameArea::EOcclusionState::Occluded;
if (area->IsPostConstructed()) if (area->IsPostConstructed())

View File

@ -64,7 +64,7 @@ CPirateRagDoll::CPirateRagDoll(CStateManager& mgr, CSpacePirate* sp, u16 thudSfx
SetNumLengthConstraints(47); SetNumLengthConstraints(47);
SetNumJointConstraints(4); SetNumJointConstraints(4);
zeus::CVector3f scale = x6c_spacePirate->GetModelData()->GetScale(); zeus::CVector3f scale = x6c_spacePirate->GetModelData()->GetScale();
CAnimData* aData = x6c_spacePirate->ModelData()->AnimationData(); CAnimData* aData = x6c_spacePirate->GetModelData()->GetAnimationData();
aData->BuildPose(); aData->BuildPose();
zeus::CVector3f center = x6c_spacePirate->GetBoundingBox().center(); zeus::CVector3f center = x6c_spacePirate->GetBoundingBox().center();
for (int i = 0; i < 14; ++i) { for (int i = 0; i < 14; ++i) {
@ -139,7 +139,7 @@ CPirateRagDoll::CPirateRagDoll(CStateManager& mgr, CSpacePirate* sp, u16 thudSfx
void CPirateRagDoll::PreRender(const zeus::CVector3f& v, CModelData& mData) { void CPirateRagDoll::PreRender(const zeus::CVector3f& v, CModelData& mData) {
if (!x68_25_over || x68_27_continueSmallMovements) { if (!x68_25_over || x68_27_continueSmallMovements) {
CAnimData* aData = mData.AnimationData(); CAnimData* aData = mData.GetAnimationData();
for (CSegId id : aData->GetCharLayoutInfo().GetSegIdList().GetList()) for (CSegId id : aData->GetCharLayoutInfo().GetSegIdList().GetList())
if (aData->GetCharLayoutInfo().GetRootNode()->GetBoneMap()[id].x10_children.size() > 1) if (aData->GetCharLayoutInfo().GetRootNode()->GetBoneMap()[id].x10_children.size() > 1)
aData->PoseBuilder().GetTreeMap()[id].x4_rotation = zeus::CQuaternion(); aData->PoseBuilder().GetTreeMap()[id].x4_rotation = zeus::CQuaternion();
@ -341,7 +341,7 @@ CSpacePirate::CSpacePirate(TUniqueId uid, std::string_view name, const CEntityIn
, x568_pirateData(in, propCount) , x568_pirateData(in, propCount)
, x660_pathFindSearch(nullptr, 0x1, pInfo.GetPathfindingIndex(), 1.f, 1.f) , x660_pathFindSearch(nullptr, 0x1, pInfo.GetPathfindingIndex(), 1.f, 1.f)
, x750_initialHP(pInfo.GetHealthInfo().GetHP()) , x750_initialHP(pInfo.GetHealthInfo().GetHP())
, x764_boneTracking(*x64_modelData->AnimationData(), "Head_1"sv, 1.22173f, 3.14159f, EBoneTrackingFlags::None) , x764_boneTracking(*x64_modelData->GetAnimationData(), "Head_1"sv, 1.22173f, 3.14159f, EBoneTrackingFlags::None)
, x7c4_burstFire(skBursts, x568_pirateData.xac_firstBurstCount) , x7c4_burstFire(skBursts, x568_pirateData.xac_firstBurstCount)
, x8b8_minCloakAlpha(x568_pirateData.xb0_CloakOpacity) , x8b8_minCloakAlpha(x568_pirateData.xb0_CloakOpacity)
, x8bc_maxCloakAlpha(x568_pirateData.xb4_MaxCloakOpacity) , x8bc_maxCloakAlpha(x568_pirateData.xb4_MaxCloakOpacity)
@ -548,7 +548,7 @@ bool CSpacePirate::FireProjectile(float dt, CStateManager& mgr) {
auto bestAnim = x450_bodyController->GetPASDatabase().FindBestAnimation({24, CPASAnimParm::FromEnum(2)}, auto bestAnim = x450_bodyController->GetPASDatabase().FindBestAnimation({24, CPASAnimParm::FromEnum(2)},
*mgr.GetActiveRandom(), -1); *mgr.GetActiveRandom(), -1);
if (bestAnim.first > 0.f) if (bestAnim.first > 0.f)
x64_modelData->AnimationData()->AddAdditiveAnimation(bestAnim.second, 1.f, false, true); x64_modelData->GetAnimationData()->AddAdditiveAnimation(bestAnim.second, 1.f, false, true);
CSfxManager::AddEmitter(x568_pirateData.x48_Sound_Projectile, GetTranslation(), zeus::skZero3f, true, CSfxManager::AddEmitter(x568_pirateData.x48_Sound_Projectile, GetTranslation(), zeus::skZero3f, true,
false, 0x7f, kInvalidAreaId); false, 0x7f, kInvalidAreaId);
} }
@ -801,9 +801,9 @@ void CSpacePirate::SetEyeParticleActive(CStateManager& mgr, bool active) {
if (!x636_24_trooper) { if (!x636_24_trooper) {
if (!x634_29_onlyAttackInRange || x635_26_seated) { if (!x634_29_onlyAttackInRange || x635_26_seated) {
if (!x635_27_shadowPirate) if (!x635_27_shadowPirate)
x64_modelData->AnimationData()->SetParticleEffectState("TwoEyes"sv, active, mgr); x64_modelData->GetAnimationData()->SetParticleEffectState("TwoEyes"sv, active, mgr);
} else { } else {
x64_modelData->AnimationData()->SetParticleEffectState("OneEye"sv, active, mgr); x64_modelData->GetAnimationData()->SetParticleEffectState("OneEye"sv, active, mgr);
} }
} }
} }
@ -978,9 +978,9 @@ void CSpacePirate::PreRender(CStateManager& mgr, const zeus::CFrustum& frustum)
x85c_ragDoll->PreRender(GetTranslation(), *x64_modelData); x85c_ragDoll->PreRender(GetTranslation(), *x64_modelData);
CPatterned::PreRender(mgr, frustum); CPatterned::PreRender(mgr, frustum);
if (!x85c_ragDoll || !x85c_ragDoll->IsPrimed()) { if (!x85c_ragDoll || !x85c_ragDoll->IsPrimed()) {
x764_boneTracking.PreRender(mgr, *x64_modelData->AnimationData(), x34_transform, x64_modelData->GetScale(), x764_boneTracking.PreRender(mgr, *x64_modelData->GetAnimationData(), x34_transform, x64_modelData->GetScale(),
*x450_bodyController); *x450_bodyController);
x860_ikChain.PreRender(*x64_modelData->AnimationData(), x34_transform, x64_modelData->GetScale()); x860_ikChain.PreRender(*x64_modelData->GetAnimationData(), x34_transform, x64_modelData->GetScale());
} }
} }
@ -1043,7 +1043,7 @@ void CSpacePirate::DoUserAnimEvent(CStateManager& mgr, const CInt32POINode& node
CSegId lctrId = x64_modelData->GetAnimationData()->GetLocatorSegId(node.GetLocatorName()); CSegId lctrId = x64_modelData->GetAnimationData()->GetLocatorSegId(node.GetLocatorName());
if (lctrId != 3) { if (lctrId != 3) {
zeus::CTransform xf = GetLctrTransform(lctrId); zeus::CTransform xf = GetLctrTransform(lctrId);
x860_ikChain.Activate(*x64_modelData->AnimationData(), lctrId, xf); x860_ikChain.Activate(*x64_modelData->GetAnimationData(), lctrId, xf);
x639_28_satUp = true; x639_28_satUp = true;
} }
} }

View File

@ -25,7 +25,7 @@ CSpankWeed::CSpankWeed(TUniqueId uid, std::string_view name, const CEntityInfo&
if (modelScale.x() != modelScale.y() || modelScale.x() != modelScale.z()) { if (modelScale.x() != modelScale.y() || modelScale.x() != modelScale.z()) {
float scale = modelScale.magnitude() / std::sqrt(3.f); float scale = modelScale.magnitude() / std::sqrt(3.f);
ModelData()->SetScale(zeus::CVector3f(scale)); GetModelData()->SetScale(zeus::CVector3f(scale));
SpankLog.report(logvisor::Level::Warning, SpankLog.report(logvisor::Level::Warning,
fmt("WARNING: Non-uniform scale {} applied to Spank Weed" fmt("WARNING: Non-uniform scale {} applied to Spank Weed"
"...changing scale to ({} {} {})\n"), "...changing scale to ({} {} {})\n"),

View File

@ -116,42 +116,42 @@ void CGrappleArm::SetAnimState(EArmState state) {
if (x334_animState == state) if (x334_animState == state)
return; return;
x0_grappleArmModel->AnimationData()->EnableLooping(false); x0_grappleArmModel->GetAnimationData()->EnableLooping(false);
x3b2_28_isGrappling = true; x3b2_28_isGrappling = true;
switch (state) { switch (state) {
case EArmState::IntoGrapple: { case EArmState::IntoGrapple: {
ResetAuxParams(true); ResetAuxParams(true);
CAnimPlaybackParms parms(0, -1, 1.f, true); CAnimPlaybackParms parms(0, -1, 1.f, true);
x0_grappleArmModel->AnimationData()->SetAnimation(parms, false); x0_grappleArmModel->GetAnimationData()->SetAnimation(parms, false);
x3b2_25_beamActive = false; x3b2_25_beamActive = false;
x3b2_24_active = true; x3b2_24_active = true;
break; break;
} }
case EArmState::IntoGrappleIdle: { case EArmState::IntoGrappleIdle: {
CAnimPlaybackParms parms(1, -1, 1.f, true); CAnimPlaybackParms parms(1, -1, 1.f, true);
x0_grappleArmModel->AnimationData()->EnableLooping(true); x0_grappleArmModel->GetAnimationData()->EnableLooping(true);
x0_grappleArmModel->AnimationData()->SetAnimation(parms, false); x0_grappleArmModel->GetAnimationData()->SetAnimation(parms, false);
break; break;
} }
case EArmState::FireGrapple: { case EArmState::FireGrapple: {
CAnimPlaybackParms parms(2, -1, 1.f, true); CAnimPlaybackParms parms(2, -1, 1.f, true);
x0_grappleArmModel->AnimationData()->SetAnimation(parms, false); x0_grappleArmModel->GetAnimationData()->SetAnimation(parms, false);
break; break;
} }
case EArmState::ConnectGrapple: { case EArmState::ConnectGrapple: {
CAnimPlaybackParms parms(3, -1, 1.f, true); CAnimPlaybackParms parms(3, -1, 1.f, true);
x0_grappleArmModel->AnimationData()->SetAnimation(parms, false); x0_grappleArmModel->GetAnimationData()->SetAnimation(parms, false);
break; break;
} }
case EArmState::Connected: { case EArmState::Connected: {
CAnimPlaybackParms parms(3, -1, 1.f, true); CAnimPlaybackParms parms(3, -1, 1.f, true);
x0_grappleArmModel->AnimationData()->SetAnimation(parms, false); x0_grappleArmModel->GetAnimationData()->SetAnimation(parms, false);
break; break;
} }
case EArmState::OutOfGrapple: { case EArmState::OutOfGrapple: {
CAnimPlaybackParms parms(4, -1, 1.f, true); CAnimPlaybackParms parms(4, -1, 1.f, true);
x0_grappleArmModel->AnimationData()->SetAnimation(parms, false); x0_grappleArmModel->GetAnimationData()->SetAnimation(parms, false);
DisconnectGrappleBeam(); DisconnectGrappleBeam();
break; break;
} }
@ -465,9 +465,9 @@ void CGrappleArm::Update(float grappleSwingT, float dt, CStateManager& mgr) {
void CGrappleArm::PreRender(const CStateManager& mgr, const zeus::CFrustum& frustum, const zeus::CVector3f& camPos) { void CGrappleArm::PreRender(const CStateManager& mgr, const zeus::CFrustum& frustum, const zeus::CVector3f& camPos) {
if (x3b2_24_active && !x3b2_29_suitLoading) { if (x3b2_24_active && !x3b2_29_suitLoading) {
x0_grappleArmModel->AnimationData()->PreRender(); x0_grappleArmModel->GetAnimationData()->PreRender();
if (x50_grappleArmSkeletonModel) if (x50_grappleArmSkeletonModel)
x50_grappleArmSkeletonModel->AnimationData()->PreRender(); x50_grappleArmSkeletonModel->GetAnimationData()->PreRender();
} }
} }
@ -478,7 +478,7 @@ void CGrappleArm::RenderXRayModel(const CStateManager& mgr, const zeus::CTransfo
// g_Renderer->SetAmbientColor(zeus::skWhite); // g_Renderer->SetAmbientColor(zeus::skWhite);
CSkinnedModel& model = const_cast<CSkinnedModel&>(*x50_grappleArmSkeletonModel->GetAnimationData()->GetModelData()); CSkinnedModel& model = const_cast<CSkinnedModel&>(*x50_grappleArmSkeletonModel->GetAnimationData()->GetModelData());
model.GetModelInst()->ActivateLights({CLight::BuildLocalAmbient({}, zeus::skWhite)}); model.GetModelInst()->ActivateLights({CLight::BuildLocalAmbient({}, zeus::skWhite)});
const_cast<CGrappleArm*>(this)->x0_grappleArmModel->AnimationData()->Render(model, flags, {}, nullptr); const_cast<CGrappleArm*>(this)->x0_grappleArmModel->GetAnimationData()->Render(model, flags, {}, nullptr);
// g_Renderer->SetAmbientColor(zeus::skWhite); // g_Renderer->SetAmbientColor(zeus::skWhite);
// CGraphics::DisableAllLights(); // CGraphics::DisableAllLights();
} }

View File

@ -6,17 +6,17 @@
namespace urde { namespace urde {
void CGunController::LoadFidgetAnimAsync(CStateManager& mgr, s32 type, s32 gunId, s32 animSet) { void CGunController::LoadFidgetAnimAsync(CStateManager& mgr, s32 type, s32 gunId, s32 animSet) {
x30_fidget.LoadAnimAsync(*x0_modelData.AnimationData(), type, gunId, animSet, mgr); x30_fidget.LoadAnimAsync(*x0_modelData.GetAnimationData(), type, gunId, animSet, mgr);
} }
void CGunController::EnterFidget(CStateManager& mgr, s32 type, s32 gunId, s32 animSet) { void CGunController::EnterFidget(CStateManager& mgr, s32 type, s32 gunId, s32 animSet) {
x54_curAnimId = x30_fidget.SetAnim(*x0_modelData.AnimationData(), type, gunId, animSet, mgr); x54_curAnimId = x30_fidget.SetAnim(*x0_modelData.GetAnimationData(), type, gunId, animSet, mgr);
x50_gunState = EGunState::Fidget; x50_gunState = EGunState::Fidget;
} }
void CGunController::EnterFreeLook(CStateManager& mgr, s32 gunId, s32 setId) { void CGunController::EnterFreeLook(CStateManager& mgr, s32 gunId, s32 setId) {
if (x50_gunState != EGunState::ComboFire && !x58_25_enteredComboFire) if (x50_gunState != EGunState::ComboFire && !x58_25_enteredComboFire)
x54_curAnimId = x4_freeLook.SetAnim(*x0_modelData.AnimationData(), gunId, setId, 0, mgr, 0.f); x54_curAnimId = x4_freeLook.SetAnim(*x0_modelData.GetAnimationData(), gunId, setId, 0, mgr, 0.f);
else else
x4_freeLook.SetLoopState(x1c_comboFire.GetLoopState()); x4_freeLook.SetLoopState(x1c_comboFire.GetLoopState());
x50_gunState = EGunState::FreeLook; x50_gunState = EGunState::FreeLook;
@ -24,7 +24,7 @@ void CGunController::EnterFreeLook(CStateManager& mgr, s32 gunId, s32 setId) {
void CGunController::EnterComboFire(CStateManager& mgr, s32 gunId) { void CGunController::EnterComboFire(CStateManager& mgr, s32 gunId) {
if (x50_gunState != EGunState::FreeLook) if (x50_gunState != EGunState::FreeLook)
x54_curAnimId = x1c_comboFire.SetAnim(*x0_modelData.AnimationData(), gunId, 0, mgr, 0.f); x54_curAnimId = x1c_comboFire.SetAnim(*x0_modelData.GetAnimationData(), gunId, 0, mgr, 0.f);
else else
x1c_comboFire.SetLoopState(x4_freeLook.GetLoopState()); x1c_comboFire.SetLoopState(x4_freeLook.GetLoopState());
x50_gunState = EGunState::ComboFire; x50_gunState = EGunState::ComboFire;
@ -46,13 +46,13 @@ void CGunController::EnterStruck(CStateManager& mgr, float angle, bool bigStrike
break; break;
} }
const CPASDatabase& pasDatabase = x0_modelData.AnimationData()->GetCharacterInfo().GetPASDatabase(); const CPASDatabase& pasDatabase = x0_modelData.GetAnimationData()->GetCharacterInfo().GetPASDatabase();
CPASAnimParmData parms(2, CPASAnimParm::FromInt32(x4_freeLook.GetGunId()), CPASAnimParm::FromReal32(angle), CPASAnimParmData parms(2, CPASAnimParm::FromInt32(x4_freeLook.GetGunId()), CPASAnimParm::FromReal32(angle),
CPASAnimParm::FromBool(bigStrike), CPASAnimParm::FromBool(b2)); CPASAnimParm::FromBool(bigStrike), CPASAnimParm::FromBool(b2));
std::pair<float, s32> anim = pasDatabase.FindBestAnimation(parms, *mgr.GetActiveRandom(), -1); std::pair<float, s32> anim = pasDatabase.FindBestAnimation(parms, *mgr.GetActiveRandom(), -1);
x0_modelData.AnimationData()->EnableLooping(false); x0_modelData.GetAnimationData()->EnableLooping(false);
CAnimPlaybackParms aparms(anim.second, -1, 1.f, true); CAnimPlaybackParms aparms(anim.second, -1, 1.f, true);
x0_modelData.AnimationData()->SetAnimation(aparms, false); x0_modelData.GetAnimationData()->SetAnimation(aparms, false);
x54_curAnimId = anim.second; x54_curAnimId = anim.second;
x58_25_enteredComboFire = false; x58_25_enteredComboFire = false;
x50_gunState = bigStrike ? EGunState::BigStrike : EGunState::Strike; x50_gunState = bigStrike ? EGunState::BigStrike : EGunState::Strike;
@ -73,19 +73,19 @@ void CGunController::EnterIdle(CStateManager& mgr) {
return; return;
} }
const CPASDatabase& pasDatabase = x0_modelData.AnimationData()->GetCharacterInfo().GetPASDatabase(); const CPASDatabase& pasDatabase = x0_modelData.GetAnimationData()->GetCharacterInfo().GetPASDatabase();
CPASAnimParmData parms(5, parm); CPASAnimParmData parms(5, parm);
std::pair<float, s32> anim = pasDatabase.FindBestAnimation(parms, *mgr.GetActiveRandom(), -1); std::pair<float, s32> anim = pasDatabase.FindBestAnimation(parms, *mgr.GetActiveRandom(), -1);
x0_modelData.AnimationData()->EnableLooping(false); x0_modelData.GetAnimationData()->EnableLooping(false);
CAnimPlaybackParms aparms(anim.second, -1, 1.f, true); CAnimPlaybackParms aparms(anim.second, -1, 1.f, true);
x0_modelData.AnimationData()->SetAnimation(aparms, false); x0_modelData.GetAnimationData()->SetAnimation(aparms, false);
x54_curAnimId = anim.second; x54_curAnimId = anim.second;
x50_gunState = EGunState::Idle; x50_gunState = EGunState::Idle;
x58_25_enteredComboFire = false; x58_25_enteredComboFire = false;
} }
bool CGunController::Update(float dt, CStateManager& mgr) { bool CGunController::Update(float dt, CStateManager& mgr) {
CAnimData& animData = *x0_modelData.AnimationData(); CAnimData& animData = *x0_modelData.GetAnimationData();
switch (x50_gunState) { switch (x50_gunState) {
case EGunState::FreeLook: { case EGunState::FreeLook: {
x58_24_animDone = x4_freeLook.Update(animData, dt, mgr); x58_24_animDone = x4_freeLook.Update(animData, dt, mgr);
@ -126,7 +126,7 @@ bool CGunController::Update(float dt, CStateManager& mgr) {
} }
void CGunController::ReturnToDefault(CStateManager& mgr, float dt, bool setState) { void CGunController::ReturnToDefault(CStateManager& mgr, float dt, bool setState) {
CAnimData& animData = *x0_modelData.AnimationData(); CAnimData& animData = *x0_modelData.GetAnimationData();
switch (x50_gunState) { switch (x50_gunState) {
case EGunState::Strike: case EGunState::Strike:
@ -159,11 +159,11 @@ void CGunController::ReturnToDefault(CStateManager& mgr, float dt, bool setState
} }
void CGunController::ReturnToBasePosition(CStateManager& mgr, float) { void CGunController::ReturnToBasePosition(CStateManager& mgr, float) {
const CPASDatabase& pasDatabase = x0_modelData.AnimationData()->GetCharacterInfo().GetPASDatabase(); const CPASDatabase& pasDatabase = x0_modelData.GetAnimationData()->GetCharacterInfo().GetPASDatabase();
std::pair<float, s32> anim = pasDatabase.FindBestAnimation(CPASAnimParmData(6), *mgr.GetActiveRandom(), -1); std::pair<float, s32> anim = pasDatabase.FindBestAnimation(CPASAnimParmData(6), *mgr.GetActiveRandom(), -1);
x0_modelData.AnimationData()->EnableLooping(false); x0_modelData.GetAnimationData()->EnableLooping(false);
CAnimPlaybackParms parms(anim.second, -1, 1.f, true); CAnimPlaybackParms parms(anim.second, -1, 1.f, true);
x0_modelData.AnimationData()->SetAnimation(parms, false); x0_modelData.GetAnimationData()->SetAnimation(parms, false);
x54_curAnimId = anim.second; x54_curAnimId = anim.second;
x58_25_enteredComboFire = false; x58_25_enteredComboFire = false;
} }

View File

@ -12,7 +12,7 @@ CGunMotion::CGunMotion(CAssetId ancsId, const zeus::CVector3f& scale)
} }
void CGunMotion::LoadAnimations() { void CGunMotion::LoadAnimations() {
NWeaponTypes::get_token_vector(*x0_modelData.AnimationData(), 0, 14, xa8_anims, true); NWeaponTypes::get_token_vector(*x0_modelData.GetAnimationData(), 0, 14, xa8_anims, true);
} }
bool CGunMotion::PlayPasAnim(SamusGun::EAnimationState state, CStateManager& mgr, float angle, bool bigStrike) { bool CGunMotion::PlayPasAnim(SamusGun::EAnimationState state, CStateManager& mgr, float angle, bool bigStrike) {
@ -52,9 +52,9 @@ bool CGunMotion::PlayPasAnim(SamusGun::EAnimationState state, CStateManager& mgr
} }
if (animId != -1) { if (animId != -1) {
x0_modelData.AnimationData()->EnableLooping(loop); x0_modelData.GetAnimationData()->EnableLooping(loop);
CAnimPlaybackParms aparms(animId, -1, 1.f, true); CAnimPlaybackParms aparms(animId, -1, 1.f, true);
x0_modelData.AnimationData()->SetAnimation(aparms, false); x0_modelData.GetAnimationData()->SetAnimation(aparms, false);
} }
return loop; return loop;
@ -65,9 +65,9 @@ void CGunMotion::ReturnToDefault(CStateManager& mgr, bool setState) {
} }
void CGunMotion::BasePosition(bool bigStrikeReset) { void CGunMotion::BasePosition(bool bigStrikeReset) {
x0_modelData.AnimationData()->EnableLooping(false); x0_modelData.GetAnimationData()->EnableLooping(false);
CAnimPlaybackParms aparms(bigStrikeReset ? 6 : 0, -1, 1.f, true); CAnimPlaybackParms aparms(bigStrikeReset ? 6 : 0, -1, 1.f, true);
x0_modelData.AnimationData()->SetAnimation(aparms, false); x0_modelData.GetAnimationData()->SetAnimation(aparms, false);
} }
void CGunMotion::EnterFidget(CStateManager& mgr, SamusGun::EFidgetType type, s32 parm2) { void CGunMotion::EnterFidget(CStateManager& mgr, SamusGun::EFidgetType type, s32 parm2) {

View File

@ -104,7 +104,7 @@ void CGunWeapon::Reset(CStateManager& mgr) {
if (!x218_26_loaded) if (!x218_26_loaded)
return; return;
x10_solidModelData->AnimationData()->EnableLooping(false); x10_solidModelData->GetAnimationData()->EnableLooping(false);
if (x218_25_enableCharge) if (x218_25_enableCharge)
x218_25_enableCharge = false; x218_25_enableCharge = false;
else else
@ -116,9 +116,9 @@ static const s32 skAnimTypeList[] = {0, 4, 1, 2, 3, 5, 6, 7, 8, 9, 10};
void CGunWeapon::PlayAnim(NWeaponTypes::EGunAnimType type, bool loop) { void CGunWeapon::PlayAnim(NWeaponTypes::EGunAnimType type, bool loop) {
if (x218_26_loaded && type >= NWeaponTypes::EGunAnimType::BasePosition && if (x218_26_loaded && type >= NWeaponTypes::EGunAnimType::BasePosition &&
type <= NWeaponTypes::EGunAnimType::ToBeam) { type <= NWeaponTypes::EGunAnimType::ToBeam) {
x10_solidModelData->AnimationData()->EnableLooping(loop); x10_solidModelData->GetAnimationData()->EnableLooping(loop);
CAnimPlaybackParms parms(skAnimTypeList[int(type)], -1, 1.f, true); CAnimPlaybackParms parms(skAnimTypeList[int(type)], -1, 1.f, true);
x10_solidModelData->AnimationData()->SetAnimation(parms, false); x10_solidModelData->GetAnimationData()->SetAnimation(parms, false);
} }
} }
@ -173,9 +173,9 @@ void CGunWeapon::Fire(bool underwater, float dt, EChargeState chargeState, const
mgr.GetCameraManager()->AddCameraShaker(CCameraShakeData::skChargedShotCameraShakeData, false); mgr.GetCameraManager()->AddCameraShaker(CCameraShakeData::skChargedShotCameraShakeData, false);
} }
x10_solidModelData->AnimationData()->EnableLooping(false); x10_solidModelData->GetAnimationData()->EnableLooping(false);
CAnimPlaybackParms parms(skShootAnim[int(chargeState)], -1, 1.f, true); CAnimPlaybackParms parms(skShootAnim[int(chargeState)], -1, 1.f, true);
x10_solidModelData->AnimationData()->SetAnimation(parms, false); x10_solidModelData->GetAnimationData()->SetAnimation(parms, false);
} }
void CGunWeapon::EnableFx(bool enable) { void CGunWeapon::EnableFx(bool enable) {
@ -304,7 +304,7 @@ void CGunWeapon::LoadGunModels(CStateManager& mgr) {
x10_solidModelData.emplace(CAnimRes(x214_ancsId, 0, x4_scale, defaultAnim, false)); x10_solidModelData.emplace(CAnimRes(x214_ancsId, 0, x4_scale, defaultAnim, false));
x60_holoModelData.emplace(CAnimRes(x214_ancsId, 1, x4_scale, defaultAnim, false)); x60_holoModelData.emplace(CAnimRes(x214_ancsId, 1, x4_scale, defaultAnim, false));
CAnimPlaybackParms parms(defaultAnim, -1, 1.f, true); CAnimPlaybackParms parms(defaultAnim, -1, 1.f, true);
x10_solidModelData->AnimationData()->SetAnimation(parms, true); x10_solidModelData->GetAnimationData()->SetAnimation(parms, true);
LoadSuitArm(mgr); LoadSuitArm(mgr);
x10_solidModelData->SetSortThermal(true); x10_solidModelData->SetSortThermal(true);
x60_holoModelData->SetSortThermal(true); x60_holoModelData->SetSortThermal(true);
@ -478,7 +478,7 @@ void CGunWeapon::DrawHologram(const CStateManager& mgr, const zeus::CTransform&
// g_Renderer->SetAmbientColor(zeus::skWhite); // g_Renderer->SetAmbientColor(zeus::skWhite);
CSkinnedModel& model = const_cast<CSkinnedModel&>(*x60_holoModelData->GetAnimationData()->GetModelData()); CSkinnedModel& model = const_cast<CSkinnedModel&>(*x60_holoModelData->GetAnimationData()->GetModelData());
model.GetModelInst()->ActivateLights({CLight::BuildLocalAmbient({}, zeus::skWhite)}); model.GetModelInst()->ActivateLights({CLight::BuildLocalAmbient({}, zeus::skWhite)});
const_cast<CGunWeapon*>(this)->x10_solidModelData->AnimationData()->Render(model, flags, {}, nullptr); const_cast<CGunWeapon*>(this)->x10_solidModelData->GetAnimationData()->Render(model, flags, {}, nullptr);
// g_Renderer->SetAmbientColor(zeus::skWhite); // g_Renderer->SetAmbientColor(zeus::skWhite);
// CGraphics::DisableAllLights(); // CGraphics::DisableAllLights();
} }

View File

@ -28,7 +28,7 @@ CPhazonBeam::CPhazonBeam(CAssetId characterId, EWeaponType type, TUniqueId playe
void CPhazonBeam::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender, CStateManager& mgr) { void CPhazonBeam::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender, CStateManager& mgr) {
TAreaId aid = mgr.GetPlayer().GetAreaIdAlways(); TAreaId aid = mgr.GetPlayer().GetAreaIdAlways();
if (msg == EScriptObjectMessage::Deleted && aid != kInvalidAreaId) if (msg == EScriptObjectMessage::Deleted && aid != kInvalidAreaId)
mgr.WorldNC()->GetArea(aid)->SetWeaponWorldLighting(4.f, 1.f); mgr.GetWorld()->GetArea(aid)->SetWeaponWorldLighting(4.f, 1.f);
} }
void CPhazonBeam::StopBeam(CStateManager& mgr, bool b1) { void CPhazonBeam::StopBeam(CStateManager& mgr, bool b1) {
@ -102,7 +102,7 @@ void CPhazonBeam::Update(float dt, CStateManager& mgr) {
x278_fireTime += dt; x278_fireTime += dt;
TAreaId aid = mgr.GetPlayer().GetAreaIdAlways(); TAreaId aid = mgr.GetPlayer().GetAreaIdAlways();
if (aid != kInvalidAreaId) { if (aid != kInvalidAreaId) {
CGameArea* area = mgr.WorldNC()->GetArea(aid); CGameArea* area = mgr.GetWorld()->GetArea(aid);
if (x278_fireTime > 1.f / 6.f) if (x278_fireTime > 1.f / 6.f)
area->SetWeaponWorldLighting(4.f, 1.f); area->SetWeaponWorldLighting(4.f, 1.f);
else else

View File

@ -21,7 +21,7 @@ void CPlasmaBeam::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender, CS
void CPlasmaBeam::SetWorldLighting(CStateManager& mgr, TAreaId aid, float speed, float target) { void CPlasmaBeam::SetWorldLighting(CStateManager& mgr, TAreaId aid, float speed, float target) {
if (x22c_25_worldLighingDim && x23c_stateArea != aid && x23c_stateArea != kInvalidAreaId) { if (x22c_25_worldLighingDim && x23c_stateArea != aid && x23c_stateArea != kInvalidAreaId) {
CGameArea* area = mgr.WorldNC()->GetArea(x23c_stateArea); CGameArea* area = mgr.GetWorld()->GetArea(x23c_stateArea);
if (area->IsPostConstructed()) if (area->IsPostConstructed())
area->SetWeaponWorldLighting(2.f, 1.f); area->SetWeaponWorldLighting(2.f, 1.f);
} }
@ -30,7 +30,7 @@ void CPlasmaBeam::SetWorldLighting(CStateManager& mgr, TAreaId aid, float speed,
x22c_25_worldLighingDim = target != 1.f; x22c_25_worldLighingDim = target != 1.f;
if (x23c_stateArea != kInvalidAreaId) { if (x23c_stateArea != kInvalidAreaId) {
CGameArea* area = mgr.WorldNC()->GetArea(x23c_stateArea); CGameArea* area = mgr.GetWorld()->GetArea(x23c_stateArea);
if (area->IsPostConstructed()) if (area->IsPostConstructed())
area->SetWeaponWorldLighting(speed, target); area->SetWeaponWorldLighting(speed, target);
} }

View File

@ -216,7 +216,7 @@ void CPlayerGun::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender, CSt
x72c_currentBeam->SetRainSplashGenerator(x748_rainSplashGenerator.get()); x72c_currentBeam->SetRainSplashGenerator(x748_rainSplashGenerator.get());
x744_auxWeapon->Load(x310_currentBeam, mgr); x744_auxWeapon->Load(x310_currentBeam, mgr);
CAnimPlaybackParms parms(skBeamAnimIds[int(mgr.GetPlayerState()->GetCurrentBeam())], -1, 1.f, true); CAnimPlaybackParms parms(skBeamAnimIds[int(mgr.GetPlayerState()->GetCurrentBeam())], -1, 1.f, true);
x6e0_rightHandModel.AnimationData()->SetAnimation(parms, false); x6e0_rightHandModel.GetAnimationData()->SetAnimation(parms, false);
break; break;
} }
case EScriptObjectMessage::Deleted: case EScriptObjectMessage::Deleted:
@ -489,7 +489,7 @@ void CPlayerGun::ResetBeamParams(CStateManager& mgr, const CPlayerState& playerS
if (playerState.ItemEnabled(CPlayerState::EItemType::ChargeBeam)) if (playerState.ItemEnabled(CPlayerState::EItemType::ChargeBeam))
ResetCharge(mgr, false); ResetCharge(mgr, false);
CAnimPlaybackParms parms(skBeamAnimIds[int(x314_nextBeam)], -1, 1.f, true); CAnimPlaybackParms parms(skBeamAnimIds[int(x314_nextBeam)], -1, 1.f, true);
x6e0_rightHandModel.AnimationData()->SetAnimation(parms, false); x6e0_rightHandModel.GetAnimationData()->SetAnimation(parms, false);
Reset(mgr, false); Reset(mgr, false);
if (playSelectionSfx) if (playSelectionSfx)
CSfxManager::SfxStart(SFXwpn_morph_out_wipe, 1.f, 0.f, true, 0x7f, false, kInvalidAreaId); CSfxManager::SfxStart(SFXwpn_morph_out_wipe, 1.f, 0.f, true, 0x7f, false, kInvalidAreaId);
@ -2018,7 +2018,7 @@ void CPlayerGun::PreRender(const CStateManager& mgr, const zeus::CFrustum& frust
x740_grappleArm->PreRender(mgr, frustum, camPos); x740_grappleArm->PreRender(mgr, frustum, camPos);
if (x678_morph.GetGunState() != CGunMorph::EGunState::OutWipeDone || activeVisor == CPlayerState::EPlayerVisor::XRay) if (x678_morph.GetGunState() != CGunMorph::EGunState::OutWipeDone || activeVisor == CPlayerState::EPlayerVisor::XRay)
x6e0_rightHandModel.AnimationData()->PreRender(); x6e0_rightHandModel.GetAnimationData()->PreRender();
if (x833_28_phazonBeamActive) if (x833_28_phazonBeamActive)
g_Renderer->AllocatePhazonSuitMaskTexture(); g_Renderer->AllocatePhazonSuitMaskTexture();

View File

@ -76,8 +76,8 @@ void CWaveBeam::Fire(bool underwater, float dt, EChargeState chargeState, const
NWeaponTypes::play_sfx(kSoundId[int(chargeState)], underwater, false, 0.165f); NWeaponTypes::play_sfx(kSoundId[int(chargeState)], underwater, false, 0.165f);
CAnimPlaybackParms parms(skShootAnim[int(chargeState)], -1, 1.f, true); CAnimPlaybackParms parms(skShootAnim[int(chargeState)], -1, 1.f, true);
x10_solidModelData->AnimationData()->EnableLooping(false); x10_solidModelData->GetAnimationData()->EnableLooping(false);
x10_solidModelData->AnimationData()->SetAnimation(parms, false); x10_solidModelData->GetAnimationData()->SetAnimation(parms, false);
} }
void CWaveBeam::EnableSecondaryFx(ESecondaryFxType type) { void CWaveBeam::EnableSecondaryFx(ESecondaryFxType type) {

View File

@ -80,7 +80,7 @@ void CActor::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateMana
{ {
RemoveEmitter(); RemoveEmitter();
if (HasModelData() && !x64_modelData->IsNull()) if (HasModelData() && !x64_modelData->IsNull())
if (CAnimData* aData = x64_modelData->AnimationData()) if (CAnimData* aData = x64_modelData->GetAnimationData())
aData->GetParticleDB().DeleteAllLights(mgr); aData->GetParticleDB().DeleteAllLights(mgr);
break; break;
} }
@ -91,9 +91,9 @@ void CActor::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateMana
else else
RemoveMaterial(EMaterialTypes::Scannable, mgr); RemoveMaterial(EMaterialTypes::Scannable, mgr);
if (HasModelData() && x64_modelData->AnimationData()) { if (HasModelData() && x64_modelData->GetAnimationData()) {
TAreaId aid = GetAreaId(); TAreaId aid = GetAreaId();
x64_modelData->AnimationData()->InitializeEffects(mgr, aid, x64_modelData->GetScale()); x64_modelData->GetAnimationData()->InitializeEffects(mgr, aid, x64_modelData->GetScale());
} }
break; break;
} }
@ -161,7 +161,7 @@ void CActor::PreRender(CStateManager& mgr, const zeus::CFrustum& planes) {
} }
if (x64_modelData->HasAnimData()) if (x64_modelData->HasAnimData())
x64_modelData->AnimationData()->PreRender(); x64_modelData->GetAnimationData()->PreRender();
} else { } else {
if (xe4_29_actorLightsDirty) { if (xe4_29_actorLightsDirty) {
xe4_29_actorLightsDirty = false; xe4_29_actorLightsDirty = false;
@ -254,7 +254,7 @@ void CActor::Render(const CStateManager& mgr) const {
if (x64_modelData && !x64_modelData->IsNull()) { if (x64_modelData && !x64_modelData->IsNull()) {
bool renderPrePostParticles = xe6_29_renderParticleDBInside && x64_modelData && x64_modelData->HasAnimData(); bool renderPrePostParticles = xe6_29_renderParticleDBInside && x64_modelData && x64_modelData->HasAnimData();
if (renderPrePostParticles) if (renderPrePostParticles)
x64_modelData->AnimationData()->GetParticleDB().RenderSystemsToBeDrawnFirst(); x64_modelData->GetAnimationData()->GetParticleDB().RenderSystemsToBeDrawnFirst();
if (xe7_27_enableRender) { if (xe7_27_enableRender) {
if (xe5_31_pointGeneratorParticles) if (xe5_31_pointGeneratorParticles)
@ -274,7 +274,7 @@ void CActor::Render(const CStateManager& mgr) const {
} }
if (renderPrePostParticles) if (renderPrePostParticles)
x64_modelData->AnimationData()->GetParticleDB().RenderSystemsToBeDrawnLast(); x64_modelData->GetAnimationData()->GetParticleDB().RenderSystemsToBeDrawnLast();
} }
DrawTouchBounds(); DrawTouchBounds();
} }
@ -289,7 +289,7 @@ bool CActor::CanRenderUnsorted(const CStateManager& mgr) const {
} }
void CActor::CalculateRenderBounds() { void CActor::CalculateRenderBounds() {
if (x64_modelData && (x64_modelData->AnimationData() || x64_modelData->GetNormalModel())) if (x64_modelData && (x64_modelData->GetAnimationData() || x64_modelData->GetNormalModel()))
x9c_renderBounds = x64_modelData->GetBounds(x34_transform); x9c_renderBounds = x64_modelData->GetBounds(x34_transform);
else else
x9c_renderBounds = zeus::CAABox(x34_transform.origin, x34_transform.origin); x9c_renderBounds = zeus::CAABox(x34_transform.origin, x34_transform.origin);
@ -636,7 +636,7 @@ SAdvancementDeltas CActor::UpdateAnimation(float dt, CStateManager& mgr, bool ad
if (poi.GetCharacterIndex() != -1 && if (poi.GetCharacterIndex() != -1 &&
x64_modelData->GetAnimationData()->GetCharacterIndex() != poi.GetCharacterIndex()) x64_modelData->GetAnimationData()->GetCharacterIndex() != poi.GetCharacterIndex())
continue; continue;
x64_modelData->AnimationData()->GetParticleDB().SetParticleEffectState(poi.GetString(), true, mgr); x64_modelData->GetAnimationData()->GetParticleDB().SetParticleEffectState(poi.GetString(), true, mgr);
} }
} }
return deltas; return deltas;

View File

@ -166,7 +166,7 @@ public:
float GetPitch() const; float GetPitch() const;
float GetYaw() const; float GetYaw() const;
const CModelData* GetModelData() const { return x64_modelData.get(); } const CModelData* GetModelData() const { return x64_modelData.get(); }
CModelData* ModelData() { return x64_modelData.get(); } CModelData* GetModelData() { return x64_modelData.get(); }
void EnsureRendered(const CStateManager&) const; void EnsureRendered(const CStateManager&) const;
void EnsureRendered(const CStateManager&, const zeus::CVector3f&, const zeus::CAABox&) const; void EnsureRendered(const CStateManager&, const zeus::CVector3f&, const zeus::CAABox&) const;
void ProcessSoundEvent(u32 sfxId, float weight, u32 flags, float falloff, float maxDist, float minVol, float maxVol, void ProcessSoundEvent(u32 sfxId, float weight, u32 flags, float falloff, float maxDist, float minVol, float maxVol,
@ -175,7 +175,7 @@ public:
SAdvancementDeltas UpdateAnimation(float, CStateManager&, bool); SAdvancementDeltas UpdateAnimation(float, CStateManager&, bool);
void SetActorLights(std::unique_ptr<CActorLights>&& lights); void SetActorLights(std::unique_ptr<CActorLights>&& lights);
const CActorLights* GetActorLights() const { return x90_actorLights.get(); } const CActorLights* GetActorLights() const { return x90_actorLights.get(); }
CActorLights* ActorLights() { return x90_actorLights.get(); } CActorLights* GetActorLights() { return x90_actorLights.get(); }
bool CanDrawStatic() const; bool CanDrawStatic() const;
bool IsDrawEnabled() const { return xe7_29_drawEnabled; } bool IsDrawEnabled() const { return xe7_29_drawEnabled; }
void SetWorldLightingDirty(bool b) { xe7_28_worldLightingDirty = b; } void SetWorldLightingDirty(bool b) { xe7_28_worldLightingDirty = b; }

View File

@ -309,8 +309,8 @@ bool CActorModelParticles::CItem::UpdateIcePop(float dt, CActor* actor, CStateMa
bool CActorModelParticles::CItem::Update(float dt, CStateManager& mgr) { bool CActorModelParticles::CItem::Update(float dt, CStateManager& mgr) {
CActor* act = static_cast<CActor*>(mgr.ObjectById(x0_id)); CActor* act = static_cast<CActor*>(mgr.ObjectById(x0_id));
if (act && act->HasModelData() && !act->ModelData()->IsNull()) { if (act && act->HasModelData() && !act->GetModelData()->IsNull()) {
xec_particleOffsetScale = act->ModelData()->GetScale(); xec_particleOffsetScale = act->GetModelData()->GetScale();
xf8_iceXf = act->GetTransform(); xf8_iceXf = act->GetTransform();
x4_areaId = act->GetAreaIdAlways(); x4_areaId = act->GetAreaIdAlways();
} else { } else {

View File

@ -18,7 +18,7 @@ CAmbientAI::CAmbientAI(TUniqueId uid, std::string_view name, const CEntityInfo&
, x2dc_defaultAnim(GetModelData()->GetAnimationData()->GetDefaultAnimation()) , x2dc_defaultAnim(GetModelData()->GetAnimationData()->GetDefaultAnimation())
, x2e0_alertAnim(alertAnim) , x2e0_alertAnim(alertAnim)
, x2e4_impactAnim(impactAnim) { , x2e4_impactAnim(impactAnim) {
ModelData()->AnimationData()->EnableLooping(true); GetModelData()->GetAnimationData()->EnableLooping(true);
} }
void CAmbientAI::Accept(IVisitor& visitor) { visitor.Visit(this); } void CAmbientAI::Accept(IVisitor& visitor) { visitor.Visit(this); }
@ -51,8 +51,8 @@ void CAmbientAI::Think(float dt, CStateManager& mgr) {
case EAnimationState::Ready: { case EAnimationState::Ready: {
if (inAlertRange) { if (inAlertRange) {
x2d0_animState = EAnimationState::Alert; x2d0_animState = EAnimationState::Alert;
ModelData()->AnimationData()->SetAnimation(CAnimPlaybackParms(x2e0_alertAnim, -1, 1.f, true), false); GetModelData()->GetAnimationData()->SetAnimation(CAnimPlaybackParms(x2e0_alertAnim, -1, 1.f, true), false);
ModelData()->EnableLooping(true); GetModelData()->EnableLooping(true);
RandomizePlaybackRate(mgr); RandomizePlaybackRate(mgr);
} }
break; break;
@ -60,8 +60,8 @@ void CAmbientAI::Think(float dt, CStateManager& mgr) {
case EAnimationState::Alert: { case EAnimationState::Alert: {
if (!inAlertRange) { if (!inAlertRange) {
x2d0_animState = EAnimationState::Ready; x2d0_animState = EAnimationState::Ready;
ModelData()->AnimationData()->SetAnimation(CAnimPlaybackParms(x2dc_defaultAnim, -1, 1.f, true), false); GetModelData()->GetAnimationData()->SetAnimation(CAnimPlaybackParms(x2dc_defaultAnim, -1, 1.f, true), false);
ModelData()->EnableLooping(true); GetModelData()->EnableLooping(true);
RandomizePlaybackRate(mgr); RandomizePlaybackRate(mgr);
} else if (inImpactRange) { } else if (inImpactRange) {
SendScriptMsgs(EScriptObjectState::Dead, mgr, EScriptObjectMessage::None); SendScriptMsgs(EScriptObjectState::Dead, mgr, EScriptObjectMessage::None);
@ -72,8 +72,8 @@ void CAmbientAI::Think(float dt, CStateManager& mgr) {
case EAnimationState::Impact: { case EAnimationState::Impact: {
if (!x2e8_25_animating) { if (!x2e8_25_animating) {
x2d0_animState = EAnimationState::Ready; x2d0_animState = EAnimationState::Ready;
ModelData()->AnimationData()->SetAnimation(CAnimPlaybackParms(x2dc_defaultAnim, -1, 1.f, true), false); GetModelData()->GetAnimationData()->SetAnimation(CAnimPlaybackParms(x2dc_defaultAnim, -1, 1.f, true), false);
ModelData()->EnableLooping(true); GetModelData()->EnableLooping(true);
RandomizePlaybackRate(mgr); RandomizePlaybackRate(mgr);
} }
break; break;
@ -97,8 +97,8 @@ void CAmbientAI::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CState
if (!GetActive()) if (!GetActive())
SetActive(true); SetActive(true);
x2d0_animState = EAnimationState::Ready; x2d0_animState = EAnimationState::Ready;
ModelData()->AnimationData()->SetAnimation(CAnimPlaybackParms(x2dc_defaultAnim, -1, 1.f, true), false); GetModelData()->GetAnimationData()->SetAnimation(CAnimPlaybackParms(x2dc_defaultAnim, -1, 1.f, true), false);
ModelData()->AnimationData()->EnableLooping(true); GetModelData()->GetAnimationData()->EnableLooping(true);
RandomizePlaybackRate(mgr); RandomizePlaybackRate(mgr);
x2e8_24_dead = false; x2e8_24_dead = false;
x260_healthInfo = x258_initialHealthInfo; x260_healthInfo = x258_initialHealthInfo;
@ -107,8 +107,8 @@ void CAmbientAI::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CState
case EScriptObjectMessage::Damage: { case EScriptObjectMessage::Damage: {
if (GetActive()) { if (GetActive()) {
x2d0_animState = EAnimationState::Impact; x2d0_animState = EAnimationState::Impact;
ModelData()->AnimationData()->SetAnimation(CAnimPlaybackParms(x2e4_impactAnim, -1, 1.f, true), false); GetModelData()->GetAnimationData()->SetAnimation(CAnimPlaybackParms(x2e4_impactAnim, -1, 1.f, true), false);
ModelData()->AnimationData()->EnableLooping(false); GetModelData()->GetAnimationData()->EnableLooping(false);
RandomizePlaybackRate(mgr); RandomizePlaybackRate(mgr);
} }
break; break;
@ -129,7 +129,7 @@ std::optional<zeus::CAABox> CAmbientAI::GetTouchBounds() const {
} }
void CAmbientAI::RandomizePlaybackRate(CStateManager& mgr) { void CAmbientAI::RandomizePlaybackRate(CStateManager& mgr) {
ModelData()->AnimationData()->MultiplyPlaybackRate(0.4f * mgr.GetActiveRandom()->Float() + 0.8f); GetModelData()->GetAnimationData()->MultiplyPlaybackRate(0.4f * mgr.GetActiveRandom()->Float() + 0.8f);
} }
} // namespace urde } // namespace urde

View File

@ -433,7 +433,7 @@ void CFishCloud::Think(float dt, CStateManager& mgr) {
} }
if (x250_27_validModel) { if (x250_27_validModel) {
for (auto& m : x1b0_models) { for (auto& m : x1b0_models) {
m->AnimationData()->SetPlaybackRate(1.f); m->GetAnimationData()->SetPlaybackRate(1.f);
m->AdvanceAnimation(dt, mgr, x4_areaId, true); m->AdvanceAnimation(dt, mgr, x4_areaId, true);
} }
} }
@ -449,7 +449,7 @@ void CFishCloud::AllocateSkinnedModels(CStateManager& mgr, CModelData::EWhichMod
for (auto& m : x1b0_models) { for (auto& m : x1b0_models) {
m->EnableLooping(true); m->EnableLooping(true);
m->AdvanceAnimation( m->AdvanceAnimation(
m->AnimationData()->GetAnimTimeRemaining("Whole Body"sv) * 0.25f * idx, mgr, x4_areaId, true); m->GetAnimationData()->GetAnimTimeRemaining("Whole Body"sv) * 0.25f * idx, mgr, x4_areaId, true);
++idx; ++idx;
} }
x230_whichModel = which; x230_whichModel = which;
@ -487,7 +487,7 @@ void CFishCloud::PreRender(CStateManager& mgr, const zeus::CFrustum& frustum) {
CActor::PreRender(mgr, frustum); CActor::PreRender(mgr, frustum);
if (x250_27_validModel) { if (x250_27_validModel) {
for (auto& m : x1b0_models) { for (auto& m : x1b0_models) {
m->AnimationData()->PreRender(); m->GetAnimationData()->PreRender();
} }
} }
xe4_30_outOfFrustum = false; xe4_30_outOfFrustum = false;
@ -508,7 +508,7 @@ void CFishCloud::RenderBoid(int idx, const CBoid& boid, u32& drawMask,
u32 thisDrawMask = 1u << modelIndex; u32 thisDrawMask = 1u << modelIndex;
if (drawMask & thisDrawMask) { if (drawMask & thisDrawMask) {
drawMask &= ~thisDrawMask; drawMask &= ~thisDrawMask;
mData.AnimationData()->BuildPose(); mData.GetAnimationData()->BuildPose();
} }
model.GetModelInst()->SetAmbientColor(zeus::skWhite); model.GetModelInst()->SetAmbientColor(zeus::skWhite);
CGraphics::SetModelMatrix(zeus::lookAt(boid.x0_pos, boid.x0_pos + boid.xc_vel)); CGraphics::SetModelMatrix(zeus::lookAt(boid.x0_pos, boid.x0_pos + boid.xc_vel));
@ -516,7 +516,7 @@ void CFishCloud::RenderBoid(int idx, const CBoid& boid, u32& drawMask,
CModelFlags thermFlags(0, 0, 3, zeus::skWhite); CModelFlags thermFlags(0, 0, 3, zeus::skWhite);
mData.RenderThermal(zeus::skWhite, zeus::CColor(0.f, 0.25f), thermFlags); mData.RenderThermal(zeus::skWhite, zeus::CColor(0.f, 0.25f), thermFlags);
} else { } else {
mData.AnimationData()->Render(model, flags, {}, nullptr); mData.GetAnimationData()->Render(model, flags, {}, nullptr);
} }
} }

View File

@ -860,7 +860,7 @@ void CGameArea::Validate(CStateManager& mgr) {
PostConstructArea(); PostConstructArea();
if (x4_selfIdx != kInvalidAreaId) if (x4_selfIdx != kInvalidAreaId)
mgr.WorldNC()->MoveAreaToAliveChain(x4_selfIdx); mgr.GetWorld()->MoveAreaToAliveChain(x4_selfIdx);
LoadScriptObjects(mgr); LoadScriptObjects(mgr);
@ -882,7 +882,7 @@ void CGameArea::Validate(CStateManager& mgr) {
} }
void CGameArea::LoadScriptObjects(CStateManager& mgr) { void CGameArea::LoadScriptObjects(CStateManager& mgr) {
CWorldLayerState& layerState = *mgr.LayerState(); CWorldLayerState& layerState = *mgr.WorldLayerState();
u32 layerCount = layerState.GetAreaLayerCount(x4_selfIdx); u32 layerCount = layerState.GetAreaLayerCount(x4_selfIdx);
std::vector<TEditorId> objIds; std::vector<TEditorId> objIds;
for (u32 i = 0; i < layerCount; ++i) { for (u32 i = 0; i < layerCount; ++i) {
@ -1113,7 +1113,7 @@ void CGameArea::VerifyTokenList(CStateManager& stateMgr) {
auto end = xac_deps2.end(); auto end = xac_deps2.end();
for (int lidx = int(xbc_layerDepOffsets.size() - 1); lidx >= 0; --lidx) { for (int lidx = int(xbc_layerDepOffsets.size() - 1); lidx >= 0; --lidx) {
auto begin = xac_deps2.begin() + xbc_layerDepOffsets[lidx]; auto begin = xac_deps2.begin() + xbc_layerDepOffsets[lidx];
if (stateMgr.LayerState()->IsLayerActive(x4_selfIdx, lidx)) { if (stateMgr.WorldLayerState()->IsLayerActive(x4_selfIdx, lidx)) {
for (auto it = begin; it != end; ++it) { for (auto it = begin; it != end; ++it) {
xdc_tokens.push_back(g_SimplePool->GetObj(*it)); xdc_tokens.push_back(g_SimplePool->GetObj(*it));
xdc_tokens.back().Lock(); xdc_tokens.back().Lock();

View File

@ -288,7 +288,7 @@ public:
CAssetId GetAreaAssetId() const { return x84_mrea; } CAssetId GetAreaAssetId() const { return x84_mrea; }
const CAreaFog* GetAreaFog() const { return GetPostConstructed()->x10c4_areaFog.get(); } const CAreaFog* GetAreaFog() const { return GetPostConstructed()->x10c4_areaFog.get(); }
CAreaFog* AreaFog() { return const_cast<CAreaFog*>(GetAreaFog()); } CAreaFog* GetAreaFog() { return const_cast<CAreaFog*>(GetAreaFog()); }
float GetXRayFogDistance() const; float GetXRayFogDistance() const;
EEnvFxType DoesAreaNeedEnvFx() const; EEnvFxType DoesAreaNeedEnvFx() const;
bool DoesAreaNeedSkyNow() const; bool DoesAreaNeedSkyNow() const;
@ -338,8 +338,8 @@ public:
const std::vector<Dock>& GetDocks() const { return xcc_docks; } const std::vector<Dock>& GetDocks() const { return xcc_docks; }
const Dock* GetDock(s32 dock) const { return &xcc_docks[dock]; } const Dock* GetDock(s32 dock) const { return &xcc_docks[dock]; }
Dock* GetDock(s32 dock) { return &xcc_docks[dock]; }
s32 GetDockCount() const { return xcc_docks.size(); } s32 GetDockCount() const { return xcc_docks.size(); }
Dock* DockNC(s32 dock) { return &xcc_docks[dock]; }
bool IsPostConstructed() const { return xf0_24_postConstructed; } bool IsPostConstructed() const { return xf0_24_postConstructed; }
const CPostConstructed* GetPostConstructed() const { const CPostConstructed* GetPostConstructed() const {

View File

@ -396,7 +396,7 @@ bool CKnockBackController::TickDeferredTimer(float dt) {
} }
EKnockBackCharacterState CKnockBackController::GetKnockBackCharacterState(CPatterned& parent) { EKnockBackCharacterState CKnockBackController::GetKnockBackCharacterState(CPatterned& parent) {
if (parent.BodyController()->IsFrozen()) if (parent.GetBodyController()->IsFrozen())
return parent.IsAlive() ? EKnockBackCharacterState::FrozenAlive : EKnockBackCharacterState::FrozenDead; return parent.IsAlive() ? EKnockBackCharacterState::FrozenAlive : EKnockBackCharacterState::FrozenDead;
return parent.IsAlive() ? EKnockBackCharacterState::Alive : EKnockBackCharacterState::Dead; return parent.IsAlive() ? EKnockBackCharacterState::Alive : EKnockBackCharacterState::Dead;
} }
@ -409,23 +409,23 @@ void CKnockBackController::ValidateState(CPatterned& parent) {
EKnockBackAnimationState useState = EKnockBackAnimationState::Invalid; EKnockBackAnimationState useState = EKnockBackAnimationState::Invalid;
if (parent.IsAlive()) { if (parent.IsAlive()) {
if (parent.BodyController()->HasBodyState(pas::EAnimationState::Hurled) && x80_availableStates.test(3) && if (parent.GetBodyController()->HasBodyState(pas::EAnimationState::Hurled) && x80_availableStates.test(3) &&
x4_activeParms.x0_animState >= EKnockBackAnimationState::Hurled) { x4_activeParms.x0_animState >= EKnockBackAnimationState::Hurled) {
useState = EKnockBackAnimationState::Hurled; useState = EKnockBackAnimationState::Hurled;
} else if (parent.BodyController()->HasBodyState(pas::EAnimationState::KnockBack) && x80_availableStates.test(2) && } else if (parent.GetBodyController()->HasBodyState(pas::EAnimationState::KnockBack) && x80_availableStates.test(2) &&
x4_activeParms.x0_animState >= EKnockBackAnimationState::KnockBack) { x4_activeParms.x0_animState >= EKnockBackAnimationState::KnockBack) {
useState = EKnockBackAnimationState::KnockBack; useState = EKnockBackAnimationState::KnockBack;
} else if (parent.BodyController()->HasBodyState(pas::EAnimationState::AdditiveFlinch) && } else if (parent.GetBodyController()->HasBodyState(pas::EAnimationState::AdditiveFlinch) &&
x80_availableStates.test(1) && x4_activeParms.x0_animState >= EKnockBackAnimationState::Flinch) { x80_availableStates.test(1) && x4_activeParms.x0_animState >= EKnockBackAnimationState::Flinch) {
useState = EKnockBackAnimationState::Flinch; useState = EKnockBackAnimationState::Flinch;
} }
} else { } else {
if (parent.BodyController()->HasBodyState(pas::EAnimationState::Fall) && x80_availableStates.test(4) && if (parent.GetBodyController()->HasBodyState(pas::EAnimationState::Fall) && x80_availableStates.test(4) &&
(x4_activeParms.x0_animState >= EKnockBackAnimationState::Fall || (x4_activeParms.x0_animState >= EKnockBackAnimationState::Fall ||
(!parent.BodyController()->HasBodyState(pas::EAnimationState::Hurled) && (!parent.GetBodyController()->HasBodyState(pas::EAnimationState::Hurled) &&
x4_activeParms.x0_animState >= EKnockBackAnimationState::Hurled))) { x4_activeParms.x0_animState >= EKnockBackAnimationState::Hurled))) {
useState = EKnockBackAnimationState::Fall; useState = EKnockBackAnimationState::Fall;
} else if (parent.BodyController()->HasBodyState(pas::EAnimationState::Hurled) && x80_availableStates.test(3) && } else if (parent.GetBodyController()->HasBodyState(pas::EAnimationState::Hurled) && x80_availableStates.test(3) &&
x4_activeParms.x0_animState >= EKnockBackAnimationState::Hurled) { x4_activeParms.x0_animState >= EKnockBackAnimationState::Hurled) {
useState = EKnockBackAnimationState::Hurled; useState = EKnockBackAnimationState::Hurled;
} }
@ -483,26 +483,26 @@ void CKnockBackController::DoKnockBackAnimation(const zeus::CVector3f& backVec,
hurlVel = std::sqrt(parent.GetGravityConstant() * 0.5f * hurlVel); hurlVel = std::sqrt(parent.GetGravityConstant() * 0.5f * hurlVel);
zeus::CVector3f backUpVec = backVec + backVec.magnitude() * zeus::skUp; zeus::CVector3f backUpVec = backVec + backVec.magnitude() * zeus::skUp;
if (backUpVec.canBeNormalized()) { if (backUpVec.canBeNormalized()) {
parent.BodyController()->GetCommandMgr().DeliverCmd(CBCHurledCmd(-backVec, backUpVec.normalized() * hurlVel)); parent.GetBodyController()->GetCommandMgr().DeliverCmd(CBCHurledCmd(-backVec, backUpVec.normalized() * hurlVel));
parent.SetMomentumWR({0.f, 0.f, parent.GetGravityConstant() * -parent.GetMass()}); parent.SetMomentumWR({0.f, 0.f, parent.GetGravityConstant() * -parent.GetMass()});
} }
break; break;
} }
case EKnockBackAnimationState::Fall: { case EKnockBackAnimationState::Fall: {
parent.BodyController()->GetCommandMgr().DeliverCmd(CBCKnockDownCmd(-backVec, x7c_severity)); parent.GetBodyController()->GetCommandMgr().DeliverCmd(CBCKnockDownCmd(-backVec, x7c_severity));
break; break;
} }
case EKnockBackAnimationState::KnockBack: { case EKnockBackAnimationState::KnockBack: {
parent.BodyController()->GetCommandMgr().DeliverCmd(CBCKnockBackCmd(-backVec, x7c_severity)); parent.GetBodyController()->GetCommandMgr().DeliverCmd(CBCKnockBackCmd(-backVec, x7c_severity));
break; break;
} }
case EKnockBackAnimationState::Flinch: { case EKnockBackAnimationState::Flinch: {
std::pair<float, s32> bestAnim = std::pair<float, s32> bestAnim =
parent.BodyController()->GetPASDatabase().FindBestAnimation(CPASAnimParmData(23), *mgr.GetActiveRandom(), -1); parent.GetBodyController()->GetPASDatabase().FindBestAnimation(CPASAnimParmData(23), *mgr.GetActiveRandom(), -1);
if (bestAnim.first > 0.f) { if (bestAnim.first > 0.f) {
parent.ModelData()->AnimationData()->AddAdditiveAnimation(bestAnim.second, 1.f, false, true); parent.GetModelData()->GetAnimationData()->AddAdditiveAnimation(bestAnim.second, 1.f, false, true);
x64_flinchRemTime = x64_flinchRemTime =
std::max(parent.ModelData()->AnimationData()->GetAnimationDuration(bestAnim.second), x64_flinchRemTime); std::max(parent.GetModelData()->GetAnimationData()->GetAnimationDuration(bestAnim.second), x64_flinchRemTime);
} }
break; break;
} }
@ -562,8 +562,8 @@ void CKnockBackController::Update(float dt, CStateManager& mgr, CPatterned& pare
x64_flinchRemTime -= dt; x64_flinchRemTime -= dt;
if (TickDeferredTimer(dt)) if (TickDeferredTimer(dt))
DoDeferredKnockBack(mgr, parent); DoDeferredKnockBack(mgr, parent);
if (x82_26_locomotionDuringElectrocution && parent.BodyController()->IsElectrocuting()) if (x82_26_locomotionDuringElectrocution && parent.GetBodyController()->IsElectrocuting())
parent.BodyController()->GetCommandMgr().DeliverCmd(CBodyStateCmd(EBodyStateCmd::Locomotion)); parent.GetBodyController()->GetCommandMgr().DeliverCmd(CBodyStateCmd(EBodyStateCmd::Locomotion));
} }
EKnockBackWeaponType CKnockBackController::GetKnockBackWeaponType(const CDamageInfo& info, EWeaponType wType, EKnockBackWeaponType CKnockBackController::GetKnockBackWeaponType(const CDamageInfo& info, EWeaponType wType,

View File

@ -985,7 +985,7 @@ void CMorphBall::EnterMorphBallState(CStateManager& mgr) {
UpdateEffects(0.f, mgr); UpdateEffects(0.f, mgr);
x187c_spiderBallState = ESpiderBallState::Inactive; x187c_spiderBallState = ESpiderBallState::Inactive;
CAnimPlaybackParms parms(0, -1, 1.f, true); CAnimPlaybackParms parms(0, -1, 1.f, true);
x58_ballModel->AnimationData()->SetAnimation(parms, false); x58_ballModel->GetAnimationData()->SetAnimation(parms, false);
x1e20_ballAnimIdx = 0; x1e20_ballAnimIdx = 0;
StopEffects(); StopEffects();
x1c30_boostOverLightFactor = 0.f; x1c30_boostOverLightFactor = 0.f;
@ -1140,7 +1140,7 @@ void CMorphBall::ComputeBoostBallMovement(const CFinalInput& input, CStateManage
x187c_spiderBallState != ESpiderBallState::Active) { x187c_spiderBallState != ESpiderBallState::Active) {
if (x1e20_ballAnimIdx == 0) { if (x1e20_ballAnimIdx == 0) {
CAnimPlaybackParms parms(1, -1, 1.f, true); CAnimPlaybackParms parms(1, -1, 1.f, true);
x58_ballModel->AnimationData()->SetAnimation(parms, false); x58_ballModel->GetAnimationData()->SetAnimation(parms, false);
x1e20_ballAnimIdx = 1; x1e20_ballAnimIdx = 1;
x1e24_boostSfxHandle = CSfxManager::SfxStart(SFXsam_ball_charge_lp, 1.f, 0.f, true, 0x7f, true, kInvalidAreaId); x1e24_boostSfxHandle = CSfxManager::SfxStart(SFXsam_ball_charge_lp, 1.f, 0.f, true, 0x7f, true, kInvalidAreaId);
} }
@ -1150,7 +1150,7 @@ void CMorphBall::ComputeBoostBallMovement(const CFinalInput& input, CStateManage
} else { } else {
if (x1e20_ballAnimIdx == 1) { if (x1e20_ballAnimIdx == 1) {
CAnimPlaybackParms parms(0, -1, 1.f, true); CAnimPlaybackParms parms(0, -1, 1.f, true);
x58_ballModel->AnimationData()->SetAnimation(parms, false); x58_ballModel->GetAnimationData()->SetAnimation(parms, false);
x1e20_ballAnimIdx = 0; x1e20_ballAnimIdx = 0;
CSfxManager::RemoveEmitter(x1e24_boostSfxHandle); CSfxManager::RemoveEmitter(x1e24_boostSfxHandle);
if (x1de8_boostChargeTime >= g_tweakBall->GetBoostBallMinChargeTime()) { if (x1de8_boostChargeTime >= g_tweakBall->GetBoostBallMinChargeTime()) {
@ -1251,7 +1251,7 @@ void CMorphBall::CancelBoosting() {
x1df4_boostDrainTime = 0.f; x1df4_boostDrainTime = 0.f;
if (x1e20_ballAnimIdx == 1) { if (x1e20_ballAnimIdx == 1) {
CAnimPlaybackParms parms(0, -1, 1.f, true); CAnimPlaybackParms parms(0, -1, 1.f, true);
x58_ballModel->AnimationData()->SetAnimation(parms, false); x58_ballModel->GetAnimationData()->SetAnimation(parms, false);
x1e20_ballAnimIdx = 0; x1e20_ballAnimIdx = 0;
CSfxManager::SfxStop(x1e24_boostSfxHandle); CSfxManager::SfxStop(x1e24_boostSfxHandle);
} }
@ -1350,9 +1350,9 @@ void CMorphBall::PreRender(CStateManager& mgr, const zeus::CFrustum& frustum) {
if (x1c34_boostLightFactor == 1.f) if (x1c34_boostLightFactor == 1.f)
return; return;
x0_player.ActorLights()->SetFindShadowLight(x1e44_damageEffect < 0.25f); x0_player.GetActorLights()->SetFindShadowLight(x1e44_damageEffect < 0.25f);
x0_player.ActorLights()->SetShadowDynamicRangeThreshold(0.05f); x0_player.GetActorLights()->SetShadowDynamicRangeThreshold(0.05f);
x0_player.ActorLights()->SetDirty(); x0_player.GetActorLights()->SetDirty();
CCollidableSphere sphere = x38_collisionSphere; CCollidableSphere sphere = x38_collisionSphere;
sphere.SetSphereCenter(zeus::skZero3f); sphere.SetSphereCenter(zeus::skZero3f);
@ -1361,11 +1361,11 @@ void CMorphBall::PreRender(CStateManager& mgr, const zeus::CFrustum& frustum) {
if (x0_player.GetAreaIdAlways() != kInvalidAreaId) { if (x0_player.GetAreaIdAlways() != kInvalidAreaId) {
const CGameArea* area = mgr.GetWorld()->GetAreaAlways(x0_player.GetAreaIdAlways()); const CGameArea* area = mgr.GetWorld()->GetAreaAlways(x0_player.GetAreaIdAlways());
if (area->IsPostConstructed()) if (area->IsPostConstructed())
x0_player.ActorLights()->BuildAreaLightList(mgr, *area, ballAABB); x0_player.GetActorLights()->BuildAreaLightList(mgr, *area, ballAABB);
} }
x0_player.ActorLights()->BuildDynamicLightList(mgr, ballAABB); x0_player.GetActorLights()->BuildDynamicLightList(mgr, ballAABB);
if (x0_player.ActorLights()->HasShadowLight()) { if (x0_player.GetActorLights()->HasShadowLight()) {
CCollidableSphere sphere = x38_collisionSphere; CCollidableSphere sphere = x38_collisionSphere;
sphere.SetSphereCenter(zeus::skZero3f); sphere.SetSphereCenter(zeus::skZero3f);
x1c14_worldShadow->BuildLightShadowTexture(mgr, x0_player.GetAreaIdAlways(), x1c14_worldShadow->BuildLightShadowTexture(mgr, x0_player.GetAreaIdAlways(),
@ -1375,17 +1375,17 @@ void CMorphBall::PreRender(CStateManager& mgr, const zeus::CFrustum& frustum) {
x1c14_worldShadow->ResetBlur(); x1c14_worldShadow->ResetBlur();
} }
zeus::CColor ambColor = x0_player.ActorLights()->GetAmbientColor(); zeus::CColor ambColor = x0_player.GetActorLights()->GetAmbientColor();
ambColor.a() = 1.f; ambColor.a() = 1.f;
x0_player.ActorLights()->SetAmbientColor(zeus::CColor::lerp(ambColor, zeus::skWhite, x1c34_boostLightFactor)); x0_player.GetActorLights()->SetAmbientColor(zeus::CColor::lerp(ambColor, zeus::skWhite, x1c34_boostLightFactor));
*x1c18_actorLights = *x0_player.GetActorLights(); *x1c18_actorLights = *x0_player.GetActorLights();
ambColor = x0_player.ActorLights()->GetAmbientColor(); ambColor = x0_player.GetActorLights()->GetAmbientColor();
ambColor.a() = 1.f; ambColor.a() = 1.f;
x1c18_actorLights->SetAmbientColor( x1c18_actorLights->SetAmbientColor(
zeus::CColor::lerp(ambColor, zeus::skWhite, std::max(x1c38_spiderLightFactor, x1c34_boostLightFactor))); zeus::CColor::lerp(ambColor, zeus::skWhite, std::max(x1c38_spiderLightFactor, x1c34_boostLightFactor)));
if (CAnimData* animData = x58_ballModel->AnimationData()) if (CAnimData* animData = x58_ballModel->GetAnimationData())
animData->PreRender(); animData->PreRender();
} }

View File

@ -1162,7 +1162,7 @@ void CPatterned::UpdateAlphaDelta(float dt, CStateManager& mgr) {
} }
x94_simpleShadow->SetUserAlpha(alpha); x94_simpleShadow->SetUserAlpha(alpha);
SetModelAlpha(alpha); SetModelAlpha(alpha);
x64_modelData->AnimationData()->GetParticleDB().SetModulationColorAllActiveEffects(zeus::CColor(1.f, alpha)); x64_modelData->GetAnimationData()->GetParticleDB().SetModulationColorAllActiveEffects(zeus::CColor(1.f, alpha));
} }
float CPatterned::CalcDyingThinkRate() const { float CPatterned::CalcDyingThinkRate() const {
@ -1566,7 +1566,7 @@ void CPatterned::AddToRenderer(const zeus::CFrustum& frustum, const CStateManage
if (x64_modelData && !x64_modelData->IsNull()) { if (x64_modelData && !x64_modelData->IsNull()) {
int mask, target; int mask, target;
mgr.GetCharacterRenderMaskAndTarget(x402_31_thawed, mask, target); mgr.GetCharacterRenderMaskAndTarget(x402_31_thawed, mask, target);
if (CAnimData* aData = x64_modelData->AnimationData()) if (CAnimData* aData = x64_modelData->GetAnimationData())
aData->GetParticleDB().AddToRendererClippedMasked(frustum, mask, target); aData->GetParticleDB().AddToRendererClippedMasked(frustum, mask, target);
} }
} }
@ -1576,7 +1576,7 @@ void CPatterned::AddToRenderer(const zeus::CFrustum& frustum, const CStateManage
void CPatterned::RenderIceModelWithFlags(const CModelFlags& flags) const { void CPatterned::RenderIceModelWithFlags(const CModelFlags& flags) const {
CModelFlags useFlags = flags; CModelFlags useFlags = flags;
useFlags.x1_matSetIdx = 0; useFlags.x1_matSetIdx = 0;
CAnimData* animData = x64_modelData->AnimationData(); CAnimData* animData = x64_modelData->GetAnimationData();
if (CMorphableSkinnedModel* iceModel = animData->IceModel().GetObj()) if (CMorphableSkinnedModel* iceModel = animData->IceModel().GetObj())
animData->Render(*iceModel, useFlags, {*x510_vertexMorph}, iceModel->GetMorphMagnitudes()); animData->Render(*iceModel, useFlags, {*x510_vertexMorph}, iceModel->GetMorphMagnitudes());
} }
@ -1690,7 +1690,7 @@ void CPatterned::PhazeOut(CStateManager& mgr) {
SendScriptMsgs(EScriptObjectState::DeathRattle, mgr, EScriptObjectMessage::None); SendScriptMsgs(EScriptObjectState::DeathRattle, mgr, EScriptObjectMessage::None);
x401_27_phazingOut = true; x401_27_phazingOut = true;
x450_bodyController->SetPlaybackRate(0.f); x450_bodyController->SetPlaybackRate(0.f);
x64_modelData->AnimationData()->GetParticleDB().SetUpdatesEnabled(false); x64_modelData->GetAnimationData()->GetParticleDB().SetUpdatesEnabled(false);
} }
bool CPatterned::ApplyBoneTracking() const { bool CPatterned::ApplyBoneTracking() const {

View File

@ -361,7 +361,7 @@ public:
void BuildBodyController(EBodyType); void BuildBodyController(EBodyType);
const CBodyController* GetBodyController() const { return x450_bodyController.get(); } const CBodyController* GetBodyController() const { return x450_bodyController.get(); }
CBodyController* BodyController() { return x450_bodyController.get(); } CBodyController* GetBodyController() { return x450_bodyController.get(); }
const CKnockBackController& GetKnockBackController() const { return x460_knockBackController; } const CKnockBackController& GetKnockBackController() const { return x460_knockBackController; }
void SetupPlayerCollision(bool); void SetupPlayerCollision(bool);
void LaunchProjectile(const zeus::CTransform& gunXf, CStateManager& mgr, int maxAllowed, EProjectileAttrib attrib, void LaunchProjectile(const zeus::CTransform& gunXf, CStateManager& mgr, int maxAllowed, EProjectileAttrib attrib,

View File

@ -124,7 +124,7 @@ CPlayer::CPlayer(TUniqueId uid, const zeus::CTransform& xf, const zeus::CAABox&
void CPlayer::InitializeBallTransition() { void CPlayer::InitializeBallTransition() {
if (x64_modelData && x64_modelData->HasAnimData()) if (x64_modelData && x64_modelData->HasAnimData())
x64_modelData->AnimationData()->SetAnimation(CAnimPlaybackParms(2, -1, 1.f, true), false); x64_modelData->GetAnimationData()->SetAnimation(CAnimPlaybackParms(2, -1, 1.f, true), false);
} }
bool CPlayer::IsTransparent() const { return x588_alpha < 1.f; } bool CPlayer::IsTransparent() const { return x588_alpha < 1.f; }
@ -173,8 +173,8 @@ void CPlayer::TransitionToMorphBallState(float dt, CStateManager& mgr) {
x58c_transitionVel = x138_velocity.magnitude(); x58c_transitionVel = x138_velocity.magnitude();
if (x64_modelData && x64_modelData->HasAnimData()) { if (x64_modelData && x64_modelData->HasAnimData()) {
CAnimPlaybackParms parms(x584_ballTransitionAnim, -1, 1.f, true); CAnimPlaybackParms parms(x584_ballTransitionAnim, -1, 1.f, true);
x64_modelData->AnimationData()->SetAnimation(parms, false); x64_modelData->GetAnimationData()->SetAnimation(parms, false);
x64_modelData->AnimationData()->SetAnimDir(CAnimData::EAnimDir::Forward); x64_modelData->GetAnimationData()->SetAnimDir(CAnimData::EAnimDir::Forward);
} }
x64_modelData->EnableLooping(false); x64_modelData->EnableLooping(false);
x64_modelData->Touch(mgr, 0); x64_modelData->Touch(mgr, 0);
@ -224,8 +224,8 @@ void CPlayer::TransitionFromMorphBallState(CStateManager& mgr) {
if (x64_modelData && x64_modelData->HasAnimData()) { if (x64_modelData && x64_modelData->HasAnimData()) {
CAnimPlaybackParms parms(x584_ballTransitionAnim, -1, 1.f, true); CAnimPlaybackParms parms(x584_ballTransitionAnim, -1, 1.f, true);
x64_modelData->AnimationData()->SetAnimation(parms, false); x64_modelData->GetAnimationData()->SetAnimation(parms, false);
x64_modelData->AnimationData()->SetAnimDir(CAnimData::EAnimDir::Forward); x64_modelData->GetAnimationData()->SetAnimDir(CAnimData::EAnimDir::Forward);
} }
x64_modelData->EnableLooping(false); x64_modelData->EnableLooping(false);
@ -346,8 +346,8 @@ void CPlayer::UpdateMorphBallTransition(float dt, CStateManager& mgr) {
x584_ballTransitionAnim = GetNextBallTransitionAnim(dt, loop, mgr); x584_ballTransitionAnim = GetNextBallTransitionAnim(dt, loop, mgr);
if (x64_modelData && x64_modelData->HasAnimData()) { if (x64_modelData && x64_modelData->HasAnimData()) {
CAnimPlaybackParms parms(x584_ballTransitionAnim, -1, 1.f, true); CAnimPlaybackParms parms(x584_ballTransitionAnim, -1, 1.f, true);
x64_modelData->AnimationData()->SetAnimation(parms, false); x64_modelData->GetAnimationData()->SetAnimation(parms, false);
x64_modelData->AnimationData()->EnableLooping(loop); x64_modelData->GetAnimationData()->EnableLooping(loop);
} }
} }
} else if (x584_ballTransitionAnim != 5 && x584_ballTransitionAnim != 7) } else if (x584_ballTransitionAnim != 5 && x584_ballTransitionAnim != 7)
@ -361,8 +361,8 @@ void CPlayer::UpdateMorphBallTransition(float dt, CStateManager& mgr) {
x584_ballTransitionAnim != 7) { x584_ballTransitionAnim != 7) {
x584_ballTransitionAnim = nextAnim; x584_ballTransitionAnim = nextAnim;
CAnimPlaybackParms parms(x584_ballTransitionAnim, -1, 1.f, true); CAnimPlaybackParms parms(x584_ballTransitionAnim, -1, 1.f, true);
x64_modelData->AnimationData()->SetAnimation(parms, false); x64_modelData->GetAnimationData()->SetAnimation(parms, false);
x64_modelData->AnimationData()->EnableLooping(loop); x64_modelData->GetAnimationData()->EnableLooping(loop);
x58c_transitionVel = velMag; x58c_transitionVel = velMag;
} }
} }
@ -1317,7 +1317,7 @@ void CPlayer::PreRender(CStateManager& mgr, const zeus::CFrustum& frustum) {
} }
for (auto& model : x730_transitionModels) for (auto& model : x730_transitionModels)
model->AnimationData()->PreRender(); model->GetAnimationData()->PreRender();
if (x2f4_cameraState != EPlayerCameraState::FirstPerson) if (x2f4_cameraState != EPlayerCameraState::FirstPerson)
CActor::PreRender(mgr, frustum); CActor::PreRender(mgr, frustum);
@ -5323,10 +5323,10 @@ void CPlayer::SetHudDisable(float staticTimer, float outSpeed, float inSpeed) {
void CPlayer::SetIntoBallReadyAnimation(CStateManager& mgr) { void CPlayer::SetIntoBallReadyAnimation(CStateManager& mgr) {
CAnimPlaybackParms parms(2, -1, 1.f, true); CAnimPlaybackParms parms(2, -1, 1.f, true);
x64_modelData->AnimationData()->SetAnimation(parms, false); x64_modelData->GetAnimationData()->SetAnimation(parms, false);
x64_modelData->AnimationData()->EnableLooping(false); x64_modelData->GetAnimationData()->EnableLooping(false);
x64_modelData->AdvanceAnimation(0.f, mgr, kInvalidAreaId, true); x64_modelData->AdvanceAnimation(0.f, mgr, kInvalidAreaId, true);
x64_modelData->AnimationData()->EnableAnimation(false); x64_modelData->GetAnimationData()->EnableAnimation(false);
} }
void CPlayer::LeaveMorphBallState(CStateManager& mgr) { void CPlayer::LeaveMorphBallState(CStateManager& mgr) {

View File

@ -68,7 +68,7 @@ void CScriptActorKeyframe::Think(float dt, CStateManager& mgr) {
CEntity* ent = mgr.ObjectById(mgr.GetIdForScript(conn.x8_objId)); CEntity* ent = mgr.ObjectById(mgr.GetIdForScript(conn.x8_objId));
if (TCastToPtr<CScriptActor> act = ent) { if (TCastToPtr<CScriptActor> act = ent) {
if (act->HasModelData() && act->GetModelData()->HasAnimData()) { if (act->HasModelData() && act->GetModelData()->HasAnimData()) {
CAnimData* animData = act->ModelData()->AnimationData(); CAnimData* animData = act->GetModelData()->GetAnimationData();
if (animData->IsAdditiveAnimation(x34_animationId)) if (animData->IsAdditiveAnimation(x34_animationId))
animData->DelAdditiveAnimation(x34_animationId); animData->DelAdditiveAnimation(x34_animationId);
@ -76,12 +76,12 @@ void CScriptActorKeyframe::Think(float dt, CStateManager& mgr) {
animData->EnableLooping(false); animData->EnableLooping(false);
} }
} else if (TCastToPtr<CPatterned> ai = ent) { } else if (TCastToPtr<CPatterned> ai = ent) {
CAnimData* animData = ai->ModelData()->AnimationData(); CAnimData* animData = ai->GetModelData()->GetAnimationData();
if (animData->IsAdditiveAnimation(x34_animationId)) { if (animData->IsAdditiveAnimation(x34_animationId)) {
animData->DelAdditiveAnimation(x34_animationId); animData->DelAdditiveAnimation(x34_animationId);
} else if (ai->GetBodyController()->GetCurrentStateId() == pas::EAnimationState::Scripted && } else if (ai->GetBodyController()->GetCurrentStateId() == pas::EAnimationState::Scripted &&
animData->GetDefaultAnimation() == x34_animationId) { animData->GetDefaultAnimation() == x34_animationId) {
ai->BodyController()->GetCommandMgr().DeliverCmd(CBodyStateCmd(EBodyStateCmd::ExitState)); ai->GetBodyController()->GetCommandMgr().DeliverCmd(CBodyStateCmd(EBodyStateCmd::ExitState));
} }
} }
} }
@ -102,21 +102,21 @@ void CScriptActorKeyframe::UpdateEntity(TUniqueId uid, CStateManager& mgr) {
mgr.SendScriptMsg(act, GetUniqueId(), EScriptObjectMessage::Activate); mgr.SendScriptMsg(act, GetUniqueId(), EScriptObjectMessage::Activate);
act->SetDrawFlags({0, 0, 3, zeus::skWhite}); act->SetDrawFlags({0, 0, 3, zeus::skWhite});
if (act->HasModelData() && act->GetModelData()->HasAnimData()) { if (act->HasModelData() && act->GetModelData()->HasAnimData()) {
CAnimData* animData = act->ModelData()->AnimationData(); CAnimData* animData = act->GetModelData()->GetAnimationData();
if (animData->IsAdditiveAnimation(x34_animationId)) { if (animData->IsAdditiveAnimation(x34_animationId)) {
animData->AddAdditiveAnimation(x34_animationId, 1.f, x44_24_looping, x44_26_fadeOut); animData->AddAdditiveAnimation(x34_animationId, 1.f, x44_24_looping, x44_26_fadeOut);
} else { } else {
animData->SetAnimation(CAnimPlaybackParms(x34_animationId, -1, 1.f, true), false); animData->SetAnimation(CAnimPlaybackParms(x34_animationId, -1, 1.f, true), false);
act->ModelData()->EnableLooping(x44_24_looping); act->GetModelData()->EnableLooping(x44_24_looping);
animData->MultiplyPlaybackRate(x3c_playbackRate); animData->MultiplyPlaybackRate(x3c_playbackRate);
} }
} }
} else if (TCastToPtr<CPatterned> ai = ent) { } else if (TCastToPtr<CPatterned> ai = ent) {
CAnimData* animData = ai->ModelData()->AnimationData(); CAnimData* animData = ai->GetModelData()->GetAnimationData();
if (animData->IsAdditiveAnimation(x34_animationId)) { if (animData->IsAdditiveAnimation(x34_animationId)) {
animData->AddAdditiveAnimation(x34_animationId, 1.f, x44_24_looping, x44_26_fadeOut); animData->AddAdditiveAnimation(x34_animationId, 1.f, x44_24_looping, x44_26_fadeOut);
} else { } else {
ai->BodyController()->GetCommandMgr().DeliverCmd( ai->GetBodyController()->GetCommandMgr().DeliverCmd(
CBCScriptedCmd(x34_animationId, x44_24_looping, x44_27_timedLoop, x38_initialLifetime)); CBCScriptedCmd(x34_animationId, x44_24_looping, x44_27_timedLoop, x38_initialLifetime));
} }
} }

View File

@ -27,11 +27,11 @@ void CScriptAreaAttributes::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId
return; return;
if (msg == EScriptObjectMessage::InitializedInArea) { if (msg == EScriptObjectMessage::InitializedInArea) {
CGameArea* area = stateMgr.WorldNC()->GetArea(x4_areaId); CGameArea* area = stateMgr.GetWorld()->GetArea(x4_areaId);
area->SetAreaAttributes(this); area->SetAreaAttributes(this);
stateMgr.GetEnvFxManager()->SetFxDensity(500, x3c_envFxDensity); stateMgr.GetEnvFxManager()->SetFxDensity(500, x3c_envFxDensity);
} else if (msg == EScriptObjectMessage::Deleted) { } else if (msg == EScriptObjectMessage::Deleted) {
CGameArea* area = stateMgr.WorldNC()->GetArea(x4_areaId); CGameArea* area = stateMgr.GetWorld()->GetArea(x4_areaId);
if (!area->IsPostConstructed()) if (!area->IsPostConstructed())
return; return;

View File

@ -38,7 +38,7 @@ void CScriptDistanceFog::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId obj
if (msg == EScriptObjectMessage::InitializedInArea) { if (msg == EScriptObjectMessage::InitializedInArea) {
if (!x60_explicit) if (!x60_explicit)
return; return;
CGameArea::CAreaFog* fog = stateMgr.WorldNC()->GetArea(x4_areaId)->AreaFog(); CGameArea::CAreaFog* fog = stateMgr.GetWorld()->GetArea(x4_areaId)->GetAreaFog();
if (x34_mode == ERglFogMode::None) if (x34_mode == ERglFogMode::None)
fog->DisableFog(); fog->DisableFog();
else else
@ -47,18 +47,18 @@ void CScriptDistanceFog::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId obj
if (!x61_nonZero) if (!x61_nonZero)
return; return;
CGameArea::CAreaFog* fog = stateMgr.WorldNC()->GetArea(x4_areaId)->AreaFog(); CGameArea::CAreaFog* fog = stateMgr.GetWorld()->GetArea(x4_areaId)->GetAreaFog();
if (x34_mode == ERglFogMode::None) if (x34_mode == ERglFogMode::None)
fog->RollFogOut(x48_rangeDelta.x(), x44_colorDelta, x38_color); fog->RollFogOut(x48_rangeDelta.x(), x44_colorDelta, x38_color);
else else
fog->FadeFog(x34_mode, x38_color, x3c_range, x44_colorDelta, x48_rangeDelta); fog->FadeFog(x34_mode, x38_color, x3c_range, x44_colorDelta, x48_rangeDelta);
if (zeus::close_enough(x54_thermalSpeed, 0.f) && !zeus::close_enough(x5c_xraySpeed, 0.f)) { if (zeus::close_enough(x54_thermalSpeed, 0.f) && !zeus::close_enough(x5c_xraySpeed, 0.f)) {
CWorld* world = stateMgr.WorldNC(); CWorld* world = stateMgr.GetWorld();
CGameArea* area = world->GetArea(x4_areaId); CGameArea* area = world->GetArea(x4_areaId);
area->SetXRaySpeedAndTarget(x5c_xraySpeed, x58_xrayTarget); area->SetXRaySpeedAndTarget(x5c_xraySpeed, x58_xrayTarget);
} else { } else {
CWorld* world = stateMgr.WorldNC(); CWorld* world = stateMgr.GetWorld();
CGameArea* area = world->GetArea(x4_areaId); CGameArea* area = world->GetArea(x4_areaId);
area->SetThermalSpeedAndTarget(x54_thermalSpeed, x50_thermalTarget); area->SetThermalSpeedAndTarget(x54_thermalSpeed, x50_thermalTarget);
} }

View File

@ -38,10 +38,10 @@ void CScriptDock::Think(float dt, CStateManager& mgr) {
x268_24_dockReferenced = false; x268_24_dockReferenced = false;
} }
const IGameArea::Dock* gameDock = mgr.WorldNC()->GetArea(x260_area)->GetDock(x25c_dock); const IGameArea::Dock* gameDock = mgr.GetWorld()->GetArea(x260_area)->GetDock(x25c_dock);
TAreaId connArea = gameDock->GetConnectedAreaId(gameDock->GetReferenceCount()); TAreaId connArea = gameDock->GetConnectedAreaId(gameDock->GetReferenceCount());
if (connArea != kInvalidAreaId) { if (connArea != kInvalidAreaId) {
bool connPostConstructed = mgr.WorldNC()->GetArea(connArea)->IsPostConstructed(); bool connPostConstructed = mgr.GetWorld()->GetArea(connArea)->IsPostConstructed();
if (x268_26_areaPostConstructed != connPostConstructed) { if (x268_26_areaPostConstructed != connPostConstructed) {
x268_26_areaPostConstructed = connPostConstructed; x268_26_areaPostConstructed = connPostConstructed;
if (connPostConstructed) if (connPostConstructed)
@ -60,13 +60,13 @@ void CScriptDock::Think(float dt, CStateManager& mgr) {
else if (x264_dockState == EDockState::EnterNextArea) { else if (x264_dockState == EDockState::EnterNextArea) {
CPlayer& player = mgr.GetPlayer(); CPlayer& player = mgr.GetPlayer();
if (HasPointCrossedDock(mgr, player.GetTranslation())) { if (HasPointCrossedDock(mgr, player.GetTranslation())) {
IGameArea::Dock* dock = mgr.WorldNC()->GetArea(mgr.GetNextAreaId())->DockNC(x25c_dock); IGameArea::Dock* dock = mgr.GetWorld()->GetArea(mgr.GetNextAreaId())->GetDock(x25c_dock);
TAreaId aid = dock->GetConnectedAreaId(dock->GetReferenceCount()); TAreaId aid = dock->GetConnectedAreaId(dock->GetReferenceCount());
if (aid != kInvalidAreaId && mgr.WorldNC()->GetArea(aid)->GetActive()) { if (aid != kInvalidAreaId && mgr.GetWorld()->GetArea(aid)->GetActive()) {
mgr.SetCurrentAreaId(aid); mgr.SetCurrentAreaId(aid);
s32 otherDock = dock->GetOtherDockNumber(dock->GetReferenceCount()); s32 otherDock = dock->GetOtherDockNumber(dock->GetReferenceCount());
if (CObjectList* objs = mgr.WorldNC()->GetArea(aid)->GetAreaObjects()) { if (CObjectList* objs = mgr.GetWorld()->GetArea(aid)->GetAreaObjects()) {
for (CEntity* ent : *objs) { for (CEntity* ent : *objs) {
TCastToPtr<CScriptDock> dock(ent); TCastToPtr<CScriptDock> dock(ent);
if (dock && dock->GetDockId() == otherDock) if (dock && dock->GetDockId() == otherDock)
@ -83,10 +83,10 @@ void CScriptDock::Think(float dt, CStateManager& mgr) {
void CScriptDock::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) { void CScriptDock::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) {
switch (msg) { switch (msg) {
case EScriptObjectMessage::Registered: { case EScriptObjectMessage::Registered: {
CGameArea* area = mgr.WorldNC()->GetArea(x260_area); CGameArea* area = mgr.GetWorld()->GetArea(x260_area);
if (area->GetDockCount() < x25c_dock) if (area->GetDockCount() < x25c_dock)
return; return;
IGameArea::Dock* dock = area->DockNC(x25c_dock); IGameArea::Dock* dock = area->GetDock(x25c_dock);
if (!dock->IsReferenced()) if (!dock->IsReferenced())
dock->SetReferenceCount(x258_dockReferenceCount); dock->SetReferenceCount(x258_dockReferenceCount);
} break; } break;
@ -109,8 +109,8 @@ void CScriptDock::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStat
SetLoadConnected(mgr, false); SetLoadConnected(mgr, false);
CGameArea* area = mgr.WorldNC()->GetArea(x260_area); CGameArea* area = mgr.GetWorld()->GetArea(x260_area);
IGameArea::Dock* dock = area->DockNC(x25c_dock); IGameArea::Dock* dock = area->GetDock(x25c_dock);
TAreaId aid = dock->GetConnectedAreaId(dock->GetReferenceCount()); TAreaId aid = dock->GetConnectedAreaId(dock->GetReferenceCount());
@ -133,13 +133,13 @@ void CScriptDock::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStat
case EScriptObjectMessage::Decrement: { case EScriptObjectMessage::Decrement: {
TAreaId aid = x260_area; TAreaId aid = x260_area;
if (mgr.GetNextAreaId() == x260_area) { if (mgr.GetNextAreaId() == x260_area) {
IGameArea::Dock* dock = mgr.WorldNC()->GetArea(x260_area)->DockNC(x25c_dock); IGameArea::Dock* dock = mgr.GetWorld()->GetArea(x260_area)->GetDock(x25c_dock);
aid = dock->GetConnectedAreaId(dock->GetReferenceCount()); aid = dock->GetConnectedAreaId(dock->GetReferenceCount());
} }
if (aid >= 0 && aid < mgr.GetWorld()->GetNumAreas() && mgr.WorldNC()->GetArea(aid)->GetActive()) if (aid >= 0 && aid < mgr.GetWorld()->GetNumAreas() && mgr.GetWorld()->GetArea(aid)->GetActive())
CWorld::PropogateAreaChain(CGameArea::EOcclusionState(msg == EScriptObjectMessage::Increment), CWorld::PropogateAreaChain(CGameArea::EOcclusionState(msg == EScriptObjectMessage::Increment),
mgr.WorldNC()->GetArea(aid), mgr.WorldNC()); mgr.GetWorld()->GetArea(aid), mgr.GetWorld());
} break; } break;
default: default:
CPhysicsActor::AcceptScriptMsg(msg, uid, mgr); CPhysicsActor::AcceptScriptMsg(msg, uid, mgr);
@ -168,7 +168,7 @@ zeus::CPlane CScriptDock::GetPlane(const CStateManager& mgr) const {
} }
void CScriptDock::SetDockReference(CStateManager& mgr, s32 ref) { void CScriptDock::SetDockReference(CStateManager& mgr, s32 ref) {
mgr.WorldNC()->GetArea(x260_area)->DockNC(x25c_dock)->SetReferenceCount(ref); mgr.GetWorld()->GetArea(x260_area)->GetDock(x25c_dock)->SetReferenceCount(ref);
x268_24_dockReferenced = true; x268_24_dockReferenced = true;
} }
@ -188,7 +188,7 @@ TAreaId CScriptDock::GetCurrentConnectedAreaId(const CStateManager& mgr) const {
} }
void CScriptDock::UpdateAreaActivateFlags(CStateManager& mgr) { void CScriptDock::UpdateAreaActivateFlags(CStateManager& mgr) {
CWorld* world = mgr.WorldNC(); CWorld* world = mgr.GetWorld();
if (x260_area >= world->GetNumAreas()) if (x260_area >= world->GetNumAreas())
return; return;
@ -197,7 +197,7 @@ void CScriptDock::UpdateAreaActivateFlags(CStateManager& mgr) {
if (x25c_dock >= area->GetDockCount()) if (x25c_dock >= area->GetDockCount())
return; return;
IGameArea::Dock* dock = area->DockNC(x25c_dock); IGameArea::Dock* dock = area->GetDock(x25c_dock);
for (s32 i = 0; i < dock->GetDockRefs().size(); ++i) { for (s32 i = 0; i < dock->GetDockRefs().size(); ++i) {
s32 dockRefCount = dock->GetReferenceCount(); s32 dockRefCount = dock->GetReferenceCount();
@ -216,7 +216,7 @@ bool CScriptDock::HasPointCrossedDock(const CStateManager& mgr, const zeus::CVec
void CScriptDock::AreaLoaded(CStateManager& mgr) { SetLoadConnected(mgr, x268_25_loadConnected); } void CScriptDock::AreaLoaded(CStateManager& mgr) { SetLoadConnected(mgr, x268_25_loadConnected); }
void CScriptDock::SetLoadConnected(CStateManager& mgr, bool loadOther) { void CScriptDock::SetLoadConnected(CStateManager& mgr, bool loadOther) {
IGameArea::Dock* dock = mgr.WorldNC()->GetArea(x260_area)->DockNC(x25c_dock); IGameArea::Dock* dock = mgr.GetWorld()->GetArea(x260_area)->GetDock(x25c_dock);
bool cur = dock->GetShouldLoadOther(dock->GetReferenceCount()); bool cur = dock->GetShouldLoadOther(dock->GetReferenceCount());
if (cur == loadOther) if (cur == loadOther)
return; return;

View File

@ -358,8 +358,8 @@ CScriptDoor::EDoorOpenCondition CScriptDoor::GetDoorOpenCondition(CStateManager&
void CScriptDoor::SetDoorAnimation(CScriptDoor::EDoorAnimType type) { void CScriptDoor::SetDoorAnimation(CScriptDoor::EDoorAnimType type) {
x260_doorAnimState = type; x260_doorAnimState = type;
CModelData* modelData = x64_modelData.get(); CModelData* modelData = x64_modelData.get();
if (modelData && modelData->AnimationData()) if (modelData && modelData->GetAnimationData())
modelData->AnimationData()->SetAnimation(CAnimPlaybackParms(s32(type), -1, 1.f, true), false); modelData->GetAnimationData()->SetAnimation(CAnimPlaybackParms(s32(type), -1, 1.f, true), false);
} }
std::optional<zeus::CAABox> CScriptDoor::GetTouchBounds() const { std::optional<zeus::CAABox> CScriptDoor::GetTouchBounds() const {

View File

@ -101,7 +101,7 @@ void CScriptGenerator::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sende
} }
float rnd = stateMgr.GetActiveRandom()->Range(x48_minScale, x4c_maxScale); float rnd = stateMgr.GetActiveRandom()->Range(x48_minScale, x4c_maxScale);
CModelData* mData = activateActor->ModelData(); CModelData* mData = activateActor->GetModelData();
if (mData && !mData->IsNull()) if (mData && !mData->IsNull())
mData->SetScale(rnd * mData->GetScale()); mData->SetScale(rnd * mData->GetScale());

View File

@ -145,7 +145,7 @@ CScriptGunTurret::CScriptGunTurret(TUniqueId uid, std::string_view name, ETurret
x560_31_frenzyReverse = false; x560_31_frenzyReverse = false;
if (comp == ETurretComponent::Base && HasModelData() && GetModelData()->HasAnimData()) if (comp == ETurretComponent::Base && HasModelData() && GetModelData()->HasAnimData())
ModelData()->EnableLooping(true); GetModelData()->EnableLooping(true);
x37c_projectileInfo.Token().Lock(); x37c_projectileInfo.Token().Lock();
} }
@ -403,21 +403,21 @@ void CScriptGunTurret::LaunchProjectile(CStateManager& mgr) {
x458_visorEffectDesc, x2d4_data.GetVisorSoundId(), false); x458_visorEffectDesc, x2d4_data.GetVisorSoundId(), false);
mgr.AddObject(proj); mgr.AddObject(proj);
auto pair = auto pair =
x64_modelData->AnimationData()->GetCharacterInfo().GetPASDatabase().FindBestAnimation( x64_modelData->GetAnimationData()->GetCharacterInfo().GetPASDatabase().FindBestAnimation(
CPASAnimParmData(18, CPASAnimParm::FromEnum(1), CPASAnimParm::FromReal32(90.f), CPASAnimParmData(18, CPASAnimParm::FromEnum(1), CPASAnimParm::FromReal32(90.f),
CPASAnimParm::FromEnum(skStateToLocoTypeLookup[int(x520_state)])), -1); CPASAnimParm::FromEnum(skStateToLocoTypeLookup[int(x520_state)])), -1);
if (pair.first > 0.f) { if (pair.first > 0.f) {
x64_modelData->EnableLooping(false); x64_modelData->EnableLooping(false);
x64_modelData->AnimationData()->SetAnimation(CAnimPlaybackParms(pair.second, -1, 1.f, true), false); x64_modelData->GetAnimationData()->SetAnimation(CAnimPlaybackParms(pair.second, -1, 1.f, true), false);
} }
} }
} }
void CScriptGunTurret::PlayAdditiveFlinchAnimation(CStateManager& mgr) { void CScriptGunTurret::PlayAdditiveFlinchAnimation(CStateManager& mgr) {
auto pair = ModelData()->AnimationData()->GetCharacterInfo().GetPASDatabase().FindBestAnimation( auto pair = GetModelData()->GetAnimationData()->GetCharacterInfo().GetPASDatabase().FindBestAnimation(
CPASAnimParmData(23), *mgr.GetActiveRandom(), -1); CPASAnimParmData(23), *mgr.GetActiveRandom(), -1);
if (pair.first > 0.f) if (pair.first > 0.f)
ModelData()->AnimationData()->AddAdditiveAnimation(pair.second, 1.f, false, true); GetModelData()->GetAnimationData()->AddAdditiveAnimation(pair.second, 1.f, false, true);
} }
void CScriptGunTurret::AddToRenderer(const zeus::CFrustum& frustum, const CStateManager& mgr) const { void CScriptGunTurret::AddToRenderer(const zeus::CFrustum& frustum, const CStateManager& mgr) const {
@ -678,8 +678,8 @@ void CScriptGunTurret::UpdateTurretAnimation() {
auto pair = GetModelData()->GetAnimationData()->GetCharacterInfo().GetPASDatabase().FindBestAnimation(parmData, -1); auto pair = GetModelData()->GetAnimationData()->GetCharacterInfo().GetPASDatabase().FindBestAnimation(parmData, -1);
if (pair.first > 0.f && pair.second != x540_turretAnim) { if (pair.first > 0.f && pair.second != x540_turretAnim) {
ModelData()->AnimationData()->SetAnimation(CAnimPlaybackParms(pair.second, -1, 1.f, true), false); GetModelData()->GetAnimationData()->SetAnimation(CAnimPlaybackParms(pair.second, -1, 1.f, true), false);
ModelData()->AnimationData()->EnableLooping(true); GetModelData()->GetAnimationData()->EnableLooping(true);
x540_turretAnim = pair.second; x540_turretAnim = pair.second;
} }
} }
@ -1126,14 +1126,14 @@ void CScriptGunTurret::PlayAdditiveChargingAnimation(CStateManager& mgr) {
if (x55c_additiveChargeAnim != -1) if (x55c_additiveChargeAnim != -1)
return; return;
auto pair = ModelData()->AnimationData()->GetCharacterInfo().GetPASDatabase().FindBestAnimation( auto pair = GetModelData()->GetAnimationData()->GetCharacterInfo().GetPASDatabase().FindBestAnimation(
CPASAnimParmData(24, CPASAnimParm::FromEnum(2)), *mgr.GetActiveRandom(), -1); CPASAnimParmData(24, CPASAnimParm::FromEnum(2)), *mgr.GetActiveRandom(), -1);
if (pair.first > 0.f) { if (pair.first > 0.f) {
x55c_additiveChargeAnim = pair.second; x55c_additiveChargeAnim = pair.second;
ModelData()->AnimationData()->AddAdditiveAnimation(pair.second, 1.f, true, false); GetModelData()->GetAnimationData()->AddAdditiveAnimation(pair.second, 1.f, true, false);
} }
} else if (x55c_additiveChargeAnim != -1) { } else if (x55c_additiveChargeAnim != -1) {
ModelData()->AnimationData()->DelAdditiveAnimation(x55c_additiveChargeAnim); GetModelData()->GetAnimationData()->DelAdditiveAnimation(x55c_additiveChargeAnim);
x55c_additiveChargeAnim = -1; x55c_additiveChargeAnim = -1;
} }
} }

View File

@ -32,8 +32,8 @@ CScriptPickup::CScriptPickup(TUniqueId uid, std::string_view name, const CEntity
if (pickupEffect.IsValid()) if (pickupEffect.IsValid())
x27c_pickupParticleDesc = g_SimplePool->GetObj({SBIG('PART'), pickupEffect}); x27c_pickupParticleDesc = g_SimplePool->GetObj({SBIG('PART'), pickupEffect});
if (x64_modelData && x64_modelData->AnimationData()) if (x64_modelData && x64_modelData->GetAnimationData())
x64_modelData->AnimationData()->SetAnimation(CAnimPlaybackParms(0, -1, 1.f, true), false); x64_modelData->GetAnimationData()->SetAnimation(CAnimPlaybackParms(0, -1, 1.f, true), false);
if (x278_delayTimer != 0.f) { if (x278_delayTimer != 0.f) {
xb4_drawFlags = CModelFlags(5, 0, 3, zeus::CColor(1.f, 1.f, 1.f, 0.f)); xb4_drawFlags = CModelFlags(5, 0, 3, zeus::CColor(1.f, 1.f, 1.f, 0.f));

View File

@ -51,8 +51,8 @@ CScriptPlatform::CScriptPlatform(
CMaterialList(EMaterialTypes::Solid), CMaterialList(EMaterialTypes::Solid),
CMaterialList(EMaterialTypes::NoStaticCollision, EMaterialTypes::NoPlatformCollision, EMaterialTypes::Platform))); CMaterialList(EMaterialTypes::NoStaticCollision, EMaterialTypes::NoPlatformCollision, EMaterialTypes::Platform)));
xf8_24_movable = false; xf8_24_movable = false;
if (HasModelData() && ModelData()->HasAnimData()) if (HasModelData() && GetModelData()->HasAnimData())
ModelData()->AnimationData()->EnableLooping(true); GetModelData()->GetAnimationData()->EnableLooping(true);
if (x304_treeGroupContainer) if (x304_treeGroupContainer)
x314_treeGroup = std::make_unique<CCollidableOBBTreeGroup>(x304_treeGroupContainer->GetObj(), x68_material); x314_treeGroup = std::make_unique<CCollidableOBBTreeGroup>(x304_treeGroupContainer->GetObj(), x68_material);
} }

View File

@ -116,7 +116,7 @@ void CScriptPlayerActor::PumpBeamModel(CStateManager& mgr) {
return; return;
BuildBeamModelData(); BuildBeamModelData();
x314_beamModelData->Touch(mgr, 0); x314_beamModelData->Touch(mgr, 0);
mgr.WorldNC()->CycleLoadPauseState(); mgr.GetWorld()->CycleLoadPauseState();
x31c_beamModel = TLockedToken<CModel>(); x31c_beamModel = TLockedToken<CModel>();
x354_27_beamModelLoading = false; x354_27_beamModelLoading = false;
} }
@ -131,7 +131,7 @@ void CScriptPlayerActor::PumpSuitModel(CStateManager& mgr) {
return; return;
x320_suitModel->Touch(0); x320_suitModel->Touch(0);
mgr.WorldNC()->CycleLoadPauseState(); mgr.GetWorld()->CycleLoadPauseState();
bool didSetup = false; bool didSetup = false;
if (x354_26_deferOfflineModelData) { if (x354_26_deferOfflineModelData) {
@ -155,10 +155,10 @@ void CScriptPlayerActor::SetupOfflineModelData() {
x2e8_suitRes.SetCharacterNodeId(x310_loadedCharIdx); x2e8_suitRes.SetCharacterNodeId(x310_loadedCharIdx);
x318_suitModelData = std::make_unique<CModelData>(x2e8_suitRes); x318_suitModelData = std::make_unique<CModelData>(x2e8_suitRes);
if (!static_cast<MP1::CMain&>(*g_Main).GetScreenFading()) { if (!static_cast<MP1::CMain&>(*g_Main).GetScreenFading()) {
x328_backupModelData = x64_modelData->AnimationData()->GetModelData(); x328_backupModelData = x64_modelData->GetAnimationData()->GetModelData();
x348_deallocateBackupCountdown = 2; x348_deallocateBackupCountdown = 2;
} }
x64_modelData->AnimationData()->SubstituteModelData(x318_suitModelData->AnimationData()->GetModelData()); x64_modelData->GetAnimationData()->SubstituteModelData(x318_suitModelData->GetAnimationData()->GetModelData());
} }
void CScriptPlayerActor::SetupOnlineModelData() { void CScriptPlayerActor::SetupOnlineModelData() {
@ -166,7 +166,7 @@ void CScriptPlayerActor::SetupOnlineModelData() {
x2e8_suitRes.SetCharacterNodeId(x310_loadedCharIdx); x2e8_suitRes.SetCharacterNodeId(x310_loadedCharIdx);
SetModelData(std::make_unique<CModelData>(x2e8_suitRes)); SetModelData(std::make_unique<CModelData>(x2e8_suitRes));
CAnimPlaybackParms parms(x2e8_suitRes.GetDefaultAnim(), -1, 1.f, true); CAnimPlaybackParms parms(x2e8_suitRes.GetDefaultAnim(), -1, 1.f, true);
x64_modelData->AnimationData()->SetAnimation(parms, false); x64_modelData->GetAnimationData()->SetAnimation(parms, false);
if (x354_24_setBoundingBox) if (x354_24_setBoundingBox)
SetBoundingBox(x64_modelData->GetBounds(GetTransform().getRotation())); SetBoundingBox(x64_modelData->GetBounds(GetTransform().getRotation()));
} }

View File

@ -180,7 +180,7 @@ void CScriptSound::PlaySound(CStateManager& mgr) {
xec_sfxHandle = CSfxManager::SfxStart(x100_soundId, x10e_vol, x114_pan, x11c_29_acoustics, x112_prio, xec_sfxHandle = CSfxManager::SfxStart(x100_soundId, x10e_vol, x114_pan, x11c_29_acoustics, x112_prio,
x11c_25_looped, x11c_30_worldSfx ? kInvalidAreaId : GetAreaIdAlways()); x11c_25_looped, x11c_30_worldSfx ? kInvalidAreaId : GetAreaIdAlways());
if (x11c_30_worldSfx) if (x11c_30_worldSfx)
mgr.WorldNC()->AddGlobalSound(xec_sfxHandle); mgr.GetWorld()->AddGlobalSound(xec_sfxHandle);
} }
} else { } else {
float occVol = x11c_28_occlusionTest ? GetOccludedVolumeAmount(GetTranslation(), mgr) : 1.f; float occVol = x11c_28_occlusionTest ? GetOccludedVolumeAmount(GetTranslation(), mgr) : 1.f;
@ -202,7 +202,7 @@ void CScriptSound::PlaySound(CStateManager& mgr) {
void CScriptSound::StopSound(CStateManager& mgr) { void CScriptSound::StopSound(CStateManager& mgr) {
x11c_24_playRequested = false; x11c_24_playRequested = false;
if (x11c_30_worldSfx && x11c_26_nonEmitter) { if (x11c_30_worldSfx && x11c_26_nonEmitter) {
mgr.WorldNC()->StopGlobalSound(x100_soundId); mgr.GetWorld()->StopGlobalSound(x100_soundId);
xec_sfxHandle.reset(); xec_sfxHandle.reset();
} else if (xec_sfxHandle) { } else if (xec_sfxHandle) {
CSfxManager::RemoveEmitter(xec_sfxHandle); CSfxManager::RemoveEmitter(xec_sfxHandle);

View File

@ -49,10 +49,10 @@ void CScriptSpawnPoint::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objI
CPlayer* player = stateMgr.Player(); CPlayer* player = stateMgr.Player();
if (x4_areaId != stateMgr.GetNextAreaId()) { if (x4_areaId != stateMgr.GetNextAreaId()) {
CGameArea* area = stateMgr.WorldNC()->GetArea(x4_areaId); CGameArea* area = stateMgr.GetWorld()->GetArea(x4_areaId);
if (area->IsPostConstructed() && area->GetOcclusionState() == CGameArea::EOcclusionState::Occluded) { if (area->IsPostConstructed() && area->GetOcclusionState() == CGameArea::EOcclusionState::Occluded) {
/* while (!area->TryTakingOutOfARAM()) {} */ /* while (!area->TryTakingOutOfARAM()) {} */
CWorld::PropogateAreaChain(CGameArea::EOcclusionState::Visible, area, stateMgr.WorldNC()); CWorld::PropogateAreaChain(CGameArea::EOcclusionState::Visible, area, stateMgr.GetWorld());
} }
stateMgr.SetCurrentAreaId(x4_areaId); stateMgr.SetCurrentAreaId(x4_areaId);
@ -62,7 +62,7 @@ void CScriptSpawnPoint::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId objI
if (area->IsPostConstructed() && area->GetOcclusionState() == CGameArea::EOcclusionState::Visible) if (area->IsPostConstructed() && area->GetOcclusionState() == CGameArea::EOcclusionState::Visible)
CWorld::PropogateAreaChain(CGameArea::EOcclusionState::Occluded, CWorld::PropogateAreaChain(CGameArea::EOcclusionState::Occluded,
stateMgr.WorldNC()->GetArea(stateMgr.GetNextAreaId()), stateMgr.WorldNC()); stateMgr.GetWorld()->GetArea(stateMgr.GetNextAreaId()), stateMgr.GetWorld());
} else { } else {
player->Teleport(GetTransform(), stateMgr, true); player->Teleport(GetTransform(), stateMgr, true);
player->SetSpawnedMorphBallState(CPlayer::EPlayerMorphBallState(x10c_25_morphed), stateMgr); player->SetSpawnedMorphBallState(CPlayer::EPlayerMorphBallState(x10c_25_morphed), stateMgr);

View File

@ -181,7 +181,7 @@ void CScriptSpecialFunction::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId
case ESpecialFunction::MapStation: { case ESpecialFunction::MapStation: {
if (msg == EScriptObjectMessage::Action) { if (msg == EScriptObjectMessage::Action) {
mgr.MapWorldInfo()->SetMapStationUsed(true); mgr.MapWorldInfo()->SetMapStationUsed(true);
const_cast<CMapWorld&>(*mgr.WorldNC()->GetMapWorld()) const_cast<CMapWorld&>(*mgr.GetWorld()->GetMapWorld())
.RecalculateWorldSphere(*mgr.MapWorldInfo(), *mgr.GetWorld()); .RecalculateWorldSphere(*mgr.MapWorldInfo(), *mgr.GetWorld());
} }
break; break;
@ -327,7 +327,7 @@ void CScriptSpecialFunction::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId
TAreaId aId = mgr.GetWorld()->GetAreaIdForSaveId(x1bc_areaSaveId); TAreaId aId = mgr.GetWorld()->GetAreaIdForSaveId(x1bc_areaSaveId);
std::shared_ptr<CWorldLayerState> worldLayerState; std::shared_ptr<CWorldLayerState> worldLayerState;
if (aId != kInvalidAreaId) if (aId != kInvalidAreaId)
worldLayerState = mgr.WorldLayerStateNC(); worldLayerState = mgr.WorldLayerState();
else { else {
std::pair<CAssetId, TAreaId> worldAreaPair = g_MemoryCardSys->GetAreaAndWorldIdForSaveId(x1bc_areaSaveId); std::pair<CAssetId, TAreaId> worldAreaPair = g_MemoryCardSys->GetAreaAndWorldIdForSaveId(x1bc_areaSaveId);
if (worldAreaPair.first.IsValid()) { if (worldAreaPair.first.IsValid()) {
@ -763,7 +763,7 @@ void CScriptSpecialFunction::ThinkActorScale(float dt, CStateManager& mgr) {
if (conn.x0_state != EScriptObjectState::Play || conn.x4_msg != EScriptObjectMessage::Activate) if (conn.x0_state != EScriptObjectState::Play || conn.x4_msg != EScriptObjectMessage::Activate)
continue; continue;
if (TCastToPtr<CActor> act = mgr.ObjectById(mgr.GetIdForScript(conn.x8_objId))) { if (TCastToPtr<CActor> act = mgr.ObjectById(mgr.GetIdForScript(conn.x8_objId))) {
CModelData* mData = act->ModelData(); CModelData* mData = act->GetModelData();
if (mData && (mData->HasAnimData() || mData->HasNormalModel())) { if (mData && (mData->HasAnimData() || mData->HasNormalModel())) {
zeus::CVector3f scale = mData->GetScale(); zeus::CVector3f scale = mData->GetScale();

View File

@ -77,7 +77,7 @@ void CScriptWorldTeleporter::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId
transMgr->SfxStart(); transMgr->SfxStart();
break; break;
case EScriptObjectMessage::SetToZero: { case EScriptObjectMessage::SetToZero: {
const auto& world = mgr.WorldNC(); const auto& world = mgr.GetWorld();
world->SetLoadPauseState(true); world->SetLoadPauseState(true);
CAssetId currentWorld = g_GameState->CurrentWorldAssetId(); CAssetId currentWorld = g_GameState->CurrentWorldAssetId();
g_GameState->SetCurrentWorldId(x34_worldId); g_GameState->SetCurrentWorldId(x34_worldId);

View File

@ -120,7 +120,7 @@ void CWallCrawlerSwarm::AllocateSkinnedModels(CStateManager& mgr, CModelData::EW
//x430_.push_back(x4b0_[i]->PickAnimatedModel(which).Clone()); //x430_.push_back(x4b0_[i]->PickAnimatedModel(which).Clone());
x4b0_modelDatas[i]->EnableLooping(true); x4b0_modelDatas[i]->EnableLooping(true);
x4b0_modelDatas[i]->AdvanceAnimation( x4b0_modelDatas[i]->AdvanceAnimation(
x4b0_modelDatas[i]->AnimationData()->GetAnimTimeRemaining("Whole Body"sv) * (i * 0.0625f), x4b0_modelDatas[i]->GetAnimationData()->GetAnimTimeRemaining("Whole Body"sv) * (i * 0.0625f),
mgr, x4_areaId, true); mgr, x4_areaId, true);
} }
//x430_.push_back(x4b0_.back()->PickAnimatedModel(which).Clone()); //x430_.push_back(x4b0_.back()->PickAnimatedModel(which).Clone());
@ -799,7 +799,7 @@ void CWallCrawlerSwarm::Think(float dt, CStateManager& mgr) {
} }
} }
x4b0_modelDatas[8]->AnimationData()->SetPlaybackRate(x160_animPlaybackSpeed); x4b0_modelDatas[8]->GetAnimationData()->SetPlaybackRate(x160_animPlaybackSpeed);
x4b0_modelDatas[8]->AdvanceAnimation(dt, mgr, x4_areaId, true); x4b0_modelDatas[8]->AdvanceAnimation(dt, mgr, x4_areaId, true);
SAdvancementDeltas deltas1, deltas2; SAdvancementDeltas deltas1, deltas2;
@ -823,14 +823,14 @@ void CWallCrawlerSwarm::Think(float dt, CStateManager& mgr) {
} }
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
x4b0_modelDatas[i]->AnimationData()->SetPlaybackRate(x160_animPlaybackSpeed); x4b0_modelDatas[i]->GetAnimationData()->SetPlaybackRate(x160_animPlaybackSpeed);
deltas1 = x4b0_modelDatas[i]->AdvanceAnimation(dt, mgr, x4_areaId, true); deltas1 = x4b0_modelDatas[i]->AdvanceAnimation(dt, mgr, x4_areaId, true);
x4b0_modelDatas[i+4]->AnimationData()->SetPlaybackRate(x160_animPlaybackSpeed); x4b0_modelDatas[i+4]->GetAnimationData()->SetPlaybackRate(x160_animPlaybackSpeed);
deltas2 = x4b0_modelDatas[i+4]->AdvanceAnimation(dt, mgr, x4_areaId, true); deltas2 = x4b0_modelDatas[i+4]->AdvanceAnimation(dt, mgr, x4_areaId, true);
if (x4b0_modelDatas[i]->HasAnimData() && _38F4[i]) if (x4b0_modelDatas[i]->HasAnimData() && _38F4[i])
UpdateEffects(mgr, *x4b0_modelDatas[i]->AnimationData(), r8 * 44 / x548_numBoids + 0x53); UpdateEffects(mgr, *x4b0_modelDatas[i]->GetAnimationData(), r8 * 44 / x548_numBoids + 0x53);
if (x4b0_modelDatas[i+4]->HasAnimData() && _38F8[i]) if (x4b0_modelDatas[i+4]->HasAnimData() && _38F8[i])
UpdateEffects(mgr, *x4b0_modelDatas[i+4]->AnimationData(), r3 * 44 / x548_numBoids + 0x53); UpdateEffects(mgr, *x4b0_modelDatas[i+4]->GetAnimationData(), r3 * 44 / x548_numBoids + 0x53);
for (int r20 = i; r20 < x108_boids.size(); r20 += 4) { for (int r20 = i; r20 < x108_boids.size(); r20 += 4) {
CBoid& b = x108_boids[r20]; CBoid& b = x108_boids[r20];
if (b.GetActive()) { if (b.GetActive()) {
@ -885,7 +885,7 @@ void CWallCrawlerSwarm::Think(float dt, CStateManager& mgr) {
void CWallCrawlerSwarm::PreRender(CStateManager& mgr, const zeus::CFrustum& frustum) { void CWallCrawlerSwarm::PreRender(CStateManager& mgr, const zeus::CFrustum& frustum) {
for (int i = 0; i < 5; ++i) for (int i = 0; i < 5; ++i)
x4b0_modelDatas[i]->AnimationData()->PreRender(); x4b0_modelDatas[i]->GetAnimationData()->PreRender();
bool activeBoid = false; bool activeBoid = false;
for (auto& b : x108_boids) { for (auto& b : x108_boids) {
if (b.GetActive()) { if (b.GetActive()) {
@ -946,7 +946,7 @@ void CWallCrawlerSwarm::HardwareLight(const CStateManager& mgr, const zeus::CAAB
lights.BuildDynamicLightList(mgr, aabb); lights.BuildDynamicLightList(mgr, aabb);
for (auto& m : x4b0_modelDatas) { for (auto& m : x4b0_modelDatas) {
lights.ActivateLights(*m->PickAnimatedModel(x4dc_whichModel).GetModelInst()); lights.ActivateLights(*m->PickAnimatedModel(x4dc_whichModel).GetModelInst());
if (auto iceModel = m->AnimationData()->GetIceModel()) if (auto iceModel = m->GetAnimationData()->GetIceModel())
lights.ActivateLights(*iceModel->GetModelInst()); lights.ActivateLights(*iceModel->GetModelInst());
} }
} }
@ -966,27 +966,27 @@ void CWallCrawlerSwarm::RenderBoid(const CBoid* boid, u32& drawMask, bool therma
u32 thisDrawMask = 1u << modelIndex; u32 thisDrawMask = 1u << modelIndex;
if (drawMask & thisDrawMask) { if (drawMask & thisDrawMask) {
drawMask &= ~thisDrawMask; drawMask &= ~thisDrawMask;
mData.AnimationData()->BuildPose(); mData.GetAnimationData()->BuildPose();
} }
model.GetModelInst()->SetAmbientColor(boid->x40_ambientLighting); model.GetModelInst()->SetAmbientColor(boid->x40_ambientLighting);
CGraphics::SetModelMatrix(boid->GetTransform()); CGraphics::SetModelMatrix(boid->GetTransform());
if (boid->x48_timeToDie > 0.f && !thermalHot) { if (boid->x48_timeToDie > 0.f && !thermalHot) {
CModelFlags useFlags(0, 0, 3, zeus::skWhite); CModelFlags useFlags(0, 0, 3, zeus::skWhite);
mData.AnimationData()->Render(model, useFlags, {}, nullptr); mData.GetAnimationData()->Render(model, useFlags, {}, nullptr);
if (auto iceModel = mData.AnimationData()->GetIceModel()) { if (auto iceModel = mData.GetAnimationData()->GetIceModel()) {
if (!iceModel->GetModelInst()->TryLockTextures()) if (!iceModel->GetModelInst()->TryLockTextures())
return; return;
iceModel->GetModelInst()->SetAmbientColor(zeus::skWhite); iceModel->GetModelInst()->SetAmbientColor(zeus::skWhite);
float alpha = 1.f - boid->x48_timeToDie; float alpha = 1.f - boid->x48_timeToDie;
zeus::CColor color(1.f, alpha > 0.f ? boid->x48_timeToDie : 1.f); zeus::CColor color(1.f, alpha > 0.f ? boid->x48_timeToDie : 1.f);
CModelFlags iceFlags(5, 0, 3, color); CModelFlags iceFlags(5, 0, 3, color);
mData.AnimationData()->Render(*iceModel, iceFlags, {}, nullptr); mData.GetAnimationData()->Render(*iceModel, iceFlags, {}, nullptr);
} }
} else if (thermalHot) { } else if (thermalHot) {
CModelFlags thermFlags(5, 0, 3, zeus::skWhite); CModelFlags thermFlags(5, 0, 3, zeus::skWhite);
mData.RenderThermal(zeus::skWhite, zeus::CColor(0.f, 0.25f), thermFlags); mData.RenderThermal(zeus::skWhite, zeus::CColor(0.f, 0.25f), thermFlags);
} else { } else {
mData.AnimationData()->Render(model, flags, {}, nullptr); mData.GetAnimationData()->Render(model, flags, {}, nullptr);
} }
} }

View File

@ -154,10 +154,10 @@ void CWallWalker::Think(float dt, CStateManager& mgr) {
return; return;
if (x5c8_bendingHackWeight > 0.0001f) { if (x5c8_bendingHackWeight > 0.0001f) {
ModelData()->AnimationData()->AddAdditiveAnimation(x5cc_bendingHackAnim, x5c8_bendingHackWeight, true, false); GetModelData()->GetAnimationData()->AddAdditiveAnimation(x5cc_bendingHackAnim, x5c8_bendingHackWeight, true, false);
x5d6_29_applyBendingHack = true; x5d6_29_applyBendingHack = true;
} else { } else {
ModelData()->AnimationData()->DelAdditiveAnimation(x5cc_bendingHackAnim); GetModelData()->GetAnimationData()->DelAdditiveAnimation(x5cc_bendingHackAnim);
x5d6_29_applyBendingHack = false; x5d6_29_applyBendingHack = false;
} }
} }

View File

@ -198,7 +198,7 @@ void CWorldTransManager::DrawAllModels(CActorLights* lights) {
CModelFlags flags = {}; CModelFlags flags = {};
flags.m_extendedShader = EExtendedShader::LightingCubeReflection; flags.m_extendedShader = EExtendedShader::LightingCubeReflection;
x4_modelData->x1c_samusModelData.AnimationData()->PreRender(); x4_modelData->x1c_samusModelData.GetAnimationData()->PreRender();
x4_modelData->x1c_samusModelData.Render(CModelData::EWhichModel::Normal, zeus::CTransform(), lights, x4_modelData->x1c_samusModelData.Render(CModelData::EWhichModel::Normal, zeus::CTransform(), lights,
flags); flags);
@ -359,7 +359,7 @@ void CWorldTransManager::TouchModels() {
x4_modelData->x1c_samusModelData = {animRes, 2}; x4_modelData->x1c_samusModelData = {animRes, 2};
CAnimPlaybackParms aData(animRes.GetDefaultAnim(), -1, 1.f, true); CAnimPlaybackParms aData(animRes.GetDefaultAnim(), -1, 1.f, true);
x4_modelData->x1c_samusModelData.AnimationData()->SetAnimation(aData, false); x4_modelData->x1c_samusModelData.GetAnimationData()->SetAnimation(aData, false);
} }
if (!x4_modelData->x1c_samusModelData.IsNull()) if (!x4_modelData->x1c_samusModelData.IsNull())

View File

@ -184,7 +184,7 @@ static SScaledActorHead LoadScaledActorHead(CInputStream& in, CStateManager& sta
static zeus::CAABox GetCollisionBox(CStateManager& stateMgr, TAreaId id, const zeus::CVector3f& extent, static zeus::CAABox GetCollisionBox(CStateManager& stateMgr, TAreaId id, const zeus::CVector3f& extent,
const zeus::CVector3f& offset) { const zeus::CVector3f& offset) {
zeus::CAABox box(-extent * 0.5f + offset, extent * 0.5f + offset); zeus::CAABox box(-extent * 0.5f + offset, extent * 0.5f + offset);
const zeus::CTransform& rot = stateMgr.WorldNC()->GetGameAreas()[id]->GetTransform().getRotation(); const zeus::CTransform& rot = stateMgr.GetWorld()->GetGameAreas()[id]->GetTransform().getRotation();
return box.getTransformedAABox(rot); return box.getTransformedAABox(rot);
} }
@ -533,7 +533,7 @@ CEntity* ScriptLoader::LoadTrigger(CStateManager& mgr, CInputStream& in, int pro
zeus::CAABox box(-extent * 0.5f, extent * 0.5f); zeus::CAABox box(-extent * 0.5f, extent * 0.5f);
const zeus::CTransform& areaXf = mgr.WorldNC()->GetGameAreas()[info.GetAreaId()]->GetTransform(); const zeus::CTransform& areaXf = mgr.GetWorld()->GetGameAreas()[info.GetAreaId()]->GetTransform();
zeus::CVector3f orientedForce = areaXf.basis * forceVec; zeus::CVector3f orientedForce = areaXf.basis * forceVec;
return new CScriptTrigger(mgr.AllocateUniqueId(), name, info, position, box, dInfo, orientedForce, flags, active, b2, return new CScriptTrigger(mgr.AllocateUniqueId(), name, info, position, box, dInfo, orientedForce, flags, active, b2,
@ -1079,7 +1079,7 @@ u32 ClassifyVector(const zeus::CVector3f& dir) {
} }
u32 TransformDamagableTriggerFlags(CStateManager& mgr, TAreaId aId, u32 flags) { u32 TransformDamagableTriggerFlags(CStateManager& mgr, TAreaId aId, u32 flags) {
CGameArea* area = mgr.WorldNC()->GetGameAreas().at(u32(aId)).get(); CGameArea* area = mgr.GetWorld()->GetGameAreas().at(u32(aId)).get();
zeus::CTransform rotation = area->GetTransform().getRotation(); zeus::CTransform rotation = area->GetTransform().getRotation();
u32 ret = 0; u32 ret = 0;