diff --git a/src/obj/NiGeomMorpherController.cpp b/src/obj/NiGeomMorpherController.cpp index 157bd2cc74a8c84f1f4d80123a75ae240185bc23..ed90a9793464a6f8ac76d2e5c62759228ab5be9a 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 {