From 1d96c0adbf7840054268c1fe0b5c8fb2ac20f172 Mon Sep 17 00:00:00 2001 From: Alexei Kotov Date: Mon, 13 May 2024 01:20:23 +0300 Subject: [PATCH] Read BSTreadTransfInterpolator --- components/nif/controller.cpp | 20 ++++++++++++++++++++ components/nif/controller.hpp | 17 +++++++++++++++++ components/nif/niffile.cpp | 1 + components/nif/record.hpp | 1 + 4 files changed, 39 insertions(+) diff --git a/components/nif/controller.cpp b/components/nif/controller.cpp index f6eed4fad0..930ce4fa0d 100644 --- a/components/nif/controller.cpp +++ b/components/nif/controller.cpp @@ -863,4 +863,24 @@ namespace Nif nif->read(mScaleHalfRange); } + void BSTreadTransform::read(NIFStream* nif) + { + nif->read(mName); + nif->read(mTransform1); + nif->read(mTransform2); + } + + void BSTreadTransfInterpolator::read(NIFStream* nif) + { + mTransforms.resize(nif->get()); + for (BSTreadTransform& transform : mTransforms) + transform.read(nif); + mData.read(nif); + } + + void BSTreadTransfInterpolator::post(Reader& nif) + { + mData.post(nif); + } + } diff --git a/components/nif/controller.hpp b/components/nif/controller.hpp index 7282a3627d..d4aae6ed5d 100644 --- a/components/nif/controller.hpp +++ b/components/nif/controller.hpp @@ -617,6 +617,23 @@ namespace Nif void read(NIFStream* nif) override; }; + struct BSTreadTransform + { + std::string mName; + NiQuatTransform mTransform1; + NiQuatTransform mTransform2; + + void read(NIFStream* nif); + }; + + struct BSTreadTransfInterpolator : public NiInterpolator + { + std::vector mTransforms; + NiFloatDataPtr mData; + + void read(NIFStream* nif) override; + void post(Reader& nif) override; + }; } #endif diff --git a/components/nif/niffile.cpp b/components/nif/niffile.cpp index 75b96736a4..d360552f9f 100644 --- a/components/nif/niffile.cpp +++ b/components/nif/niffile.cpp @@ -188,6 +188,7 @@ namespace Nif // Interpolators, Bethesda { "BSRotAccumTransfInterpolator", &construct }, + { "BSTreadTransfInterpolator", &construct }, // DATA diff --git a/components/nif/record.hpp b/components/nif/record.hpp index b7cca7f07a..21e0b0d382 100644 --- a/components/nif/record.hpp +++ b/components/nif/record.hpp @@ -139,6 +139,7 @@ namespace Nif RC_BSSkinInstance, RC_BSSkyShaderProperty, RC_BSSubIndexTriShape, + RC_BSTreadTransfInterpolator, RC_BSTriShape, RC_BSWArray, RC_BSWaterShaderProperty,