mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-12-08 20:27:42 +00:00
Match CParticleDataFactory::GetModVectorElement
This commit is contained in:
@@ -142,7 +142,7 @@ class CMVEBounce : public CModVectorElement {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
CMVEBounce(CVectorElement* planePoint, CVectorElement* planeNormal, CRealElement* friction,
|
CMVEBounce(CVectorElement* planePoint, CVectorElement* planeNormal, CRealElement* friction,
|
||||||
CRealElement* restitution, bool e);
|
CRealElement* restitution, const bool e);
|
||||||
~CMVEBounce() override;
|
~CMVEBounce() override;
|
||||||
bool GetValue(int frame, CVector3f& pVel, CVector3f& pPos) const override;
|
bool GetValue(int frame, CVector3f& pVel, CVector3f& pPos) const override;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -306,10 +306,12 @@ CVectorElement* CParticleDataFactory::GetVectorElement(CInputStream& in) { retur
|
|||||||
CEmitterElement* CParticleDataFactory::GetEmitterElement(CInputStream& in) { return nullptr; }
|
CEmitterElement* CParticleDataFactory::GetEmitterElement(CInputStream& in) { return nullptr; }
|
||||||
|
|
||||||
CModVectorElement* CParticleDataFactory::GetModVectorElement(CInputStream& in) {
|
CModVectorElement* CParticleDataFactory::GetModVectorElement(CInputStream& in) {
|
||||||
|
CModVectorElement* ret;
|
||||||
FourCC clsId = GetClassID(in);
|
FourCC clsId = GetClassID(in);
|
||||||
switch (clsId) {
|
switch (clsId) {
|
||||||
case SBIG('NONE'): {
|
case SBIG('NONE'): {
|
||||||
return nullptr;
|
ret = nullptr;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case SBIG('CNST'): {
|
case SBIG('CNST'): {
|
||||||
CRealElement* a = GetRealElement(in);
|
CRealElement* a = GetRealElement(in);
|
||||||
@@ -327,40 +329,45 @@ CModVectorElement* CParticleDataFactory::GetModVectorElement(CInputStream& in) {
|
|||||||
a->GetValue(0, bf);
|
a->GetValue(0, bf);
|
||||||
a->GetValue(0, cf);
|
a->GetValue(0, cf);
|
||||||
#endif
|
#endif
|
||||||
CModVectorElement* result = rs_new CMVEFastConstant(af, bf, cf);
|
ret = rs_new CMVEFastConstant(af, bf, cf);
|
||||||
delete a;
|
delete a;
|
||||||
delete b;
|
delete b;
|
||||||
delete c;
|
delete c;
|
||||||
return result;
|
|
||||||
} else {
|
} else {
|
||||||
return rs_new CMVEConstant(a, b, c);
|
ret = rs_new CMVEConstant(a, b, c);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case SBIG('GRAV'): {
|
case SBIG('GRAV'): {
|
||||||
return rs_new CMVEGravity(GetVectorElement(in));
|
ret = rs_new CMVEGravity(GetVectorElement(in));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case SBIG('WIND'): {
|
case SBIG('WIND'): {
|
||||||
CVectorElement* a = GetVectorElement(in);
|
CVectorElement* a = GetVectorElement(in);
|
||||||
CRealElement* b = GetRealElement(in);
|
CRealElement* b = GetRealElement(in);
|
||||||
return rs_new CMVEWind(a, b);
|
ret = rs_new CMVEWind(a, b);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case SBIG('EXPL'): {
|
case SBIG('EXPL'): {
|
||||||
CRealElement* a = GetRealElement(in);
|
CRealElement* a = GetRealElement(in);
|
||||||
CRealElement* b = GetRealElement(in);
|
CRealElement* b = GetRealElement(in);
|
||||||
return rs_new CMVEExplode(a, b);
|
ret = rs_new CMVEExplode(a, b);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case SBIG('CHAN'): {
|
case SBIG('CHAN'): {
|
||||||
CModVectorElement* a = GetModVectorElement(in);
|
CModVectorElement* a = GetModVectorElement(in);
|
||||||
CModVectorElement* b = GetModVectorElement(in);
|
CModVectorElement* b = GetModVectorElement(in);
|
||||||
CIntElement* c = GetIntElement(in);
|
CIntElement* c = GetIntElement(in);
|
||||||
return rs_new CMVETimeChain(a, b, c);
|
ret = rs_new CMVETimeChain(a, b, c);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case SBIG('PULS'): {
|
case SBIG('PULS'): {
|
||||||
CIntElement* a = GetIntElement(in);
|
CIntElement* a = GetIntElement(in);
|
||||||
CIntElement* b = GetIntElement(in);
|
CIntElement* b = GetIntElement(in);
|
||||||
CModVectorElement* c = GetModVectorElement(in);
|
CModVectorElement* c = GetModVectorElement(in);
|
||||||
CModVectorElement* d = GetModVectorElement(in);
|
CModVectorElement* d = GetModVectorElement(in);
|
||||||
return rs_new CMVEPulse(a, b, c, d);
|
ret = rs_new CMVEPulse(a, b, c, d);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case SBIG('IMPL'): {
|
case SBIG('IMPL'): {
|
||||||
CVectorElement* a = GetVectorElement(in);
|
CVectorElement* a = GetVectorElement(in);
|
||||||
@@ -368,7 +375,8 @@ CModVectorElement* CParticleDataFactory::GetModVectorElement(CInputStream& in) {
|
|||||||
CRealElement* c = GetRealElement(in);
|
CRealElement* c = GetRealElement(in);
|
||||||
CRealElement* d = GetRealElement(in);
|
CRealElement* d = GetRealElement(in);
|
||||||
bool e = GetBool(in);
|
bool e = GetBool(in);
|
||||||
return rs_new CMVEImplosion(a, b, c, d, e);
|
ret = rs_new CMVEImplosion(a, b, c, d, e);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case SBIG('LMPL'): {
|
case SBIG('LMPL'): {
|
||||||
CVectorElement* a = GetVectorElement(in);
|
CVectorElement* a = GetVectorElement(in);
|
||||||
@@ -376,7 +384,8 @@ CModVectorElement* CParticleDataFactory::GetModVectorElement(CInputStream& in) {
|
|||||||
CRealElement* c = GetRealElement(in);
|
CRealElement* c = GetRealElement(in);
|
||||||
CRealElement* d = GetRealElement(in);
|
CRealElement* d = GetRealElement(in);
|
||||||
bool e = GetBool(in);
|
bool e = GetBool(in);
|
||||||
return rs_new CMVELinearImplosion(a, b, c, d, e);
|
ret = rs_new CMVELinearImplosion(a, b, c, d, e);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case SBIG('EMPL'): {
|
case SBIG('EMPL'): {
|
||||||
CVectorElement* a = GetVectorElement(in);
|
CVectorElement* a = GetVectorElement(in);
|
||||||
@@ -384,14 +393,16 @@ CModVectorElement* CParticleDataFactory::GetModVectorElement(CInputStream& in) {
|
|||||||
CRealElement* c = GetRealElement(in);
|
CRealElement* c = GetRealElement(in);
|
||||||
CRealElement* d = GetRealElement(in);
|
CRealElement* d = GetRealElement(in);
|
||||||
bool e = GetBool(in);
|
bool e = GetBool(in);
|
||||||
return rs_new CMVEExponentialImplosion(a, b, c, d, e);
|
ret = rs_new CMVEExponentialImplosion(a, b, c, d, e);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case SBIG('SWRL'): {
|
case SBIG('SWRL'): {
|
||||||
CVectorElement* a = GetVectorElement(in);
|
CVectorElement* a = GetVectorElement(in);
|
||||||
CVectorElement* b = GetVectorElement(in);
|
CVectorElement* b = GetVectorElement(in);
|
||||||
CRealElement* c = GetRealElement(in);
|
CRealElement* c = GetRealElement(in);
|
||||||
CRealElement* d = GetRealElement(in);
|
CRealElement* d = GetRealElement(in);
|
||||||
return rs_new CMVESwirl(a, b, c, d);
|
ret = rs_new CMVESwirl(a, b, c, d);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case SBIG('BNCE'): {
|
case SBIG('BNCE'): {
|
||||||
CVectorElement* a = GetVectorElement(in);
|
CVectorElement* a = GetVectorElement(in);
|
||||||
@@ -399,13 +410,18 @@ CModVectorElement* CParticleDataFactory::GetModVectorElement(CInputStream& in) {
|
|||||||
CRealElement* c = GetRealElement(in);
|
CRealElement* c = GetRealElement(in);
|
||||||
CRealElement* d = GetRealElement(in);
|
CRealElement* d = GetRealElement(in);
|
||||||
bool e = GetBool(in);
|
bool e = GetBool(in);
|
||||||
return rs_new CMVEBounce(a, b, c, d, e);
|
ret = rs_new CMVEBounce(a, b, c, d, e);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case SBIG('SPOS'): {
|
case SBIG('SPOS'): {
|
||||||
return rs_new CMVESetPosition(GetVectorElement(in));
|
ret = rs_new CMVESetPosition(GetVectorElement(in));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
default:
|
||||||
|
return nullptr;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return nullptr;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
CColorElement* CParticleDataFactory::GetColorElement(CInputStream& in) { return nullptr; }
|
CColorElement* CParticleDataFactory::GetColorElement(CInputStream& in) { return nullptr; }
|
||||||
|
|||||||
Reference in New Issue
Block a user