mirror of
https://github.com/PrimeDecomp/prime.git
synced 2026-07-12 18:18:56 -07:00
Match and link CIceBeam
This commit is contained in:
@@ -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
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user