Beispiel #1
0
 public void DrawTimeLine(ITimelineData timelineData, float scale = 1.0f)
 {
     foreach (var entry in timelineData)
     {
         DrawTimeLineEntry(entry, timelineData.StartTime, timelineData.CurrentTime, scale, 0);
     }
 }
Beispiel #2
0
 public void Draw(ITimelineData timelineData)
 {
     if (_continuousScrolling)
     {
         _scrollPos.x = float.MaxValue;
     }
     _scrollPos = Draw(_scrollPos, timelineData, _scale);
 }
Beispiel #3
0
 public Vector2 Draw(Vector2 scrollPos, ITimelineData timelineData, float scale = 1.0f)
 {
     using (new GUIScope(_style.Skin)) {
         using (new GUILayout.VerticalScope(_style.Background)) {
             Rect headerRect = GUILayoutUtility.GetRect(new GUIContent("0"), _style.Tickmarks, GUILayout.ExpandWidth(true));
             using (var ss = new GUILayout.ScrollViewScope(scrollPos, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true))) {
                 DrawTimeLine(timelineData, scale);
                 scrollPos = ss.scrollPosition;
             }
             DrawHeaderInRect(headerRect, scrollPos, timelineData, scale);
             DrawFooterSplitter();
             DrawFooter(timelineData);
         }
         return(scrollPos);
     }
 }
Beispiel #4
0
 void DrawFooter(ITimelineData timelineData)
 {
     using (new GUILayout.HorizontalScope(_style.Footer, GUILayout.Height(splitterHeight))) {
         using (new GUILayout.VerticalScope(GUILayout.ExpandHeight(true), GUILayout.ExpandWidth(true))) {
             String msg = "(select entry to see details)";
             if (_selectedEntry != null)
             {
                 msg = string.Format(
                     "Start: {0}\nDuration: {1}\n{2}\n{3}",
                     _selectedEntry.Start.Subtract(timelineData.StartTime).TotalSeconds.ToString("0.00"),
                     (_selectedEntry.End.HasValue ? _selectedEntry.End.Value.Subtract(_selectedEntry.Start).TotalSeconds.ToString("0.00") : ""),
                     _selectedEntry.Name,
                     _selectedEntry.ExtendedInfo
                     );
             }
             GUILayout.Label(msg, GUILayout.ExpandHeight(true));
         }
         using (new GUILayout.VerticalScope(GUILayout.ExpandHeight(true), GUILayout.Width(100))) {
             using (new GUILayout.HorizontalScope()) {
                 GUILayout.Label("Auto", GUILayout.ExpandWidth(true));
                 _continuousScrolling = GUILayout.Toggle(_continuousScrolling, "", GUILayout.Width(16));
             }
             GUILayout.FlexibleSpace();
             using (new GUILayout.HorizontalScope()) {
                 if (GUILayout.Button("-", GUILayout.Height(16)))
                 {
                     _scale     = Mathf.Clamp(_scale * 0.9f, 0.1f, 100000.0f);
                     _scaleText = _scale.ToString();
                 }
                 if (GUILayout.Button("+", GUILayout.Height(16)))
                 {
                     _scale     = Mathf.Clamp(_scale * 1.1f, 0.1f, 100000.0f);
                     _scaleText = _scale.ToString();
                 }
             }
             _scaleText = GUILayout.TextField(_scaleText, GUILayout.ExpandWidth(true));
             float newScale;
             if (float.TryParse(_scaleText, out newScale))
             {
                 if (newScale > 0.1f && newScale != _scale)
                 {
                     _scale = newScale;
                 }
             }
         }
     }
 }
Beispiel #5
0
        void DrawHeaderInRect(Rect headerRect, Vector2 scrollPos, ITimelineData timelineData, float scale)
        {
            DateTime startTime = timelineData.StartTime;
            double   seconds   = (timelineData.CurrentTime - startTime).TotalSeconds;

            float startSecs       = (scrollPos.x / scale);
            int   startOffset     = (int)((startSecs - Math.Truncate(startSecs)) * scale);
            int   totalSecsToDraw = (int)Math.Ceiling((headerRect.width + startOffset) / scale);

            headerRect.x -= startOffset;
            for (int i = 0; i < totalSecsToDraw; i++)
            {
                Rect r = new Rect(
                    headerRect.x + (scale * i),
                    headerRect.y,
                    scale,
                    headerRect.height
                    );
                GUI.Label(r, ((int)startSecs + i).ToString(), _style.Tickmarks);
            }
        }