diff --git a/apps/openmw_test_suite/nif/node.hpp b/apps/openmw_test_suite/nif/node.hpp index c606fe67e5..e05a056b79 100644 --- a/apps/openmw_test_suite/nif/node.hpp +++ b/apps/openmw_test_suite/nif/node.hpp @@ -20,7 +20,7 @@ namespace Nif::Testing { value.mExtra = ExtraPtr(nullptr); value.mExtraList = ExtraList(); - value.mController = ControllerPtr(nullptr); + value.mController = NiTimeControllerPtr(nullptr); } inline void init(NiAVObject& value) @@ -55,14 +55,14 @@ namespace Nif::Testing value.mRoot = NiAVObjectPtr(nullptr); } - inline void init(Controller& value) + inline void init(NiTimeController& value) { - value.next = ControllerPtr(nullptr); - value.flags = 0; - value.frequency = 0; - value.phase = 0; - value.timeStart = 0; - value.timeStop = 0; + value.mNext = NiTimeControllerPtr(nullptr); + value.mFlags = 0; + value.mFrequency = 0; + value.mPhase = 0; + value.mTimeStart = 0; + value.mTimeStop = 0; value.mTarget = NiObjectNETPtr(nullptr); } } diff --git a/apps/openmw_test_suite/nifloader/testbulletnifloader.cpp b/apps/openmw_test_suite/nifloader/testbulletnifloader.cpp index fc6a21f62c..1971895936 100644 --- a/apps/openmw_test_suite/nifloader/testbulletnifloader.cpp +++ b/apps/openmw_test_suite/nifloader/testbulletnifloader.cpp @@ -300,7 +300,7 @@ namespace Nif::NiStringExtraData mNiStringExtraData; Nif::NiStringExtraData mNiStringExtraData2; Nif::NiIntegerExtraData mNiIntegerExtraData; - Nif::Controller mController; + Nif::NiTimeController mController; btTransform mTransform{ btMatrix3x3(btQuaternion(btVector3(1, 0, 0), 0.5f)), btVector3(1, 2, 3) }; btTransform mTransformScale2{ btMatrix3x3(btQuaternion(btVector3(1, 0, 0), 0.5f)), btVector3(2, 4, 6) }; btTransform mTransformScale3{ btMatrix3x3(btQuaternion(btVector3(1, 0, 0), 0.5f)), btVector3(3, 6, 9) }; @@ -817,11 +817,11 @@ namespace TEST_F(TestBulletNifLoader, for_tri_shape_child_node_with_controller_should_return_animated_shape) { mController.recType = Nif::RC_NiKeyframeController; - mController.flags |= Nif::Controller::Flag_Active; + mController.mFlags |= Nif::NiTimeController::Flag_Active; copy(mTransform, mNiTriShape.mTransform); mNiTriShape.mTransform.mScale = 3; mNiTriShape.mParents.push_back(&mNiNode); - mNiTriShape.mController = Nif::ControllerPtr(&mController); + mNiTriShape.mController = Nif::NiTimeControllerPtr(&mController); mNiNode.mChildren = Nif::NiAVObjectList{ Nif::NiAVObjectPtr(&mNiTriShape) }; mNiNode.mTransform.mScale = 4; @@ -847,14 +847,14 @@ namespace TEST_F(TestBulletNifLoader, for_two_tri_shape_children_nodes_where_one_with_controller_should_return_animated_shape) { mController.recType = Nif::RC_NiKeyframeController; - mController.flags |= Nif::Controller::Flag_Active; + mController.mFlags |= Nif::NiTimeController::Flag_Active; copy(mTransform, mNiTriShape.mTransform); mNiTriShape.mTransform.mScale = 3; mNiTriShape.mParents.push_back(&mNiNode); copy(mTransform, mNiTriShape2.mTransform); mNiTriShape2.mTransform.mScale = 3; mNiTriShape2.mParents.push_back(&mNiNode); - mNiTriShape2.mController = Nif::ControllerPtr(&mController); + mNiTriShape2.mController = Nif::NiTimeControllerPtr(&mController); mNiNode.mChildren = Nif::NiAVObjectList{ Nif::NiAVObjectPtr(&mNiTriShape), Nif::NiAVObjectPtr(&mNiTriShape2), diff --git a/components/nif/base.hpp b/components/nif/base.hpp index a24359772d..ae4bda7753 100644 --- a/components/nif/base.hpp +++ b/components/nif/base.hpp @@ -21,7 +21,7 @@ namespace Nif void post(Reader& nif) override { mNext.post(nif); } }; - struct Controller : public Record + struct NiTimeController : public Record { enum Flags { @@ -36,17 +36,17 @@ namespace Nif Mask = 6 }; - ControllerPtr next; - int flags; - float frequency, phase; - float timeStart, timeStop; + NiTimeControllerPtr mNext; + uint16_t mFlags; + float mFrequency, mPhase; + float mTimeStart, mTimeStop; NiObjectNETPtr mTarget; void read(NIFStream* nif) override; void post(Reader& nif) override; - bool isActive() const { return flags & Flag_Active; } - ExtrapolationMode extrapolationMode() const { return static_cast(flags & Mask); } + bool isActive() const { return mFlags & Flag_Active; } + ExtrapolationMode extrapolationMode() const { return static_cast(mFlags & Mask); } }; /// Abstract object that has a name, extra data and controllers @@ -55,7 +55,7 @@ namespace Nif std::string mName; ExtraPtr mExtra; ExtraList mExtraList; - ControllerPtr mController; + NiTimeControllerPtr mController; void read(NIFStream* nif) override; void post(Reader& nif) override; diff --git a/components/nif/controller.cpp b/components/nif/controller.cpp index d9e6d657d7..17937b61af 100644 --- a/components/nif/controller.cpp +++ b/components/nif/controller.cpp @@ -9,21 +9,21 @@ namespace Nif { - void Controller::read(NIFStream* nif) + void NiTimeController::read(NIFStream* nif) { - next.read(nif); - - flags = nif->getUShort(); - frequency = nif->getFloat(); - phase = nif->getFloat(); - timeStart = nif->getFloat(); - timeStop = nif->getFloat(); - mTarget.read(nif); + mNext.read(nif); + nif->read(mFlags); + nif->read(mFrequency); + nif->read(mPhase); + nif->read(mTimeStart); + nif->read(mTimeStop); + if (nif->getVersion() >= NIFStream::generateVersion(3, 3, 0, 13)) + mTarget.read(nif); } - void Controller::post(Reader& nif) + void NiTimeController::post(Reader& nif) { - next.post(nif); + mNext.post(nif); mTarget.post(nif); } @@ -109,7 +109,7 @@ namespace Nif nif->read(mWeight); mTextKeys.read(nif); - mExtrapolationMode = static_cast(nif->getUInt()); + mExtrapolationMode = static_cast(nif->getUInt()); mFrequency = nif->getFloat(); if (nif->getVersion() <= NIFStream::generateVersion(10, 4, 0, 1)) nif->read(mPhase); @@ -142,7 +142,7 @@ namespace Nif void NiInterpController::read(NIFStream* nif) { - Controller::read(nif); + NiTimeController::read(nif); if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 104) && nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 108)) @@ -166,7 +166,7 @@ namespace Nif void NiParticleSystemController::read(NIFStream* nif) { - Controller::read(nif); + NiTimeController::read(nif); velocity = nif->getFloat(); velocityRandom = nif->getFloat(); @@ -220,7 +220,7 @@ namespace Nif void NiParticleSystemController::post(Reader& nif) { - Controller::post(nif); + NiTimeController::post(nif); emitter.post(nif); affectors.post(nif); @@ -234,7 +234,7 @@ namespace Nif if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 0)) mTargetColor = static_cast(nif->get() & 3); else - mTargetColor = static_cast((flags >> 4) & 3); + mTargetColor = static_cast((mFlags >> 4) & 3); if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103)) mData.read(nif); @@ -249,7 +249,7 @@ namespace Nif void NiLookAtController::read(NIFStream* nif) { - Controller::read(nif); + NiTimeController::read(nif); if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 0)) nif->read(mLookAtFlags); @@ -258,19 +258,19 @@ namespace Nif void NiLookAtController::post(Reader& nif) { - Controller::post(nif); + NiTimeController::post(nif); mLookAt.post(nif); } void NiPathController::read(NIFStream* nif) { - Controller::read(nif); + NiTimeController::read(nif); if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 0)) nif->read(mPathFlags); else - mPathFlags = (flags >> 16); + mPathFlags = (mFlags >> 16); nif->read(mBankDirection); nif->read(mMaxBankAngle); @@ -282,7 +282,7 @@ namespace Nif void NiPathController::post(Reader& nif) { - Controller::post(nif); + NiTimeController::post(nif); mPathData.post(nif); mPercentData.post(nif); @@ -290,7 +290,7 @@ namespace Nif void NiUVController::read(NIFStream* nif) { - Controller::read(nif); + NiTimeController::read(nif); nif->read(mUvSet); mData.read(nif); @@ -298,7 +298,7 @@ namespace Nif void NiUVController::post(Reader& nif) { - Controller::post(nif); + NiTimeController::post(nif); mData.post(nif); } @@ -427,7 +427,7 @@ namespace Nif mTexSlot = static_cast(nif->get()); if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103)) { - nif->read(timeStart); + nif->read(mTimeStart); nif->read(mDelta); } readRecordList(nif, mSources); @@ -460,7 +460,7 @@ namespace Nif void bhkBlendController::read(NIFStream* nif) { - Controller::read(nif); + NiTimeController::read(nif); uint32_t numKeys; nif->read(numKeys); @@ -486,7 +486,7 @@ namespace Nif void NiControllerManager::read(NIFStream* nif) { - Controller::read(nif); + NiTimeController::read(nif); nif->read(mCumulative); readRecordList(nif, mSequences); @@ -495,7 +495,7 @@ namespace Nif void NiControllerManager::post(Reader& nif) { - Controller::post(nif); + NiTimeController::post(nif); postRecordList(nif, mSequences); mObjectPalette.post(nif); diff --git a/components/nif/controller.hpp b/components/nif/controller.hpp index 046ddc2e5c..5449e19f8d 100644 --- a/components/nif/controller.hpp +++ b/components/nif/controller.hpp @@ -12,7 +12,7 @@ namespace Nif { std::string mTargetName; NiInterpolatorPtr mInterpolator; - ControllerPtr mController; + NiTimeControllerPtr mController; NiBlendInterpolatorPtr mBlendInterpolator; uint16_t mBlendIndex; uint8_t mPriority; @@ -49,7 +49,7 @@ namespace Nif struct NiControllerSequence : public NiSequence { float mWeight{ 1.f }; - Controller::ExtrapolationMode mExtrapolationMode{ Controller::ExtrapolationMode::Constant }; + NiTimeController::ExtrapolationMode mExtrapolationMode{ NiTimeController::ExtrapolationMode::Constant }; float mFrequency{ 1.f }; float mPhase{ 1.f }; float mStartTime, mStopTime; @@ -62,7 +62,7 @@ namespace Nif }; // Base class for controllers that use NiInterpolators to animate objects. - struct NiInterpController : public Controller + struct NiInterpController : public NiTimeController { // Usually one of the flags. bool mManagerControlled{ false }; @@ -94,7 +94,7 @@ namespace Nif { }; - struct NiParticleSystemController : public Controller + struct NiParticleSystemController : public NiTimeController { enum BSPArrayController { @@ -151,7 +151,7 @@ namespace Nif void post(Reader& nif) override; bool noAutoAdjust() const { return emitFlags & EmitFlag_NoAutoAdjust; } - bool emitAtVertex() const { return flags & BSPArrayController_AtVertex; } + bool emitAtVertex() const { return mFlags & BSPArrayController_AtVertex; } }; using NiBSPArrayController = NiParticleSystemController; @@ -172,7 +172,7 @@ namespace Nif void post(Reader& nif) override; }; - struct NiPathController : public Controller + struct NiPathController : public NiTimeController { enum Flags { @@ -197,7 +197,7 @@ namespace Nif void post(Reader& nif) override; }; - struct NiLookAtController : public Controller + struct NiLookAtController : public NiTimeController { enum Flags { @@ -213,7 +213,7 @@ namespace Nif void post(Reader& nif) override; }; - struct NiUVController : public Controller + struct NiUVController : public NiTimeController { NiUVDataPtr mData; uint16_t mUvSet; @@ -295,7 +295,7 @@ namespace Nif void post(Reader& nif) override; }; - struct bhkBlendController : public Controller + struct bhkBlendController : public NiTimeController { void read(NIFStream* nif) override; }; @@ -314,7 +314,7 @@ namespace Nif void read(NIFStream* nif) override; }; - struct NiControllerManager : public Controller + struct NiControllerManager : public NiTimeController { bool mCumulative; NiControllerSequenceList mSequences; diff --git a/components/nif/particle.hpp b/components/nif/particle.hpp index 5590877294..328498210a 100644 --- a/components/nif/particle.hpp +++ b/components/nif/particle.hpp @@ -9,7 +9,7 @@ namespace Nif struct NiParticleModifier : public Record { NiParticleModifierPtr mNext; - ControllerPtr mController; + NiTimeControllerPtr mController; void read(NIFStream* nif) override; void post(Reader& nif) override; diff --git a/components/nif/recordptr.hpp b/components/nif/recordptr.hpp index 9f75b31d74..627e59cf0d 100644 --- a/components/nif/recordptr.hpp +++ b/components/nif/recordptr.hpp @@ -116,7 +116,7 @@ namespace Nif struct NiUVData; struct NiPosData; struct NiVisData; - struct Controller; + struct NiTimeController; struct NiObjectNET; struct NiSkinData; struct NiFloatData; @@ -157,7 +157,7 @@ namespace Nif using NiUVDataPtr = RecordPtrT; using NiPosDataPtr = RecordPtrT; using NiVisDataPtr = RecordPtrT; - using ControllerPtr = RecordPtrT; + using NiTimeControllerPtr = RecordPtrT; using NiObjectNETPtr = RecordPtrT; using NiSkinDataPtr = RecordPtrT; using NiMorphDataPtr = RecordPtrT; diff --git a/components/nifbullet/bulletnifloader.cpp b/components/nifbullet/bulletnifloader.cpp index bc207e52bf..59d5cd61d8 100644 --- a/components/nifbullet/bulletnifloader.cpp +++ b/components/nifbullet/bulletnifloader.cpp @@ -255,7 +255,7 @@ namespace NifBullet if (node.recType == Nif::RC_NiCollisionSwitch && !node.collisionActive()) return; - for (Nif::ControllerPtr ctrl = node.mController; !ctrl.empty(); ctrl = ctrl->next) + for (Nif::NiTimeControllerPtr ctrl = node.mController; !ctrl.empty(); ctrl = ctrl->mNext) { if (args.mAnimated) break; diff --git a/components/nifosg/controller.cpp b/components/nifosg/controller.cpp index 3d83c63721..45082d969a 100644 --- a/components/nifosg/controller.cpp +++ b/components/nifosg/controller.cpp @@ -15,11 +15,11 @@ namespace NifOsg { - ControllerFunction::ControllerFunction(const Nif::Controller* ctrl) - : mFrequency(ctrl->frequency) - , mPhase(ctrl->phase) - , mStartTime(ctrl->timeStart) - , mStopTime(ctrl->timeStop) + ControllerFunction::ControllerFunction(const Nif::NiTimeController* ctrl) + : mFrequency(ctrl->mFrequency) + , mPhase(ctrl->mPhase) + , mStartTime(ctrl->mTimeStart) + , mStopTime(ctrl->mTimeStop) , mExtrapolationMode(ctrl->extrapolationMode()) { } @@ -31,7 +31,7 @@ namespace NifOsg return time; switch (mExtrapolationMode) { - case Nif::Controller::ExtrapolationMode::Cycle: + case Nif::NiTimeController::ExtrapolationMode::Cycle: { float delta = mStopTime - mStartTime; if (delta <= 0) @@ -40,7 +40,7 @@ namespace NifOsg float remainder = (cycles - std::floor(cycles)) * delta; return mStartTime + remainder; } - case Nif::Controller::ExtrapolationMode::Reverse: + case Nif::NiTimeController::ExtrapolationMode::Reverse: { float delta = mStopTime - mStartTime; if (delta <= 0) @@ -55,7 +55,7 @@ namespace NifOsg return mStopTime - remainder; } - case Nif::Controller::ExtrapolationMode::Constant: + case Nif::NiTimeController::ExtrapolationMode::Constant: default: return std::clamp(time, mStartTime, mStopTime); } diff --git a/components/nifosg/controller.hpp b/components/nifosg/controller.hpp index f830cf1c4c..2f9d58c6b1 100644 --- a/components/nifosg/controller.hpp +++ b/components/nifosg/controller.hpp @@ -191,10 +191,10 @@ namespace NifOsg float mPhase; float mStartTime; float mStopTime; - Nif::Controller::ExtrapolationMode mExtrapolationMode; + Nif::NiTimeController::ExtrapolationMode mExtrapolationMode; public: - ControllerFunction(const Nif::Controller* ctrl); + ControllerFunction(const Nif::NiTimeController* ctrl); float calculate(float value) const override; diff --git a/components/nifosg/nifloader.cpp b/components/nifosg/nifloader.cpp index 96740b8dd3..f1492b9d0b 100644 --- a/components/nifosg/nifloader.cpp +++ b/components/nifosg/nifloader.cpp @@ -293,8 +293,8 @@ namespace NifOsg auto textKeyExtraData = static_cast(extraList[0].getPtr()); extractTextKeys(textKeyExtraData, target.mTextKeys); - Nif::ControllerPtr ctrl = seq->mController; - for (size_t i = 1; i < extraList.size() && !ctrl.empty(); i++, (ctrl = ctrl->next)) + Nif::NiTimeControllerPtr ctrl = seq->mController; + for (size_t i = 1; i < extraList.size() && !ctrl.empty(); i++, (ctrl = ctrl->mNext)) { Nif::ExtraPtr extra = extraList[i]; if (extra->recType != Nif::RC_NiStringExtraData || ctrl->recType != Nif::RC_NiKeyframeController) @@ -449,7 +449,7 @@ namespace NifOsg animflags, hasStencilProperty); } - static void setupController(const Nif::Controller* ctrl, SceneUtil::Controller* toSetup, int animflags) + static void setupController(const Nif::NiTimeController* ctrl, SceneUtil::Controller* toSetup, int animflags) { bool autoPlay = animflags & Nif::NiNode::AnimFlag_AutoPlay; if (autoPlay) @@ -725,7 +725,7 @@ namespace NifOsg if (nifNode->isHidden()) { bool hasVisController = false; - for (Nif::ControllerPtr ctrl = nifNode->mController; !ctrl.empty(); ctrl = ctrl->next) + for (Nif::NiTimeControllerPtr ctrl = nifNode->mController; !ctrl.empty(); ctrl = ctrl->mNext) { hasVisController |= (ctrl->recType == Nif::RC_NiVisController); if (hasVisController) @@ -858,7 +858,7 @@ namespace NifOsg SceneUtil::CompositeStateSetUpdater* composite, const std::vector& boundTextures, int animflags) { - for (Nif::ControllerPtr ctrl = nifNode->mController; !ctrl.empty(); ctrl = ctrl->next) + for (Nif::NiTimeControllerPtr ctrl = nifNode->mController; !ctrl.empty(); ctrl = ctrl->mNext) { if (!ctrl->isActive()) continue; @@ -884,7 +884,7 @@ namespace NifOsg void handleNodeControllers(const Nif::NiAVObject* nifNode, osg::Node* node, int animflags, bool& isAnimated) { - for (Nif::ControllerPtr ctrl = nifNode->mController; !ctrl.empty(); ctrl = ctrl->next) + for (Nif::NiTimeControllerPtr ctrl = nifNode->mController; !ctrl.empty(); ctrl = ctrl->mNext) { if (!ctrl->isActive()) continue; @@ -962,7 +962,7 @@ namespace NifOsg void handleMaterialControllers(const Nif::Property* materialProperty, SceneUtil::CompositeStateSetUpdater* composite, int animflags, const osg::Material* baseMaterial) { - for (Nif::ControllerPtr ctrl = materialProperty->mController; !ctrl.empty(); ctrl = ctrl->next) + for (Nif::NiTimeControllerPtr ctrl = materialProperty->mController; !ctrl.empty(); ctrl = ctrl->mNext) { if (!ctrl->isActive()) continue; @@ -1012,7 +1012,7 @@ namespace NifOsg void handleTextureControllers(const Nif::Property* texProperty, SceneUtil::CompositeStateSetUpdater* composite, Resource::ImageManager* imageManager, osg::StateSet* stateset, int animflags) { - for (Nif::ControllerPtr ctrl = texProperty->mController; !ctrl.empty(); ctrl = ctrl->next) + for (Nif::NiTimeControllerPtr ctrl = texProperty->mController; !ctrl.empty(); ctrl = ctrl->mNext) { if (!ctrl->isActive()) continue; @@ -1200,7 +1200,7 @@ namespace NifOsg partctrl->horizontalAngle, partctrl->verticalDir, partctrl->verticalAngle, partctrl->lifetime, partctrl->lifetimeRandom); emitter->setShooter(shooter); - emitter->setFlags(partctrl->flags); + emitter->setFlags(partctrl->mFlags); if (partctrl->recType == Nif::RC_NiBSPArrayController && partctrl->emitAtVertex()) { @@ -1252,7 +1252,7 @@ namespace NifOsg partsys->setSortMode(osgParticle::ParticleSystem::SORT_BACK_TO_FRONT); const Nif::NiParticleSystemController* partctrl = nullptr; - for (Nif::ControllerPtr ctrl = nifNode->mController; !ctrl.empty(); ctrl = ctrl->next) + for (Nif::NiTimeControllerPtr ctrl = nifNode->mController; !ctrl.empty(); ctrl = ctrl->mNext) { if (!ctrl->isActive()) continue; @@ -1483,7 +1483,7 @@ namespace NifOsg if (geom->empty()) return; osg::ref_ptr drawable; - for (Nif::ControllerPtr ctrl = nifNode->mController; !ctrl.empty(); ctrl = ctrl->next) + for (Nif::NiTimeControllerPtr ctrl = nifNode->mController; !ctrl.empty(); ctrl = ctrl->mNext) { if (!ctrl->isActive()) continue;