2018年10月10日 星期三

For InControl

///---------------------------
/// Intelligent Menu for uGUI
/// 2017 - 2018
///---------------------------

using InControl;

namespace UnityEngine.UI.Menu
{
 public class IntegrationToolConverter_InControl : IIntegrationToolConverter
 {
  /// <summary>
  /// Get the value of the specified axis.
  /// </summary>
  
  public override float GetAxis (EasyAxis axis, EPlayer player)
  {
   InputDevice inputDevice = GetInputDevice (player);

   switch (axis)
   {
   case EasyAxis.DPadX : return inputDevice.DPadX;
   case EasyAxis.DPadY : return inputDevice.DPadY;
   case EasyAxis.LeftStickX : return inputDevice.LeftStickX;
   case EasyAxis.LeftStickY : return inputDevice.LeftStickY;
   case EasyAxis.RightStickX : return inputDevice.RightStickX;
   case EasyAxis.RightStickY : return inputDevice.RightStickY;
   }

   return 0;

   //return EasyInput.GetAxis (axis, player);
  }
  
  /// <summary>
  /// Returns true during the frame the user starts pressing down the key.
  /// </summary>
  
  public override float GetAxis (EasyKeyCode key, EPlayer player)
  {
   InputControl inputControl = GetInputControl (GetInputDevice (player), key);

   if (inputControl != null)
   {
    return inputControl;
   }

   return 0;
  }
  
  /// <summary>
  /// Returns true during the frame the user starts pressing down the key.
  /// </summary>
  
  public override bool GetKeyDown (EasyKeyCode key, EPlayer player)
  {
   InputControl inputControl = GetInputControl (GetInputDevice (player), key);
   
   if (inputControl != null)
   {
    return inputControl.WasPressed;
   }
   
   return false;
  }
  
  /// <summary>
  /// Returns true during the frame the user releases the key.
  /// </summary>
  
  public override bool GetKeyUp (EasyKeyCode key, EPlayer player)
  {
   InputControl inputControl = GetInputControl (GetInputDevice (player), key);
   
   if (inputControl != null)
   {
    return inputControl.WasReleased;
   }
   
   return false;
  }

  InputDevice GetInputDevice (EPlayer player)
  {
   InputDevice inputDevice = null;
   
   if (player == EPlayer.Anyone)
   {
    inputDevice = InControl.InputManager.ActiveDevice;
   }
   else
   {
    int playerNumber = (int)player;
    
    inputDevice = (InControl.InputManager.Devices.Count > playerNumber) ? InControl.InputManager.Devices[playerNumber] : null;
   }
   
   return inputDevice;
  }

  InputControl GetInputControl (InputDevice inputDevice, EasyKeyCode key)
  {
   switch (key)
   {
   case EasyKeyCode.ActionRight : return inputDevice.Action2;
   case EasyKeyCode.ActionDown : return inputDevice.Action1;
   case EasyKeyCode.ActionLeft : return inputDevice.Action3;
   case EasyKeyCode.ActionUp : return inputDevice.Action4;
    
   case EasyKeyCode.ShoulderTopRight : return inputDevice.RightBumper;
   case EasyKeyCode.ShoulderTopLeft : return inputDevice.LeftBumper;
   case EasyKeyCode.ShoulderBottomRight : return inputDevice.RightTrigger;
   case EasyKeyCode.ShoulderBottomLeft : return inputDevice.LeftTrigger;
    
   case EasyKeyCode.DPadRight : return inputDevice.DPadRight;
   case EasyKeyCode.DPadDown : return inputDevice.DPadDown;
   case EasyKeyCode.DPadLeft : return inputDevice.DPadLeft;
   case EasyKeyCode.DPadUp : return inputDevice.DPadUp;
    
   case EasyKeyCode.RightStick : return inputDevice.RightStickButton;
   case EasyKeyCode.RightStickRight : return inputDevice.RightStickRight;
   case EasyKeyCode.RightStickDown : return inputDevice.RightStickDown;
   case EasyKeyCode.RightStickLeft : return inputDevice.RightStickLeft;
   case EasyKeyCode.RightStickUp : return inputDevice.RightStickUp;
    
   case EasyKeyCode.LeftStick : return inputDevice.LeftStickButton;
   case EasyKeyCode.LeftStickRight : return inputDevice.LeftStickRight;
   case EasyKeyCode.LeftStickDown : return inputDevice.LeftStickDown;
   case EasyKeyCode.LeftStickLeft : return inputDevice.LeftStickLeft;
   case EasyKeyCode.LeftStickUp : return inputDevice.LeftStickUp;
    
   //case EasyKeyCode.CenterRight : return inputDevice.GetControl (InputControlType.Options);
   //case EasyKeyCode.CenterLeft : return inputDevice.GetControl (InputControlType.Share);
   //case EasyKeyCode.System : return inputDevice.GetControl (InputControlType.Home);
   }

   return null;
  }
 }
}

沒有留言:

張貼留言