From 923756b407feecb97673e9a557472c582e86b0c5 Mon Sep 17 00:00:00 2001 From: Alexei Dobrohotov Date: Wed, 10 Nov 2021 19:42:55 +0300 Subject: [PATCH] Load NiControllerManager --- components/nif/controller.cpp | 9 +++++++++ components/nif/controller.hpp | 6 ++++++ components/nif/niffile.cpp | 1 + components/nif/record.hpp | 3 ++- 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/components/nif/controller.cpp b/components/nif/controller.cpp index 704c4928e6..513c781c58 100644 --- a/components/nif/controller.cpp +++ b/components/nif/controller.cpp @@ -270,6 +270,15 @@ namespace Nif nif->getUInt(); // Zero } + void NiControllerManager::read(NIFStream *nif) + { + Controller::read(nif); + cumulative = nif->getBoolean(); + unsigned int numSequences = nif->getUInt(); + nif->skip(4 * numSequences); // Controller sequences + nif->skip(4); // Object palette + } + void NiPoint3Interpolator::read(NIFStream *nif) { defaultVal = nif->getVector3(); diff --git a/components/nif/controller.hpp b/components/nif/controller.hpp index 503710fe90..15a2937b80 100644 --- a/components/nif/controller.hpp +++ b/components/nif/controller.hpp @@ -184,6 +184,12 @@ struct bhkBlendController : public Controller void read(NIFStream *nif) override; }; +struct NiControllerManager : public Controller +{ + bool cumulative; + void read(NIFStream *nif) override; +}; + struct Interpolator : public Record { }; struct NiPoint3Interpolator : public Interpolator diff --git a/components/nif/niffile.cpp b/components/nif/niffile.cpp index 4e184f68fa..24b9bbceed 100644 --- a/components/nif/niffile.cpp +++ b/components/nif/niffile.cpp @@ -140,6 +140,7 @@ static std::map makeFactory() factory["NiCollisionObject"] = {&construct , RC_NiCollisionObject }; factory["bhkCollisionObject"] = {&construct , RC_bhkCollisionObject }; factory["BSDismemberSkinInstance"] = {&construct , RC_BSDismemberSkinInstance }; + factory["NiControllerManager"] = {&construct , RC_NiControllerManager }; return factory; } diff --git a/components/nif/record.hpp b/components/nif/record.hpp index 23a1a6df2b..0b9b2dc998 100644 --- a/components/nif/record.hpp +++ b/components/nif/record.hpp @@ -129,7 +129,8 @@ enum RecordType RC_BSFurnitureMarker, RC_NiCollisionObject, RC_bhkCollisionObject, - RC_BSDismemberSkinInstance + RC_BSDismemberSkinInstance, + RC_NiControllerManager }; /// Base class for all records