mirror of
https://github.com/OpenMW/openmw.git
synced 2025-10-15 14:56:36 +00:00
Revise various NIF controller records
Mostly those that don't require external changes
This commit is contained in:
parent
19d1f6f3f5
commit
05d8975ed1
5 changed files with 122 additions and 87 deletions
|
@ -63,7 +63,7 @@ namespace Nif::Testing
|
||||||
value.phase = 0;
|
value.phase = 0;
|
||||||
value.timeStart = 0;
|
value.timeStart = 0;
|
||||||
value.timeStop = 0;
|
value.timeStop = 0;
|
||||||
value.target = NiObjectNETPtr(nullptr);
|
value.mTarget = NiObjectNETPtr(nullptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ namespace Nif
|
||||||
int flags;
|
int flags;
|
||||||
float frequency, phase;
|
float frequency, phase;
|
||||||
float timeStart, timeStop;
|
float timeStart, timeStop;
|
||||||
NiObjectNETPtr target;
|
NiObjectNETPtr mTarget;
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
void read(NIFStream* nif) override;
|
||||||
void post(Reader& nif) override;
|
void post(Reader& nif) override;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include "controller.hpp"
|
#include "controller.hpp"
|
||||||
|
|
||||||
#include "data.hpp"
|
#include "data.hpp"
|
||||||
|
#include "exception.hpp"
|
||||||
#include "node.hpp"
|
#include "node.hpp"
|
||||||
#include "particle.hpp"
|
#include "particle.hpp"
|
||||||
#include "texture.hpp"
|
#include "texture.hpp"
|
||||||
|
@ -13,20 +14,17 @@ namespace Nif
|
||||||
next.read(nif);
|
next.read(nif);
|
||||||
|
|
||||||
flags = nif->getUShort();
|
flags = nif->getUShort();
|
||||||
|
|
||||||
frequency = nif->getFloat();
|
frequency = nif->getFloat();
|
||||||
phase = nif->getFloat();
|
phase = nif->getFloat();
|
||||||
timeStart = nif->getFloat();
|
timeStart = nif->getFloat();
|
||||||
timeStop = nif->getFloat();
|
timeStop = nif->getFloat();
|
||||||
|
mTarget.read(nif);
|
||||||
target.read(nif);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Controller::post(Reader& nif)
|
void Controller::post(Reader& nif)
|
||||||
{
|
{
|
||||||
Record::post(nif);
|
|
||||||
next.post(nif);
|
next.post(nif);
|
||||||
target.post(nif);
|
mTarget.post(nif);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControlledBlock::read(NIFStream* nif)
|
void ControlledBlock::read(NIFStream* nif)
|
||||||
|
@ -44,28 +42,28 @@ namespace Nif
|
||||||
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 110))
|
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 110))
|
||||||
{
|
{
|
||||||
mBlendInterpolator.read(nif);
|
mBlendInterpolator.read(nif);
|
||||||
mBlendIndex = nif->getUShort();
|
nif->read(mBlendIndex);
|
||||||
}
|
}
|
||||||
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 106) && nif->getBethVersion() > 0)
|
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 106) && nif->getBethVersion() > 0)
|
||||||
mPriority = nif->getChar();
|
nif->read(mPriority);
|
||||||
|
|
||||||
if (nif->getVersion() >= NIFStream::generateVersion(10, 2, 0, 0)
|
if (nif->getVersion() >= NIFStream::generateVersion(10, 2, 0, 0)
|
||||||
&& nif->getVersion() <= NIFStream::generateVersion(20, 1, 0, 0))
|
&& nif->getVersion() <= NIFStream::generateVersion(20, 1, 0, 0))
|
||||||
{
|
{
|
||||||
mStringPalette.read(nif);
|
mStringPalette.read(nif);
|
||||||
mNodeNameOffset = nif->getUInt();
|
nif->read(mNodeNameOffset);
|
||||||
mPropertyTypeOffset = nif->getUInt();
|
nif->read(mPropertyTypeOffset);
|
||||||
mControllerTypeOffset = nif->getUInt();
|
nif->read(mControllerTypeOffset);
|
||||||
mControllerIdOffset = nif->getUInt();
|
nif->read(mControllerIdOffset);
|
||||||
mInterpolatorIdOffset = nif->getUInt();
|
nif->read(mInterpolatorIdOffset);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mNodeName = nif->getString();
|
nif->read(mNodeName);
|
||||||
mPropertyType = nif->getString();
|
nif->read(mPropertyType);
|
||||||
mControllerType = nif->getString();
|
nif->read(mControllerType);
|
||||||
mControllerId = nif->getString();
|
nif->read(mControllerId);
|
||||||
mInterpolatorId = nif->getString();
|
nif->read(mInterpolatorId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,16 +78,17 @@ namespace Nif
|
||||||
|
|
||||||
void NiSequence::read(NIFStream* nif)
|
void NiSequence::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
mName = nif->getString();
|
nif->read(mName);
|
||||||
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103))
|
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103))
|
||||||
{
|
{
|
||||||
mAccumRootName = nif->getString();
|
nif->read(mAccumRootName);
|
||||||
mTextKeys.read(nif);
|
mTextKeys.read(nif);
|
||||||
}
|
}
|
||||||
size_t numControlledBlocks = nif->getUInt();
|
uint32_t numBlocks;
|
||||||
|
nif->read(numBlocks);
|
||||||
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 106))
|
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 106))
|
||||||
mArrayGrowBy = nif->getUInt();
|
nif->read(mArrayGrowBy);
|
||||||
mControlledBlocks.resize(numControlledBlocks);
|
mControlledBlocks.resize(numBlocks);
|
||||||
for (ControlledBlock& block : mControlledBlocks)
|
for (ControlledBlock& block : mControlledBlocks)
|
||||||
block.read(nif);
|
block.read(nif);
|
||||||
}
|
}
|
||||||
|
@ -104,28 +103,30 @@ namespace Nif
|
||||||
void NiControllerSequence::read(NIFStream* nif)
|
void NiControllerSequence::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
NiSequence::read(nif);
|
NiSequence::read(nif);
|
||||||
|
|
||||||
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103))
|
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
mWeight = nif->getFloat();
|
nif->read(mWeight);
|
||||||
mTextKeys.read(nif);
|
mTextKeys.read(nif);
|
||||||
mExtrapolationMode = static_cast<Controller::ExtrapolationMode>(nif->getUInt());
|
mExtrapolationMode = static_cast<Controller::ExtrapolationMode>(nif->getUInt());
|
||||||
mFrequency = nif->getFloat();
|
mFrequency = nif->getFloat();
|
||||||
if (nif->getVersion() <= NIFStream::generateVersion(10, 4, 0, 1))
|
if (nif->getVersion() <= NIFStream::generateVersion(10, 4, 0, 1))
|
||||||
mPhase = nif->getFloat();
|
nif->read(mPhase);
|
||||||
mStartTime = nif->getFloat();
|
nif->read(mStartTime);
|
||||||
mStopTime = nif->getFloat();
|
nif->read(mStopTime);
|
||||||
mPlayBackwards = nif->getVersion() == NIFStream::generateVersion(10, 1, 0, 106) && nif->getBoolean();
|
if (nif->getVersion() == NIFStream::generateVersion(10, 1, 0, 106))
|
||||||
|
nif->read(mPlayBackwards);
|
||||||
mManager.read(nif);
|
mManager.read(nif);
|
||||||
mAccumRootName = nif->getString();
|
nif->read(mAccumRootName);
|
||||||
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 113)
|
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 113)
|
||||||
&& nif->getVersion() <= NIFStream::generateVersion(20, 1, 0, 0))
|
&& nif->getVersion() <= NIFStream::generateVersion(20, 1, 0, 0))
|
||||||
mStringPalette.read(nif);
|
mStringPalette.read(nif);
|
||||||
else if (nif->getVersion() >= NIFFile::NIFVersion::VER_BGS && nif->getBethVersion() >= 24)
|
else if (nif->getVersion() >= NIFFile::NIFVersion::VER_BGS && nif->getBethVersion() >= 24)
|
||||||
{
|
{
|
||||||
size_t numAnimNotes = 1;
|
uint16_t numAnimNotes = 1;
|
||||||
if (nif->getBethVersion() >= 29)
|
if (nif->getBethVersion() >= 29)
|
||||||
numAnimNotes = nif->getUShort();
|
nif->read(numAnimNotes);
|
||||||
|
|
||||||
nif->skip(4 * numAnimNotes); // BSAnimNotes links
|
nif->skip(4 * numAnimNotes); // BSAnimNotes links
|
||||||
}
|
}
|
||||||
|
@ -134,6 +135,7 @@ namespace Nif
|
||||||
void NiControllerSequence::post(Reader& nif)
|
void NiControllerSequence::post(Reader& nif)
|
||||||
{
|
{
|
||||||
NiSequence::post(nif);
|
NiSequence::post(nif);
|
||||||
|
|
||||||
mManager.post(nif);
|
mManager.post(nif);
|
||||||
mStringPalette.post(nif);
|
mStringPalette.post(nif);
|
||||||
}
|
}
|
||||||
|
@ -141,14 +143,16 @@ namespace Nif
|
||||||
void NiInterpController::read(NIFStream* nif)
|
void NiInterpController::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
Controller::read(nif);
|
Controller::read(nif);
|
||||||
|
|
||||||
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 104)
|
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 104)
|
||||||
&& nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 108))
|
&& nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 108))
|
||||||
mManagerControlled = nif->getBoolean();
|
nif->read(mManagerControlled);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NiSingleInterpController::read(NIFStream* nif)
|
void NiSingleInterpController::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
NiInterpController::read(nif);
|
NiInterpController::read(nif);
|
||||||
|
|
||||||
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 104))
|
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 104))
|
||||||
mInterpolator.read(nif);
|
mInterpolator.read(nif);
|
||||||
}
|
}
|
||||||
|
@ -156,6 +160,7 @@ namespace Nif
|
||||||
void NiSingleInterpController::post(Reader& nif)
|
void NiSingleInterpController::post(Reader& nif)
|
||||||
{
|
{
|
||||||
NiInterpController::post(nif);
|
NiInterpController::post(nif);
|
||||||
|
|
||||||
mInterpolator.post(nif);
|
mInterpolator.post(nif);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -216,6 +221,7 @@ namespace Nif
|
||||||
void NiParticleSystemController::post(Reader& nif)
|
void NiParticleSystemController::post(Reader& nif)
|
||||||
{
|
{
|
||||||
Controller::post(nif);
|
Controller::post(nif);
|
||||||
|
|
||||||
emitter.post(nif);
|
emitter.post(nif);
|
||||||
affectors.post(nif);
|
affectors.post(nif);
|
||||||
colliders.post(nif);
|
colliders.post(nif);
|
||||||
|
@ -244,15 +250,17 @@ namespace Nif
|
||||||
void NiLookAtController::read(NIFStream* nif)
|
void NiLookAtController::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
Controller::read(nif);
|
Controller::read(nif);
|
||||||
|
|
||||||
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 0))
|
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 0))
|
||||||
lookAtFlags = nif->getUShort();
|
nif->read(mLookAtFlags);
|
||||||
target.read(nif);
|
mLookAt.read(nif);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NiLookAtController::post(Reader& nif)
|
void NiLookAtController::post(Reader& nif)
|
||||||
{
|
{
|
||||||
Controller::post(nif);
|
Controller::post(nif);
|
||||||
target.post(nif);
|
|
||||||
|
mLookAt.post(nif);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NiPathController::read(NIFStream* nif)
|
void NiPathController::read(NIFStream* nif)
|
||||||
|
@ -286,6 +294,7 @@ namespace Nif
|
||||||
void NiUVController::post(Reader& nif)
|
void NiUVController::post(Reader& nif)
|
||||||
{
|
{
|
||||||
Controller::post(nif);
|
Controller::post(nif);
|
||||||
|
|
||||||
data.post(nif);
|
data.post(nif);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -323,6 +332,7 @@ namespace Nif
|
||||||
void NiAlphaController::read(NIFStream* nif)
|
void NiAlphaController::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
NiFloatInterpController::read(nif);
|
NiFloatInterpController::read(nif);
|
||||||
|
|
||||||
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103))
|
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103))
|
||||||
mData.read(nif);
|
mData.read(nif);
|
||||||
}
|
}
|
||||||
|
@ -330,12 +340,14 @@ namespace Nif
|
||||||
void NiAlphaController::post(Reader& nif)
|
void NiAlphaController::post(Reader& nif)
|
||||||
{
|
{
|
||||||
NiFloatInterpController::post(nif);
|
NiFloatInterpController::post(nif);
|
||||||
|
|
||||||
mData.post(nif);
|
mData.post(nif);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NiRollController::read(NIFStream* nif)
|
void NiRollController::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
NiSingleInterpController::read(nif);
|
NiSingleInterpController::read(nif);
|
||||||
|
|
||||||
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103))
|
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103))
|
||||||
mData.read(nif);
|
mData.read(nif);
|
||||||
}
|
}
|
||||||
|
@ -343,49 +355,47 @@ namespace Nif
|
||||||
void NiRollController::post(Reader& nif)
|
void NiRollController::post(Reader& nif)
|
||||||
{
|
{
|
||||||
NiSingleInterpController::post(nif);
|
NiSingleInterpController::post(nif);
|
||||||
|
|
||||||
mData.post(nif);
|
mData.post(nif);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NiGeomMorpherController::read(NIFStream* nif)
|
void NiGeomMorpherController::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
NiInterpController::read(nif);
|
NiInterpController::read(nif);
|
||||||
|
|
||||||
if (nif->getVersion() >= NIFFile::NIFVersion::VER_OB_OLD)
|
if (nif->getVersion() >= NIFFile::NIFVersion::VER_OB_OLD)
|
||||||
mUpdateNormals = nif->getUShort() & 1;
|
mUpdateNormals = nif->get<uint16_t>() & 1;
|
||||||
mData.read(nif);
|
mData.read(nif);
|
||||||
if (nif->getVersion() >= NIFFile::NIFVersion::VER_MW)
|
|
||||||
|
if (nif->getVersion() < NIFFile::NIFVersion::VER_MW)
|
||||||
|
return;
|
||||||
|
|
||||||
|
mAlwaysActive = nif->get<uint8_t>() != 0;
|
||||||
|
|
||||||
|
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 105))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (nif->getVersion() <= NIFFile::NIFVersion::VER_OB)
|
||||||
{
|
{
|
||||||
mAlwaysActive = nif->getChar();
|
readRecordList(nif, mInterpolators);
|
||||||
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 106))
|
if (nif->getVersion() >= NIFStream::generateVersion(10, 2, 0, 0) && nif->getBethVersion() >= 10)
|
||||||
{
|
nif->skip(4 * nif->get<uint32_t>()); // Unknown
|
||||||
if (nif->getVersion() <= NIFFile::NIFVersion::VER_OB)
|
return;
|
||||||
{
|
}
|
||||||
readRecordList(nif, mInterpolators);
|
|
||||||
if (nif->getVersion() >= NIFStream::generateVersion(10, 2, 0, 0) && nif->getBethVersion() > 9)
|
mInterpolators.resize(nif->get<uint32_t>());
|
||||||
{
|
mWeights.resize(mInterpolators.size());
|
||||||
unsigned int numUnknown = nif->getUInt();
|
for (size_t i = 0; i < mInterpolators.size(); i++)
|
||||||
nif->skip(4 * numUnknown);
|
{
|
||||||
}
|
mInterpolators[i].read(nif);
|
||||||
}
|
nif->read(mWeights[i]);
|
||||||
else
|
|
||||||
{
|
|
||||||
std::vector<NiInterpolatorPtr> interpolators;
|
|
||||||
size_t numInterps = nif->getUInt();
|
|
||||||
interpolators.resize(numInterps);
|
|
||||||
mWeights.resize(numInterps);
|
|
||||||
for (size_t i = 0; i < numInterps; i++)
|
|
||||||
{
|
|
||||||
interpolators[i].read(nif);
|
|
||||||
mWeights[i] = nif->getFloat();
|
|
||||||
}
|
|
||||||
mInterpolators = interpolators;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NiGeomMorpherController::post(Reader& nif)
|
void NiGeomMorpherController::post(Reader& nif)
|
||||||
{
|
{
|
||||||
NiInterpController::post(nif);
|
NiInterpController::post(nif);
|
||||||
|
|
||||||
mData.post(nif);
|
mData.post(nif);
|
||||||
postRecordList(nif, mInterpolators);
|
postRecordList(nif, mInterpolators);
|
||||||
}
|
}
|
||||||
|
@ -393,6 +403,7 @@ namespace Nif
|
||||||
void NiVisController::read(NIFStream* nif)
|
void NiVisController::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
NiBoolInterpController::read(nif);
|
NiBoolInterpController::read(nif);
|
||||||
|
|
||||||
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103))
|
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103))
|
||||||
mData.read(nif);
|
mData.read(nif);
|
||||||
}
|
}
|
||||||
|
@ -400,17 +411,19 @@ namespace Nif
|
||||||
void NiVisController::post(Reader& nif)
|
void NiVisController::post(Reader& nif)
|
||||||
{
|
{
|
||||||
NiBoolInterpController::post(nif);
|
NiBoolInterpController::post(nif);
|
||||||
|
|
||||||
mData.post(nif);
|
mData.post(nif);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NiFlipController::read(NIFStream* nif)
|
void NiFlipController::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
NiFloatInterpController::read(nif);
|
NiFloatInterpController::read(nif);
|
||||||
mTexSlot = nif->getUInt();
|
|
||||||
|
mTexSlot = static_cast<NiTexturingProperty::TextureType>(nif->get<uint32_t>());
|
||||||
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103))
|
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103))
|
||||||
{
|
{
|
||||||
timeStart = nif->getFloat();
|
nif->read(timeStart);
|
||||||
mDelta = nif->getFloat();
|
nif->read(mDelta);
|
||||||
}
|
}
|
||||||
readRecordList(nif, mSources);
|
readRecordList(nif, mSources);
|
||||||
}
|
}
|
||||||
|
@ -418,14 +431,16 @@ namespace Nif
|
||||||
void NiFlipController::post(Reader& nif)
|
void NiFlipController::post(Reader& nif)
|
||||||
{
|
{
|
||||||
NiFloatInterpController::post(nif);
|
NiFloatInterpController::post(nif);
|
||||||
|
|
||||||
postRecordList(nif, mSources);
|
postRecordList(nif, mSources);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NiTextureTransformController::read(NIFStream* nif)
|
void NiTextureTransformController::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
NiFloatInterpController::read(nif);
|
NiFloatInterpController::read(nif);
|
||||||
mShaderMap = nif->getBoolean();
|
|
||||||
nif->read(mTexSlot);
|
nif->read(mShaderMap);
|
||||||
|
mTexSlot = static_cast<NiTexturingProperty::TextureType>(nif->get<uint32_t>());
|
||||||
nif->read(mTransformMember);
|
nif->read(mTransformMember);
|
||||||
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103))
|
if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103))
|
||||||
mData.read(nif);
|
mData.read(nif);
|
||||||
|
@ -434,31 +449,41 @@ namespace Nif
|
||||||
void NiTextureTransformController::post(Reader& nif)
|
void NiTextureTransformController::post(Reader& nif)
|
||||||
{
|
{
|
||||||
NiFloatInterpController::post(nif);
|
NiFloatInterpController::post(nif);
|
||||||
|
|
||||||
mData.post(nif);
|
mData.post(nif);
|
||||||
}
|
}
|
||||||
|
|
||||||
void bhkBlendController::read(NIFStream* nif)
|
void bhkBlendController::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
Controller::read(nif);
|
Controller::read(nif);
|
||||||
nif->getUInt(); // Zero
|
|
||||||
|
uint32_t numKeys;
|
||||||
|
nif->read(numKeys);
|
||||||
|
// Is this possible?
|
||||||
|
if (numKeys != 0)
|
||||||
|
throw Nif::Exception(
|
||||||
|
"Unsupported keys in bhkBlendController " + std::to_string(recIndex), nif->getFile().getFilename());
|
||||||
}
|
}
|
||||||
|
|
||||||
void BSEffectShaderPropertyFloatController::read(NIFStream* nif)
|
void BSEffectShaderPropertyFloatController::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
NiFloatInterpController::read(nif);
|
NiFloatInterpController::read(nif);
|
||||||
|
|
||||||
nif->read(mControlledVariable);
|
nif->read(mControlledVariable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BSEffectShaderPropertyColorController::read(NIFStream* nif)
|
void BSEffectShaderPropertyColorController::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
NiPoint3InterpController::read(nif);
|
NiPoint3InterpController::read(nif);
|
||||||
|
|
||||||
nif->read(mControlledColor);
|
nif->read(mControlledColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NiControllerManager::read(NIFStream* nif)
|
void NiControllerManager::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
Controller::read(nif);
|
Controller::read(nif);
|
||||||
mCumulative = nif->getBoolean();
|
|
||||||
|
nif->read(mCumulative);
|
||||||
readRecordList(nif, mSequences);
|
readRecordList(nif, mSequences);
|
||||||
mObjectPalette.read(nif);
|
mObjectPalette.read(nif);
|
||||||
}
|
}
|
||||||
|
@ -466,6 +491,7 @@ namespace Nif
|
||||||
void NiControllerManager::post(Reader& nif)
|
void NiControllerManager::post(Reader& nif)
|
||||||
{
|
{
|
||||||
Controller::post(nif);
|
Controller::post(nif);
|
||||||
|
|
||||||
postRecordList(nif, mSequences);
|
postRecordList(nif, mSequences);
|
||||||
mObjectPalette.post(nif);
|
mObjectPalette.post(nif);
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,14 +14,14 @@ namespace Nif
|
||||||
NiInterpolatorPtr mInterpolator;
|
NiInterpolatorPtr mInterpolator;
|
||||||
ControllerPtr mController;
|
ControllerPtr mController;
|
||||||
NiBlendInterpolatorPtr mBlendInterpolator;
|
NiBlendInterpolatorPtr mBlendInterpolator;
|
||||||
unsigned short mBlendIndex;
|
uint16_t mBlendIndex;
|
||||||
unsigned char mPriority;
|
uint8_t mPriority;
|
||||||
NiStringPalettePtr mStringPalette;
|
NiStringPalettePtr mStringPalette;
|
||||||
size_t mNodeNameOffset;
|
uint32_t mNodeNameOffset;
|
||||||
size_t mPropertyTypeOffset;
|
uint32_t mPropertyTypeOffset;
|
||||||
size_t mControllerTypeOffset;
|
uint32_t mControllerTypeOffset;
|
||||||
size_t mControllerIdOffset;
|
uint32_t mControllerIdOffset;
|
||||||
size_t mInterpolatorIdOffset;
|
uint32_t mInterpolatorIdOffset;
|
||||||
std::string mNodeName;
|
std::string mNodeName;
|
||||||
std::string mPropertyType;
|
std::string mPropertyType;
|
||||||
std::string mControllerType;
|
std::string mControllerType;
|
||||||
|
@ -38,7 +38,7 @@ namespace Nif
|
||||||
std::string mName;
|
std::string mName;
|
||||||
std::string mAccumRootName;
|
std::string mAccumRootName;
|
||||||
ExtraPtr mTextKeys;
|
ExtraPtr mTextKeys;
|
||||||
unsigned int mArrayGrowBy;
|
uint32_t mArrayGrowBy;
|
||||||
std::vector<ControlledBlock> mControlledBlocks;
|
std::vector<ControlledBlock> mControlledBlocks;
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
void read(NIFStream* nif) override;
|
||||||
|
@ -197,8 +197,15 @@ namespace Nif
|
||||||
|
|
||||||
struct NiLookAtController : public Controller
|
struct NiLookAtController : public Controller
|
||||||
{
|
{
|
||||||
NiAVObjectPtr target;
|
enum Flags
|
||||||
unsigned short lookAtFlags{ 0 };
|
{
|
||||||
|
Flag_Flip = 0x1,
|
||||||
|
Flag_LookYAxis = 0x2,
|
||||||
|
Flag_LookZAxis = 0x4,
|
||||||
|
};
|
||||||
|
|
||||||
|
uint16_t mLookAtFlags{ 0 };
|
||||||
|
NiAVObjectPtr mLookAt;
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
void read(NIFStream* nif) override;
|
||||||
void post(Reader& nif) override;
|
void post(Reader& nif) override;
|
||||||
|
@ -267,7 +274,7 @@ namespace Nif
|
||||||
|
|
||||||
struct NiFlipController : public NiFloatInterpController
|
struct NiFlipController : public NiFloatInterpController
|
||||||
{
|
{
|
||||||
int mTexSlot; // NiTexturingProperty::TextureType
|
NiTexturingProperty::TextureType mTexSlot;
|
||||||
float mDelta; // Time between two flips. delta = (start_time - stop_time) / num_sources
|
float mDelta; // Time between two flips. delta = (start_time - stop_time) / num_sources
|
||||||
NiSourceTextureList mSources;
|
NiSourceTextureList mSources;
|
||||||
|
|
||||||
|
@ -278,8 +285,8 @@ namespace Nif
|
||||||
struct NiTextureTransformController : public NiFloatInterpController
|
struct NiTextureTransformController : public NiFloatInterpController
|
||||||
{
|
{
|
||||||
bool mShaderMap;
|
bool mShaderMap;
|
||||||
int mTexSlot; // NiTexturingProperty::TextureType
|
NiTexturingProperty::TextureType mTexSlot;
|
||||||
unsigned int mTransformMember;
|
uint32_t mTransformMember;
|
||||||
NiFloatDataPtr mData;
|
NiFloatDataPtr mData;
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
void read(NIFStream* nif) override;
|
||||||
|
@ -293,14 +300,14 @@ namespace Nif
|
||||||
|
|
||||||
struct BSEffectShaderPropertyFloatController : public NiFloatInterpController
|
struct BSEffectShaderPropertyFloatController : public NiFloatInterpController
|
||||||
{
|
{
|
||||||
unsigned int mControlledVariable;
|
uint32_t mControlledVariable;
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
void read(NIFStream* nif) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct BSEffectShaderPropertyColorController : public NiPoint3InterpController
|
struct BSEffectShaderPropertyColorController : public NiPoint3InterpController
|
||||||
{
|
{
|
||||||
unsigned int mControlledColor;
|
uint32_t mControlledColor;
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
void read(NIFStream* nif) override;
|
||||||
};
|
};
|
||||||
|
@ -310,10 +317,12 @@ namespace Nif
|
||||||
bool mCumulative;
|
bool mCumulative;
|
||||||
NiControllerSequenceList mSequences;
|
NiControllerSequenceList mSequences;
|
||||||
NiDefaultAVObjectPalettePtr mObjectPalette;
|
NiDefaultAVObjectPalettePtr mObjectPalette;
|
||||||
|
|
||||||
void read(NIFStream* nif) override;
|
void read(NIFStream* nif) override;
|
||||||
void post(Reader& nif) override;
|
void post(Reader& nif) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Abstract
|
||||||
struct NiInterpolator : public Record
|
struct NiInterpolator : public Record
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
|
@ -79,7 +79,7 @@ namespace Nif
|
||||||
* 5 - Bump map texture
|
* 5 - Bump map texture
|
||||||
* 6 - Decal texture
|
* 6 - Decal texture
|
||||||
*/
|
*/
|
||||||
enum TextureType
|
enum TextureType : uint32_t
|
||||||
{
|
{
|
||||||
BaseTexture = 0,
|
BaseTexture = 0,
|
||||||
DarkTexture = 1,
|
DarkTexture = 1,
|
||||||
|
|
Loading…
Reference in a new issue