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