///---------------------------
/// 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;
}
}
}
2018年10月10日 星期三
For InControl
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言