Exemplo n.º 1
0
 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();
     }
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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;
        }