Match and link CIceBeam

This commit is contained in:
Phillip Stephens
2026-01-08 20:45:44 -08:00
parent 2b325ee5f2
commit 75d444475b
5 changed files with 10 additions and 9 deletions
+1 -1
View File
@@ -18259,7 +18259,7 @@ __vt__41TObjOwnerDerivedFromIObj<13CStateMachine> = .data:0x803DF8E0; // type:ob
__vt__11CPlasmaBeam = .data:0x803DF8F0; // type:object size:0x44
__vt__10CPowerBeam = .data:0x803DF938; // type:object size:0x44
lbl_803DF980 = .data:0x803DF980; // type:object size:0x48
lbl_803DF9C8 = .data:0x803DF9C8; // type:object size:0x48
__vt__8CIceBeam = .data:0x803DF9C8; // type:object size:0x48
__vt__12CScriptRelay = .data:0x803DFA10; // type:object size:0x20
lbl_803DFA30 = .data:0x803DFA30; // type:object size:0x20
lbl_803DFA50 = .data:0x803DFA50; // type:object size:0x20
+1 -1
View File
@@ -580,7 +580,7 @@ config.libs = [
"MetroidPrime/Weapons/CPowerBeam.cpp",
),
Object(NonMatching, "MetroidPrime/Weapons/CWaveBeam.cpp"),
Object(NonMatching, "MetroidPrime/Weapons/CIceBeam.cpp"),
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "MetroidPrime/Weapons/CIceBeam.cpp"),
Object(
MatchingFor("GM8E01_00", "GM8E01_01"), "MetroidPrime/CScriptMailbox.cpp"
),
@@ -32,7 +32,7 @@ public:
const ushort visorSfx, bool sendCollideMsg);
// CEntity
~CGameProjectile() override {}
~CGameProjectile() override; // Remove this when possible
void Accept(IVisitor& visitor) override;
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) override;
+3 -1
View File
@@ -10,7 +10,6 @@
#include "MetroidPrime/Weapons/WeaponCommon.hpp"
#include "MetroidPrime/Weapons/WeaponTypes.hpp"
#include "Kyoto/Math/CAABox.hpp"
#include "Kyoto/Math/CVector3f.hpp"
#include "Kyoto/TToken.hpp"
@@ -60,6 +59,7 @@ private:
};
class CGunWeapon {
public:
CGunWeapon(CAssetId ancsId, EWeaponType type, TUniqueId playerId, EMaterialTypes playerMaterial,
const CVector3f& scale);
@@ -125,6 +125,8 @@ public:
float chargeFactor);
CDamageInfo GetShotDamageInfo(const SShotParam& shotParam, CStateManager& mgr) const;
static const char* GetMuzzleLocator() { return skMuzzleLocator; }
protected:
// x0 is vtable
CVector3f x4_scale;
+4 -5
View File
@@ -44,12 +44,11 @@ void CIceBeam::PostRenderGunFx(const CStateManager& mgr, const CTransform4f& xf)
CElementGen::SetSubtractBlend(false);
}
static const char* LBEAM = "LBEAM";
void CIceBeam::UpdateGunFx(bool shotSmoke, float dt, const CStateManager& mgr,
const CTransform4f& xf) {
if (x240_smokeGen.get()) {
CTransform4f beamLoc = x10_solidModelData->GetScaledLocatorTransform(rstl::string_l(LBEAM));
CTransform4f beamLoc =
x10_solidModelData->GetScaledLocatorTransform(rstl::string_l(GetMuzzleLocator()));
x240_smokeGen->SetTranslation(beamLoc.GetTranslation());
x240_smokeGen->SetOrientation(beamLoc.GetRotation());
x240_smokeGen->Update(dt);
@@ -78,7 +77,7 @@ void CIceBeam::Update(float dt, CStateManager& mgr) {
CGunWeapon::Update(dt, mgr);
if (!x248_24_loaded) {
x248_24_loaded = x21c_iceSmoke.IsLoaded() && x228_ice2nd1.IsLoaded() && x234_ice2nd2.IsLoaded();
x248_24_loaded = x21c_iceSmoke.TryCache() && x228_ice2nd1.TryCache() && x234_ice2nd2.TryCache();
if (x248_24_loaded) {
x240_smokeGen = rs_new CElementGen(x21c_iceSmoke);
x240_smokeGen->SetGlobalScale(x4_scale);
@@ -90,7 +89,7 @@ void CIceBeam::Update(float dt, CStateManager& mgr) {
void CIceBeam::Fire(bool underwater, float dt, CPlayerState::EChargeStage chargeState,
const CTransform4f& xf, CStateManager& mgr, TUniqueId homingTarget,
float chargeFactor1, float chargeFactor2) {
static ushort soundId[2] = {SFXwpn_fire_ice_normal, SFXwpn_fire_ice_charged};
static const ushort soundId[2] = {SFXwpn_fire_ice_normal, SFXwpn_fire_ice_charged};
CGunWeapon::Fire(underwater, dt, chargeState, xf, mgr, homingTarget, chargeFactor1,
chargeFactor2);