From d7649420068c72d9863c1c0d94dc3e5697cd2cd2 Mon Sep 17 00:00:00 2001 From: Tazpn <tazpn@users.sourceforge.net> Date: Sun, 21 Sep 2008 02:05:25 +0000 Subject: [PATCH] niflib: NiGeomMorpherController fixes for new version with interpolators --- src/obj/NiGeomMorpherController.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/obj/NiGeomMorpherController.cpp b/src/obj/NiGeomMorpherController.cpp index 157bd2cc..ed90a979 100644 --- a/src/obj/NiGeomMorpherController.cpp +++ b/src/obj/NiGeomMorpherController.cpp @@ -93,6 +93,22 @@ void NiGeomMorpherController::Read( istream& in, list<unsigned int> & link_stack }; //--BEGIN POST-READ CUSTOM CODE--// + + // Synchronize the interpolator and morphweight structures. + if (info.version >= 0x14020007) + { + interpolators.resize(numInterpolators); + for (unsigned int i2 = 0; i2 < numInterpolators; i2++) { + interpolators[i2] = interpolatorWeights[i2].interpolator; + } + } + else + { + interpolatorWeights.resize(numInterpolators); + for (unsigned int i2 = 0; i2 < numInterpolators; i2++) { + interpolatorWeights[i2].interpolator = interpolators[i2]; + } + } //--END CUSTOM CODE--// } @@ -286,6 +302,12 @@ vector< Ref<NiInterpolator> > NiGeomMorpherController::GetInterpolators() const void NiGeomMorpherController::SetInterpolators( const vector< Ref<NiInterpolator> > & n ) { numInterpolators = (unsigned int)(n.size()); interpolators = n; + + // synchronize interpolator weights. Weights will sync later + interpolatorWeights.resize(numInterpolators); + for ( size_t i = 0; i < numInterpolators; ++i ) { + interpolatorWeights[i].interpolator = interpolators[i]; + } } Ref<NiMorphData> NiGeomMorpherController::GetData() const { -- GitLab