Browse Source

Ensure skinning matrix pointers do not change after late creation of bones. (e.g. prefab without bones.) Found while investigating #1695.

Lasse Öörni 9 years ago
parent
commit
290f671e91
1 changed files with 4 additions and 4 deletions
  1. 4 4
      Source/Urho3D/Graphics/AnimatedModel.cpp

+ 4 - 4
Source/Urho3D/Graphics/AnimatedModel.cpp

@@ -382,6 +382,10 @@ void AnimatedModel::SetModel(Model* model, bool createBones)
         SetSkeleton(model->GetSkeleton(), createBones);
         ResetLodLevels();
 
+        // Reserve space for skinning matrices
+        skinMatrices_.Resize(skeleton_.GetNumBones());
+        SetGeometryBoneMappings();
+
         // Enable skinning in batches
         for (unsigned i = 0; i < batches_.Size(); ++i)
         {
@@ -779,10 +783,6 @@ void AnimatedModel::SetSkeleton(const Skeleton& skeleton, bool createBones)
         }
     }
 
-    // Reserve space for skinning matrices
-    skinMatrices_.Resize(skeleton_.GetNumBones());
-    SetGeometryBoneMappings();
-
     assignBonesPending_ = !createBones;
 }