2022-10-18 02:05:27 +00:00
|
|
|
#ifndef _CREALELEMENT
|
|
|
|
#define _CREALELEMENT
|
|
|
|
|
|
|
|
#include "types.h"
|
|
|
|
|
|
|
|
#include "Kyoto/Particles/IElement.hpp"
|
|
|
|
|
|
|
|
#include "rstl/vector.hpp"
|
|
|
|
|
|
|
|
class CREConstant : public CRealElement {
|
|
|
|
float x4_val;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREConstant(float val);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREConstant();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
|
|
|
bool IsConstant() const { return true; }
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CRESineWave : public CRealElement {
|
|
|
|
CRealElement* x4_frequency;
|
|
|
|
CRealElement* x8_amplitude;
|
|
|
|
CRealElement* xc_phase;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CRESineWave(CRealElement* a, CRealElement* b, CRealElement* c);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CRESineWave();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CRETimeScale : public CRealElement {
|
|
|
|
CRealElement* x4_a;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CRETimeScale(CRealElement* a);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CRETimeScale();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREAdd : public CRealElement {
|
|
|
|
CRealElement* x4_a;
|
|
|
|
CRealElement* x8_b;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREAdd(CRealElement* a, CRealElement* b);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREAdd();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREMultiply : public CRealElement {
|
|
|
|
CRealElement* x4_a;
|
|
|
|
CRealElement* x8_b;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREMultiply(CRealElement* a, CRealElement* b);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREMultiply();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREDotProduct : public CRealElement {
|
|
|
|
CVectorElement* x4_a;
|
|
|
|
CVectorElement* x8_b;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREDotProduct(CVectorElement* a, CVectorElement* b);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREDotProduct();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CRERandom : public CRealElement {
|
|
|
|
CRealElement* x4_min;
|
|
|
|
CRealElement* x8_max;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CRERandom(CRealElement* min, CRealElement* max);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CRERandom();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREInitialRandom : public CRealElement {
|
|
|
|
CRealElement* x4_min;
|
|
|
|
CRealElement* x8_max;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREInitialRandom(CRealElement* min, CRealElement* max);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREInitialRandom();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
|
|
|
bool IsConstant() const { return true; }
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CRETimeChain : public CRealElement {
|
|
|
|
CRealElement* x4_a;
|
|
|
|
CRealElement* x8_b;
|
|
|
|
CIntElement* xc_swFrame;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CRETimeChain(CRealElement* a, CRealElement* b, CIntElement* c);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CRETimeChain();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREClamp : public CRealElement {
|
|
|
|
CRealElement* x4_min;
|
|
|
|
CRealElement* x8_max;
|
|
|
|
CRealElement* xc_val;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREClamp(CRealElement* a, CRealElement* b, CRealElement* c);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREClamp();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREPulse : public CRealElement {
|
|
|
|
CIntElement* x4_aDuration;
|
|
|
|
CIntElement* x8_bDuration;
|
|
|
|
CRealElement* xc_valA;
|
|
|
|
CRealElement* x10_valB;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREPulse(CIntElement* a, CIntElement* b, CRealElement* c, CRealElement* d);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREPulse();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CRELifetimePercent : public CRealElement {
|
|
|
|
CRealElement* x4_percentVal;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CRELifetimePercent(CRealElement* a); // : x4_percentVal(a) {}
|
2023-02-06 07:21:28 +00:00
|
|
|
~CRELifetimePercent();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CRELifetimeTween : public CRealElement {
|
|
|
|
CRealElement* x4_a;
|
|
|
|
CRealElement* x8_b;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CRELifetimeTween(CRealElement* a, CRealElement* b);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CRELifetimeTween();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREKeyframeEmitter : public CRealElement {
|
|
|
|
int x4_percent;
|
|
|
|
int x8_unk1;
|
|
|
|
bool xc_loop;
|
|
|
|
bool xd_unk2;
|
|
|
|
int x10_loopEnd;
|
|
|
|
int x14_loopStart;
|
|
|
|
rstl::vector< float > x18_keys;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREKeyframeEmitter(CInputStream& in);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREKeyframeEmitter();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREParticleAccessParameter1 : public CRealElement {
|
|
|
|
public:
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREParticleAccessParameter1() {}
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREParticleAccessParameter2 : public CRealElement {
|
|
|
|
public:
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREParticleAccessParameter2() {}
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREParticleAccessParameter3 : public CRealElement {
|
|
|
|
public:
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREParticleAccessParameter3() {}
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREParticleAccessParameter4 : public CRealElement {
|
|
|
|
public:
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREParticleAccessParameter4() {}
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREParticleAccessParameter5 : public CRealElement {
|
|
|
|
public:
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREParticleAccessParameter5() {}
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREParticleAccessParameter6 : public CRealElement {
|
|
|
|
public:
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREParticleAccessParameter6() {}
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREParticleAccessParameter7 : public CRealElement {
|
|
|
|
public:
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREParticleAccessParameter7() {}
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREParticleAccessParameter8 : public CRealElement {
|
|
|
|
public:
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREParticleAccessParameter8() {}
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREParticleSizeOrLineLength : public CRealElement {
|
|
|
|
public:
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREParticleSizeOrLineLength() {}
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREParticleRotationOrLineWidth : public CRealElement {
|
|
|
|
public:
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREParticleRotationOrLineWidth() {}
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREVectorXToReal : public CRealElement {
|
|
|
|
CVectorElement* x4_a;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREVectorXToReal(CVectorElement* a);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREVectorXToReal();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREVectorYToReal : public CRealElement {
|
|
|
|
CVectorElement* x4_a;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREVectorYToReal(CVectorElement* a);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREVectorYToReal();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREVectorZToReal : public CRealElement {
|
|
|
|
CVectorElement* x4_a;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREVectorZToReal(CVectorElement* a);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREVectorZToReal();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREVectorMagnitude : public CRealElement {
|
|
|
|
CVectorElement* x4_a;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREVectorMagnitude(CVectorElement* a);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREVectorMagnitude();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREInitialSwitch : public CRealElement {
|
|
|
|
CRealElement* x4_a;
|
|
|
|
CRealElement* x8_b;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREInitialSwitch(CRealElement* a, CRealElement* b);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREInitialSwitch();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CRECompareLessThan : public CRealElement {
|
|
|
|
CRealElement* x4_a;
|
|
|
|
CRealElement* x8_b;
|
|
|
|
CRealElement* xc_c;
|
|
|
|
CRealElement* x10_d;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CRECompareLessThan(CRealElement* a, CRealElement* b, CRealElement* c, CRealElement* d);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CRECompareLessThan();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CRECompareEqual : public CRealElement {
|
|
|
|
CRealElement* x4_a;
|
|
|
|
CRealElement* x8_b;
|
|
|
|
CRealElement* xc_c;
|
|
|
|
CRealElement* x10_d;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CRECompareEqual(CRealElement* a, CRealElement* b, CRealElement* c, CRealElement* d);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CRECompareEqual();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREConstantRange : public CRealElement {
|
|
|
|
CRealElement* x4_val;
|
|
|
|
CRealElement* x8_min;
|
|
|
|
CRealElement* xc_max;
|
|
|
|
CRealElement* x10_inRange;
|
|
|
|
CRealElement* x14_outOfRange;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREConstantRange(CRealElement* a, CRealElement* b, CRealElement* c, CRealElement* d,
|
|
|
|
CRealElement* e);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREConstantRange();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREExternalVar : public CRealElement {
|
|
|
|
CIntElement* x4_a;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREExternalVar(CIntElement* a);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREExternalVar();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CRESubtract : public CRealElement {
|
|
|
|
CRealElement* x4_a;
|
|
|
|
CRealElement* x8_b;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CRESubtract(CRealElement* a, CRealElement* b);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CRESubtract();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREGetComponentRed : public CRealElement {
|
|
|
|
CColorElement* x4_a;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREGetComponentRed(CColorElement* a);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREGetComponentRed();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREGetComponentGreen : public CRealElement {
|
|
|
|
CColorElement* x4_a;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREGetComponentGreen(CColorElement* a);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREGetComponentGreen();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREGetComponentBlue : public CRealElement {
|
|
|
|
CColorElement* x4_a;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREGetComponentBlue(CColorElement* a);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREGetComponentBlue();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREGetComponentAlpha : public CRealElement {
|
|
|
|
CColorElement* x4_a;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREGetComponentAlpha(CColorElement* a);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREGetComponentAlpha();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CREIntTimesReal : public CRealElement {
|
|
|
|
CIntElement* x4_a;
|
|
|
|
CRealElement* x8_b;
|
|
|
|
|
|
|
|
public:
|
|
|
|
CREIntTimesReal(CIntElement* a, CRealElement* b);
|
2023-02-06 07:21:28 +00:00
|
|
|
~CREIntTimesReal();
|
|
|
|
bool GetValue(int frame, float& valOut) const;
|
2022-10-18 02:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // _CREALELEMENT
|