private void Update()
 {
     if (_moving)
     {
         _t += Time.deltaTime / secondsToTravel;
         transform.localPosition = Vector3.Lerp(_start, _end, _t);
         if (Vector3.Distance(transform.localPosition, _end) < 0.01)
         {
             transform.localPosition = _end;
             map.Move(_msg.Piece, _msg.From, _msg.To);
             gameInputActive.Unlock(gameObject);
             _moving = false;
             Message.Publish(new PieceMovementFinished());
         }
     }
 }
 private void Update()
 {
     if (_teleporting)
     {
         _t = Mathf.Min(1, _t + Time.deltaTime / secondsToTravel);
         UpdateTextures(Generate(255, Mathf.Max(0, _t - 0.5f) * 2, Mathf.Min(1, _t * 2)), Generate(255, Mathf.Max(0, (1 - _t) - 0.5f) * 2, Mathf.Min(1, (1 - _t) * 2)));
         if (_t == 1)
         {
             var tempPosition = _renderer.transform.position;
             transform.localPosition = new Vector3(_msg.To.X, _msg.To.Y, transform.localPosition.z);
             rendererParticles.transform.position             = tempPosition;
             _goToPosition.gameObject.transform.localPosition = _renderer.gameObject.transform.localPosition;
             var temp = _renderer;
             _renderer     = _goToPosition;
             _goToPosition = temp;
             UpdateTextures(Generate(1, 0, 0), Generate(1, 1, 1));
             _goToPosition.gameObject.SetActive(false);
             map.Move(_msg.Piece, _msg.From, _msg.To);
             gameInputActive.Unlock(gameObject);
             _teleporting = false;
         }
     }
 }
 protected override void Execute(PieceMoved msg) => map.Move(msg.Piece, msg.From, msg.To);