mirror of https://github.com/OpenMW/openmw.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
738 lines
18 KiB
C++
738 lines
18 KiB
C++
#include "particle.hpp"
|
|
|
|
#include "data.hpp"
|
|
|
|
namespace Nif
|
|
{
|
|
|
|
void NiParticleModifier::read(NIFStream* nif)
|
|
{
|
|
mNext.read(nif);
|
|
if (nif->getVersion() >= NIFStream::generateVersion(3, 3, 0, 13))
|
|
mController.read(nif);
|
|
}
|
|
|
|
void NiParticleModifier::post(Reader& nif)
|
|
{
|
|
mNext.post(nif);
|
|
mController.post(nif);
|
|
}
|
|
|
|
void NiParticleGrowFade::read(NIFStream* nif)
|
|
{
|
|
NiParticleModifier::read(nif);
|
|
nif->read(mGrowTime);
|
|
nif->read(mFadeTime);
|
|
}
|
|
|
|
void NiParticleColorModifier::read(NIFStream* nif)
|
|
{
|
|
NiParticleModifier::read(nif);
|
|
|
|
mData.read(nif);
|
|
}
|
|
|
|
void NiParticleColorModifier::post(Reader& nif)
|
|
{
|
|
NiParticleModifier::post(nif);
|
|
|
|
mData.post(nif);
|
|
}
|
|
|
|
void NiGravity::read(NIFStream* nif)
|
|
{
|
|
NiParticleModifier::read(nif);
|
|
|
|
if (nif->getVersion() >= NIFStream::generateVersion(3, 3, 0, 13))
|
|
nif->read(mDecay);
|
|
nif->read(mForce);
|
|
mType = static_cast<ForceType>(nif->get<uint32_t>());
|
|
nif->read(mPosition);
|
|
nif->read(mDirection);
|
|
}
|
|
|
|
void NiParticleBomb::read(NIFStream* nif)
|
|
{
|
|
NiParticleModifier::read(nif);
|
|
|
|
nif->read(mRange);
|
|
nif->read(mDuration);
|
|
nif->read(mStrength);
|
|
nif->read(mStartTime);
|
|
mDecayType = static_cast<DecayType>(nif->get<uint32_t>());
|
|
mSymmetryType = static_cast<SymmetryType>(nif->get<uint32_t>());
|
|
nif->read(mPosition);
|
|
nif->read(mDirection);
|
|
}
|
|
|
|
void NiParticleCollider::read(NIFStream* nif)
|
|
{
|
|
NiParticleModifier::read(nif);
|
|
|
|
nif->read(mBounceFactor);
|
|
if (nif->getVersion() >= NIFStream::generateVersion(4, 2, 0, 2))
|
|
{
|
|
nif->read(mSpawnOnCollision);
|
|
nif->read(mDieOnCollision);
|
|
}
|
|
}
|
|
|
|
void NiPlanarCollider::read(NIFStream* nif)
|
|
{
|
|
NiParticleCollider::read(nif);
|
|
|
|
nif->read(mExtents);
|
|
nif->read(mPosition);
|
|
nif->read(mXVector);
|
|
nif->read(mYVector);
|
|
nif->read(mPlaneNormal);
|
|
nif->read(mPlaneDistance);
|
|
}
|
|
|
|
void NiSphericalCollider::read(NIFStream* nif)
|
|
{
|
|
NiParticleCollider::read(nif);
|
|
|
|
nif->read(mRadius);
|
|
nif->read(mCenter);
|
|
}
|
|
|
|
void NiParticleRotation::read(NIFStream* nif)
|
|
{
|
|
NiParticleModifier::read(nif);
|
|
|
|
nif->read(mRandomInitialAxis);
|
|
nif->read(mInitialAxis);
|
|
nif->read(mRotationSpeed);
|
|
}
|
|
|
|
void NiParticlesData::read(NIFStream* nif)
|
|
{
|
|
NiGeometryData::read(nif);
|
|
|
|
// Should always match the number of vertices in theory, but doesn't:
|
|
// see mist.nif in Mistify mod (https://www.nexusmods.com/morrowind/mods/48112).
|
|
if (nif->getVersion() <= NIFFile::NIFVersion::VER_MW)
|
|
nif->read(mNumParticles);
|
|
bool isBs202 = nif->getVersion() == NIFFile::NIFVersion::VER_BGS && nif->getBethVersion() != 0;
|
|
|
|
uint16_t numRadii = 1;
|
|
if (nif->getVersion() > NIFStream::generateVersion(10, 0, 1, 0))
|
|
numRadii = (nif->get<bool>() && !isBs202) ? mNumVertices : 0;
|
|
nif->readVector(mRadii, numRadii);
|
|
nif->read(mActiveCount);
|
|
if (nif->get<bool>() && !isBs202)
|
|
nif->readVector(mSizes, mNumVertices);
|
|
|
|
if (nif->getVersion() >= NIFStream::generateVersion(10, 0, 1, 0))
|
|
{
|
|
if (nif->get<bool>() && !isBs202)
|
|
nif->readVector(mRotations, mNumVertices);
|
|
if (nif->getVersion() >= NIFStream::generateVersion(20, 0, 0, 4))
|
|
{
|
|
if (nif->get<bool>() && !isBs202)
|
|
nif->readVector(mRotationAngles, mNumVertices);
|
|
if (nif->get<bool>() && !isBs202)
|
|
nif->readVector(mRotationAxes, mNumVertices);
|
|
if (isBs202)
|
|
{
|
|
nif->read(mHasTextureIndices);
|
|
uint32_t numSubtextureOffsets;
|
|
if (nif->getBethVersion() <= NIFFile::BethVersion::BETHVER_FO3)
|
|
numSubtextureOffsets = nif->get<uint8_t>();
|
|
else
|
|
nif->read(numSubtextureOffsets);
|
|
nif->readVector(mSubtextureOffsets, numSubtextureOffsets);
|
|
if (nif->getBethVersion() > NIFFile::BethVersion::BETHVER_FO3)
|
|
{
|
|
nif->read(mAspectRatio);
|
|
nif->read(mAspectFlags);
|
|
nif->read(mAspectRatio2);
|
|
nif->read(mAspectSpeed);
|
|
nif->read(mAspectSpeed2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void NiRotatingParticlesData::read(NIFStream* nif)
|
|
{
|
|
NiParticlesData::read(nif);
|
|
|
|
if (nif->getVersion() <= NIFStream::generateVersion(4, 2, 2, 0) && nif->get<bool>())
|
|
nif->readVector(mRotations, mNumVertices);
|
|
}
|
|
|
|
void BSMasterParticleSystem::read(NIFStream* nif)
|
|
{
|
|
NiNode::read(nif);
|
|
|
|
nif->read(mMaxEmitters);
|
|
readRecordList(nif, mParticleSystems);
|
|
}
|
|
|
|
void BSMasterParticleSystem::post(Reader& nif)
|
|
{
|
|
NiNode::post(nif);
|
|
|
|
postRecordList(nif, mParticleSystems);
|
|
}
|
|
|
|
void NiParticleSystem::read(NIFStream* nif)
|
|
{
|
|
// Weird loading to account for inheritance differences starting from SSE
|
|
if (nif->getBethVersion() < NIFFile::BethVersion::BETHVER_SSE)
|
|
NiParticles::read(nif);
|
|
else
|
|
{
|
|
NiAVObject::read(nif);
|
|
|
|
nif->read(mBoundingSphere);
|
|
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_F76)
|
|
nif->readArray(mBoundMinMax);
|
|
|
|
mSkin.read(nif);
|
|
mShaderProperty.read(nif);
|
|
mAlphaProperty.read(nif);
|
|
mVertDesc.read(nif);
|
|
}
|
|
|
|
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_SKY)
|
|
{
|
|
nif->readArray(mNearFar);
|
|
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_SSE)
|
|
mData.read(nif);
|
|
}
|
|
|
|
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 0))
|
|
{
|
|
nif->read(mWorldSpace);
|
|
readRecordList(nif, mModifiers);
|
|
}
|
|
}
|
|
|
|
void NiParticleSystem::post(Reader& nif)
|
|
{
|
|
NiParticles::post(nif);
|
|
|
|
postRecordList(nif, mModifiers);
|
|
}
|
|
|
|
void NiPSysData::read(NIFStream* nif)
|
|
{
|
|
NiParticlesData::read(nif);
|
|
|
|
bool hasData = nif->getBethVersion() < NIFFile::BethVersion::BETHVER_FO3;
|
|
if (hasData)
|
|
{
|
|
mParticles.resize(mNumVertices);
|
|
for (NiParticleInfo& info : mParticles)
|
|
info.read(nif);
|
|
}
|
|
|
|
if (nif->getBethVersion() > NIFFile::BethVersion::BETHVER_FO4)
|
|
nif->skip(12); // Unknown
|
|
|
|
if (nif->getVersion() >= NIFStream::generateVersion(20, 0, 0, 2) && nif->get<bool>() && hasData)
|
|
nif->readVector(mRotationSpeeds, mNumVertices);
|
|
|
|
if (nif->getVersion() != NIFStream::generateVersion(20, 2, 0, 7) || nif->getBethVersion() == 0)
|
|
{
|
|
nif->read(mNumAddedParticles);
|
|
nif->read(mAddedParticlesBase);
|
|
}
|
|
}
|
|
|
|
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)
|
|
{
|
|
NiPSysData::read(nif);
|
|
|
|
nif->read(mMaxPointCount);
|
|
nif->read(mStartCapSize);
|
|
nif->read(mEndCapSize);
|
|
nif->read(mDoZPrepass);
|
|
}
|
|
|
|
void NiPSysModifier::read(NIFStream* nif)
|
|
{
|
|
nif->read(mName);
|
|
mOrder = static_cast<NiPSysModifierOrder>(nif->get<uint32_t>());
|
|
mTarget.read(nif);
|
|
nif->read(mActive);
|
|
}
|
|
|
|
void NiPSysModifier::post(Reader& nif)
|
|
{
|
|
mTarget.post(nif);
|
|
}
|
|
|
|
void NiPSysAgeDeathModifier::read(NIFStream* nif)
|
|
{
|
|
NiPSysModifier::read(nif);
|
|
|
|
nif->read(mSpawnOnDeath);
|
|
mSpawnModifier.read(nif);
|
|
}
|
|
|
|
void NiPSysAgeDeathModifier::post(Reader& nif)
|
|
{
|
|
NiPSysModifier::post(nif);
|
|
|
|
mSpawnModifier.post(nif);
|
|
}
|
|
|
|
void NiPSysBombModifier::read(NIFStream* nif)
|
|
{
|
|
NiPSysModifier::read(nif);
|
|
|
|
mBombObject.read(nif);
|
|
nif->read(mBombAxis);
|
|
nif->read(mRange);
|
|
nif->read(mStrength);
|
|
mDecayType = static_cast<DecayType>(nif->get<uint32_t>());
|
|
mSymmetryType = static_cast<SymmetryType>(nif->get<uint32_t>());
|
|
}
|
|
|
|
void NiPSysBombModifier::post(Reader& nif)
|
|
{
|
|
NiPSysModifier::post(nif);
|
|
|
|
mBombObject.post(nif);
|
|
}
|
|
|
|
void NiPSysBoundUpdateModifier::read(NIFStream* nif)
|
|
{
|
|
NiPSysModifier::read(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);
|
|
|
|
mDragObject.read(nif);
|
|
nif->read(mDragAxis);
|
|
nif->read(mPercentage);
|
|
nif->read(mRange);
|
|
nif->read(mRangeFalloff);
|
|
}
|
|
|
|
void NiPSysDragModifier::post(Reader& nif)
|
|
{
|
|
NiPSysModifier::post(nif);
|
|
|
|
mDragObject.post(nif);
|
|
}
|
|
|
|
void NiPSysGravityModifier::read(NIFStream* nif)
|
|
{
|
|
NiPSysModifier::read(nif);
|
|
|
|
mGravityObject.read(nif);
|
|
nif->read(mGravityAxis);
|
|
nif->read(mDecay);
|
|
nif->read(mStrength);
|
|
mForceType = static_cast<ForceType>(nif->get<uint32_t>());
|
|
nif->read(mTurbulence);
|
|
nif->read(mTurbulenceScale);
|
|
|
|
if (nif->getBethVersion() >= 17)
|
|
nif->read(mWorldAligned);
|
|
}
|
|
|
|
void NiPSysGravityModifier::post(Reader& nif)
|
|
{
|
|
NiPSysModifier::post(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 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)
|
|
{
|
|
NiPSysModifier::read(nif);
|
|
|
|
nif->read(mRotationSpeed);
|
|
|
|
if (nif->getVersion() >= NIFStream::generateVersion(20, 0, 0, 2))
|
|
{
|
|
nif->read(mRotationSpeedVariation);
|
|
|
|
if (nif->getBethVersion() > NIFFile::BethVersion::BETHVER_FO4)
|
|
nif->skip(17); // Unknown
|
|
|
|
nif->read(mRotationAngle);
|
|
nif->read(mRotationAngleVariation);
|
|
nif->read(mRandomRotSpeedSign);
|
|
}
|
|
|
|
nif->read(mRandomAxis);
|
|
nif->read(mAxis);
|
|
}
|
|
|
|
void NiPSysSpawnModifier::read(NIFStream* nif)
|
|
{
|
|
NiPSysModifier::read(nif);
|
|
|
|
nif->read(mNumSpawnGenerations);
|
|
nif->read(mPercentageSpawned);
|
|
nif->read(mMinNumToSpawn);
|
|
nif->read(mMaxNumToSpawn);
|
|
nif->read(mSpawnSpeedVariation);
|
|
nif->read(mSpawnDirVariation);
|
|
nif->read(mLifespan);
|
|
nif->read(mLifespanVariation);
|
|
}
|
|
|
|
void BSParentVelocityModifier::read(NIFStream* nif)
|
|
{
|
|
NiPSysModifier::read(nif);
|
|
|
|
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)
|
|
{
|
|
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);
|
|
|
|
nif->read(mLODStartDistance);
|
|
nif->read(mLODEndDistance);
|
|
nif->read(mEndEmitScale);
|
|
nif->read(mEndSize);
|
|
}
|
|
|
|
void BSPSysRecycleBoundModifier::read(NIFStream* nif)
|
|
{
|
|
NiPSysModifier::read(nif);
|
|
|
|
nif->read(mBoundOffset);
|
|
nif->read(mBoundExtents);
|
|
mBoundObject.read(nif);
|
|
}
|
|
|
|
void BSPSysRecycleBoundModifier::post(Reader& nif)
|
|
{
|
|
NiPSysModifier::post(nif);
|
|
|
|
mBoundObject.post(nif);
|
|
}
|
|
|
|
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 BSPSysStripUpdateModifier::read(NIFStream* nif)
|
|
{
|
|
NiPSysModifier::read(nif);
|
|
|
|
nif->read(mUpdateDeltaTime);
|
|
}
|
|
|
|
void BSPSysSubTexModifier::read(NIFStream* nif)
|
|
{
|
|
NiPSysModifier::read(nif);
|
|
|
|
nif->read(mStartFrame);
|
|
nif->read(mStartFrameFudge);
|
|
nif->read(mEndFrame);
|
|
nif->read(mLoopStartFrame);
|
|
nif->read(mLoopStartFrameFudge);
|
|
nif->read(mFrameCount);
|
|
nif->read(mFrameCountFudge);
|
|
}
|
|
|
|
void BSWindModifier::read(NIFStream* nif)
|
|
{
|
|
NiPSysModifier::read(nif);
|
|
|
|
nif->read(mStrength);
|
|
}
|
|
|
|
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 NiPSysMeshEmitter::read(NIFStream* nif)
|
|
{
|
|
NiPSysEmitter::read(nif);
|
|
|
|
readRecordList(nif, mEmitterMeshes);
|
|
|
|
nif->read(mInitialVelocityType);
|
|
nif->read(mEmissionType);
|
|
nif->read(mEmissionAxis);
|
|
}
|
|
|
|
void NiPSysMeshEmitter::post(Reader& nif)
|
|
{
|
|
NiPSysEmitter::post(nif);
|
|
|
|
postRecordList(nif, mEmitterMeshes);
|
|
}
|
|
|
|
void NiPSysSphereEmitter::read(NIFStream* nif)
|
|
{
|
|
NiPSysVolumeEmitter::read(nif);
|
|
|
|
nif->read(mRadius);
|
|
}
|
|
|
|
void NiPSysModifierCtlr::read(NIFStream* nif)
|
|
{
|
|
NiSingleInterpController::read(nif);
|
|
|
|
nif->read(mModifierName);
|
|
}
|
|
|
|
void NiPSysEmitterCtlr::read(NIFStream* nif)
|
|
{
|
|
NiPSysModifierCtlr::read(nif);
|
|
|
|
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103))
|
|
mData.read(nif);
|
|
else
|
|
mVisInterpolator.read(nif);
|
|
}
|
|
|
|
void NiPSysEmitterCtlr::post(Reader& nif)
|
|
{
|
|
NiPSysModifierCtlr::post(nif);
|
|
|
|
mData.post(nif);
|
|
mVisInterpolator.post(nif);
|
|
}
|
|
|
|
void BSPSysMultiTargetEmitterCtlr::read(NIFStream* nif)
|
|
{
|
|
NiPSysEmitterCtlr::read(nif);
|
|
|
|
nif->read(mMaxEmitters);
|
|
mMasterPSys.read(nif);
|
|
}
|
|
|
|
void BSPSysMultiTargetEmitterCtlr::post(Reader& nif)
|
|
{
|
|
NiPSysEmitterCtlr::post(nif);
|
|
|
|
mMasterPSys.post(nif);
|
|
}
|
|
|
|
void NiPSysEmitterCtlrData::read(NIFStream* nif)
|
|
{
|
|
mFloatKeyList = std::make_shared<FloatKeyMap>();
|
|
mVisKeyList = std::make_shared<BoolKeyMap>();
|
|
uint32_t numVisKeys;
|
|
nif->read(numVisKeys);
|
|
for (size_t i = 0; i < numVisKeys; i++)
|
|
mVisKeyList->mKeys[nif->get<float>()].mValue = nif->get<uint8_t>() != 0;
|
|
}
|
|
|
|
void NiPSysCollider::read(NIFStream* nif)
|
|
{
|
|
nif->read(mBounce);
|
|
nif->read(mCollideSpawn);
|
|
nif->read(mCollideDie);
|
|
mSpawnModifier.read(nif);
|
|
mParent.read(nif);
|
|
mNextCollider.read(nif);
|
|
mColliderObject.read(nif);
|
|
}
|
|
|
|
void NiPSysCollider::post(Reader& nif)
|
|
{
|
|
mSpawnModifier.post(nif);
|
|
mParent.post(nif);
|
|
mNextCollider.post(nif);
|
|
mColliderObject.post(nif);
|
|
}
|
|
|
|
void NiPSysColliderManager::read(NIFStream* nif)
|
|
{
|
|
NiPSysModifier::read(nif);
|
|
|
|
mCollider.read(nif);
|
|
}
|
|
|
|
void NiPSysColliderManager::post(Reader& nif)
|
|
{
|
|
NiPSysModifier::post(nif);
|
|
|
|
mCollider.post(nif);
|
|
}
|
|
|
|
void NiPSysSphericalCollider::read(NIFStream* nif)
|
|
{
|
|
NiPSysCollider::read(nif);
|
|
|
|
nif->read(mRadius);
|
|
}
|
|
|
|
void NiPSysPlanarCollider::read(NIFStream* nif)
|
|
{
|
|
NiPSysCollider::read(nif);
|
|
|
|
nif->read(mWidth);
|
|
nif->read(mHeight);
|
|
nif->read(mXAxis);
|
|
nif->read(mYAxis);
|
|
}
|
|
|
|
}
|