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 }