Split POI nodes into their own headers, add weak imps to CSoundPOINode

This commit is contained in:
Phillip Stephens 2023-01-11 18:01:00 -08:00
parent aa37f3f471
commit 91313bf619
9 changed files with 123 additions and 75 deletions

View File

@ -0,0 +1,21 @@
#ifndef _CBOOLPOINODE
#define _CBOOLPOINODE
#include "Kyoto/Animation/CPOINode.hpp"
class CBoolPOINode : public CPOINode {
public:
CBoolPOINode(rstl::string name, ushort type, const CCharAnimTime& time, int index, bool unique,
float weight, int charIdx, int flags, bool value);
// : CPOINode(name, type, time, index, unique, weight, charIdx, flags), x38_val(value) {}
CBoolPOINode(CInputStream& in);
static CBoolPOINode CopyNodeMinusStartTime(const CBoolPOINode& node,
const CCharAnimTime& startTime);
bool GetValue() const { return x38_val; }
private:
bool x38_val;
};
#endif // _CBOOLPOINODE

View File

@ -0,0 +1,27 @@
#ifndef _CINT32POINODE
#define _CINT32POINODE
#include "Kyoto/Animation/CPOINode.hpp"
class CInt32POINode : public CPOINode {
public:
CInt32POINode(rstl::string name, ushort type, const CCharAnimTime& time, int index, bool unique,
float weight, int charIdx, int flags, int value, const rstl::string& locatorName);
/*: CPOINode(name, type, time, index, unique, weight, charIdx, flags)
, x38_val(value)
, x3c_lctrName(locatorName) {} */
explicit CInt32POINode(CInputStream& in);
static CInt32POINode CopyNodeMinusStartTime(const CInt32POINode& node,
const CCharAnimTime& startTime);
int GetValue() const { return x38_val; }
const rstl::string& GetLocatorName() const { return x3c_lctrName; }
private:
int x38_val;
rstl::string x3c_lctrName;
};
#endif // _CINT32POINODE

View File

@ -4,8 +4,6 @@
#include "types.h" #include "types.h"
#include "Kyoto/Animation/CCharAnimTime.hpp" #include "Kyoto/Animation/CCharAnimTime.hpp"
#include "Kyoto/Particles/CParticleData.hpp"
#include "rstl/string.hpp" #include "rstl/string.hpp"
enum EPOIType { enum EPOIType {
@ -19,6 +17,7 @@ enum EPOIType {
kPT_Sound = 8, kPT_Sound = 8,
}; };
class CInputStream;
class CPOINode { class CPOINode {
public: public:
CPOINode(const rstl::string& name, ushort type, const CCharAnimTime& time, int index, bool unique, CPOINode(const rstl::string& name, ushort type, const CCharAnimTime& time, int index, bool unique,
@ -52,73 +51,5 @@ protected:
}; };
CHECK_SIZEOF(CPOINode, 0x38) CHECK_SIZEOF(CPOINode, 0x38)
class CBoolPOINode : public CPOINode {
public:
CBoolPOINode(rstl::string name, ushort type, const CCharAnimTime& time, int index, bool unique,
float weight, int charIdx, int flags, bool value); /*
: CPOINode(name, type, time, index, unique, weight, charIdx, flags)
, x38_val(value) {}
*/
CBoolPOINode(CInputStream& in);
static CBoolPOINode CopyNodeMinusStartTime(const CBoolPOINode& node,
const CCharAnimTime& startTime);
bool GetValue() const { return x38_val; }
private:
bool x38_val;
};
class CInt32POINode : public CPOINode {
public:
CInt32POINode(rstl::string name, ushort type, const CCharAnimTime& time, int index, bool unique,
float weight, int charIdx, int flags, int value,
const rstl::string& locatorName); /*
: CPOINode(name, type, time, index, unique, weight, charIdx, flags)
, x38_val(value)
, x3c_lctrName(locatorName) {}
*/
explicit CInt32POINode(CInputStream& in);
static CInt32POINode CopyNodeMinusStartTime(const CInt32POINode& node,
const CCharAnimTime& startTime);
int GetValue() const { return x38_val; }
const rstl::string& GetLocatorName() const { return x3c_lctrName; }
private:
int x38_val;
rstl::string x3c_lctrName;
};
class CParticlePOINode : public CPOINode {
public:
CParticlePOINode(rstl::string name, ushort type, const CCharAnimTime& time, int index,
bool unique, float weight, int charIdx, int flags, const CParticleData& data); /*
: CPOINode(name, type, time, index, unique,
weight, charIdx, flags) , x38_val(value)
*/
explicit CParticlePOINode(CInputStream& in);
const CParticleData& GetParticleData() const { return x38_data; }
static CParticlePOINode CopyNodeMinusStartTime(const CParticlePOINode& node,
const CCharAnimTime& startTime);
private:
CParticleData x38_data;
};
class CSoundPOINode : public CPOINode {
public:
uint GetSoundId() const { return x38_sfxId; }
float GetFallOff() const { return x3c_falloff; }
float GetMaxDistance() const { return x40_maxDist; }
private:
uint x38_sfxId;
float x3c_falloff;
float x40_maxDist;
};
#endif // _CPOINODE #endif // _CPOINODE

View File

@ -0,0 +1,24 @@
#ifndef _CPARTICLEPOINODE
#define _CPARTICLEPOINODE
#include "Kyoto/Animation/CPOINode.hpp"
#include "Kyoto/Particles/CParticleData.hpp"
class CParticlePOINode : public CPOINode {
public:
CParticlePOINode(rstl::string name, ushort type, const CCharAnimTime& time, int index,
bool unique, float weight, int charIdx, int flags, const CParticleData& data);
//: CPOINode(name, type, time, index, unique, weight, charIdx, flags), x38_val(value) {}
explicit CParticlePOINode(CInputStream& in);
const CParticleData& GetParticleData() const { return x38_data; }
static CParticlePOINode CopyNodeMinusStartTime(const CParticlePOINode& node,
const CCharAnimTime& startTime);
private:
CParticleData x38_data;
};
#endif // _CPARTICLEPOINODE

View File

@ -0,0 +1,42 @@
#ifndef _CSOUNDPOINODE
#define _CSOUNDPOINODE
#include "Kyoto/Animation/CPOINode.hpp"
#include "Kyoto/Streams/CInputStream.hpp"
class CSoundPOINode : public CPOINode {
public:
CSoundPOINode(rstl::string name, ushort type, const CCharAnimTime& time, int index, bool unique,
float weight, int charIdx, int flags, int sfxId, float fallOff, float maxDist);
/* : CPOINode(name, type, time, index, unique, weight, charIdx, flags)
, x38_sfxId(sfxId)
, x3c_falloff(fallOff)
, x40_maxDist(maxDist) {}
*/
CSoundPOINode(CInputStream& in);
/*: CPOINode(in)
, x38_sfxId(in.ReadInt32())
, x3c_falloff(in.ReadFloat())
, x40_maxDist(in.ReadFloat()) {}
*/
uint GetSoundId() const { return x38_sfxId; }
float GetFallOff() const { return x3c_falloff; }
float GetMaxDistance() const { return x40_maxDist; }
static CSoundPOINode CopyNodeMinusStartTime(const CSoundPOINode& node,
const CCharAnimTime& startTime) {
return CSoundPOINode(node.GetString(), node.GetPoiType(), node.GetTime() - startTime,
node.GetIndex(), node.GetSaveState(), node.GetWeight(),
node.GetCharacterIndex(), node.GetFlags(), node.GetSoundId(),
node.GetFallOff(), node.GetMaxDistance());
}
private:
uint x38_sfxId;
float x3c_falloff;
float x40_maxDist;
};
#endif // _CSOUNDPOINODE

View File

@ -3,12 +3,15 @@
#include "types.h" #include "types.h"
#include "Kyoto/Animation/CBoolPOINode.hpp"
#include "Kyoto/Animation/CCharacterInfo.hpp"
#include "Kyoto/Animation/CInt32POINode.hpp"
#include "Kyoto/Animation/CParticlePOINode.hpp"
#include "Kyoto/Animation/CSoundPOINode.hpp"
#include "MetroidPrime/ActorCommon.hpp" #include "MetroidPrime/ActorCommon.hpp"
#include "MetroidPrime/CAdditiveAnimPlayback.hpp" #include "MetroidPrime/CAdditiveAnimPlayback.hpp"
#include "MetroidPrime/CAnimPlaybackParms.hpp" #include "MetroidPrime/CAnimPlaybackParms.hpp"
#include "Kyoto/Animation/CCharacterInfo.hpp"
#include "MetroidPrime/CHierarchyPoseBuilder.hpp" #include "MetroidPrime/CHierarchyPoseBuilder.hpp"
#include "Kyoto/Animation/CPOINode.hpp"
#include "MetroidPrime/CParticleDatabase.hpp" #include "MetroidPrime/CParticleDatabase.hpp"
#include "MetroidPrime/CPoseAsTransforms.hpp" #include "MetroidPrime/CPoseAsTransforms.hpp"

View File

@ -1,4 +1,4 @@
#include "Kyoto/Animation/CPOINode.hpp" #include "Kyoto/Animation/CBoolPOINode.hpp"
#include "Kyoto/Streams/CInputStream.hpp" #include "Kyoto/Streams/CInputStream.hpp"

View File

@ -1,4 +1,4 @@
#include "Kyoto/Animation/CPOINode.hpp" #include "Kyoto/Animation/CInt32POINode.hpp"
#include "Kyoto/Streams/CInputStream.hpp" #include "Kyoto/Streams/CInputStream.hpp"
CInt32POINode::CInt32POINode(CInputStream& in) CInt32POINode::CInt32POINode(CInputStream& in)

View File

@ -1,4 +1,4 @@
#include "Kyoto/Animation/CPOINode.hpp" #include "Kyoto/Animation/CParticlePOINode.hpp"
CParticlePOINode::CParticlePOINode(CInputStream& in) : CPOINode(in), x38_data(in) {} CParticlePOINode::CParticlePOINode(CInputStream& in) : CPOINode(in), x38_data(in) {}