private void Update()
 {
     foreach (InputButton button in buttonMappings.Keys)
     {
         if (Input.GetButtonDown(button.Name))
         {
             AbilitySlot slot    = buttonMappings[button];
             ICommand    command = new UseAbilityCommand(
                 abilityUser,
                 abilitySlotMappings.GetAbility(slot),
                 mousePositionDetector.CalculateWorldPosition()
                 );
             commandProcessor.ProcessCommand(command);
         }
     }
 }
        private void Update()
        {
            foreach (InputButton button in buttonList.Buttons)
            {
                if (destinationMover != null)
                {
                    if (Input.GetButton(button.Name))
                    {
                        Vector3 destination =
                            mousePositionDetector.CalculateWorldPosition();

                        // Only move if destination is valid (not clicked on
                        // the void).
                        if (mousePositionDetector.IsValid(destination))
                        {
                            ICommand moveToCommand =
                                new MoveToCommand(destinationMover,
                                                  transform.position, destination);
                            commandProcessor.ProcessCommand(moveToCommand);
                        }
                    }
                }
            }
        }