UnityEditor.TimeArea.SnapTimeToWholeFPS C# (CSharp) Method

SnapTimeToWholeFPS() public method

public SnapTimeToWholeFPS ( float time, float frameRate ) : float
time float
frameRate float
return float
        public float SnapTimeToWholeFPS(float time, float frameRate)
        {
            if (frameRate == 0f)
            {
                return time;
            }
            return (Mathf.Round(time * frameRate) / frameRate);
        }

Usage Example

示例#1
0
        public TimeArea.TimeRulerDragMode BrowseRuler(Rect position, int id, ref float time, float frameRate, bool pickAnywhere, GUIStyle thumbStyle)
        {
            Event current   = Event.current;
            Rect  position1 = position;

            if ((double)time != -1.0)
            {
                position1.x     = Mathf.Round(this.TimeToPixel(time, position)) - (float)thumbStyle.overflow.left;
                position1.width = thumbStyle.fixedWidth + (float)thumbStyle.overflow.horizontal;
            }
            switch (current.GetTypeForControl(id))
            {
            case EventType.MouseDown:
                if (position1.Contains(current.mousePosition))
                {
                    GUIUtility.hotControl = id;
                    TimeArea.s_PickOffset = current.mousePosition.x - this.TimeToPixel(time, position);
                    current.Use();
                    return(TimeArea.TimeRulerDragMode.Start);
                }
                if (pickAnywhere && position.Contains(current.mousePosition))
                {
                    GUIUtility.hotControl = id;
                    float wholeFps = TimeArea.SnapTimeToWholeFPS(this.PixelToTime(current.mousePosition.x, position), frameRate);
                    TimeArea.s_OriginalTime = time;
                    if ((double)wholeFps != (double)time)
                    {
                        GUI.changed = true;
                    }
                    time = wholeFps;
                    TimeArea.s_PickOffset = 0.0f;
                    current.Use();
                    return(TimeArea.TimeRulerDragMode.Start);
                }
                break;

            case EventType.MouseUp:
                if (GUIUtility.hotControl == id)
                {
                    GUIUtility.hotControl = 0;
                    current.Use();
                    return(TimeArea.TimeRulerDragMode.End);
                }
                break;

            case EventType.MouseDrag:
                if (GUIUtility.hotControl == id)
                {
                    float wholeFps = TimeArea.SnapTimeToWholeFPS(this.PixelToTime(current.mousePosition.x - TimeArea.s_PickOffset, position), frameRate);
                    if ((double)wholeFps != (double)time)
                    {
                        GUI.changed = true;
                    }
                    time = wholeFps;
                    current.Use();
                    return(TimeArea.TimeRulerDragMode.Dragging);
                }
                break;

            case EventType.KeyDown:
                if (GUIUtility.hotControl == id && current.keyCode == KeyCode.Escape)
                {
                    if ((double)time != (double)TimeArea.s_OriginalTime)
                    {
                        GUI.changed = true;
                    }
                    time = TimeArea.s_OriginalTime;
                    GUIUtility.hotControl = 0;
                    current.Use();
                    return(TimeArea.TimeRulerDragMode.Cancel);
                }
                break;

            case EventType.Repaint:
                if ((double)time != -1.0)
                {
                    bool flag = position.Contains(current.mousePosition);
                    position1.x += (float)thumbStyle.overflow.left;
                    thumbStyle.Draw(position1, id == GUIUtility.hotControl, flag || id == GUIUtility.hotControl, false, false);
                    break;
                }
                break;
            }
            return(TimeArea.TimeRulerDragMode.None);
        }