private static void GUICurveField(Rect position, SerializedProperty maxCurve, SerializedProperty minCurve, Color color, Rect ranges, CurveFieldMouseDownCallback mouseDownCallback) { int controlID = GUIUtility.GetControlID(0x4ec1c30f, EditorGUIUtility.native, position); Event current = Event.current; switch (current.GetTypeForControl(controlID)) { case EventType.MouseDown: if ((position.Contains(current.mousePosition) && (mouseDownCallback != null)) && mouseDownCallback(current.button, position, ranges)) { current.Use(); } break; case EventType.Repaint: { Rect rect = position; if (minCurve == null) { EditorGUIUtility.DrawCurveSwatch(rect, null, maxCurve, color, EditorGUI.kCurveBGColor, ranges); } else { EditorGUIUtility.DrawRegionSwatch(rect, maxCurve, minCurve, color, EditorGUI.kCurveBGColor, ranges); } EditorStyles.colorPickerBox.Draw(rect, GUIContent.none, controlID, false); break; } case EventType.ValidateCommand: if (current.commandName == "UndoRedoPerformed") { AnimationCurvePreviewCache.ClearCache(); } break; } }
private static void GUICurveField(Rect position, SerializedProperty maxCurve, SerializedProperty minCurve, Color color, Rect ranges, CurveFieldMouseDownCallback mouseDownCallback) { int controlID = GUIUtility.GetControlID(0x4ec1c30f, EditorGUIUtility.native, position); Event current = Event.current; switch (current.GetTypeForControl(controlID)) { case EventType.MouseDown: if ((position.Contains(current.mousePosition) && (mouseDownCallback != null)) && mouseDownCallback(current.button, position, ranges)) { current.Use(); } break; case EventType.Repaint: { Rect rect = position; if (minCurve == null) { EditorGUIUtility.DrawCurveSwatch(rect, null, maxCurve, color, EditorGUI.kCurveBGColor, ranges); } else { EditorGUIUtility.DrawRegionSwatch(rect, maxCurve, minCurve, color, EditorGUI.kCurveBGColor, ranges); } EditorStyles.colorPickerBox.Draw(rect, GUIContent.none, controlID, false); break; } case EventType.ValidateCommand: if (current.commandName == "UndoRedoPerformed") { AnimationCurvePreviewCache.ClearCache(); } break; } }