Read a few more Gamebryo/Bethesda modifiers

macos_ci_fix
Alexei Kotov 1 year ago
parent c6d0df432f
commit 8594875ccb

@ -294,11 +294,16 @@ namespace Nif
// Modifiers, Gamebryo
{ "NiPSysAgeDeathModifier", &construct<NiPSysAgeDeathModifier, RC_NiPSysAgeDeathModifier> },
{ "NiPSysBoundUpdateModifier", &construct<NiPSysBoundUpdateModifier, RC_NiPSysBoundUpdateModifier> },
{ "NiPSysPositionModifier", &construct<NiPSysModifier, RC_NiPSysPositionModifier> },
{ "NiPSysSpawnModifier", &construct<NiPSysSpawnModifier, RC_NiPSysSpawnModifier> },
// Modifiers, Bethesda
{ "BSPSysInheritVelocityModifier",
&construct<BSPSysInheritVelocityModifier, RC_BSPSysInheritVelocityModifier> },
{ "BSPSysLODModifier", &construct<BSPSysLODModifier, RC_BSPSysLODModifier> },
{ "BSPSysScaleModifier", &construct<BSPSysScaleModifier, RC_BSPSysScaleModifier> },
{ "BSPSysSimpleColorModifier", &construct<BSPSysSimpleColorModifier, RC_BSPSysSimpleColorModifier> },
// Emitters
{ "NiPSysBoxEmitter", &construct<NiPSysBoxEmitter, RC_NiPSysBoxEmitter> },

@ -253,6 +253,13 @@ namespace Nif
mSpawnModifier.post(nif);
}
void NiPSysBoundUpdateModifier::read(NIFStream* nif)
{
NiPSysModifier::read(nif);
nif->read(mUpdateSkip);
}
void NiPSysSpawnModifier::read(NIFStream* nif)
{
NiPSysModifier::read(nif);
@ -267,6 +274,23 @@ namespace Nif
nif->read(mLifespanVariation);
}
void BSPSysInheritVelocityModifier::read(NIFStream* nif)
{
NiPSysModifier::read(nif);
mInheritObject.read(nif);
nif->read(mInheritChance);
nif->read(mVelocityMult);
nif->read(mVelcoityVariation);
}
void BSPSysInheritVelocityModifier::post(Reader& nif)
{
NiPSysModifier::post(nif);
mInheritObject.post(nif);
}
void BSPSysLODModifier::read(NIFStream* nif)
{
NiPSysModifier::read(nif);
@ -277,6 +301,28 @@ namespace Nif
nif->read(mEndSize);
}
void BSPSysScaleModifier::read(NIFStream* nif)
{
NiPSysModifier::read(nif);
nif->readVector(mScales, nif->get<uint32_t>());
}
void BSPSysSimpleColorModifier::read(NIFStream* nif)
{
NiPSysModifier::read(nif);
nif->read(mFadeInPercent);
nif->read(mFadeOutPercent);
nif->read(mColor1EndPercent);
nif->read(mColor1StartPercent);
nif->read(mColor2EndPercent);
nif->read(mColor2StartPercent);
nif->readVector(mColors, 3);
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_F76)
nif->skip(52); // Unknown
}
void NiPSysEmitter::read(NIFStream* nif)
{
NiPSysModifier::read(nif);

@ -186,6 +186,13 @@ namespace Nif
void post(Reader& nif) override;
};
struct NiPSysBoundUpdateModifier : public NiPSysModifier
{
uint16_t mUpdateSkip;
void read(NIFStream* nif) override;
};
struct NiPSysSpawnModifier : NiPSysModifier
{
uint16_t mNumSpawnGenerations;
@ -200,6 +207,17 @@ namespace Nif
void read(NIFStream* nif) override;
};
struct BSPSysInheritVelocityModifier : public NiPSysModifier
{
NiObjectNETPtr mInheritObject;
float mInheritChance;
float mVelocityMult;
float mVelcoityVariation;
void read(NIFStream* nif) override;
void post(Reader& nif) override;
};
struct BSPSysLODModifier : NiPSysModifier
{
float mLODStartDistance;
@ -210,6 +228,26 @@ namespace Nif
void read(NIFStream* nif) override;
};
struct BSPSysScaleModifier : public NiPSysModifier
{
std::vector<float> mScales;
void read(NIFStream* nif) override;
};
struct BSPSysSimpleColorModifier : NiPSysModifier
{
float mFadeInPercent;
float mFadeOutPercent;
float mColor1EndPercent;
float mColor1StartPercent;
float mColor2EndPercent;
float mColor2StartPercent;
std::vector<osg::Vec4f> mColors;
void read(NIFStream* nif) override;
};
// Abstract
struct NiPSysEmitter : public NiPSysModifier
{

@ -94,7 +94,10 @@ namespace Nif
RC_BSMultiBoundSphere,
RC_BSNiAlphaPropertyTestRefController,
RC_BSPackedAdditionalGeometryData,
RC_BSPSysInheritVelocityModifier,
RC_BSPSysLODModifier,
RC_BSPSysScaleModifier,
RC_BSPSysSimpleColorModifier,
RC_BSStripParticleSystem,
RC_BSStripPSysData,
RC_BSRefractionFirePeriodController,
@ -188,6 +191,7 @@ namespace Nif
RC_NiPSysAirFieldInheritVelocityCtlr,
RC_NiPSysAirFieldSpreadCtlr,
RC_NiPSysBoxEmitter,
RC_NiPSysBoundUpdateModifier,
RC_NiPSysCylinderEmitter,
RC_NiPSysData,
RC_NiPSysEmitterCtlr,

Loading…
Cancel
Save