private static void DrawClipSelected(TrackDrawer.ClipDrawData drawData) { if (SelectionManager.Contains(drawData.uiClip.clip)) { Rect rect = drawData.clipCenterSection; TrackDrawer.DrawBorder(drawData, Color.get_white()); if (drawData.uiClip.blendInKind == TimelineClipGUI.BlendKind.Ease) { rect = drawData.uiClip.mixInRect; rect.set_position(Vector2.get_zero()); EditorGUI.DrawRect(new Rect(rect.get_xMin(), rect.get_yMax() - 2f, rect.get_width(), 2f), Color.get_white()); } if (drawData.uiClip.blendInKind == TimelineClipGUI.BlendKind.Mix) { rect = drawData.uiClip.mixInRect; rect.set_position(Vector2.get_zero()); EditorGUI.DrawRect(new Rect(rect.get_xMin(), rect.get_yMin(), rect.get_width(), 2f), Color.get_white()); Graphics.DrawLineAA(4f, new Vector3(rect.get_xMin(), rect.get_yMin(), 0f), new Vector3(rect.get_xMax(), rect.get_yMax() - 1f, 0f), Color.get_white()); if (drawData.uiClip.previousClip != null && SelectionManager.Contains(drawData.uiClip.previousClip.clip)) { EditorGUI.DrawRect(new Rect(rect.get_xMin(), rect.get_yMax() - 2f, rect.get_width(), 2f), Color.get_white()); EditorGUI.DrawRect(new Rect(rect.get_xMax() - 2f, rect.get_yMin(), 2f, rect.get_height()), Color.get_white()); EditorGUI.DrawRect(new Rect(rect.get_xMin(), rect.get_yMin(), 2f, rect.get_height()), Color.get_white()); } } if (drawData.uiClip.blendOutKind == TimelineClipGUI.BlendKind.Ease || drawData.uiClip.blendOutKind == TimelineClipGUI.BlendKind.Mix) { rect = drawData.uiClip.mixOutRect; rect.set_x(drawData.targetRect.get_xMax() - rect.get_width()); rect.set_y(0f); EditorGUI.DrawRect(new Rect(rect.get_xMin(), rect.get_yMax() - 2f, rect.get_width(), 2f), Color.get_white()); Graphics.DrawLineAA(4f, new Vector3(rect.get_xMin(), rect.get_yMin(), 0f), new Vector3(rect.get_xMax(), rect.get_yMax() - 1f, 0f), Color.get_white()); } } }
public static void DrawBorder(Rect centerRect, ClipBorder border, ClipBlends blends, TimelineClip prevClip = null) { var thickness = border.thickness; var color = border.color; // Draw top selected lines. EditorGUI.DrawRect(new Rect(centerRect.xMin, centerRect.yMin, centerRect.width, thickness), color); // Draw bottom selected lines. EditorGUI.DrawRect(new Rect(centerRect.xMin, centerRect.yMax - thickness, centerRect.width, thickness), color); // Draw Left Selected Lines if (blends.inKind == BlendKind.None) { EditorGUI.DrawRect(new Rect(centerRect.xMin, centerRect.yMin, thickness, centerRect.height), color); } else { var mixInRect = blends.inRect; if (blends.inKind == BlendKind.Ease) { EditorGUI.DrawRect(new Rect(mixInRect.xMin, mixInRect.yMax - thickness, mixInRect.width, thickness), color); EditorGUI.DrawRect(new Rect(mixInRect.xMin, mixInRect.yMin, thickness, mixInRect.height), color); Graphics.DrawLineAA(2.0f * thickness, new Vector3(mixInRect.xMin, mixInRect.yMax - 1f, 0), new Vector3(mixInRect.xMax, mixInRect.yMin + 1f, 0), color); } else if (blends.inKind == BlendKind.Mix) { EditorGUI.DrawRect(new Rect(mixInRect.xMin, mixInRect.yMin, mixInRect.width, thickness), color); // If there's another clip in the left, draw the blend. if (prevClip != null && SelectionManager.Contains(prevClip)) { EditorGUI.DrawRect(new Rect(mixInRect.xMin, mixInRect.yMax - thickness, mixInRect.width, thickness), color); // Bottom } Graphics.DrawLineAA(2.0f * thickness, new Vector3(mixInRect.xMin, mixInRect.yMin + 1f, 0), new Vector3(mixInRect.xMax, mixInRect.yMax - 1f, 0), color); } } // Draw Right Selected Lines if (blends.outKind == BlendKind.None) { EditorGUI.DrawRect(new Rect(centerRect.xMax - thickness, centerRect.yMin, thickness, centerRect.height), color); } else { var mixOutRect = blends.outRect; EditorGUI.DrawRect(new Rect(mixOutRect.xMin, mixOutRect.yMax - thickness, mixOutRect.width, thickness), color); if (blends.outKind == BlendKind.Ease) { EditorGUI.DrawRect(new Rect(mixOutRect.xMax - thickness, mixOutRect.yMin, thickness, mixOutRect.height), color); } Graphics.DrawLineAA(2.0f * thickness, new Vector3(mixOutRect.xMin, mixOutRect.yMin + 1f, 0), new Vector3(mixOutRect.xMax, mixOutRect.yMax - 1f, 0), color); } }
private void ProcesMixOut(Rect mixOutRect) { if (ValidRange(mixOutRect) && mixOutRect.width > 0) { var clipStyle = TimelineStyles.timelineClip; var texture = clipStyle.normal.background; ClipRenderer.RenderTexture(mixOutRect, texture, TimelineStyles.blendMixOut.normal.background, Color.black); Graphics.DrawLineAA(2.5f, new Vector3(mixOutRect.xMin, mixOutRect.yMax - 1f, 0), new Vector3(mixOutRect.xMax, mixOutRect.yMin + 1f, 0), Color.white); } }
static void DrawClipBackground(Rect clipCenterSection, ClipBlends blends, bool selected) { var clipStyle = selected ? DirectorStyles.Instance.timelineClipSelected : DirectorStyles.Instance.timelineClip; var texture = clipStyle.normal.background; var lineColor = DirectorStyles.Instance.customSkin.colorClipBlendLines; // Center body GUI.Label(clipCenterSection, GUIContent.none, clipStyle); // Blend/Mix In if (blends.inKind != BlendKind.None) { var mixInRect = blends.inRect; if (blends.inKind == BlendKind.Ease) { ClipRenderer.RenderTexture(mixInRect, texture, DirectorStyles.Instance.blendMixIn.normal.background, Color.black); if (!selected) { Graphics.DrawLineAA(2.5f, new Vector3(mixInRect.xMin, mixInRect.yMax - 1f, 0), new Vector3(mixInRect.xMax, mixInRect.yMin + 1f, 0), lineColor); } } else { var blendInColor = selected ? Color.black : DirectorStyles.Instance.customSkin.colorClipBlendYin; ClipRenderer.RenderTexture(mixInRect, texture, DirectorStyles.Instance.blendEaseIn.normal.background, blendInColor); if (!selected) { Graphics.DrawLineAA(2.0f, new Vector3(mixInRect.xMin, mixInRect.yMin + 1f, 0), new Vector3(mixInRect.xMax, mixInRect.yMax - 1f, 0), lineColor); } } Graphics.DrawLineAA(2.0f, mixInRect.max, new Vector2(mixInRect.xMax, mixInRect.yMin), lineColor); } // Blend/Mix Out if (blends.outKind != BlendKind.None) { var mixOutRect = blends.outRect; if (blends.outKind == BlendKind.Ease) { ClipRenderer.RenderTexture(mixOutRect, texture, DirectorStyles.Instance.blendMixOut.normal.background, Color.black); if (!selected) { Graphics.DrawLineAA(2.5f, new Vector3(mixOutRect.xMin, mixOutRect.yMin + 1f, 0), new Vector3(mixOutRect.xMax, mixOutRect.yMax - 1f, 0), lineColor); } } else { var blendOutColor = selected ? Color.black : DirectorStyles.Instance.customSkin.colorClipBlendYang; ClipRenderer.RenderTexture(mixOutRect, texture, DirectorStyles.Instance.blendEaseOut.normal.background, blendOutColor); if (!selected) { Graphics.DrawLineAA(2.0f, new Vector3(mixOutRect.xMin, mixOutRect.yMin + 1f, 0), new Vector3(mixOutRect.xMax, mixOutRect.yMax - 1f, 0), lineColor); } } Graphics.DrawLineAA(2.0f, mixOutRect.min, new Vector2(mixOutRect.xMin, mixOutRect.yMax), lineColor); } }
public static void DrawDefaultClip(ClipDrawData drawData) { DrawClipBackground(drawData.clipCenterSection, drawData.clipBlends, drawData.selected); if (drawData.targetRect.width > k_MinClipWidth) { var isRepaint = (Event.current.type == EventType.Repaint); if (isRepaint && drawData.clipEditor != null) { var customBodyRect = drawData.clippedRect; customBodyRect.yMin += k_ClipInlineWidth; customBodyRect.yMax -= k_ClipSwatchLineThickness; var region = new ClipBackgroundRegion(customBodyRect, drawData.localVisibleStartTime, drawData.localVisibleEndTime); try { drawData.clipEditor.DrawBackground(drawData.clip, region); } catch (Exception e) { Debug.LogException(e); } } } else { drawData.targetRect.width = k_MinClipWidth; drawData.clipCenterSection.width = k_MinClipWidth; } var overlapRect = drawData.targetRect; if (drawData.previousClip != null && SelectionManager.Contains(drawData.previousClip) && drawData.clipBlends.inRect.width != 0) { var mixInRect = drawData.clipBlends.inRect; overlapRect.xMin += mixInRect.width; Graphics.DrawLineAA(2.0f, new Vector3(mixInRect.xMin, mixInRect.yMin + 1f, 0), new Vector3(mixInRect.xMax, mixInRect.yMax - 1f, 0), ClipBorder.kSelection.color); } DrawClipEdges(overlapRect, drawData.ClipDrawOptions.highlightColor, s_InlineLightColor, s_InlineShadowColor, drawData.clipBlends.inKind != BlendKind.Mix, drawData.clipBlends.outKind != BlendKind.Mix); DrawClipTimescale(drawData.targetRect, drawData.clip.timeScale); if (drawData.targetRect.width >= k_ClipInOutMinWidth) { DrawClipInOut(drawData.targetRect, drawData.clip); } var labelRect = drawData.clipCenterSection; if (drawData.targetRect.width >= k_ClipLoopsMinWidth) { bool selected = drawData.selected || drawData.inlineCurvesSelected; if (selected) { if (drawData.loopRects != null && drawData.loopRects.Any()) { DrawLoops(drawData); var l = drawData.loopRects[0]; labelRect.xMax = Math.Min(labelRect.xMax, l.x - drawData.unclippedRect.x); } } } labelRect.xMin += k_ClipLabelPadding; labelRect.xMax -= k_ClipLabelPadding; if (labelRect.width > k_ClipLabelMinWidth) { DrawClipLabel(drawData, labelRect, Color.white); } DrawClipBorder(drawData); }