#ifndef __PSHAG_CMODVECTORELEMENT_HPP__ #define __PSHAG_CMODVECTORELEMENT_HPP__ #include "IElement.hpp" namespace pshag { class CMVEImplosion : public CModVectorElement { std::unique_ptr x4_implPoint; std::unique_ptr x8_magScale; std::unique_ptr xc_maxMag; std::unique_ptr x10_minMag; bool x14_enableMinMag; public: CMVEImplosion(CVectorElement* a, CRealElement* b, CRealElement* c, CRealElement* d, bool e) : x4_implPoint(a), x8_magScale(b), xc_maxMag(c), x10_minMag(d), x14_enableMinMag(e) {} bool GetValue(int frame, Zeus::CVector3f& pVel, Zeus::CVector3f& pPos) const; }; class CMVEExponentialImplosion : public CModVectorElement { std::unique_ptr x4_implPoint; std::unique_ptr x8_magScale; std::unique_ptr xc_maxMag; std::unique_ptr x10_minMag; bool x14_enableMinMag; public: CMVEExponentialImplosion(CVectorElement* a, CRealElement* b, CRealElement* c, CRealElement* d, bool e) : x4_implPoint(a), x8_magScale(b), xc_maxMag(c), x10_minMag(d), x14_enableMinMag(e) {} bool GetValue(int frame, Zeus::CVector3f& pVel, Zeus::CVector3f& pPos) const; }; class CMVELinearImplosion : public CModVectorElement { std::unique_ptr x4_implPoint; std::unique_ptr x8_magScale; std::unique_ptr xc_maxMag; std::unique_ptr x10_minMag; bool x14_enableMinMag; public: CMVELinearImplosion(CVectorElement* a, CRealElement* b, CRealElement* c, CRealElement* d, bool e) : x4_implPoint(a), x8_magScale(b), xc_maxMag(c), x10_minMag(d), x14_enableMinMag(e) {} bool GetValue(int frame, Zeus::CVector3f& pVel, Zeus::CVector3f& pPos) const; }; class CMVETimeChain : public CModVectorElement { std::unique_ptr x4_a; std::unique_ptr x8_b; std::unique_ptr xc_swFrame; public: CMVETimeChain(CModVectorElement* a, CModVectorElement* b, CIntElement* c) : x4_a(a), x8_b(b), xc_swFrame(c) {} bool GetValue(int frame, Zeus::CVector3f& pVel, Zeus::CVector3f& pPos) const; }; class CMVEBounce : public CModVectorElement { std::unique_ptr x4_a; std::unique_ptr x8_b; std::unique_ptr xc_c; std::unique_ptr x10_d; bool x14_e; bool x15_f; Zeus::CVector3f x18_g; float x24_j; public: CMVEBounce(CVectorElement* a, CVectorElement* b, CRealElement* c, CRealElement* d, bool e); bool GetValue(int frame, Zeus::CVector3f& pVel, Zeus::CVector3f& pPos) const; }; class CMVEConstant : public CModVectorElement { std::unique_ptr x4_x; std::unique_ptr x8_y; std::unique_ptr xc_z; public: CMVEConstant(CRealElement* a, CRealElement* b, CRealElement* c) : x4_x(a), x8_y(b), xc_z(c) {} bool GetValue(int frame, Zeus::CVector3f& pVel, Zeus::CVector3f& pPos) const; }; class CMVEFastConstant : public CModVectorElement { Zeus::CVector3f x4_val; public: CMVEFastConstant(float a, float b, float c) : x4_val(a, b, c) {} bool GetValue(int frame, Zeus::CVector3f& pVel, Zeus::CVector3f& pPos) const; }; class CMVEGravity : public CModVectorElement { std::unique_ptr x4_a; public: CMVEGravity(CVectorElement* a) : x4_a(a) {} bool GetValue(int frame, Zeus::CVector3f& pVel, Zeus::CVector3f& pPos) const; }; class CMVEExplode : public CModVectorElement { std::unique_ptr x4_a; std::unique_ptr x8_b; public: CMVEExplode(CRealElement* a, CRealElement* b) : x4_a(a), x8_b(b) {} bool GetValue(int frame, Zeus::CVector3f& pVel, Zeus::CVector3f& pPos) const; }; class CMVESetPosition : public CModVectorElement { std::unique_ptr x4_a; public: CMVESetPosition(CVectorElement* a) : x4_a(a) {} bool GetValue(int frame, Zeus::CVector3f& pVel, Zeus::CVector3f& pPos) const; }; class CMVEPulse : public CModVectorElement { std::unique_ptr x4_aDuration; std::unique_ptr x8_bDuration; std::unique_ptr xc_aVal; std::unique_ptr x10_bVal; public: CMVEPulse(CIntElement* a, CIntElement* b, CModVectorElement* c, CModVectorElement* d) : x4_aDuration(a), x8_bDuration(b), xc_aVal(c), x10_bVal(d) {} bool GetValue(int frame, Zeus::CVector3f& pVel, Zeus::CVector3f& pPos) const; }; class CMVEWind : public CModVectorElement { std::unique_ptr x4_direction; std::unique_ptr x8_speed; public: CMVEWind(CVectorElement* a, CRealElement* b) : x4_direction(a), x8_speed(b) {} bool GetValue(int frame, Zeus::CVector3f& pVel, Zeus::CVector3f& pPos) const; }; class CMVESwirl : public CModVectorElement { std::unique_ptr x4_a; std::unique_ptr x8_b; std::unique_ptr xc_c; std::unique_ptr x10_d; public: CMVESwirl(CVectorElement* a, CVectorElement* b, CRealElement* c, CRealElement* d) : x4_a(a), x8_b(b), xc_c(c), x10_d(d) {} bool GetValue(int frame, Zeus::CVector3f& pVel, Zeus::CVector3f& pPos) const; }; } #endif // __PSHAG_CMODVECTORELEMENT_HPP__