Almost match ~CPlayerGun

This commit is contained in:
Henrique Gemignani Passos Lima
2022-10-06 14:04:05 +03:00
parent 72d07311fd
commit c332d1ef47
6 changed files with 48 additions and 7 deletions

View File

@@ -3,19 +3,49 @@
#include "types.h"
class CElementGen {
#include "Kyoto/Particles/CParticleGen.hpp"
class CElementGen : public CParticleGen {
public:
enum EModelOrientationType { kMOT_Normal, kMOT_One };
enum EOptionalSystemFlags { kOSF_None, kOSF_One, kOSF_Two };
enum LightType { kLT_None = 0, kLT_Custom = 1, kLT_Directional = 2, kLT_Spot = 3 };
CElementGen(TToken<CGenDescription>, EModelOrientationType = kMOT_Normal, EOptionalSystemFlags = kOSF_One);
~CElementGen();
virtual void Update(double);
virtual void Render() const;
virtual void SetOrientation(const CTransform4f& orientation);
virtual void SetTranslation(const CVector3f& translation);
virtual void SetGlobalOrientation(const CTransform4f& orientation);
virtual void SetGlobalTranslation(const CVector3f& translation);
virtual void SetGlobalScale(const CVector3f& scale);
virtual void SetLocalScale(const CVector3f& scale);
virtual void SetParticleEmission(bool emission);
virtual void SetModulationColor(const CColor& col);
virtual void SetGeneratorRate(float rate) {}
virtual CTransform4f GetOrientation() const;
virtual CVector3f GetTranslation() const;
virtual CTransform4f GetGlobalOrientation() const;
virtual CVector3f GetGlobalTranslation() const;
virtual CVector3f GetGlobalScale() const;
virtual bool GetParticleEmission() const;
virtual CColor GetModulationColor() const;
virtual bool IsSystemDeletable() const;
virtual CAABox GetBounds() const;
virtual int GetParticleCOunt() const;
virtual bool SystemHasLight() const;
virtual CLight GetLight();
virtual void DestroyParticles();
virtual void AddModifier(CWarp*);
virtual uint Get4CharId() const;
static void Initialize();
static void ShutDown();
private:
u8 x0_pad[0x340];
u8 x4_pad[0x33C];
};
CHECK_SIZEOF(CElementGen, 0x340)

View File

@@ -11,7 +11,7 @@ public:
return GetAllocSpace();
}*/
void* operator new(unsigned long sz) { return operator new(sz, "??(??)", nullptr); }
void operator delete(void* ptr) { ReferenceCount()--; }
void operator delete(void* ptr);
private:
static void* GetAllocSpace() {
@@ -24,4 +24,9 @@ private:
}
};
template < typename T >
void TOneStatic< T >::operator delete(void* ptr) {
ReferenceCount()--;
}
#endif

View File

@@ -23,6 +23,7 @@ class CWorldShadow {
public:
CWorldShadow(uint w, uint h, bool rgba8);
~CWorldShadow();
};
CHECK_SIZEOF(CWorldShadow, 0x8c)

View File

@@ -9,6 +9,7 @@
#include "MetroidPrime/Player/CPlayerCameraBob.hpp"
#include "MetroidPrime/Player/CPlayerState.hpp"
#include "Kyoto/TOneStatic.hpp"
#include "Kyoto/Audio/CSfxHandle.hpp"
#include "Kyoto/Math/CAABox.hpp"
#include "Kyoto/Math/CTransform4f.hpp"
@@ -38,8 +39,9 @@ class CPhazonBeam;
class CElementGen;
class CWorldShadow;
class CGenDescription;
class CPlayerGun;
class CPlayerGun {
class CPlayerGun : public TOneStatic< CPlayerGun > {
static float skTractorBeamFactor;
public:
@@ -91,6 +93,7 @@ public:
};
CPlayerGun(TUniqueId);
~CPlayerGun();
void InitBeamData();
void InitBombData();