From 9e537083d9e17dfc0ce761cda5b01549d9bdeb2c Mon Sep 17 00:00:00 2001 From: Phillip Stephens Date: Sat, 18 Jan 2025 16:51:02 -0800 Subject: [PATCH] CActor fixes, nearly matched --- include/Kyoto/Graphics/CModelFlags.hpp | 2 +- include/MetroidPrime/CActorParameters.hpp | 8 ++++---- include/MetroidPrime/CAnimData.hpp | 4 +++- include/MetroidPrime/CArchitectureQueue.hpp | 2 +- include/MetroidPrime/Weapons/WeaponTypes.hpp | 11 ++++++----- src/Dolphin/gx/GXLight.c | 1 + src/MetroidPrime/CActor.cpp | 12 ++++++------ 7 files changed, 22 insertions(+), 18 deletions(-) diff --git a/include/Kyoto/Graphics/CModelFlags.hpp b/include/Kyoto/Graphics/CModelFlags.hpp index 8cca33ab..80e44e60 100644 --- a/include/Kyoto/Graphics/CModelFlags.hpp +++ b/include/Kyoto/Graphics/CModelFlags.hpp @@ -88,7 +88,7 @@ public: return CModelFlags(*this, GetOtherFlags() | kF_DepthGreater); } - ETrans GetTrans() const { return static_cast< ETrans >(x0_blendMode); } + char GetTrans() const { return static_cast< ETrans >(x0_blendMode); } int GetShaderSet() const { return x1_matSetIdx; } uint GetOtherFlags() const { return x2_flags; } CColor GetColor() const { return x4_color; } diff --git a/include/MetroidPrime/CActorParameters.hpp b/include/MetroidPrime/CActorParameters.hpp index 8fe0c9e8..9c134f41 100644 --- a/include/MetroidPrime/CActorParameters.hpp +++ b/include/MetroidPrime/CActorParameters.hpp @@ -141,10 +141,10 @@ private: rstl::pair< CAssetId, CAssetId > x44_xrayAssets; rstl::pair< CAssetId, CAssetId > x4c_thermalAssets; CVisorParameters x54_visor; - uchar x58_24_useGlobalRenderTime : 1; - uchar x58_25_thermalHeat : 1; - uchar x58_26_forceRenderUnsorted : 1; - uchar x58_27_noSortThermal : 1; + bool x58_24_useGlobalRenderTime : 1; + bool x58_25_thermalHeat : 1; + bool x58_26_forceRenderUnsorted : 1; + bool x58_27_noSortThermal : 1; float x5c_fadeInTime; float x60_fadeOutTime; float x64_thermalMag; diff --git a/include/MetroidPrime/CAnimData.hpp b/include/MetroidPrime/CAnimData.hpp index 85b1d7ca..d2bad56e 100644 --- a/include/MetroidPrime/CAnimData.hpp +++ b/include/MetroidPrime/CAnimData.hpp @@ -52,7 +52,9 @@ public: const TLockedToken< CSkinnedModel >& GetModelData() const { return xd8_modelData; } void SetIsAnimating(bool v) { x220_24_animating = v; } - void SetParticleEffectState(const rstl::string& name, const bool active, CStateManager& mgr); + void SetParticleEffectState(const rstl::string& name, const bool active, CStateManager& mgr) { + x120_particleDB.SetParticleEffectState(name, active, mgr); + } int GetCharacterIndex() const { return x204_charIdx; } float GetAverageVelocity(int idx) const; diff --git a/include/MetroidPrime/CArchitectureQueue.hpp b/include/MetroidPrime/CArchitectureQueue.hpp index 704320bf..f4d04d87 100644 --- a/include/MetroidPrime/CArchitectureQueue.hpp +++ b/include/MetroidPrime/CArchitectureQueue.hpp @@ -9,7 +9,7 @@ class CArchitectureQueue { public: - void Push(const CArchitectureMessage& msg) { x0_queue.push_back(msg); } + void Push(const CArchitectureMessage& msg);// { x0_queue.push_back(msg); } CArchitectureMessage Pop() { CArchitectureMessage result = *x0_queue.begin(); x0_queue.pop_front(); diff --git a/include/MetroidPrime/Weapons/WeaponTypes.hpp b/include/MetroidPrime/Weapons/WeaponTypes.hpp index 5ec0bccb..24520ba1 100644 --- a/include/MetroidPrime/Weapons/WeaponTypes.hpp +++ b/include/MetroidPrime/Weapons/WeaponTypes.hpp @@ -22,11 +22,6 @@ enum EWeaponType { }; class CWeaponMode { - EWeaponType x0_weaponType; - bool x4_24_charged : 1; - bool x4_25_comboed : 1; - bool x4_26_instantKill : 1; - public: explicit CWeaponMode(EWeaponType type = kWT_None, const bool charged = false, const bool comboed = false, const bool instaKill = false) @@ -52,6 +47,12 @@ public: static CWeaponMode Power() { return CWeaponMode(kWT_Power); } static CWeaponMode Bomb() { return CWeaponMode(kWT_Bomb); } static CWeaponMode PowerBomb() { return CWeaponMode(kWT_PowerBomb); } + +private: + EWeaponType x0_weaponType; + bool x4_24_charged : 1; + bool x4_25_comboed : 1; + bool x4_26_instantKill : 1; }; #endif // _WEAPONTYPES diff --git a/src/Dolphin/gx/GXLight.c b/src/Dolphin/gx/GXLight.c index 2213c844..0d6e9d3b 100644 --- a/src/Dolphin/gx/GXLight.c +++ b/src/Dolphin/gx/GXLight.c @@ -1,5 +1,6 @@ #include "dolphin/gx.h" #include "dolphin/gx/GXPriv.h" +#include extern float cosf(float x); extern float sqrtf(float x); diff --git a/src/MetroidPrime/CActor.cpp b/src/MetroidPrime/CActor.cpp index 1b215e83..d3f5963c 100644 --- a/src/MetroidPrime/CActor.cpp +++ b/src/MetroidPrime/CActor.cpp @@ -816,13 +816,13 @@ void CActor::SetDrawShadow(bool enabled) { // TODO nonmatching bool CActor::CanDrawStatic() const { - if (!GetActive() || !HasModelData() || static_cast< char >(xb4_drawFlags.GetTrans()) > 4) + if (!GetActive() || !HasModelData() || xb4_drawFlags.GetTrans() > 4) { + return false; + } + if (GetModelData()->IsNull() || GetModelData()->HasAnimation()) { return false; - - if (HasModelData() && GetAnimationData() == nullptr) - return true; - - return false; + } + return true; } void CActor::UpdateSfxEmitters() {