static void DrawCurveEditor(IClipCurveEditorOwner clipCurveEditorOwner, WindowState state, Rect headerRect, Rect trackRect, Vector2 activeRange, bool locked) { ClipCurveEditor clipCurveEditor = clipCurveEditorOwner.clipCurveEditor; CurveDataSource dataSource = clipCurveEditor.dataSource; Rect curveRect = dataSource.GetBackgroundRect(state); bool newlySelected = false; if (Event.current.type == EventType.MouseDown || Event.current.type == EventType.ContextClick) { newlySelected = MouseOverTrackArea(curveRect, trackRect) || MouseOverHeaderArea(headerRect, trackRect); } // make sure to not use any event before drawing the curve. bool prevEnabledState = GUI.enabled; GUI.enabled = true; clipCurveEditorOwner.clipCurveEditor.DrawHeader(headerRect); GUI.enabled = prevEnabledState; bool displayAsSelected = !locked && (clipCurveEditorOwner.inlineCurvesSelected || newlySelected); using (new EditorGUI.DisabledScope(locked)) clipCurveEditor.DrawCurveEditor(trackRect, state, activeRange, clipCurveEditorOwner.showLoops, displayAsSelected); if (newlySelected && !locked) { clipCurveEditorOwner.inlineCurvesSelected = true; HandleCurrentEvent(); } }
static void DrawCurveEditor(IClipCurveEditorOwner clipCurveEditorOwner, WindowState state, Rect headerRect, Rect trackRect, Vector2 activeRange, bool locked) { ClipCurveEditor clipCurveEditor = clipCurveEditorOwner.clipCurveEditor; CurveDataSource dataSource = clipCurveEditor.dataSource; Rect curveRect = dataSource.GetBackgroundRect(state); bool newlySelected = false; if (Event.current.type == EventType.MouseDown || Event.current.type == EventType.ContextClick) { newlySelected = MouseOverTrackArea(curveRect, trackRect) || MouseOverHeaderArea(headerRect, trackRect); } // make sure to not use any event before drawing the curve. bool prevEnabledState = GUI.enabled; GUI.enabled = true; clipCurveEditorOwner.clipCurveEditor.DrawHeader(headerRect); GUI.enabled = prevEnabledState; bool displayAsSelected = !locked && (clipCurveEditorOwner.inlineCurvesSelected || newlySelected); using (new EditorGUI.DisabledScope(locked)) { using (new GUIViewportScope(trackRect)) { Rect animEditorRect = curveRect; animEditorRect.y = trackRect.y; animEditorRect.height = trackRect.height; // clamp the curve editor to the track. this allows the menu to scroll properly animEditorRect.xMin = Mathf.Max(animEditorRect.xMin, trackRect.xMin); animEditorRect.xMax = trackRect.xMax; if (activeRange == Vector2.zero) { activeRange = new Vector2(animEditorRect.xMin, animEditorRect.xMax); } clipCurveEditor.DrawCurveEditor(animEditorRect, state, activeRange, clipCurveEditorOwner.showLoops, displayAsSelected); } } if (newlySelected && !locked) { clipCurveEditorOwner.inlineCurvesSelected = true; HandleCurrentEvent(); } }