private void InsertViaBinarySearch(TeleportQueueEntry entry)
        {
            if (_queue.Count == 0)
            {
                _queue.Add(entry);
                return;
            }
            if (entry.Timestamp > _queue[_queue.Count - 1].Timestamp)
            {
                _queue.Add(entry);
                return;
            }
            float key    = entry.Timestamp;
            int   minNum = 0;
            int   maxNum = _queue.Count - 1;

            while (minNum <= maxNum)
            {
                int mid = (minNum + maxNum) / 2;
                if (System.Math.Abs(key - _queue[mid].Timestamp) < float.Epsilon)
                {
                    _queue.Insert(mid + 1, entry);
                    return;
                }
                else if (key < _queue[mid].Timestamp)
                {
                    maxNum = mid - 1;
                }
                else
                {
                    minNum = mid + 1;
                }
            }
            throw new System.Exception("Failed to binary search");
        }
        public void EnqueueEntry(float timestamp, ITeleportState[] states)
        {
            var entry = new TeleportQueueEntry()
            {
                Timestamp = timestamp,
                States    = states,
            };

            InsertViaBinarySearch(entry);
        }