using System;
using UnityEngine;
namespace Rokid.UXR.Module
{
///
/// Android Native Input
///
public class RKNativeInput : MonoSingleton
{
bool isDebug = false;
private bool m_Init = false;
public RKKeyEvent keyState;
public RKKeyEvent keyDownState;
public RKKeyEvent keyUpState;
public float lrHorizontalAxis = 0;
public float lrHVerticalAxis = 0;
public float rrHorizontalAxis = 0;
public float rrHVerticalAxis = 0;
private void LateUpdate()
{
keyDownState = 0;
keyUpState = 0;
}
protected override void OnSingletonInit()
{
DontDestroyOnLoad(this.gameObject);
Initialized();
this.gameObject.name = "RKInput";
this.gameObject.hideFlags = HideFlags.HideInHierarchy;
}
///
/// 初始化
///
public void Initialized()
{
if (m_Init) return;
m_Init = true;
}
public bool GetKey(RKKeyEvent key)
{
return (keyState & key) != 0;
}
public bool GetKeyDown(RKKeyEvent key)
{
return (keyDownState & key) != 0;
}
public bool GetKeyUp(RKKeyEvent key)
{
return (keyUpState & key) != 0;
}
/**
* return axis value from -1 to 1;
*/
public float GetAxis(AxisEvent axisName)
{
switch (axisName)
{
case AxisEvent.Horizontal_Left:
return lrHorizontalAxis;
case AxisEvent.Vertical_Left:
return lrHVerticalAxis;
case AxisEvent.Horizontal_Right:
return rrHorizontalAxis;
case AxisEvent.Vertical_Right:
return rrHVerticalAxis;
default:
return 0f;
}
}
//Android Key Event Callback
void OnKeyEvent(string keyEvent)
{
RKLog.Debug("UXR-PLUGIN::OnKeyEvent = " + keyState);
keyState = (RKKeyEvent)int.Parse(keyEvent);
}
void OnKeyDownEvent(string keyDownEvent)
{
RKLog.Debug("UXR-PLUGIN::keyDownEvent = " + keyDownState);
keyDownState |= (RKKeyEvent)int.Parse(keyDownEvent);
}
void OnKeyUpEvent(string keyUpEvent)
{
RKLog.Debug("UXR-PLUGIN::keyUpEvent = " + keyUpState);
keyUpState |= (RKKeyEvent)int.Parse(keyUpEvent);
}
void OnAxisEvent(string axisEvent)
{
RKLog.Debug("UXR-PLUGIN::axisEvent = " + axisEvent);
string[] strAxis = axisEvent.Split('|');
if ("LR".Equals(strAxis[0]))
{
lrHorizontalAxis = float.Parse(strAxis[1]);
lrHVerticalAxis = float.Parse(strAxis[2]);
}
else if ("RR".Equals(strAxis[0]))
{
rrHorizontalAxis = float.Parse(strAxis[1]);
rrHVerticalAxis = float.Parse(strAxis[2]);
}
}
}
public enum RKKeyEvent
{
KEY_LEFT = 1 << 0,
KEY_RIGHT = 1 << 1,
KEY_UP = 1 << 2,
KEY_DOWN = 1 << 3,
KEY_BACK = 1 << 4,
KEY_HOME = 1 << 5,
KEY_OK = 1 << 6,
KEY_X = 1 << 7,
KEY_Y = 1 << 8,
KEY_B = 1 << 9,
KEY_A = 1 << 10,
KEY_SELECT = 1 << 11,
KEY_START = 1 << 12,
KEY_RR_LEFT = 1 << 13,
KEY_RR_RIGHT = 1 << 14,
KEY_RR_UP = 1 << 15,
KEY_RR_DOWN = 1 << 16,
KEY_RESET = 1 << 17,
KEY_TOOLS = 1 << 18,
KEY_POWER = 1 << 19,
KEY_RESET_RAY = 1 << 20,
KEY_MENU_BTN1_LOCK = 1 << 21,
KEY_MENU_BTN1_UNLOCK = 1 << 22,
KEY_MENU_BTN2 = 1 << 23,
KEY_MENU_BTN3 = 1 << 24,
KEY_MOUSE_SECONDARY = 1 << 25,
KEY_MOUSE_THERIARY = 1 << 26,
}
public enum AxisEvent
{
Horizontal_Left,
Vertical_Left,
Horizontal_Right,
Vertical_Right
}
}