mirror of
https://github.com/OpenMW/openmw.git
synced 2025-06-19 19:11:32 +00:00
Read a few Gamebryo particle emitters, NiPSysResetOnLoopCtlr, NiPSysPositionModifier
This commit is contained in:
parent
717b93d61e
commit
c6d0df432f
4 changed files with 120 additions and 0 deletions
|
@ -294,11 +294,17 @@ namespace Nif
|
||||||
|
|
||||||
// Modifiers, Gamebryo
|
// Modifiers, Gamebryo
|
||||||
{ "NiPSysAgeDeathModifier", &construct<NiPSysAgeDeathModifier, RC_NiPSysAgeDeathModifier> },
|
{ "NiPSysAgeDeathModifier", &construct<NiPSysAgeDeathModifier, RC_NiPSysAgeDeathModifier> },
|
||||||
|
{ "NiPSysPositionModifier", &construct<NiPSysModifier, RC_NiPSysPositionModifier> },
|
||||||
{ "NiPSysSpawnModifier", &construct<NiPSysSpawnModifier, RC_NiPSysSpawnModifier> },
|
{ "NiPSysSpawnModifier", &construct<NiPSysSpawnModifier, RC_NiPSysSpawnModifier> },
|
||||||
|
|
||||||
// Modifiers, Bethesda
|
// Modifiers, Bethesda
|
||||||
{ "BSPSysLODModifier", &construct<BSPSysLODModifier, RC_BSPSysLODModifier> },
|
{ "BSPSysLODModifier", &construct<BSPSysLODModifier, RC_BSPSysLODModifier> },
|
||||||
|
|
||||||
|
// Emitters
|
||||||
|
{ "NiPSysBoxEmitter", &construct<NiPSysBoxEmitter, RC_NiPSysBoxEmitter> },
|
||||||
|
{ "NiPSysCylinderEmitter", &construct<NiPSysCylinderEmitter, RC_NiPSysCylinderEmitter> },
|
||||||
|
{ "NiPSysSphereEmitter", &construct<NiPSysSphereEmitter, RC_NiPSysSphereEmitter> },
|
||||||
|
|
||||||
// Modifier controllers, Gamebryo
|
// Modifier controllers, Gamebryo
|
||||||
{ "NiPSysAirFieldAirFrictionCtlr", &construct<NiPSysModifierFloatCtlr, RC_NiPSysAirFieldAirFrictionCtlr> },
|
{ "NiPSysAirFieldAirFrictionCtlr", &construct<NiPSysModifierFloatCtlr, RC_NiPSysAirFieldAirFrictionCtlr> },
|
||||||
{ "NiPSysAirFieldInheritVelocityCtlr",
|
{ "NiPSysAirFieldInheritVelocityCtlr",
|
||||||
|
@ -336,6 +342,7 @@ namespace Nif
|
||||||
{ "NiParticleSystemController", &construct<NiParticleSystemController, RC_NiParticleSystemController> },
|
{ "NiParticleSystemController", &construct<NiParticleSystemController, RC_NiParticleSystemController> },
|
||||||
|
|
||||||
// Particle system controllers, Gamebryo
|
// Particle system controllers, Gamebryo
|
||||||
|
{ "NiPSysResetOnLoopCtlr", &construct<NiTimeController, RC_NiPSysResetOnLoopCtlr> },
|
||||||
{ "NiPSysUpdateCtlr", &construct<NiTimeController, RC_NiPSysUpdateCtlr> },
|
{ "NiPSysUpdateCtlr", &construct<NiTimeController, RC_NiPSysUpdateCtlr> },
|
||||||
|
|
||||||
// PHYSICS
|
// PHYSICS
|
||||||
|
|
|
@ -277,6 +277,63 @@ namespace Nif
|
||||||
nif->read(mEndSize);
|
nif->read(mEndSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NiPSysEmitter::read(NIFStream* nif)
|
||||||
|
{
|
||||||
|
NiPSysModifier::read(nif);
|
||||||
|
|
||||||
|
nif->read(mSpeed);
|
||||||
|
nif->read(mSpeedVariation);
|
||||||
|
nif->read(mDeclination);
|
||||||
|
nif->read(mDeclinationVariation);
|
||||||
|
nif->read(mPlanarAngle);
|
||||||
|
nif->read(mPlanarAngleVariation);
|
||||||
|
nif->read(mInitialColor);
|
||||||
|
nif->read(mInitialRadius);
|
||||||
|
if (nif->getVersion() >= NIFStream::generateVersion(10, 4, 0, 1))
|
||||||
|
nif->read(mRadiusVariation);
|
||||||
|
nif->read(mLifespan);
|
||||||
|
nif->read(mLifespanVariation);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NiPSysVolumeEmitter::read(NIFStream* nif)
|
||||||
|
{
|
||||||
|
NiPSysEmitter::read(nif);
|
||||||
|
|
||||||
|
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 0))
|
||||||
|
mEmitterObject.read(nif);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NiPSysVolumeEmitter::post(Reader& nif)
|
||||||
|
{
|
||||||
|
NiPSysEmitter::post(nif);
|
||||||
|
|
||||||
|
mEmitterObject.post(nif);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NiPSysBoxEmitter::read(NIFStream* nif)
|
||||||
|
{
|
||||||
|
NiPSysVolumeEmitter::read(nif);
|
||||||
|
|
||||||
|
nif->read(mWidth);
|
||||||
|
nif->read(mHeight);
|
||||||
|
nif->read(mDepth);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NiPSysCylinderEmitter::read(NIFStream* nif)
|
||||||
|
{
|
||||||
|
NiPSysVolumeEmitter::read(nif);
|
||||||
|
|
||||||
|
nif->read(mRadius);
|
||||||
|
nif->read(mHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NiPSysSphereEmitter::read(NIFStream* nif)
|
||||||
|
{
|
||||||
|
NiPSysVolumeEmitter::read(nif);
|
||||||
|
|
||||||
|
nif->read(mRadius);
|
||||||
|
}
|
||||||
|
|
||||||
void NiPSysModifierCtlr::read(NIFStream* nif)
|
void NiPSysModifierCtlr::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
NiSingleInterpController::read(nif);
|
NiSingleInterpController::read(nif);
|
||||||
|
|
|
@ -210,6 +210,57 @@ namespace Nif
|
||||||
void read(NIFStream* nif) override;
|
void read(NIFStream* nif) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Abstract
|
||||||
|
struct NiPSysEmitter : public NiPSysModifier
|
||||||
|
{
|
||||||
|
float mSpeed;
|
||||||
|
float mSpeedVariation;
|
||||||
|
float mDeclination;
|
||||||
|
float mDeclinationVariation;
|
||||||
|
float mPlanarAngle;
|
||||||
|
float mPlanarAngleVariation;
|
||||||
|
osg::Vec4f mInitialColor;
|
||||||
|
float mInitialRadius;
|
||||||
|
float mRadiusVariation;
|
||||||
|
float mLifespan;
|
||||||
|
float mLifespanVariation;
|
||||||
|
|
||||||
|
void read(NIFStream* nif) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Abstract
|
||||||
|
struct NiPSysVolumeEmitter : public NiPSysEmitter
|
||||||
|
{
|
||||||
|
NiAVObjectPtr mEmitterObject;
|
||||||
|
|
||||||
|
void read(NIFStream* nif) override;
|
||||||
|
void post(Reader& nif) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct NiPSysBoxEmitter : public NiPSysVolumeEmitter
|
||||||
|
{
|
||||||
|
float mWidth;
|
||||||
|
float mHeight;
|
||||||
|
float mDepth;
|
||||||
|
|
||||||
|
void read(NIFStream* nif) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct NiPSysCylinderEmitter : public NiPSysVolumeEmitter
|
||||||
|
{
|
||||||
|
float mRadius;
|
||||||
|
float mHeight;
|
||||||
|
|
||||||
|
void read(NIFStream* nif) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct NiPSysSphereEmitter : public NiPSysVolumeEmitter
|
||||||
|
{
|
||||||
|
float mRadius;
|
||||||
|
|
||||||
|
void read(NIFStream* nif) override;
|
||||||
|
};
|
||||||
|
|
||||||
// Abstract
|
// Abstract
|
||||||
struct NiPSysModifierCtlr : NiSingleInterpController
|
struct NiPSysModifierCtlr : NiSingleInterpController
|
||||||
{
|
{
|
||||||
|
|
|
@ -187,6 +187,8 @@ namespace Nif
|
||||||
RC_NiPSysAirFieldAirFrictionCtlr,
|
RC_NiPSysAirFieldAirFrictionCtlr,
|
||||||
RC_NiPSysAirFieldInheritVelocityCtlr,
|
RC_NiPSysAirFieldInheritVelocityCtlr,
|
||||||
RC_NiPSysAirFieldSpreadCtlr,
|
RC_NiPSysAirFieldSpreadCtlr,
|
||||||
|
RC_NiPSysBoxEmitter,
|
||||||
|
RC_NiPSysCylinderEmitter,
|
||||||
RC_NiPSysData,
|
RC_NiPSysData,
|
||||||
RC_NiPSysEmitterCtlr,
|
RC_NiPSysEmitterCtlr,
|
||||||
RC_NiPSysEmitterCtlrData,
|
RC_NiPSysEmitterCtlrData,
|
||||||
|
@ -206,7 +208,10 @@ namespace Nif
|
||||||
RC_NiPSysInitialRotAngleCtlr,
|
RC_NiPSysInitialRotAngleCtlr,
|
||||||
RC_NiPSysInitialRotAngleVarCtlr,
|
RC_NiPSysInitialRotAngleVarCtlr,
|
||||||
RC_NiPSysModifierActiveCtlr,
|
RC_NiPSysModifierActiveCtlr,
|
||||||
|
RC_NiPSysPositionModifier,
|
||||||
|
RC_NiPSysResetOnLoopCtlr,
|
||||||
RC_NiPSysSpawnModifier,
|
RC_NiPSysSpawnModifier,
|
||||||
|
RC_NiPSysSphereEmitter,
|
||||||
RC_NiPSysUpdateCtlr,
|
RC_NiPSysUpdateCtlr,
|
||||||
RC_NiRollController,
|
RC_NiRollController,
|
||||||
RC_NiSequence,
|
RC_NiSequence,
|
||||||
|
|
Loading…
Reference in a new issue