From d8f50553afe60ed0b5d913ba5c6601da90ac8204 Mon Sep 17 00:00:00 2001 From: Alexei Kotov Date: Sat, 15 Jul 2023 03:57:29 +0300 Subject: [PATCH 1/2] Move Skyrim shader property controllers to controllers --- components/nif/controller.cpp | 24 ++++++++++++------------ components/nif/controller.hpp | 27 ++++++++++++++------------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/components/nif/controller.cpp b/components/nif/controller.cpp index 45b734c189..c4c33cc3ac 100644 --- a/components/nif/controller.cpp +++ b/components/nif/controller.cpp @@ -428,6 +428,18 @@ namespace Nif nif->getUInt(); // Zero } + void BSEffectShaderPropertyFloatController::read(NIFStream* nif) + { + NiFloatInterpController::read(nif); + nif->read(mControlledVariable); + } + + void BSEffectShaderPropertyColorController::read(NIFStream* nif) + { + NiPoint3InterpController::read(nif); + nif->read(mControlledColor); + } + void NiControllerManager::read(NIFStream* nif) { Controller::read(nif); @@ -637,16 +649,4 @@ namespace Nif mScaleValue = 1.f; } } - - void BSEffectShaderPropertyFloatController::read(NIFStream* nif) - { - NiFloatInterpController::read(nif); - nif->read(mControlledVariable); - } - - void BSEffectShaderPropertyColorController::read(NIFStream* nif) - { - NiPoint3InterpController::read(nif); - nif->read(mControlledColor); - } } diff --git a/components/nif/controller.hpp b/components/nif/controller.hpp index 2ec4dcb439..edebeee9be 100644 --- a/components/nif/controller.hpp +++ b/components/nif/controller.hpp @@ -293,6 +293,20 @@ namespace Nif void read(NIFStream* nif) override; }; + struct BSEffectShaderPropertyFloatController : public NiFloatInterpController + { + unsigned int mControlledVariable; + + void read(NIFStream* nif) override; + }; + + struct BSEffectShaderPropertyColorController : public NiPoint3InterpController + { + unsigned int mControlledColor; + + void read(NIFStream* nif) override; + }; + struct NiControllerManager : public Controller { bool mCumulative; @@ -406,18 +420,5 @@ namespace Nif void read(NIFStream* nif) override; }; - struct BSEffectShaderPropertyFloatController : public NiFloatInterpController - { - unsigned int mControlledVariable; - - void read(NIFStream* nif) override; - }; - - struct BSEffectShaderPropertyColorController : public NiPoint3InterpController - { - unsigned int mControlledColor; - - void read(NIFStream* nif) override; - }; } // Namespace #endif From 65fe89d8afbc95edeec8f80be6de5c468e2f2295 Mon Sep 17 00:00:00 2001 From: Alexei Kotov Date: Sat, 15 Jul 2023 04:17:43 +0300 Subject: [PATCH 2/2] Read NiTextureTransformController --- components/nif/controller.cpp | 16 ++++++++++++++++ components/nif/controller.hpp | 12 ++++++++++++ components/nif/niffile.cpp | 2 ++ components/nif/record.hpp | 1 + 4 files changed, 31 insertions(+) diff --git a/components/nif/controller.cpp b/components/nif/controller.cpp index c4c33cc3ac..9e93b31162 100644 --- a/components/nif/controller.cpp +++ b/components/nif/controller.cpp @@ -422,6 +422,22 @@ namespace Nif postRecordList(nif, mSources); } + void NiTextureTransformController::read(NIFStream* nif) + { + NiFloatInterpController::read(nif); + mShaderMap = nif->getBoolean(); + nif->read(mTexSlot); + nif->read(mTransformMember); + if (nif->getVersion() <= NIFStream::generateVersion(10, 1, 0, 103)) + mData.read(nif); + } + + void NiTextureTransformController::post(Reader& nif) + { + NiFloatInterpController::post(nif); + mData.post(nif); + } + void bhkBlendController::read(NIFStream* nif) { Controller::read(nif); diff --git a/components/nif/controller.hpp b/components/nif/controller.hpp index edebeee9be..d194ea3060 100644 --- a/components/nif/controller.hpp +++ b/components/nif/controller.hpp @@ -25,6 +25,7 @@ #define OPENMW_COMPONENTS_NIF_CONTROLLER_HPP #include "base.hpp" +#include "property.hpp" namespace Nif { @@ -288,6 +289,17 @@ namespace Nif void post(Reader& nif) override; }; + struct NiTextureTransformController : public NiFloatInterpController + { + bool mShaderMap; + int mTexSlot; // NiTexturingProperty::TextureType + unsigned int mTransformMember; + NiFloatDataPtr mData; + + void read(NIFStream* nif) override; + void post(Reader& nif) override; + }; + struct bhkBlendController : public Controller { void read(NIFStream* nif) override; diff --git a/components/nif/niffile.cpp b/components/nif/niffile.cpp index 4fc624d609..6033999dc9 100644 --- a/components/nif/niffile.cpp +++ b/components/nif/niffile.cpp @@ -88,6 +88,8 @@ namespace Nif { "NiBSPArrayController", &construct }, { "NiParticleSystemController", &construct }, { "NiFlipController", &construct }, + { "NiTextureTransformController", + &construct }, { "NiAmbientLight", &construct }, { "NiDirectionalLight", &construct }, { "NiPointLight", &construct }, diff --git a/components/nif/record.hpp b/components/nif/record.hpp index b5319d2b2f..e222eda949 100644 --- a/components/nif/record.hpp +++ b/components/nif/record.hpp @@ -70,6 +70,7 @@ namespace Nif RC_NiBSPArrayController, RC_NiParticleSystemController, RC_NiFlipController, + RC_NiTextureTransformController, RC_NiBSAnimationNode, RC_NiLight, RC_NiTextureEffect,