mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-12-14 11:26:07 +00:00
Add several particle classes; link CParticleGlobals
Adds CModVectorElement, CParticleDataFactory, CParticleGlobals, CRealElement
CRealElement & CModVectorElement are very close to matching
Former-commit-id: bb99d88d3b
This commit is contained in:
159
include/Kyoto/Particles/CModVectorElement.hpp
Normal file
159
include/Kyoto/Particles/CModVectorElement.hpp
Normal file
@@ -0,0 +1,159 @@
|
||||
#ifndef _CMODVECTORELEMENT
|
||||
#define _CMODVECTORELEMENT
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#include "Kyoto/Math/CVector3f.hpp"
|
||||
#include "Kyoto/Particles/IElement.hpp"
|
||||
|
||||
class CMVEConstant : public CModVectorElement {
|
||||
CRealElement* x4_x;
|
||||
CRealElement* x8_y;
|
||||
CRealElement* xc_z;
|
||||
|
||||
public:
|
||||
CMVEConstant(CRealElement* a, CRealElement* b, CRealElement* c);
|
||||
~CMVEConstant() override;
|
||||
bool GetValue(int frame, CVector3f& pVel, CVector3f& pPos) const override;
|
||||
};
|
||||
|
||||
class CMVEFastConstant : public CModVectorElement {
|
||||
CVector3f x4_val;
|
||||
|
||||
public:
|
||||
CMVEFastConstant(float a, float b, float c);
|
||||
~CMVEFastConstant() override;
|
||||
bool GetValue(int frame, CVector3f& pVel, CVector3f& pPos) const override;
|
||||
};
|
||||
|
||||
class CMVEGravity : public CModVectorElement {
|
||||
CVectorElement* x4_a;
|
||||
|
||||
public:
|
||||
CMVEGravity(CVectorElement* a);
|
||||
~CMVEGravity() override;
|
||||
bool GetValue(int frame, CVector3f& pVel, CVector3f& pPos) const override;
|
||||
};
|
||||
|
||||
class CMVEWind : public CModVectorElement {
|
||||
CVectorElement* x4_velocity;
|
||||
CRealElement* x8_factor;
|
||||
|
||||
public:
|
||||
CMVEWind(CVectorElement* velocity, CRealElement* factor);
|
||||
~CMVEWind() override;
|
||||
bool GetValue(int frame, CVector3f& pVel, CVector3f& pPos) const override;
|
||||
};
|
||||
|
||||
class CMVEExplode : public CModVectorElement {
|
||||
CRealElement* x4_a;
|
||||
CRealElement* x8_b;
|
||||
|
||||
public:
|
||||
CMVEExplode(CRealElement* a, CRealElement* b);
|
||||
~CMVEExplode() override;
|
||||
bool GetValue(int frame, CVector3f& pVel, CVector3f& pPos) const override;
|
||||
};
|
||||
|
||||
class CMVETimeChain : public CModVectorElement {
|
||||
CModVectorElement* x4_a;
|
||||
CModVectorElement* x8_b;
|
||||
CIntElement* xc_swFrame;
|
||||
|
||||
public:
|
||||
CMVETimeChain(CModVectorElement* a, CModVectorElement* b, CIntElement* c);
|
||||
~CMVETimeChain() override;
|
||||
bool GetValue(int frame, CVector3f& pVel, CVector3f& pPos) const override;
|
||||
};
|
||||
|
||||
class CMVEPulse : public CModVectorElement {
|
||||
CIntElement* x4_aDuration;
|
||||
CIntElement* x8_bDuration;
|
||||
CModVectorElement* xc_aVal;
|
||||
CModVectorElement* x10_bVal;
|
||||
|
||||
public:
|
||||
CMVEPulse(CIntElement* a, CIntElement* b, CModVectorElement* c, CModVectorElement* d);
|
||||
~CMVEPulse() override;
|
||||
bool GetValue(int frame, CVector3f& pVel, CVector3f& pPos) const override;
|
||||
};
|
||||
|
||||
class CMVEImplosion : public CModVectorElement {
|
||||
CVectorElement* x4_implPoint;
|
||||
CRealElement* x8_magScale;
|
||||
CRealElement* xc_maxMag;
|
||||
CRealElement* x10_minMag;
|
||||
bool x14_enableMinMag;
|
||||
|
||||
public:
|
||||
CMVEImplosion(CVectorElement* a, CRealElement* b, CRealElement* c, CRealElement* d, bool e);
|
||||
~CMVEImplosion() override;
|
||||
bool GetValue(int frame, CVector3f& pVel, CVector3f& pPos) const override;
|
||||
};
|
||||
|
||||
class CMVELinearImplosion : public CModVectorElement {
|
||||
CVectorElement* x4_implPoint;
|
||||
CRealElement* x8_magScale;
|
||||
CRealElement* xc_maxMag;
|
||||
CRealElement* x10_minMag;
|
||||
bool x14_enableMinMag;
|
||||
|
||||
public:
|
||||
CMVELinearImplosion(CVectorElement* a, CRealElement* b, CRealElement* c, CRealElement* d, bool e);
|
||||
~CMVELinearImplosion() override;
|
||||
bool GetValue(int frame, CVector3f& pVel, CVector3f& pPos) const override;
|
||||
};
|
||||
|
||||
class CMVEExponentialImplosion : public CModVectorElement {
|
||||
CVectorElement* x4_implPoint;
|
||||
CRealElement* x8_magScale;
|
||||
CRealElement* xc_maxMag;
|
||||
CRealElement* x10_minMag;
|
||||
bool x14_enableMinMag;
|
||||
|
||||
public:
|
||||
CMVEExponentialImplosion(CVectorElement* a, CRealElement* b, CRealElement* c, CRealElement* d,
|
||||
bool e);
|
||||
~CMVEExponentialImplosion() override;
|
||||
bool GetValue(int frame, CVector3f& pVel, CVector3f& pPos) const override;
|
||||
};
|
||||
|
||||
class CMVESwirl : public CModVectorElement {
|
||||
CVectorElement* x4_helixPoint;
|
||||
CVectorElement* x8_curveBinormal;
|
||||
CRealElement* xc_filterGain;
|
||||
CRealElement* x10_tangentialVelocity;
|
||||
|
||||
public:
|
||||
CMVESwirl(CVectorElement* a, CVectorElement* b, CRealElement* c, CRealElement* d);
|
||||
~CMVESwirl() override;
|
||||
bool GetValue(int frame, CVector3f& pVel, CVector3f& pPos) const override;
|
||||
};
|
||||
|
||||
class CMVEBounce : public CModVectorElement {
|
||||
CVectorElement* x4_planePoint;
|
||||
CVectorElement* x8_planeNormal;
|
||||
CRealElement* xc_friction;
|
||||
CRealElement* x10_restitution;
|
||||
bool x14_planePrecomputed;
|
||||
bool x15_dieOnPenetrate;
|
||||
mutable CVector3f x18_planeValidatedNormal;
|
||||
mutable float x24_planeD;
|
||||
|
||||
public:
|
||||
CMVEBounce(CVectorElement* planePoint, CVectorElement* planeNormal, CRealElement* friction,
|
||||
CRealElement* restitution, bool e);
|
||||
~CMVEBounce() override;
|
||||
bool GetValue(int frame, CVector3f& pVel, CVector3f& pPos) const override;
|
||||
};
|
||||
|
||||
class CMVESetPosition : public CModVectorElement {
|
||||
CVectorElement* x4_a;
|
||||
|
||||
public:
|
||||
CMVESetPosition(CVectorElement* a);
|
||||
~CMVESetPosition() override;
|
||||
bool GetValue(int frame, CVector3f& pVel, CVector3f& pPos) const override;
|
||||
};
|
||||
|
||||
#endif // _CMODVECTORELEMENT
|
||||
Reference in New Issue
Block a user