예제 #1
0
 public void Start()
 {
     if (State != SpriteDissipatorState.Ready)
     {
         return;
     }
     State = SpriteDissipatorState.Running;
 }
예제 #2
0
        public void Reset()
        {
            if (State != SpriteDissipatorState.Finished)
            {
                return;
            }
            var zeroGameTime = new GameTime();

            foreach (var a in _animators)
            {
                a.Reset();
                a.Update(zeroGameTime);
            }
            State = SpriteDissipatorState.Ready;
        }
예제 #3
0
 public void Update(GameTime gameTime)
 {
     if (State != SpriteDissipatorState.Running)
     {
         return;
     }
     foreach (var a in _animators)
     {
         a.Update(gameTime);
     }
     if (!_animators.All(a => a.Finished))
     {
         return;
     }
     State = SpriteDissipatorState.Finished;
 }
예제 #4
0
        public SpriteDissipator(Texture2D texture, Vector2 position)
        {
            State    = SpriteDissipatorState.Ready;
            _texture = texture;
            _center  = _upLeft = _upRight = _downLeft = _downRight = position;
            const float duration      = 1f;
            int         movementDelta = _texture.Width / 10;

            _animators = new[] {
                new Animator(Easing.Linear, _center.X, val => _upLeft.X           = val, -movementDelta, duration),
                new Animator(Easing.Linear, _center.Y, val => _upLeft.Y           = val, -movementDelta, duration),
                new Animator(Easing.Linear, _center.X, val => _upRight.X          = val, movementDelta, duration),
                new Animator(Easing.Linear, _center.Y, val => _upRight.Y          = val, -movementDelta, duration),
                new Animator(Easing.Linear, _center.X, val => _downLeft.X         = val, -movementDelta, duration),
                new Animator(Easing.Linear, _center.Y, val => _downLeft.Y         = val, movementDelta, duration),
                new Animator(Easing.Linear, _center.X, val => _downRight.X        = val, movementDelta, duration),
                new Animator(Easing.Linear, _center.Y, val => _downRight.Y        = val, movementDelta, duration),
                new Animator(Easing.Linear, _outerOpacity, val => _outerOpacity   = val, -0.5f, duration),
                new Animator(Easing.Linear, _centerOpacity, val => _centerOpacity = val, -1f, duration),
            };
        }