public ShipInterpolationManager(ShipMovementController movementController)
        {
            _movementController = movementController;
            _positionTween      = new Vector2Tween(Vector2.Zero, Vector2.Zero, 1);
            _rotationTween      = new NumberTween(0, 0, 1);
            _tweensComplete     = 0;
            _lock       = new object();
            _onComplete = () =>
            {
                lock (_lock)
                {
                    if (++_tweensComplete % 2 == 0)
                    {
                        Interpolating   = false;
                        _tweensComplete = 0;
                    }
                }
            };

            _positionTween.OnComplete += (_) =>
            {
                _onComplete();
            };

            _rotationTween.OnComplete += (_) =>
            {
                _onComplete();
            };

            _positionTween.OnChange += (newPosition) =>
            {
                _movementController.Position = newPosition;
            };

            _rotationTween.OnChange += (newRotation) =>
            {
                _movementController.Rotation = newRotation;
            };
        }
예제 #2
0
        public ShipInterpolationManager(ShipMovementController movementController)
        {
            _movementController = movementController;
            _positionTween = new Vector2Tween(Vector2.Zero, Vector2.Zero, 1);
            _rotationTween = new NumberTween(0, 0, 1);
            _tweensComplete = 0;
            _lock = new object();
            _onComplete = () =>
            {
                lock (_lock)
                {
                    if (++_tweensComplete % 2 == 0)
                    {
                        Interpolating = false;
                        _tweensComplete = 0;
                    }
                }
            };

            _positionTween.OnComplete += (_) =>
            {
                _onComplete();
            };

            _rotationTween.OnComplete += (_) =>
            {
                _onComplete();
            };

            _positionTween.OnChange += (newPosition) =>
            {
                _movementController.Position = newPosition;
            };

            _rotationTween.OnChange += (newRotation) =>
            {
                _movementController.Rotation = newRotation;
            };
        }