mirror of
https://github.com/OpenMW/openmw.git
synced 2025-04-01 23:06:41 +00:00
Read NiMeshPSysData and related modifiers
This commit is contained in:
parent
285eafbf66
commit
7c11d9acbc
6 changed files with 83 additions and 1 deletions
|
@ -19,7 +19,7 @@ namespace Nif
|
||||||
switch (recType)
|
switch (recType)
|
||||||
{
|
{
|
||||||
case RC_NiPSysData:
|
case RC_NiPSysData:
|
||||||
// case RC_NiMeshPSysData:
|
case RC_NiMeshPSysData:
|
||||||
case RC_BSStripPSysData:
|
case RC_BSStripPSysData:
|
||||||
isPSysData = true;
|
isPSysData = true;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -287,6 +287,7 @@ namespace Nif
|
||||||
{ "NiParticleSystem", &construct<NiParticleSystem, RC_NiParticleSystem> },
|
{ "NiParticleSystem", &construct<NiParticleSystem, RC_NiParticleSystem> },
|
||||||
{ "NiMeshParticleSystem", &construct<NiParticleSystem, RC_NiParticleSystem> },
|
{ "NiMeshParticleSystem", &construct<NiParticleSystem, RC_NiParticleSystem> },
|
||||||
{ "NiPSysData", &construct<NiPSysData, RC_NiPSysData> },
|
{ "NiPSysData", &construct<NiPSysData, RC_NiPSysData> },
|
||||||
|
{ "NiMeshPSysData", &construct<NiMeshPSysData, RC_NiMeshPSysData> },
|
||||||
|
|
||||||
// Geometry, Bethesda
|
// Geometry, Bethesda
|
||||||
{ "BSStripParticleSystem", &construct<NiParticleSystem, RC_BSStripParticleSystem> },
|
{ "BSStripParticleSystem", &construct<NiParticleSystem, RC_BSStripParticleSystem> },
|
||||||
|
@ -309,9 +310,11 @@ namespace Nif
|
||||||
{ "NiPSysPositionModifier", &construct<NiPSysModifier, RC_NiPSysPositionModifier> },
|
{ "NiPSysPositionModifier", &construct<NiPSysModifier, RC_NiPSysPositionModifier> },
|
||||||
{ "NiPSysRotationModifier", &construct<NiPSysRotationModifier, RC_NiPSysRotationModifier> },
|
{ "NiPSysRotationModifier", &construct<NiPSysRotationModifier, RC_NiPSysRotationModifier> },
|
||||||
{ "NiPSysSpawnModifier", &construct<NiPSysSpawnModifier, RC_NiPSysSpawnModifier> },
|
{ "NiPSysSpawnModifier", &construct<NiPSysSpawnModifier, RC_NiPSysSpawnModifier> },
|
||||||
|
{ "NiPSysMeshUpdateModifier", &construct<NiPSysMeshUpdateModifier, RC_NiPSysMeshUpdateModifier> },
|
||||||
|
|
||||||
// Modifiers, Bethesda
|
// Modifiers, Bethesda
|
||||||
{ "BSParentVelocityModifier", &construct<BSParentVelocityModifier, RC_BSParentVelocityModifier> },
|
{ "BSParentVelocityModifier", &construct<BSParentVelocityModifier, RC_BSParentVelocityModifier> },
|
||||||
|
{ "BSPSysHavokUpdateModifier", &construct<BSPSysHavokUpdateModifier, RC_BSPSysHavokUpdateModifier> },
|
||||||
{ "BSPSysInheritVelocityModifier",
|
{ "BSPSysInheritVelocityModifier",
|
||||||
&construct<BSPSysInheritVelocityModifier, RC_BSPSysInheritVelocityModifier> },
|
&construct<BSPSysInheritVelocityModifier, RC_BSPSysInheritVelocityModifier> },
|
||||||
{ "BSPSysLODModifier", &construct<BSPSysLODModifier, RC_BSPSysLODModifier> },
|
{ "BSPSysLODModifier", &construct<BSPSysLODModifier, RC_BSPSysLODModifier> },
|
||||||
|
|
|
@ -230,6 +230,26 @@ namespace Nif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NiMeshPSysData::read(NIFStream* nif)
|
||||||
|
{
|
||||||
|
NiPSysData::read(nif);
|
||||||
|
|
||||||
|
if (nif->getVersion() >= NIFStream::generateVersion(10, 2, 0, 0))
|
||||||
|
{
|
||||||
|
nif->read(mDefaultPoolSize);
|
||||||
|
nif->read(mFillPoolsOnLoad);
|
||||||
|
nif->readVector(mGenerations, nif->get<uint32_t>());
|
||||||
|
}
|
||||||
|
mParticleMeshes.read(nif);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NiMeshPSysData::post(Reader& nif)
|
||||||
|
{
|
||||||
|
NiPSysData::post(nif);
|
||||||
|
|
||||||
|
mParticleMeshes.post(nif);
|
||||||
|
}
|
||||||
|
|
||||||
void BSStripPSysData::read(NIFStream* nif)
|
void BSStripPSysData::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
NiPSysData::read(nif);
|
NiPSysData::read(nif);
|
||||||
|
@ -362,6 +382,20 @@ namespace Nif
|
||||||
nif->read(mBaseScale);
|
nif->read(mBaseScale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NiPSysMeshUpdateModifier::read(NIFStream* nif)
|
||||||
|
{
|
||||||
|
NiPSysModifier::read(nif);
|
||||||
|
|
||||||
|
readRecordList(nif, mMeshes);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NiPSysMeshUpdateModifier::post(Reader& nif)
|
||||||
|
{
|
||||||
|
NiPSysModifier::post(nif);
|
||||||
|
|
||||||
|
postRecordList(nif, mMeshes);
|
||||||
|
}
|
||||||
|
|
||||||
void NiPSysRotationModifier::read(NIFStream* nif)
|
void NiPSysRotationModifier::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
NiPSysModifier::read(nif);
|
NiPSysModifier::read(nif);
|
||||||
|
@ -405,6 +439,20 @@ namespace Nif
|
||||||
nif->read(mDamping);
|
nif->read(mDamping);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BSPSysHavokUpdateModifier::read(NIFStream* nif)
|
||||||
|
{
|
||||||
|
NiPSysMeshUpdateModifier::read(nif);
|
||||||
|
|
||||||
|
mModifier.read(nif);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BSPSysHavokUpdateModifier::post(Reader& nif)
|
||||||
|
{
|
||||||
|
NiPSysMeshUpdateModifier::post(nif);
|
||||||
|
|
||||||
|
mModifier.post(nif);
|
||||||
|
}
|
||||||
|
|
||||||
void BSPSysInheritVelocityModifier::read(NIFStream* nif)
|
void BSPSysInheritVelocityModifier::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
NiPSysModifier::read(nif);
|
NiPSysModifier::read(nif);
|
||||||
|
|
|
@ -147,6 +147,17 @@ namespace Nif
|
||||||
void read(NIFStream* nif) override;
|
void read(NIFStream* nif) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct NiMeshPSysData : NiPSysData
|
||||||
|
{
|
||||||
|
uint32_t mDefaultPoolSize;
|
||||||
|
bool mFillPoolsOnLoad;
|
||||||
|
std::vector<uint32_t> mGenerations;
|
||||||
|
NiAVObjectPtr mParticleMeshes;
|
||||||
|
|
||||||
|
void read(NIFStream* nif) override;
|
||||||
|
void post(Reader& nif) override;
|
||||||
|
};
|
||||||
|
|
||||||
struct BSStripPSysData : NiPSysData
|
struct BSStripPSysData : NiPSysData
|
||||||
{
|
{
|
||||||
uint16_t mMaxPointCount;
|
uint16_t mMaxPointCount;
|
||||||
|
@ -261,6 +272,14 @@ namespace Nif
|
||||||
void read(NIFStream* nif) override;
|
void read(NIFStream* nif) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct NiPSysMeshUpdateModifier : NiPSysModifier
|
||||||
|
{
|
||||||
|
NiAVObjectList mMeshes;
|
||||||
|
|
||||||
|
void read(NIFStream* nif) override;
|
||||||
|
void post(Reader& nif) override;
|
||||||
|
};
|
||||||
|
|
||||||
struct NiPSysRotationModifier : NiPSysModifier
|
struct NiPSysRotationModifier : NiPSysModifier
|
||||||
{
|
{
|
||||||
float mRotationSpeed;
|
float mRotationSpeed;
|
||||||
|
@ -295,6 +314,14 @@ namespace Nif
|
||||||
void read(NIFStream* nif) override;
|
void read(NIFStream* nif) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct BSPSysHavokUpdateModifier : NiPSysMeshUpdateModifier
|
||||||
|
{
|
||||||
|
NiPSysModifierPtr mModifier;
|
||||||
|
|
||||||
|
void read(NIFStream* nif) override;
|
||||||
|
void post(Reader& nif) override;
|
||||||
|
};
|
||||||
|
|
||||||
struct BSPSysInheritVelocityModifier : NiPSysModifier
|
struct BSPSysInheritVelocityModifier : NiPSysModifier
|
||||||
{
|
{
|
||||||
NiAVObjectPtr mInheritObject;
|
NiAVObjectPtr mInheritObject;
|
||||||
|
|
|
@ -101,6 +101,7 @@ namespace Nif
|
||||||
RC_BSParentVelocityModifier,
|
RC_BSParentVelocityModifier,
|
||||||
RC_BSProceduralLightningController,
|
RC_BSProceduralLightningController,
|
||||||
RC_BSPSysArrayEmitter,
|
RC_BSPSysArrayEmitter,
|
||||||
|
RC_BSPSysHavokUpdateModifier,
|
||||||
RC_BSPSysInheritVelocityModifier,
|
RC_BSPSysInheritVelocityModifier,
|
||||||
RC_BSPSysLODModifier,
|
RC_BSPSysLODModifier,
|
||||||
RC_BSPSysMultiTargetEmitterCtlr,
|
RC_BSPSysMultiTargetEmitterCtlr,
|
||||||
|
@ -183,6 +184,7 @@ namespace Nif
|
||||||
RC_NiLookAtInterpolator,
|
RC_NiLookAtInterpolator,
|
||||||
RC_NiMaterialColorController,
|
RC_NiMaterialColorController,
|
||||||
RC_NiMaterialProperty,
|
RC_NiMaterialProperty,
|
||||||
|
RC_NiMeshPSysData,
|
||||||
RC_NiMorphData,
|
RC_NiMorphData,
|
||||||
RC_NiMultiTargetTransformController,
|
RC_NiMultiTargetTransformController,
|
||||||
RC_NiNode,
|
RC_NiNode,
|
||||||
|
@ -232,6 +234,7 @@ namespace Nif
|
||||||
RC_NiPSysInitialRotAngleCtlr,
|
RC_NiPSysInitialRotAngleCtlr,
|
||||||
RC_NiPSysInitialRotAngleVarCtlr,
|
RC_NiPSysInitialRotAngleVarCtlr,
|
||||||
RC_NiPSysMeshEmitter,
|
RC_NiPSysMeshEmitter,
|
||||||
|
RC_NiPSysMeshUpdateModifier,
|
||||||
RC_NiPSysModifierActiveCtlr,
|
RC_NiPSysModifierActiveCtlr,
|
||||||
RC_NiPSysPlanarCollider,
|
RC_NiPSysPlanarCollider,
|
||||||
RC_NiPSysPositionModifier,
|
RC_NiPSysPositionModifier,
|
||||||
|
|
|
@ -185,6 +185,7 @@ namespace Nif
|
||||||
using NiPSysColliderPtr = RecordPtrT<NiPSysCollider>;
|
using NiPSysColliderPtr = RecordPtrT<NiPSysCollider>;
|
||||||
using NiPSysColliderManagerPtr = RecordPtrT<NiPSysColliderManager>;
|
using NiPSysColliderManagerPtr = RecordPtrT<NiPSysColliderManager>;
|
||||||
using NiPSysEmitterCtlrDataPtr = RecordPtrT<NiPSysEmitterCtlrData>;
|
using NiPSysEmitterCtlrDataPtr = RecordPtrT<NiPSysEmitterCtlrData>;
|
||||||
|
using NiPSysModifierPtr = RecordPtrT<NiPSysModifier>;
|
||||||
using NiPSysSpawnModifierPtr = RecordPtrT<NiPSysSpawnModifier>;
|
using NiPSysSpawnModifierPtr = RecordPtrT<NiPSysSpawnModifier>;
|
||||||
using NiBoolDataPtr = RecordPtrT<NiBoolData>;
|
using NiBoolDataPtr = RecordPtrT<NiBoolData>;
|
||||||
using NiSkinPartitionPtr = RecordPtrT<NiSkinPartition>;
|
using NiSkinPartitionPtr = RecordPtrT<NiSkinPartition>;
|
||||||
|
|
Loading…
Reference in a new issue