mirror of https://github.com/AxioDL/metaforce.git
Minor CActorParameters cleanup, initial CFlameThrower
This commit is contained in:
parent
c70a0d81cb
commit
3c566c2d8c
|
@ -7,13 +7,13 @@ namespace urde
|
|||
{
|
||||
class CFlameInfo
|
||||
{
|
||||
ResId x4_flameFxId;
|
||||
ResId x8_flameFxId;
|
||||
public:
|
||||
CFlameInfo(s32, u32, s32, s32, float, float, float);
|
||||
|
||||
void GetAttributes() const;
|
||||
void GetLength() const;
|
||||
ResId GetFlameFxId() const { x4_flameFxId; }
|
||||
ResId GetFlameFxId() const { return x8_flameFxId; }
|
||||
};
|
||||
}
|
||||
#endif // __URDE_CFLAMEINFO_HPP__
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
#include "Weapon/CFlameThrower.hpp"
|
||||
|
||||
#include "Weapon/CFlameInfo.hpp"
|
||||
#include "Particle/CElementGen.hpp"
|
||||
#include "GameGlobalObjects.hpp"
|
||||
#include "CSimplePool.hpp"
|
||||
#include "TCastTo.hpp"
|
||||
namespace urde
|
||||
{
|
||||
const zeus::CVector3f CFlameThrower::kLightOffset(0, 3.f, 2.f);
|
||||
|
@ -9,8 +13,14 @@ CFlameThrower::CFlameThrower(const TToken<CWeaponDescription>& wDesc, const std:
|
|||
const CDamageInfo& dInfo, TUniqueId owner, TAreaId aId, TUniqueId uid, u32 w1)
|
||||
: CGameProjectile(false, wDesc, name, wType, xf, matType, dInfo, owner, aId, uid, kInvalidUniqueId, w1, false,
|
||||
zeus::CVector3f(1.f), {}, -1, false)
|
||||
, x2e8_(xf)
|
||||
, x33c_flameDesc(g_SimplePool->GetObj({flameInfo.GetFlameFxId(), SBIG('PART')}))
|
||||
, x348_flameGen(new CElementGen(x33c_flameDesc, CElementGen::EModelOrientationType::Normal,
|
||||
CElementGen::EOptionalSystemFlags::One))
|
||||
{
|
||||
}
|
||||
|
||||
void CFlameThrower::Accept(IVisitor& visitor) { visitor.Visit(this); }
|
||||
|
||||
void CFlameThrower::SetTransform(const zeus::CTransform& xf) { x2e8_ = xf; }
|
||||
}
|
||||
|
|
|
@ -6,16 +6,21 @@
|
|||
namespace urde
|
||||
{
|
||||
class CFlameInfo;
|
||||
class CElementGen;
|
||||
class CFlameThrower : public CGameProjectile
|
||||
{
|
||||
static const zeus::CVector3f kLightOffset;
|
||||
zeus::CTransform x2e8_;
|
||||
|
||||
zeus::CAABox x318_ = zeus::CAABox::skNullBox;
|
||||
TToken<CGenDescription> x33c_flameDesc;
|
||||
std::unique_ptr<CElementGen> x348_flameGen;
|
||||
public:
|
||||
CFlameThrower(const TToken<CWeaponDescription>& wDesc, const std::string& name, EWeaponType wType,
|
||||
const CFlameInfo& flameInfo, const zeus::CTransform& xf, EMaterialTypes matType,
|
||||
const CDamageInfo& dInfo, TUniqueId owner, TAreaId aId, TUniqueId uid, u32 w1);
|
||||
|
||||
void Accept(IVisitor &visitor);
|
||||
|
||||
void SetTransform(const zeus::CTransform& xf);
|
||||
};
|
||||
}
|
||||
|
|
|
@ -16,28 +16,35 @@ class CActorParameters
|
|||
std::pair<ResId, ResId> x44_xrayAssets = {};
|
||||
std::pair<ResId, ResId> x4c_thermalAssets = {};
|
||||
CVisorParameters x54_visorParms;
|
||||
bool b1 : 1;
|
||||
bool b2 : 1;
|
||||
bool b3 : 1;
|
||||
bool b4 : 1;
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
bool x58_24_ : 1;
|
||||
bool x58_25_thermalHeat : 1;
|
||||
bool x58_26_ : 1;
|
||||
bool x58_27_ : 1;
|
||||
};
|
||||
u32 _dummy = 0;
|
||||
};
|
||||
float x5c_ = 0.f;
|
||||
float x60_ = 0.f;
|
||||
float x64_ = 0.f;
|
||||
|
||||
public:
|
||||
CActorParameters() : b1(true), b2(false), b3(false), b4(false) {}
|
||||
CActorParameters() : x58_24_(true), x58_25_thermalHeat(false), x58_26_(false), x58_27_(false) {}
|
||||
CActorParameters(const CLightParameters& lightParms, const CScannableParameters& scanParms,
|
||||
const std::pair<ResId, ResId>& xrayAssets, const std::pair<ResId, ResId>& thermalAssets,
|
||||
const CVisorParameters& visorParms, bool a, bool b, bool c, bool d)
|
||||
const CVisorParameters& visorParms, bool b1, bool thermalHeat, bool c, bool d)
|
||||
: x0_lightParms(lightParms)
|
||||
, x40_scanParms(scanParms)
|
||||
, x44_xrayAssets(xrayAssets)
|
||||
, x4c_thermalAssets(thermalAssets)
|
||||
, x54_visorParms(visorParms)
|
||||
, b1(a)
|
||||
, b2(b)
|
||||
, b3(c)
|
||||
, b4(d)
|
||||
, x58_24_(b1)
|
||||
, x58_25_thermalHeat(thermalHeat)
|
||||
, x58_26_(c)
|
||||
, x58_27_(d)
|
||||
{
|
||||
}
|
||||
CActorParameters Scannable(const CScannableParameters& sParms) const
|
||||
|
|
|
@ -216,9 +216,9 @@ CActorParameters ScriptLoader::LoadActorParameters(CInputStream& in)
|
|||
if (propCount > 6)
|
||||
vParms = LoadVisorParameters(in);
|
||||
|
||||
bool b2 = false;
|
||||
bool thermalHeat = false;
|
||||
if (propCount > 10)
|
||||
b2 = in.readBool();
|
||||
thermalHeat = in.readBool();
|
||||
|
||||
bool b3 = false;
|
||||
if (propCount > 11)
|
||||
|
@ -240,7 +240,7 @@ CActorParameters ScriptLoader::LoadActorParameters(CInputStream& in)
|
|||
if (g_ResFactory->GetResourceTypeById(infraModel))
|
||||
infra = {infraModel, infraSkin};
|
||||
|
||||
return CActorParameters(lParms, sParams, xray, infra, vParms, b1, b2, b3, b4);
|
||||
return CActorParameters(lParms, sParams, xray, infra, vParms, b1, thermalHeat, b3, b4);
|
||||
}
|
||||
return CActorParameters::None();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue