Ejemplo n.º 1
0
        public void Curve(ref AnimationCurve src, ICComRect position,
                          string label = "", string tooltip = "Float Value", GUIStyle style = null)
        {
            Com_Init(position, label, tooltip, null, ICEditorFunc.InputTextStyle);

#if UNITY_EDITOR
            //recording undo on change if the curve editor window is opened (and this current curve is selected)
            if (curveWindowType == null)
            {
                curveWindowType = typeof(UnityEditor.EditorWindow).Assembly.GetType("UnityEditor.CurveEditorWindow");
            }
            if (UnityEditor.EditorWindow.focusedWindow != null && UnityEditor.EditorWindow.focusedWindow.GetType() == curveWindowType)
            {
                AnimationCurve windowCurve = curveWindowType.GetProperty("curve").GetValue(UnityEditor.EditorWindow.focusedWindow, null) as AnimationCurve;
                if (windowCurve == src)
                {
                    if (windowCurveRef == null)
                    {
                        windowCurveRef = windowCurve.Copy();
                    }
                    if (!windowCurve.IdenticalTo(windowCurveRef))
                    {
                        Keyframe[] tempKeys = windowCurve.keys;
                        windowCurve.keys = windowCurveRef.keys;
                        //SetChange(true);
                        //SetChange(true);

                        windowCurve.keys = tempKeys;

                        windowCurveRef = windowCurve.Copy();
                    }
                }
            }
            else
            {
                windowCurveRef = null;
            }

            UnityEditor.EditorGUI.CurveField(com_rect, src, Color.white, new Rect(0, 0, 1, 1));
#endif
        }