mirror of https://github.com/OpenMW/openmw.git
Revert "Merge branch 'loadSSEAlchemyTable' into 'master'"
This reverts merge request !3267macos_ci_fix
parent
9c2a2e1946
commit
c290754077
@ -1,483 +0,0 @@
|
|||||||
#include "particle.hpp"
|
|
||||||
#include <components/nif/exception.hpp>
|
|
||||||
|
|
||||||
namespace Nif
|
|
||||||
{
|
|
||||||
void NiParticlesData::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
bool isBS202 = nif->getVersion() == NIFFile::NIFVersion::VER_BGS && nif->getBethVersion() > 0;
|
|
||||||
// if (nif->getVersion() < NIFFile::NIFVersion::VER_BGS)
|
|
||||||
NiGeometryData::read(nif);
|
|
||||||
|
|
||||||
// Should always match the number of vertices
|
|
||||||
if (nif->getVersion() <= NIFFile::NIFVersion::VER_MW)
|
|
||||||
nif->read(numParticles);
|
|
||||||
|
|
||||||
float particleRadius;
|
|
||||||
if (nif->getVersion() <= NIFStream::generateVersion(10, 0, 1, 0))
|
|
||||||
{
|
|
||||||
nif->read(particleRadius);
|
|
||||||
particleRadii.resize(vertices.size());
|
|
||||||
std::fill(particleRadii.begin(), particleRadii.end(), particleRadius);
|
|
||||||
}
|
|
||||||
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 0))
|
|
||||||
{
|
|
||||||
bool hasRadii = nif->getBoolean();
|
|
||||||
// nif->read(hasRadii);
|
|
||||||
if (hasRadii && !isBS202)
|
|
||||||
nif->readVector(particleRadii, vertices.size());
|
|
||||||
}
|
|
||||||
activeCount = nif->getUShort();
|
|
||||||
|
|
||||||
// Particle sizes
|
|
||||||
bool hasSizes;
|
|
||||||
hasSizes = nif->getBoolean();
|
|
||||||
if (hasSizes && !isBS202)
|
|
||||||
nif->readVector(sizes, vertices.size());
|
|
||||||
|
|
||||||
bool hasRotations = false;
|
|
||||||
if (nif->getVersion() >= NIFStream::generateVersion(10, 0, 1, 0))
|
|
||||||
{
|
|
||||||
hasRotations = nif->getBoolean();
|
|
||||||
if (hasRotations && !isBS202)
|
|
||||||
{
|
|
||||||
nif->getQuaternions(mRotations, vertices.size());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nif->getVersion() >= NIFStream::generateVersion(20, 0, 0, 4))
|
|
||||||
{
|
|
||||||
bool hasRotationAngles, hasRotationAxes;
|
|
||||||
|
|
||||||
// nif->read(hasRotationAngles);
|
|
||||||
hasRotationAngles = nif->getBoolean();
|
|
||||||
if (hasRotationAngles && !isBS202)
|
|
||||||
nif->readVector(mRotationAngles, vertices.size());
|
|
||||||
|
|
||||||
// nif->read(hasRotationAxes);
|
|
||||||
hasRotationAxes = nif->getBoolean();
|
|
||||||
if (hasRotationAxes && !isBS202)
|
|
||||||
{
|
|
||||||
nif->getVector3s(mRotationAxes, vertices.size());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool hasTexIndices = false;
|
|
||||||
if (isBS202)
|
|
||||||
nif->read(hasTexIndices);
|
|
||||||
|
|
||||||
unsigned int subtexOffsetNum = 0;
|
|
||||||
if (nif->getVersion() == NIFFile::NIFVersion::VER_BGS)
|
|
||||||
{
|
|
||||||
if (nif->getBethVersion() > NIFFile::BethVersion::BETHVER_FO3)
|
|
||||||
nif->read(subtexOffsetNum);
|
|
||||||
else if (nif->getBethVersion() <= NIFFile::BethVersion::BETHVER_FO3 && isBS202)
|
|
||||||
subtexOffsetNum = nif->get<char>();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isBS202)
|
|
||||||
nif->getVector4s(mSubtexOffsets, subtexOffsetNum);
|
|
||||||
|
|
||||||
if (nif->getBethVersion() > NIFFile::BethVersion::BETHVER_FO3
|
|
||||||
&& nif->getVersion() == NIFFile::NIFVersion::VER_BGS)
|
|
||||||
{
|
|
||||||
nif->read(mAspectRatio);
|
|
||||||
|
|
||||||
nif->read(mAspectFlags);
|
|
||||||
|
|
||||||
nif->read(mAspect2);
|
|
||||||
nif->read(mSpeed1);
|
|
||||||
nif->read(mSpeed2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiRotatingParticlesData::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
NiParticlesData::read(nif);
|
|
||||||
|
|
||||||
if (nif->getVersion() <= NIFStream::generateVersion(4, 2, 2, 0) && nif->getBoolean())
|
|
||||||
nif->getQuaternions(mRotations, vertices.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiParticleInfo::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
nif->read(mVelocity);
|
|
||||||
if (nif->getVersion() <= NIFStream::generateVersion(10, 4, 0, 1))
|
|
||||||
nif->read(mRotation);
|
|
||||||
nif->read(mAge);
|
|
||||||
nif->read(mLifeSpan);
|
|
||||||
nif->read(mLastUpdate);
|
|
||||||
nif->read(mSpawnGen);
|
|
||||||
nif->read(mCode);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysData::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
bool isBS202 = nif->getVersion() == NIFStream::generateVersion(20, 2, 0, 7) && nif->getBethVersion() > 0;
|
|
||||||
NiPSysDataFlag = true;
|
|
||||||
NiParticlesData::read(nif);
|
|
||||||
|
|
||||||
if (nif->getVersion() != NIFStream::generateVersion(20, 2, 0, 7))
|
|
||||||
{
|
|
||||||
mParticleInfo.resize(vertices.size());
|
|
||||||
for (unsigned long i = 0; i < vertices.size(); i++)
|
|
||||||
{
|
|
||||||
NiParticleInfo temp;
|
|
||||||
temp.read(nif);
|
|
||||||
mParticleInfo[i] = temp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nif->getBethVersion() == NIFFile::BethVersion::BETHVER_F76)
|
|
||||||
nif->skip(sizeof(float) * 3);
|
|
||||||
|
|
||||||
if (nif->getVersion() == NIFStream::generateVersion(20, 2, 4, 7))
|
|
||||||
nif->skip(1);
|
|
||||||
|
|
||||||
if (nif->getVersion() >= NIFStream::generateVersion(20, 0, 0, 2))
|
|
||||||
{
|
|
||||||
bool hasRotationSpeed;
|
|
||||||
nif->read(hasRotationSpeed);
|
|
||||||
if (hasRotationSpeed && !isBS202)
|
|
||||||
{
|
|
||||||
mRotationSpeeds.resize(vertices.size());
|
|
||||||
nif->readVector(mRotationSpeeds, vertices.size());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isBS202)
|
|
||||||
{
|
|
||||||
nif->read(mParticlesAddedNum);
|
|
||||||
nif->read(mParticlesBase);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nif->getVersion() == NIFStream::generateVersion(20, 2, 4, 7))
|
|
||||||
nif->skip(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiParticleSystem::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
NiParticleSystemFlag = true;
|
|
||||||
NiParticles::read(nif);
|
|
||||||
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_SSE)
|
|
||||||
mVertexDesc.read(nif);
|
|
||||||
|
|
||||||
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_SKY)
|
|
||||||
{
|
|
||||||
nif->read(mFarBegin);
|
|
||||||
nif->read(mFarEnd);
|
|
||||||
nif->read(mNearBegin);
|
|
||||||
nif->read(mNearEnd);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_SSE)
|
|
||||||
mNiPSysData.read(nif);
|
|
||||||
|
|
||||||
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 0))
|
|
||||||
{
|
|
||||||
nif->read(mWorldSpace);
|
|
||||||
unsigned int modifierNum;
|
|
||||||
nif->read(modifierNum);
|
|
||||||
mModifiers.resize(modifierNum);
|
|
||||||
|
|
||||||
for (auto& modifier : mModifiers)
|
|
||||||
{
|
|
||||||
modifier.read(nif);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiParticleSystem::post(Reader& nif)
|
|
||||||
{
|
|
||||||
NiParticles::post(nif);
|
|
||||||
mNiPSysData.post(nif);
|
|
||||||
for (auto ptr : mModifiers)
|
|
||||||
{
|
|
||||||
ptr.post(nif);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysModifier::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
mName = nif->getString();
|
|
||||||
nif->read(mOrder);
|
|
||||||
mTarget.read(nif);
|
|
||||||
nif->read(mActive);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysModifier::post(Reader& nif)
|
|
||||||
{
|
|
||||||
mTarget.post(nif);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysModifierCtlr::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
NiSingleInterpController::read(nif);
|
|
||||||
mModifierName = nif->getString();
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysEmitterCtlr::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
NiPSysModifierCtlr::read(nif);
|
|
||||||
if (nif->getVersion() > NIFStream::generateVersion(10, 1, 0, 103))
|
|
||||||
mVisibilityInterpolator.read(nif);
|
|
||||||
// TODO: Handle pre 10.1.0.103
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysEmitterCtlr::post(Reader& nif)
|
|
||||||
{
|
|
||||||
NiPSysModifierCtlr::post(nif);
|
|
||||||
if (nif.getVersion() > NIFStream::generateVersion(10, 1, 0, 103))
|
|
||||||
mVisibilityInterpolator.post(nif);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysAgeDeathModifier::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
NiPSysModifier::read(nif);
|
|
||||||
|
|
||||||
nif->read(mSpawnOnDeath);
|
|
||||||
mSpawnModifier.read(nif);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysAgeDeathModifier::post(Reader& nif)
|
|
||||||
{
|
|
||||||
mSpawnModifier.post(nif);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysSpawnModifier::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
NiPSysModifier::read(nif);
|
|
||||||
|
|
||||||
nif->read(mNumSpawnGens);
|
|
||||||
nif->read(mPercentSpawned);
|
|
||||||
nif->read(mMinSpawnNum);
|
|
||||||
nif->read(mMaxSpawnNum);
|
|
||||||
nif->read(mSpawnSpeedVariation);
|
|
||||||
nif->read(mSpawnDirVariation);
|
|
||||||
nif->read(mLifeSpan);
|
|
||||||
nif->read(mLifeSpanVariation);
|
|
||||||
}
|
|
||||||
|
|
||||||
void BSPSysLODModifier::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
NiPSysModifier::read(nif);
|
|
||||||
|
|
||||||
nif->read(mBeginDist);
|
|
||||||
nif->read(mEndDist);
|
|
||||||
nif->read(mEndEmitScale);
|
|
||||||
nif->read(mEndSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysCylinderEmitter::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
NiPSysVolumeEmitter::read(nif);
|
|
||||||
|
|
||||||
nif->read(mRadius);
|
|
||||||
nif->read(mHeight);
|
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
if (nif.getVersion() >= NIFStream::generateVersion(10, 1, 0, 0))
|
|
||||||
mEmitterObject.post(nif);
|
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
|
||||||
// nif->skip(sizeof(float) * 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
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->getVector4s(mColors, 3);
|
|
||||||
if (nif->getBethVersion() == NIFFile::BethVersion::BETHVER_F76)
|
|
||||||
nif->skip(sizeof(unsigned short) * 26);
|
|
||||||
}
|
|
||||||
|
|
||||||
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_F76)
|
|
||||||
throw Nif::Exception("Fallout76 is unsupported: ", nif->getFile().getFilename());
|
|
||||||
|
|
||||||
if (nif->getVersion() >= NIFStream::generateVersion(20, 0, 0, 2))
|
|
||||||
{
|
|
||||||
nif->read(mRotationAngle);
|
|
||||||
nif->read(mRotationAngleVariation);
|
|
||||||
mRandRotSpeedSign = nif->getBoolean();
|
|
||||||
}
|
|
||||||
|
|
||||||
mRandAxis = nif->getBoolean();
|
|
||||||
nif->read(mAxis);
|
|
||||||
}
|
|
||||||
|
|
||||||
void BSPSysScaleModifier::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
NiPSysModifier::read(nif);
|
|
||||||
|
|
||||||
unsigned int numScales;
|
|
||||||
nif->read(numScales);
|
|
||||||
nif->readVector(mScales, numScales);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysGravityModifier::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
NiPSysModifier::read(nif);
|
|
||||||
|
|
||||||
mGravityObject.read(nif);
|
|
||||||
nif->read(mGravityAxis);
|
|
||||||
nif->read(mDecay);
|
|
||||||
nif->read(mStrength);
|
|
||||||
nif->read(mForceType);
|
|
||||||
nif->read(mTurbulence);
|
|
||||||
nif->read(mTurbulenceScale);
|
|
||||||
|
|
||||||
if (nif->getBethVersion() > 16)
|
|
||||||
mWorldAligned = nif->getBoolean();
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysGravityModifier::post(Reader& nif)
|
|
||||||
{
|
|
||||||
NiPSysModifier::post(nif);
|
|
||||||
|
|
||||||
mGravityObject.post(nif);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysBoundUpdateModifier::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
NiPSysModifier::read(nif);
|
|
||||||
|
|
||||||
nif->read(mUpdateSkip);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysModifierActiveCtlr::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
NiPSysModifierCtlr::read(nif);
|
|
||||||
|
|
||||||
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103))
|
|
||||||
mNiVisData.read(nif);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysModifierActiveCtlr::post(Reader& nif)
|
|
||||||
{
|
|
||||||
NiPSysModifierCtlr::post(nif);
|
|
||||||
|
|
||||||
if (nif.getVersion() <= NIFStream::generateVersion(10, 1, 0, 103))
|
|
||||||
mNiVisData.post(nif);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysMeshEmitter::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
NiPSysEmitter::read(nif);
|
|
||||||
|
|
||||||
unsigned int meshNum;
|
|
||||||
nif->read(meshNum);
|
|
||||||
|
|
||||||
mEmitterMeshes.resize(meshNum);
|
|
||||||
for (auto& mesh : mEmitterMeshes)
|
|
||||||
mesh.read(nif);
|
|
||||||
|
|
||||||
nif->read(mInitialVelocityType);
|
|
||||||
nif->read(mEmissionType);
|
|
||||||
nif->read(mEmissionAxis);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysMeshEmitter::post(Reader& nif)
|
|
||||||
{
|
|
||||||
NiPSysEmitter::post(nif);
|
|
||||||
|
|
||||||
for (auto& mesh : mEmitterMeshes)
|
|
||||||
mesh.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 NiPSysBombModifier::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
NiPSysModifier::read(nif);
|
|
||||||
|
|
||||||
mBombObj.read(nif);
|
|
||||||
nif->read(mBombAxis);
|
|
||||||
nif->read(mDecay);
|
|
||||||
nif->read(mDeltaV);
|
|
||||||
nif->read(mDecayType);
|
|
||||||
nif->read(mSymmetryType);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysBombModifier::post(Reader& nif)
|
|
||||||
{
|
|
||||||
NiPSysModifier::post(nif);
|
|
||||||
|
|
||||||
mBombObj.post(nif);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysDragModifier::read(NIFStream* nif)
|
|
||||||
{
|
|
||||||
NiPSysModifier::read(nif);
|
|
||||||
|
|
||||||
mDragObj.read(nif);
|
|
||||||
nif->read(mDragAxis);
|
|
||||||
nif->read(mPercentage);
|
|
||||||
nif->read(mRange);
|
|
||||||
nif->read(mRangeFalloff);
|
|
||||||
}
|
|
||||||
|
|
||||||
void NiPSysDragModifier::post(Reader& nif)
|
|
||||||
{
|
|
||||||
NiPSysModifier::post(nif);
|
|
||||||
|
|
||||||
mDragObj.post(nif);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,289 +0,0 @@
|
|||||||
|
|
||||||
#ifndef OPENMW_COMPONENTS_NIF_PARTICLE_HPP
|
|
||||||
#define OPENMW_COMPONENTS_NIF_PARTICLE_HPP
|
|
||||||
|
|
||||||
#include "nifkey.hpp"
|
|
||||||
#include "niftypes.hpp" // Transformation
|
|
||||||
#include "recordptr.hpp"
|
|
||||||
#include <components/nif/controller.hpp>
|
|
||||||
#include <components/nif/data.hpp>
|
|
||||||
#include <components/nif/node.hpp>
|
|
||||||
#include <components/settings/values.hpp>
|
|
||||||
|
|
||||||
namespace Nif
|
|
||||||
{
|
|
||||||
struct NiParticles : NiGeometry
|
|
||||||
{
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiParticlesData : public NiGeometryData
|
|
||||||
{
|
|
||||||
unsigned short numParticles{ 0 };
|
|
||||||
|
|
||||||
int activeCount{ 0 };
|
|
||||||
|
|
||||||
std::vector<float> particleRadii, sizes, mRotationAngles;
|
|
||||||
std::vector<osg::Quat> mRotations;
|
|
||||||
std::vector<osg::Vec3f> mRotationAxes;
|
|
||||||
std::vector<osg::Vec4f> mSubtexOffsets;
|
|
||||||
|
|
||||||
float mAspectRatio;
|
|
||||||
unsigned short mAspectFlags;
|
|
||||||
float mAspect2, mSpeed1, mSpeed2;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiRotatingParticlesData : public NiParticlesData
|
|
||||||
{
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiParticleInfo
|
|
||||||
{
|
|
||||||
osg::Vec3f mVelocity;
|
|
||||||
osg::Vec3f mRotation;
|
|
||||||
float mAge;
|
|
||||||
float mLifeSpan;
|
|
||||||
float mLastUpdate;
|
|
||||||
unsigned short mSpawnGen;
|
|
||||||
unsigned short mCode;
|
|
||||||
|
|
||||||
void read(NIFStream* nif);
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiPSysData : public NiParticlesData
|
|
||||||
{
|
|
||||||
std::vector<NiParticleInfo> mParticleInfo;
|
|
||||||
std::vector<float> mRotationSpeeds;
|
|
||||||
unsigned short mParticlesAddedNum;
|
|
||||||
unsigned short mParticlesBase;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiParticleSystem : public NiParticles
|
|
||||||
{
|
|
||||||
BSVertexDesc mVertexDesc;
|
|
||||||
unsigned short mFarBegin;
|
|
||||||
unsigned short mFarEnd;
|
|
||||||
unsigned short mNearBegin;
|
|
||||||
unsigned short mNearEnd;
|
|
||||||
NiPSysDataPtr mNiPSysData;
|
|
||||||
|
|
||||||
bool mWorldSpace;
|
|
||||||
std::vector<NiPSysModifierPtr> mModifiers;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
void post(Reader& nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiPSysModifier : public Record
|
|
||||||
{
|
|
||||||
std::string mName;
|
|
||||||
unsigned int mOrder;
|
|
||||||
NiParticleSystemPtr mTarget;
|
|
||||||
bool mActive;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
void post(Reader& nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiPSysModifierCtlr : public NiSingleInterpController
|
|
||||||
{
|
|
||||||
std::string mModifierName;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiPSysEmitterCtlr : public NiPSysModifierCtlr
|
|
||||||
{
|
|
||||||
NiInterpolatorPtr mVisibilityInterpolator;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
void post(Reader& nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiPSysAgeDeathModifier : public NiPSysModifier
|
|
||||||
{
|
|
||||||
bool mSpawnOnDeath;
|
|
||||||
NiPSysSpawnModifierPtr mSpawnModifier;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
void post(Reader& nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiPSysSpawnModifier : public NiPSysModifier
|
|
||||||
{
|
|
||||||
unsigned short mNumSpawnGens;
|
|
||||||
float mPercentSpawned;
|
|
||||||
unsigned short mMinSpawnNum, mMaxSpawnNum;
|
|
||||||
float mSpawnSpeedVariation;
|
|
||||||
float mSpawnDirVariation;
|
|
||||||
float mLifeSpan;
|
|
||||||
float mLifeSpanVariation;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct BSPSysLODModifier : public NiPSysModifier
|
|
||||||
{
|
|
||||||
float mBeginDist;
|
|
||||||
float mEndDist;
|
|
||||||
float mEndEmitScale;
|
|
||||||
float mEndSize;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiPSysVolumeEmitter : public NiPSysEmitter
|
|
||||||
{
|
|
||||||
NiNodePtr mEmitterObject;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
void post(Reader& nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiPSysCylinderEmitter : public NiPSysVolumeEmitter
|
|
||||||
{
|
|
||||||
float mRadius;
|
|
||||||
float mHeight;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct BSPSysSimpleColorModifier : public NiPSysModifier
|
|
||||||
{
|
|
||||||
float mFadeInPercent;
|
|
||||||
float mFadeOutPercent;
|
|
||||||
float mColor1EndPercent;
|
|
||||||
float mColor1StartPercent;
|
|
||||||
float mColor2EndPercent;
|
|
||||||
float mColor2StartPercent;
|
|
||||||
|
|
||||||
std::vector<osg::Vec4f> mColors;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiPSysRotationModifier : public NiPSysModifier
|
|
||||||
{
|
|
||||||
float mRotationSpeed;
|
|
||||||
float mRotationSpeedVariation;
|
|
||||||
float mRotationAngle;
|
|
||||||
float mRotationAngleVariation;
|
|
||||||
|
|
||||||
bool mRandRotSpeedSign;
|
|
||||||
bool mRandAxis;
|
|
||||||
osg::Vec3f mAxis;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct BSPSysScaleModifier : public NiPSysModifier
|
|
||||||
{
|
|
||||||
std::vector<float> mScales;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiPSysGravityModifier : public NiPSysModifier
|
|
||||||
{
|
|
||||||
NamedPtr mGravityObject;
|
|
||||||
osg::Vec3f mGravityAxis;
|
|
||||||
float mDecay;
|
|
||||||
float mStrength;
|
|
||||||
unsigned int mForceType;
|
|
||||||
float mTurbulence;
|
|
||||||
float mTurbulenceScale;
|
|
||||||
|
|
||||||
bool mWorldAligned;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
void post(Reader& nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiPSysBoundUpdateModifier : public NiPSysModifier
|
|
||||||
{
|
|
||||||
unsigned short mUpdateSkip;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiPSysModifierActiveCtlr : public NiPSysModifierCtlr
|
|
||||||
{
|
|
||||||
NiVisDataPtr mNiVisData;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
void post(Reader& nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiPSysMeshEmitter : public NiPSysEmitter
|
|
||||||
{
|
|
||||||
std::vector<NamedPtr> mEmitterMeshes;
|
|
||||||
unsigned int mInitialVelocityType;
|
|
||||||
unsigned int mEmissionType;
|
|
||||||
osg::Vec3f mEmissionAxis;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
void post(Reader& nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct BSPSysInheritVelocityModifier : public NiPSysModifier
|
|
||||||
{
|
|
||||||
NamedPtr mInheritObject;
|
|
||||||
float mInheritChance;
|
|
||||||
float mVelocityMult;
|
|
||||||
float mVelcoityVariation;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
void post(Reader& nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiPSysBombModifier : public NiPSysModifier
|
|
||||||
{
|
|
||||||
NiNodePtr mBombObj;
|
|
||||||
osg::Vec3f mBombAxis;
|
|
||||||
float mDecay;
|
|
||||||
float mDeltaV;
|
|
||||||
|
|
||||||
unsigned int mDecayType;
|
|
||||||
unsigned int mSymmetryType;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
void post(Reader& nif) override;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NiPSysDragModifier : public NiPSysModifier
|
|
||||||
{
|
|
||||||
NamedPtr mDragObj;
|
|
||||||
osg::Vec3f mDragAxis;
|
|
||||||
float mPercentage;
|
|
||||||
float mRange;
|
|
||||||
float mRangeFalloff;
|
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
|
||||||
void post(Reader& nif) override;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
Loading…
Reference in New Issue