ソースを参照

Removed unnecessary cases of MarkAnimationDirty() in AnimatedModel to allow manually positioned bones persisting correctly on scene load, when there are no animation states.

Lasse Öörni 11 年 前
コミット
1ace932f1e
1 ファイル変更10 行追加7 行削除
  1. 10 7
      Source/Engine/Graphics/AnimatedModel.cpp

+ 10 - 7
Source/Engine/Graphics/AnimatedModel.cpp

@@ -469,8 +469,11 @@ void AnimatedModel::RemoveAnimationState(unsigned index)
 
 void AnimatedModel::RemoveAllAnimationStates()
 {
-    animationStates_.Clear();
-    MarkAnimationDirty();
+    if (animationStates_.Size())
+    {
+        animationStates_.Clear();
+        MarkAnimationDirty();
+    }
 }
 
 void AnimatedModel::SetAnimationLodBias(float bias)
@@ -708,8 +711,6 @@ void AnimatedModel::SetSkeleton(const Skeleton& skeleton, bool createBones)
             }
         }
 
-        MarkAnimationDirty();
-
         using namespace BoneHierarchyCreated;
 
         VariantMap& eventData = GetEventDataMap();
@@ -791,7 +792,11 @@ void AnimatedModel::SetAnimationStatesAttr(VariantVector value)
         }
     }
 
-    MarkAnimationOrderDirty();
+    if (animationStates_.Size())
+    {
+        MarkAnimationDirty();
+        MarkAnimationOrderDirty();
+    }
 }
 
 void AnimatedModel::SetMorphsAttr(const PODVector<unsigned char>& value)
@@ -919,8 +924,6 @@ void AnimatedModel::AssignBoneNodes()
         AnimationState* state = *i;
         state->SetStartBone(state->GetStartBone());
     }
-
-    MarkAnimationDirty();
 }
 
 void AnimatedModel::RemoveRootBone()