1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-03-28 08:37:12 +00:00

Read NiPSysColorModifier, NiPSysGrowFadeModifier, BSPSysArrayEmitter

This commit is contained in:
Alexei Kotov 2023-09-22 11:32:28 +03:00
parent 655dcef34c
commit a416d18adf
4 changed files with 55 additions and 1 deletions

View File

@ -296,8 +296,10 @@ namespace Nif
{ "NiPSysAgeDeathModifier", &construct<NiPSysAgeDeathModifier, RC_NiPSysAgeDeathModifier> },
{ "NiPSysBombModifier", &construct<NiPSysBombModifier, RC_NiPSysBombModifier> },
{ "NiPSysBoundUpdateModifier", &construct<NiPSysBoundUpdateModifier, RC_NiPSysBoundUpdateModifier> },
{ "NiPSysColorModifier", &construct<NiPSysColorModifier, RC_NiPSysColorModifier> },
{ "NiPSysDragModifier", &construct<NiPSysDragModifier, RC_NiPSysDragModifier> },
{ "NiPSysGravityModifier", &construct<NiPSysGravityModifier, RC_NiPSysGravityModifier> },
{ "NiPSysGrowFadeModifier", &construct<NiPSysGrowFadeModifier, RC_NiPSysGrowFadeModifier> },
{ "NiPSysPositionModifier", &construct<NiPSysModifier, RC_NiPSysPositionModifier> },
{ "NiPSysRotationModifier", &construct<NiPSysRotationModifier, RC_NiPSysRotationModifier> },
{ "NiPSysSpawnModifier", &construct<NiPSysSpawnModifier, RC_NiPSysSpawnModifier> },
@ -313,12 +315,15 @@ namespace Nif
{ "BSPSysSubTexModifier", &construct<BSPSysSubTexModifier, RC_BSPSysSubTexModifier> },
{ "BSWindModifier", &construct<BSWindModifier, RC_BSWindModifier> },
// Emitters
// Emitters, Gamebryo
{ "NiPSysBoxEmitter", &construct<NiPSysBoxEmitter, RC_NiPSysBoxEmitter> },
{ "NiPSysCylinderEmitter", &construct<NiPSysCylinderEmitter, RC_NiPSysCylinderEmitter> },
{ "NiPSysMeshEmitter", &construct<NiPSysMeshEmitter, RC_NiPSysMeshEmitter> },
{ "NiPSysSphereEmitter", &construct<NiPSysSphereEmitter, RC_NiPSysSphereEmitter> },
// Emitters, Bethesda
{ "BSPSysArrayEmitter", &construct<NiPSysVolumeEmitter, RC_BSPSysArrayEmitter> },
// Modifier controllers, Gamebryo
{ "NiPSysAirFieldAirFrictionCtlr", &construct<NiPSysModifierFloatCtlr, RC_NiPSysAirFieldAirFrictionCtlr> },
{ "NiPSysAirFieldInheritVelocityCtlr",

View File

@ -279,6 +279,20 @@ namespace Nif
nif->read(mUpdateSkip);
}
void NiPSysColorModifier::read(NIFStream* nif)
{
NiPSysModifier::read(nif);
mData.read(nif);
}
void NiPSysColorModifier::post(Reader& nif)
{
NiPSysModifier::post(nif);
mData.post(nif);
}
void NiPSysDragModifier::read(NIFStream* nif)
{
NiPSysModifier::read(nif);
@ -320,6 +334,19 @@ namespace Nif
mGravityObject.post(nif);
}
void NiPSysGrowFadeModifier::read(NIFStream* nif)
{
NiPSysModifier::read(nif);
nif->read(mGrowTime);
nif->read(mGrowGeneration);
nif->read(mFadeTime);
nif->read(mFadeGeneration);
if (nif->getVersion() == NIFFile::NIFVersion::VER_BGS
&& nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_FO3)
nif->read(mBaseScale);
}
void NiPSysRotationModifier::read(NIFStream* nif)
{
NiPSysModifier::read(nif);

View File

@ -206,6 +206,14 @@ namespace Nif
void read(NIFStream* nif) override;
};
struct NiPSysColorModifier : NiPSysModifier
{
NiColorDataPtr mData;
void read(NIFStream* nif) override;
void post(Reader& nif) override;
};
struct NiPSysDragModifier : public NiPSysModifier
{
NiAVObjectPtr mDragObject;
@ -233,6 +241,17 @@ namespace Nif
void post(Reader& nif) override;
};
struct NiPSysGrowFadeModifier : NiPSysModifier
{
float mGrowTime;
uint16_t mGrowGeneration;
float mFadeTime;
uint16_t mFadeGeneration;
float mBaseScale;
void read(NIFStream* nif) override;
};
struct NiPSysRotationModifier : public NiPSysModifier
{
float mRotationSpeed;

View File

@ -94,6 +94,7 @@ namespace Nif
RC_BSMultiBoundSphere,
RC_BSNiAlphaPropertyTestRefController,
RC_BSPackedAdditionalGeometryData,
RC_BSPSysArrayEmitter,
RC_BSPSysInheritVelocityModifier,
RC_BSPSysLODModifier,
RC_BSPSysRecycleBoundModifier,
@ -198,6 +199,7 @@ namespace Nif
RC_NiPSysBoundUpdateModifier,
RC_NiPSysBoxEmitter,
RC_NiPSysColliderManager,
RC_NiPSysColorModifier,
RC_NiPSysCylinderEmitter,
RC_NiPSysData,
RC_NiPSysDragModifier,
@ -215,6 +217,7 @@ namespace Nif
RC_NiPSysFieldMaxDistanceCtlr,
RC_NiPSysGravityModifier,
RC_NiPSysGravityStrengthCtlr,
RC_NiPSysGrowFadeModifier,
RC_NiPSysInitialRotSpeedCtlr,
RC_NiPSysInitialRotSpeedVarCtlr,
RC_NiPSysInitialRotAngleCtlr,