mirror of https://github.com/AxioDL/metaforce.git
All MP1 element decls in
This commit is contained in:
parent
e060746b14
commit
8b02f897e6
|
@ -1,11 +1,51 @@
|
||||||
#ifndef __RETRO_CCOLORELEMENT_HPP__
|
#ifndef __RETRO_CCOLORELEMENT_HPP__
|
||||||
#define __RETRO_CCOLORELEMENT_HPP__
|
#define __RETRO_CCOLORELEMENT_HPP__
|
||||||
|
|
||||||
|
#include "IElement.hpp"
|
||||||
|
|
||||||
namespace Retro
|
namespace Retro
|
||||||
{
|
{
|
||||||
|
|
||||||
class CColorElement
|
class CCEKeyframeEmitter : public CColorElement
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CColor& colorOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CCEConstant : public CColorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CColor& colorOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CCEFastConstant : public CColorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CColor& colorOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CCETimeChain : public CColorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CColor& colorOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CCEFadeEnd : public CColorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CColor& colorOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CCEFade : public CColorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CColor& colorOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CCEPulse : public CColorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CColor& colorOut) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,28 @@
|
||||||
#ifndef __RETRO_CEMITTERELEMENT_HPP__
|
#ifndef __RETRO_CEMITTERELEMENT_HPP__
|
||||||
#define __RETRO_CEMITTERELEMENT_HPP__
|
#define __RETRO_CEMITTERELEMENT_HPP__
|
||||||
|
|
||||||
|
#include "IElement.hpp"
|
||||||
|
|
||||||
namespace Retro
|
namespace Retro
|
||||||
{
|
{
|
||||||
|
|
||||||
class CEmitterElement
|
class CEmitterElement : public IElement
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class CEESimpleEmitter : public CEmitterElement
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVESphere : public CEmitterElement
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVEAngularSphere : public CEmitterElement
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // __RETRO_CEMITTERELEMENT_HPP__
|
#endif // __RETRO_CEMITTERELEMENT_HPP__
|
||||||
|
|
|
@ -1,11 +1,111 @@
|
||||||
#ifndef __RETRO_CINTELEMENT_HPP__
|
#ifndef __RETRO_CINTELEMENT_HPP__
|
||||||
#define __RETRO_CINTELEMENT_HPP__
|
#define __RETRO_CINTELEMENT_HPP__
|
||||||
|
|
||||||
|
#include "IElement.hpp"
|
||||||
|
|
||||||
namespace Retro
|
namespace Retro
|
||||||
{
|
{
|
||||||
|
|
||||||
class CIntElement
|
class CIEKeyframeEmitter : public CIntElement
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, int& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CIEDeath : public CIntElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, int& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CIEClamp : public CIntElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, int& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CIETimeChain : public CIntElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, int& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CIEAdd : public CIntElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, int& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CIEConstant : public CIntElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, int& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CIEImpulse : public CIntElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, int& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CIELifetimePercent : public CIntElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, int& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CIEInitialRandom : public CIntElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, int& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CIEPulse : public CIntElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, int& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CIEMultiply : public CIntElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, int& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CIESampleAndHold : public CIntElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, int& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CIERandom : public CIntElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, int& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CIETimeScale : public CIntElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, int& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CIEGTCP : public CIntElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, int& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CIEModulo : public CIntElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, int& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CIESubtract : public CIntElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, int& valOut) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
add_library(RuntimeCommonParticle
|
add_library(RuntimeCommonParticle
|
||||||
|
IElement.hpp
|
||||||
CGenDescription.hpp CGenDescription.cpp
|
CGenDescription.hpp CGenDescription.cpp
|
||||||
CRealElement.hpp CRealElement.cpp
|
CRealElement.hpp CRealElement.cpp
|
||||||
CIntElement.hpp CIntElement.cpp
|
CIntElement.hpp CIntElement.cpp
|
||||||
|
@ -19,4 +20,5 @@ add_library(RuntimeCommonParticle
|
||||||
CParticleElectric.hpp CParticleElectric.cpp
|
CParticleElectric.hpp CParticleElectric.cpp
|
||||||
CDecalManager.hpp CDecalManager.cpp
|
CDecalManager.hpp CDecalManager.cpp
|
||||||
CSpawnSystemKeyframeData.hpp CSpawnSystemKeyframeData.cpp
|
CSpawnSystemKeyframeData.hpp CSpawnSystemKeyframeData.cpp
|
||||||
CWarp.hpp CWarp.cpp)
|
CWarp.hpp CWarp.cpp
|
||||||
|
CParticleGlobals.hpp CParticleGlobals.cpp)
|
||||||
|
|
|
@ -1,11 +1,87 @@
|
||||||
#ifndef __RETRO_CMODVECTORELEMENT_HPP__
|
#ifndef __RETRO_CMODVECTORELEMENT_HPP__
|
||||||
#define __RETRO_CMODVECTORELEMENT_HPP__
|
#define __RETRO_CMODVECTORELEMENT_HPP__
|
||||||
|
|
||||||
|
#include "IElement.hpp"
|
||||||
|
|
||||||
namespace Retro
|
namespace Retro
|
||||||
{
|
{
|
||||||
|
|
||||||
class CModVectorElement
|
class CMVEImplosion : public CModVectorElement
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& vec1Out, Zeus::CVector3f& vec2Out) const=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CMVEExponentialImplosion : public CModVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& vec1Out, Zeus::CVector3f& vec2Out) const=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CMVETimeChain : public CModVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& vec1Out, Zeus::CVector3f& vec2Out) const=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CMVEBounce : public CModVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& vec1Out, Zeus::CVector3f& vec2Out) const=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CMVEConstant : public CModVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& vec1Out, Zeus::CVector3f& vec2Out) const=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CMVEFastConstant : public CModVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& vec1Out, Zeus::CVector3f& vec2Out) const=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CMVEGravity : public CModVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& vec1Out, Zeus::CVector3f& vec2Out) const=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CMVEExplode : public CModVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& vec1Out, Zeus::CVector3f& vec2Out) const=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CMVESetPosition : public CModVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& vec1Out, Zeus::CVector3f& vec2Out) const=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CMVELinearImplosion : public CModVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& vec1Out, Zeus::CVector3f& vec2Out) const=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CMVEPulse : public CModVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& vec1Out, Zeus::CVector3f& vec2Out) const=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CMVEWind : public CModVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& vec1Out, Zeus::CVector3f& vec2Out) const=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CMVESwirl : public CModVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& vec1Out, Zeus::CVector3f& vec2Out) const=0;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
#include "CParticleGlobals.hpp"
|
||||||
|
|
||||||
|
namespace Retro
|
||||||
|
{
|
||||||
|
|
||||||
|
int CParticleGlobals::g_emitterTimeInt = 0;
|
||||||
|
float CParticleGlobals::g_emitterTimeFloat = 0.0;
|
||||||
|
|
||||||
|
int CParticleGlobals::g_particleLifetimeInt = 0;
|
||||||
|
float CParticleGlobals::g_particleLifetimeFloat = 0.0;
|
||||||
|
|
||||||
|
int CParticleGlobals::g_particleLifetimePercentTweenInt = 0;
|
||||||
|
float CParticleGlobals::g_particleLifetimePercentTweenFloat = 0.0;
|
||||||
|
float CParticleGlobals::g_particleLifetimePercentTweenIntFloatRem = 0.0;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
#ifndef __RETRO_CPARTICLEGLOBALS_HPP__
|
||||||
|
#define __RETRO_CPARTICLEGLOBALS_HPP__
|
||||||
|
|
||||||
|
namespace Retro
|
||||||
|
{
|
||||||
|
|
||||||
|
class CParticleGlobals
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static int g_emitterTimeInt;
|
||||||
|
static float g_emitterTimeFloat;
|
||||||
|
static void SetEmitterTime(int frame)
|
||||||
|
{
|
||||||
|
g_emitterTimeInt = frame;
|
||||||
|
g_emitterTimeFloat = frame;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int g_particleLifetimeInt;
|
||||||
|
static float g_particleLifetimeFloat;
|
||||||
|
static void SetParticleLifetime(int frame)
|
||||||
|
{
|
||||||
|
g_particleLifetimeInt = frame;
|
||||||
|
g_particleLifetimeFloat = frame;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int g_particleLifetimePercentTweenInt;
|
||||||
|
static float g_particleLifetimePercentTweenFloat;
|
||||||
|
static float g_particleLifetimePercentTweenIntFloatRem;
|
||||||
|
static void UpdateParticleLifetimeTweenValues(int frame)
|
||||||
|
{
|
||||||
|
float lt = g_particleLifetimeInt != 0.0f ? g_particleLifetimeInt : 1.0f;
|
||||||
|
g_particleLifetimePercentTweenFloat = 100.0f * frame / lt;
|
||||||
|
g_particleLifetimePercentTweenInt = g_particleLifetimePercentTweenFloat;
|
||||||
|
g_particleLifetimePercentTweenIntFloatRem = g_particleLifetimePercentTweenFloat - g_particleLifetimePercentTweenInt;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // __RETRO_CPARTICLEGLOBALS_HPP__
|
|
@ -0,0 +1,109 @@
|
||||||
|
#include "CRealElement.hpp"
|
||||||
|
#include "CParticleGlobals.hpp"
|
||||||
|
|
||||||
|
namespace Retro
|
||||||
|
{
|
||||||
|
|
||||||
|
CREKeyframeEmitter::CREKeyframeEmitter(CInputStream& in)
|
||||||
|
{
|
||||||
|
x4_percent = in.readUint32Big();
|
||||||
|
x8_a = in.readUint32Big();
|
||||||
|
xc_b = in.readBool();
|
||||||
|
xd_c = in.readBool();
|
||||||
|
x10_d = in.readUint32Big();
|
||||||
|
x14_e = in.readUint32Big();
|
||||||
|
|
||||||
|
u32 count = in.readUint32Big();
|
||||||
|
x18_keys.reserve(count);
|
||||||
|
for (u32 i=0 ; i<count ; ++i)
|
||||||
|
x18_keys.push_back(in.readFloatBig());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CREKeyframeEmitter::GetValue(int frame, float& valOut) const
|
||||||
|
{
|
||||||
|
if (!x4_percent)
|
||||||
|
{
|
||||||
|
int emitterTime = CParticleGlobals::g_emitterTimeInt;
|
||||||
|
int calcKey = emitterTime;
|
||||||
|
if (xc_b)
|
||||||
|
{
|
||||||
|
if (emitterTime >= x10_d)
|
||||||
|
{
|
||||||
|
int v1 = emitterTime - x14_e;
|
||||||
|
int v2 = x10_d - x14_e;
|
||||||
|
calcKey = v1 / v2;
|
||||||
|
calcKey *= v2;
|
||||||
|
calcKey = v1 - calcKey;
|
||||||
|
calcKey += x14_e;
|
||||||
|
}
|
||||||
|
valOut = x18_keys[calcKey];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int x10_d_m1 = x10_d - 1;
|
||||||
|
if (x10_d_m1 < calcKey)
|
||||||
|
calcKey = x10_d_m1;
|
||||||
|
valOut = x18_keys[calcKey];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int ltPerc = CParticleGlobals::g_particleLifetimePercentTweenInt;
|
||||||
|
float ltPercRem = CParticleGlobals::g_particleLifetimePercentTweenIntFloatRem;
|
||||||
|
if (ltPerc == 100)
|
||||||
|
valOut = x18_keys[100];
|
||||||
|
else
|
||||||
|
valOut = x18_keys[ltPerc+1] * ltPercRem + (1.0f - ltPercRem) * x18_keys[ltPerc];
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CRELifetimeTween::GetValue(int frame, float& valOut) const
|
||||||
|
{
|
||||||
|
float ltFac = frame / CParticleGlobals::g_particleLifetimeFloat;
|
||||||
|
float a, b;
|
||||||
|
x4_a->GetValue(frame, a);
|
||||||
|
x8_b->GetValue(frame, b);
|
||||||
|
valOut = b * ltFac + (1.0f - ltFac) * a;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CREConstant::GetValue(int frame, float& valOut) const
|
||||||
|
{
|
||||||
|
valOut = x4_val;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CRETimeChain::GetValue(int frame, float& valOut) const
|
||||||
|
{
|
||||||
|
int v;
|
||||||
|
xc_c->GetValue(frame, v);
|
||||||
|
if (frame >= v)
|
||||||
|
return x8_b->GetValue(frame, valOut);
|
||||||
|
else
|
||||||
|
return x4_a->GetValue(frame, valOut);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CREAdd::GetValue(int frame, float& valOut) const
|
||||||
|
{
|
||||||
|
float a, b;
|
||||||
|
x4_a->GetValue(frame, a);
|
||||||
|
x8_b->GetValue(frame, b);
|
||||||
|
valOut = a + b;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CREClamp::GetValue(int frame, float &valOut) const
|
||||||
|
{
|
||||||
|
float a, b;
|
||||||
|
x4_a->GetValue(frame, a);
|
||||||
|
x8_b->GetValue(frame, b);
|
||||||
|
xc_c->GetValue(frame, valOut);
|
||||||
|
if (valOut > b)
|
||||||
|
valOut = b;
|
||||||
|
if (valOut < a)
|
||||||
|
valOut = a;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,11 +1,243 @@
|
||||||
#ifndef __RETRO_CREALELEMENT_HPP__
|
#ifndef __RETRO_CREALELEMENT_HPP__
|
||||||
#define __RETRO_CREALELEMENT_HPP__
|
#define __RETRO_CREALELEMENT_HPP__
|
||||||
|
|
||||||
|
#include "IElement.hpp"
|
||||||
|
|
||||||
namespace Retro
|
namespace Retro
|
||||||
{
|
{
|
||||||
|
|
||||||
class CRealElement
|
class CRELifetimeTween : public CRealElement
|
||||||
{
|
{
|
||||||
|
std::unique_ptr<CRealElement> x4_a;
|
||||||
|
std::unique_ptr<CRealElement> x8_b;
|
||||||
|
public:
|
||||||
|
CRELifetimeTween(CRealElement* a, CRealElement* b)
|
||||||
|
: x4_a(a), x8_b(b) {}
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREConstant : public CRealElement
|
||||||
|
{
|
||||||
|
float x4_val;
|
||||||
|
public:
|
||||||
|
CREConstant(float val) : x4_val(val) {}
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
bool IsConstant() const {return true;}
|
||||||
|
};
|
||||||
|
|
||||||
|
class CRETimeChain : public CRealElement
|
||||||
|
{
|
||||||
|
std::unique_ptr<CRealElement> x4_a;
|
||||||
|
std::unique_ptr<CRealElement> x8_b;
|
||||||
|
std::unique_ptr<CIntElement> xc_c;
|
||||||
|
public:
|
||||||
|
CRETimeChain(CRealElement* a, CRealElement* b, CIntElement* c)
|
||||||
|
: x4_a(a), x8_b(b), xc_c(c) {}
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREAdd : public CRealElement
|
||||||
|
{
|
||||||
|
std::unique_ptr<CRealElement> x4_a;
|
||||||
|
std::unique_ptr<CRealElement> x8_b;
|
||||||
|
public:
|
||||||
|
CREAdd(CRealElement* a, CRealElement* b)
|
||||||
|
: x4_a(a), x8_b(b) {}
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREClamp : public CRealElement
|
||||||
|
{
|
||||||
|
std::unique_ptr<CRealElement> x4_a;
|
||||||
|
std::unique_ptr<CRealElement> x8_b;
|
||||||
|
std::unique_ptr<CRealElement> xc_c;
|
||||||
|
public:
|
||||||
|
CREClamp(CRealElement* a, CRealElement* b, CRealElement* c)
|
||||||
|
: x4_a(a), x8_b(b), xc_c(c) {}
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREKeyframeEmitter : public CRealElement
|
||||||
|
{
|
||||||
|
u32 x4_percent;
|
||||||
|
u32 x8_a;
|
||||||
|
bool xc_b;
|
||||||
|
bool xd_c;
|
||||||
|
u32 x10_d;
|
||||||
|
u32 x14_e;
|
||||||
|
std::vector<float> x18_keys;
|
||||||
|
public:
|
||||||
|
CREKeyframeEmitter(CInputStream& in);
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREInitialRandom : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
bool IsConstant() const {return true;}
|
||||||
|
};
|
||||||
|
|
||||||
|
class CRERandom : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREMultiply : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREPulse : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CRETimeScale : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CRELifetimePercent : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CRESineWave : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREISWT : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CRECompareLessThan : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CRECompareEquals : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREParticleAccessParam1 : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREParticleAccessParam2 : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREParticleAccessParam3 : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREParticleAccessParam4 : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREParticleAccessParam5 : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREParticleAccessParam6 : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREParticleAccessParam7 : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREParticleAccessParam8 : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREPSLL : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREPRLW : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREPSOF : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CRESubtract : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREVectorMagnitude : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREVectorXToReal : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREVectorYToReal : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREVectorZToReal : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CRECEXT : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CREITRL : public CRealElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, float& valOut) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,36 @@
|
||||||
#ifndef __RETRO_CUVELEMENT_HPP__
|
#ifndef __RETRO_CUVELEMENT_HPP__
|
||||||
#define __RETRO_CUVELEMENT_HPP__
|
#define __RETRO_CUVELEMENT_HPP__
|
||||||
|
|
||||||
|
#include "IElement.hpp"
|
||||||
|
|
||||||
namespace Retro
|
namespace Retro
|
||||||
{
|
{
|
||||||
|
class CToken;
|
||||||
|
|
||||||
class CUVElement
|
struct SUVElementSet
|
||||||
{
|
{
|
||||||
|
float xMin, yMin, xMax, yMax;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CUVElement : public IElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual CToken GetValueTexture(int frame) const=0;
|
||||||
|
virtual void GetValueUV(int frame, SUVElementSet& valOut) const=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CUVEConstant : public CUVElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CToken GetValueTexture(int frame) const;
|
||||||
|
void GetValueUV(int frame, SUVElementSet& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CUVEAnimTexture : public CUVElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CToken GetValueTexture(int frame) const;
|
||||||
|
void GetValueUV(int frame, SUVElementSet& valOut) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,119 @@
|
||||||
#ifndef __RETRO_CVECTORELEMENT_HPP__
|
#ifndef __RETRO_CVECTORELEMENT_HPP__
|
||||||
#define __RETRO_CVECTORELEMENT_HPP__
|
#define __RETRO_CVECTORELEMENT_HPP__
|
||||||
|
|
||||||
|
#include "IElement.hpp"
|
||||||
|
#include "CVector3f.hpp"
|
||||||
|
|
||||||
namespace Retro
|
namespace Retro
|
||||||
{
|
{
|
||||||
|
|
||||||
class CVectorElement
|
class CVECone : public CVectorElement
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVETimeChain : public CVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVEAngleCone : public CVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVEAdd : public CVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVECircleCluster : public CVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVEConstant : public CVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVEFastConstant : public CVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
|
bool IsFastConstant() const {return true;}
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVECircle : public CVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVEKeyframeEmitter : public CVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVEMultiply : public CVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVERealToVector : public CVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVEPulse : public CVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVEParticleVelocity : public CVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVESPOS : public CVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVEPLCO : public CVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVEPLOC : public CVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVEPSOR : public CVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVEPSOF : public CVectorElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool GetValue(int frame, Zeus::CVector3f& valOut) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
#ifndef __RETRO_IELEMENT_HPP__
|
||||||
|
#define __RETRO_IELEMENT_HPP__
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
#include "GCNTypes.hpp"
|
||||||
|
#include "CVector3f.hpp"
|
||||||
|
#include "CColor.hpp"
|
||||||
|
#include "IOStreams.hpp"
|
||||||
|
|
||||||
|
namespace Retro
|
||||||
|
{
|
||||||
|
|
||||||
|
class IElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual ~IElement() = default;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CRealElement : public IElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool GetValue(int frame, float& valOut) const=0;
|
||||||
|
virtual bool IsConstant() const {return false;}
|
||||||
|
};
|
||||||
|
|
||||||
|
class CIntElement : public IElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool GetValue(int frame, int& valOut) const=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CVectorElement : public IElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool GetValue(int frame, Zeus::CVector3f& valOut) const=0;
|
||||||
|
virtual bool IsFastConstant() const {return false;}
|
||||||
|
};
|
||||||
|
|
||||||
|
class CModVectorElement : public IElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool GetValue(int frame, Zeus::CVector3f& vec1Out, Zeus::CVector3f& vec2Out) const=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CColorElement : public IElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool GetValue(int frame, Zeus::CColor& colorOut) const=0;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // __RETRO_IELEMENT_HPP__
|
Loading…
Reference in New Issue