Browse Source

Animation window fixes:
- Significant speed up when dealing with complex animations
- Fixed an issue where very detailed animation curves weren't rendering properly

BearishSun 9 years ago
parent
commit
6c07412b98

+ 1 - 1
Source/MBansheeEditor/Windows/Animation/GUIAnimFieldDisplay.cs

@@ -340,7 +340,7 @@ namespace BansheeEditor
 
             toggleLayout.AddElement(selectionBtn);
 
-            entryHeight = selectionBtn.Bounds.height;
+            entryHeight = EditorBuiltin.GUISkin.GetStyle(EditorStyles.Label).Height;
 
             backgroundTexture = new GUITexture(Builtin.WhiteTexture, GUITextureScaleMode.StretchToFit, 
                 GUIOption.FlexibleWidth());

+ 2 - 7
Source/MBansheeEditor/Windows/Animation/GUICurveDrawing.cs

@@ -570,13 +570,8 @@ namespace BansheeEditor
                     {
                         float fNumSplits = (end - start) / timeIncrement;
 
-                        numSplits = MathEx.FloorToInt(fNumSplits);
-                        float remainder = fNumSplits - numSplits;
-
-                        float lengthRounded = (end - start)*(numSplits/fNumSplits);
-                        timeIncrement = lengthRounded/numSplits;
-
-                        numSplits += MathEx.CeilToInt(remainder) + 1;
+                        numSplits = MathEx.CeilToInt(fNumSplits);
+                        timeIncrement = (end - start)/numSplits;
                     }
                     else
                     {

+ 11 - 6
Source/MBansheeEditor/Windows/AnimationWindow.cs

@@ -709,8 +709,13 @@ namespace BansheeEditor
 
             persistentData.dirtyAnimClips[clip.UUID] = clipInfo;
 
+            AnimFieldInfo[] fieldInfos = new AnimFieldInfo[clipInfo.curves.Count];
+
+            int idx = 0;
             foreach (var curve in clipInfo.curves)
-                guiFieldDisplay.AddField(new AnimFieldInfo(curve.Key, curve.Value));
+                fieldInfos[idx++] = new AnimFieldInfo(curve.Key, curve.Value);
+
+            guiFieldDisplay.SetFields(fieldInfos);
 
             guiCurveEditor.Events = clipInfo.events;
             guiCurveEditor.DisableCurveEdit = clipInfo.isImported;
@@ -1253,11 +1258,11 @@ namespace BansheeEditor
                 if (clipInfo == null)
                     return curvesToDisplay.ToArray();
 
-                foreach (var curve in clipInfo.curves)
-                {
-                    for (int i = 0; i < curve.Value.curveInfos.Length; i++)
-                        curvesToDisplay.Add(curve.Value.curveInfos[i]);
-                }
+                //foreach (var curve in clipInfo.curves)
+                //{
+                //    for (int i = 0; i < curve.Value.curveInfos.Length; i++)
+                //        curvesToDisplay.Add(curve.Value.curveInfos[i]);
+                //}
             }
             else
             {