public static void DrawVerticalLine(float x, float minY, float maxY, Color color) { if (Event.current.type == EventType.Repaint) { // HandleUtility.ApplyWireMaterial(); TimeAreaTools.ReflectionApplyWireMaterial(); if (Application.platform == RuntimePlatform.WindowsEditor) { GL.Begin(7); } else { GL.Begin(1); } TimeArea.DrawVerticalLineFast(x, minY, maxY, color); GL.End(); } }
protected void DrawLineWithTipsRectByTime(double fTime, float offSet, float yPos, bool dotLine, Color color) { float timeToPos = TimeToPixel(fTime); Rect drawRect = new Rect(timeToPos - offSet, yPos, 1, _rectTimeAreaContent.height + 15); float num = drawRect.y; Vector3 p = new Vector3(drawRect.x, num, 0f); Vector3 p2 = new Vector3(drawRect.x, num + Mathf.Min(drawRect.height, _rectTimeAreaTotal.height), 0f); if (true) { if (dotLine) { TimeAreaTools.DrawDottedLine(p, p2, 5f, color); } else { // Rect rect2 = Rect.MinMaxRect(p.x - 0.5f, p.y, p2.x + 0.5f, p2.y); EditorGUI.DrawRect(drawRect, color); } } // draw time tips // Time ruler GUIStyle TimelineTick = "AnimationTimelineTick"; string beginTime = TimeAsString(fTime); GUIContent lb = new GUIContent(beginTime); Vector2 size = TimelineTick.CalcSize(lb); Color pre = GUI.color; GUI.color = Color.white; Rect rectTip = new Rect(timeToPos - offSet, yPos, size.x, size.y); rectTip.x -= 4; rectTip.width += 8; GUI.Box(rectTip, GUIContent.none, "Button"); rectTip.y = yPos - 3; rectTip.x += 4; rectTip.width -= 8; GUI.color = pre; GUI.Label(rectTip, lb, TimelineTick); }
public void TimeRuler(Rect position, float frameRate, bool labels, bool useEntireHeight, float alpha, TimeArea.TimeFormat timeFormat) { Color color = GUI.color; GUI.BeginGroup(position); TimeArea.InitStyles(); // HandleUtility.ApplyWireMaterial(); TimeAreaTools.ReflectionApplyWireMaterial(); Color backgroundColor = GUI.backgroundColor; this.SetTickMarkerRanges(); this.hTicks.SetTickStrengths(3f, 80f, true); Color textColor = TimeArea.styles.TimelineTick.normal.textColor; textColor.a = 0.75f * alpha; if (Event.current.type == EventType.Repaint) { if (Application.platform == RuntimePlatform.WindowsEditor) { GL.Begin(7); } else { GL.Begin(1); } // Rect shownArea = base.shownArea; float a = ShowAreaXMin * frameRate * position.width; float b = ShowAreaWidth * frameRate; float width = position.width; float horRangeMax = base.hRangeMax; float horRangeMin = base.hRangeMin; for (int i = 0; i < this.hTicks.tickLevels; i++) { float num = this.hTicks.GetStrengthOfLevel(i) * 0.9f; Color c1 = new Color(1f, 1f, 1f, num / 0.5f) * textColor; float[] ticksAtLevel = this.hTicks.GetTicksAtLevel(i, true); for (int j = 0; j < ticksAtLevel.Length; j++) { if (ticksAtLevel[j] >= horRangeMin && ticksAtLevel[j] <= horRangeMax) { int num2 = Mathf.RoundToInt(ticksAtLevel[j] * frameRate); float num3 = (!useEntireHeight) ? (position.height * Mathf.Min(1f, num) * 0.7f) : position.height; // float x = this.FrameToPixel((float)num2, frameRate, position, shownArea); float x = this.FrameToPixelForTimeRuler((float)num2, width, a, b); TimeArea.DrawVerticalLineFast(x, position.height - num3 + 0.5f, position.height - 0.5f, c1); } } } GL.End(); } if (labels) { int levelWithMinSeparation = this.hTicks.GetLevelWithMinSeparation(40f); float[] ticksAtLevel2 = this.hTicks.GetTicksAtLevel(levelWithMinSeparation, false); for (int k = 0; k < ticksAtLevel2.Length; k++) { if (ticksAtLevel2[k] >= base.hRangeMin && ticksAtLevel2[k] <= base.hRangeMax) { int num4 = Mathf.RoundToInt(ticksAtLevel2[k] * frameRate); float num5 = Mathf.Floor(this.FrameToPixel((float)num4, frameRate, position)); string text = this.FormatTime(ticksAtLevel2[k], frameRate, timeFormat); GUI.Label(new Rect(num5 + 3f, -3f, 40f, 20f), text, TimeArea.styles.TimelineTick); } } } GUI.EndGroup(); GUI.backgroundColor = backgroundColor; GUI.color = color; }