Exemplo n.º 1
0
        public void Tick(IClientWorldAccessor world, float dt)
        {
            var time = DateTime.Now - _timeStarted;

            if (time >= _duration)
            {
                if (_currentLoop < _loop || _loop < 0)
                {
                    _timeStarted = DateTime.Now;
                    _currentLoop++;
                }
                else
                {
                    Finish(world);
                }
            }
            else
            {
                (world as ClientMain).SetField("ShouldRender2DOverlays", true);

                long durationOfPoint = _duration.Milliseconds / (TempNodes.Count - 1);
                var  currentPoint    = Math.Min((int)(time.Milliseconds / durationOfPoint), TempNodes.Count - 2);
                var  point1          = TempNodes[currentPoint];
                var  point2          = TempNodes[currentPoint + 1];
                var  percent         = (time.Milliseconds % durationOfPoint) / (double)durationOfPoint;
                var  newPoint        = _cachedMode.GetPointBetween(point1, point2, percent, (double)time.Milliseconds / _duration.Milliseconds,
                                                                   _renderTickTime, _currentLoop == 0, _currentLoop == _loop);

                if (newPoint != null)
                {
                    _cachedMode.ProcessPoint(newPoint);
                }
            }
        }