|
@@ -56,7 +56,7 @@ import java.util.logging.Logger;
|
|
*/
|
|
*/
|
|
public class AndroidInputHandler implements TouchInput {
|
|
public class AndroidInputHandler implements TouchInput {
|
|
private static final Logger logger = Logger.getLogger(AndroidInputHandler.class.getName());
|
|
private static final Logger logger = Logger.getLogger(AndroidInputHandler.class.getName());
|
|
-
|
|
|
|
|
|
+
|
|
// Custom settings
|
|
// Custom settings
|
|
private boolean mouseEventsEnabled = true;
|
|
private boolean mouseEventsEnabled = true;
|
|
private boolean mouseEventsInvertX = false;
|
|
private boolean mouseEventsInvertX = false;
|
|
@@ -64,8 +64,8 @@ public class AndroidInputHandler implements TouchInput {
|
|
private boolean keyboardEventsEnabled = false;
|
|
private boolean keyboardEventsEnabled = false;
|
|
private boolean joystickEventsEnabled = false;
|
|
private boolean joystickEventsEnabled = false;
|
|
private boolean dontSendHistory = false;
|
|
private boolean dontSendHistory = false;
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+
|
|
// Internal
|
|
// Internal
|
|
private GLSurfaceView view;
|
|
private GLSurfaceView view;
|
|
private AndroidTouchHandler touchHandler;
|
|
private AndroidTouchHandler touchHandler;
|
|
@@ -78,8 +78,8 @@ public class AndroidInputHandler implements TouchInput {
|
|
private final TouchEventPool touchEventPool = new TouchEventPool(MAX_TOUCH_EVENTS);
|
|
private final TouchEventPool touchEventPool = new TouchEventPool(MAX_TOUCH_EVENTS);
|
|
private float scaleX = 1f;
|
|
private float scaleX = 1f;
|
|
private float scaleY = 1f;
|
|
private float scaleY = 1f;
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+
|
|
public AndroidInputHandler() {
|
|
public AndroidInputHandler() {
|
|
int buildVersion = Build.VERSION.SDK_INT;
|
|
int buildVersion = Build.VERSION.SDK_INT;
|
|
logger.log(Level.INFO, "Android Build Version: {0}", buildVersion);
|
|
logger.log(Level.INFO, "Android Build Version: {0}", buildVersion);
|
|
@@ -94,14 +94,14 @@ public class AndroidInputHandler implements TouchInput {
|
|
keyHandler = new AndroidKeyHandler(this);
|
|
keyHandler = new AndroidKeyHandler(this);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
- public AndroidInputHandler(AndroidTouchHandler touchInput,
|
|
|
|
|
|
+
|
|
|
|
+ public AndroidInputHandler(AndroidTouchHandler touchInput,
|
|
AndroidKeyHandler keyInput, AndroidGestureHandler gestureHandler) {
|
|
AndroidKeyHandler keyInput, AndroidGestureHandler gestureHandler) {
|
|
this.touchHandler = touchInput;
|
|
this.touchHandler = touchInput;
|
|
this.keyHandler = keyInput;
|
|
this.keyHandler = keyInput;
|
|
this.gestureHandler = gestureHandler;
|
|
this.gestureHandler = gestureHandler;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
public void setView(View view) {
|
|
public void setView(View view) {
|
|
if (touchHandler != null) {
|
|
if (touchHandler != null) {
|
|
touchHandler.setView(view);
|
|
touchHandler.setView(view);
|
|
@@ -114,43 +114,42 @@ public class AndroidInputHandler implements TouchInput {
|
|
}
|
|
}
|
|
this.view = (GLSurfaceView)view;
|
|
this.view = (GLSurfaceView)view;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
public View getView() {
|
|
public View getView() {
|
|
return view;
|
|
return view;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
public float invertX(float origX) {
|
|
public float invertX(float origX) {
|
|
return getJmeX(view.getWidth()) - origX;
|
|
return getJmeX(view.getWidth()) - origX;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
public float invertY(float origY) {
|
|
public float invertY(float origY) {
|
|
return getJmeY(view.getHeight()) - origY;
|
|
return getJmeY(view.getHeight()) - origY;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
public float getJmeX(float origX) {
|
|
public float getJmeX(float origX) {
|
|
return origX * scaleX;
|
|
return origX * scaleX;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
public float getJmeY(float origY) {
|
|
public float getJmeY(float origY) {
|
|
return origY * scaleY;
|
|
return origY * scaleY;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
public void loadSettings(AppSettings settings) {
|
|
public void loadSettings(AppSettings settings) {
|
|
- // TODO: add simulate keyboard to settings
|
|
|
|
-// keyboardEventsEnabled = true;
|
|
|
|
|
|
+ keyboardEventsEnabled = settings.isEmulateKeyboard();
|
|
mouseEventsEnabled = settings.isEmulateMouse();
|
|
mouseEventsEnabled = settings.isEmulateMouse();
|
|
mouseEventsInvertX = settings.isEmulateMouseFlipX();
|
|
mouseEventsInvertX = settings.isEmulateMouseFlipX();
|
|
mouseEventsInvertY = settings.isEmulateMouseFlipY();
|
|
mouseEventsInvertY = settings.isEmulateMouseFlipY();
|
|
joystickEventsEnabled = settings.useJoysticks();
|
|
joystickEventsEnabled = settings.useJoysticks();
|
|
-
|
|
|
|
|
|
+
|
|
// view width and height are 0 until the view is displayed on the screen
|
|
// view width and height are 0 until the view is displayed on the screen
|
|
if (view.getWidth() != 0 && view.getHeight() != 0) {
|
|
if (view.getWidth() != 0 && view.getHeight() != 0) {
|
|
scaleX = (float)settings.getWidth() / (float)view.getWidth();
|
|
scaleX = (float)settings.getWidth() / (float)view.getWidth();
|
|
scaleY = (float)settings.getHeight() / (float)view.getHeight();
|
|
scaleY = (float)settings.getHeight() / (float)view.getHeight();
|
|
}
|
|
}
|
|
- logger.log(Level.FINE, "Setting input scaling, scaleX: {0}, scaleY: {1}",
|
|
|
|
|
|
+ logger.log(Level.FINE, "Setting input scaling, scaleX: {0}, scaleY: {1}",
|
|
new Object[]{scaleX, scaleY});
|
|
new Object[]{scaleX, scaleY});
|
|
-
|
|
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
// -----------------------------------------
|
|
// -----------------------------------------
|
|
@@ -167,14 +166,14 @@ public class AndroidInputHandler implements TouchInput {
|
|
if (gestureHandler != null) {
|
|
if (gestureHandler != null) {
|
|
gestureHandler.initialize();
|
|
gestureHandler.initialize();
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
initialized = true;
|
|
initialized = true;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void destroy() {
|
|
public void destroy() {
|
|
initialized = false;
|
|
initialized = false;
|
|
-
|
|
|
|
|
|
+
|
|
touchEventPool.destroy();
|
|
touchEventPool.destroy();
|
|
if (touchHandler != null) {
|
|
if (touchHandler != null) {
|
|
touchHandler.destroy();
|
|
touchHandler.destroy();
|
|
@@ -185,7 +184,7 @@ public class AndroidInputHandler implements TouchInput {
|
|
if (gestureHandler != null) {
|
|
if (gestureHandler != null) {
|
|
gestureHandler.destroy();
|
|
gestureHandler.destroy();
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
setView(null);
|
|
setView(null);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -203,11 +202,11 @@ public class AndroidInputHandler implements TouchInput {
|
|
public long getInputTimeNanos() {
|
|
public long getInputTimeNanos() {
|
|
return System.nanoTime();
|
|
return System.nanoTime();
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
public void update() {
|
|
public void update() {
|
|
if (listener != null) {
|
|
if (listener != null) {
|
|
InputEvent inputEvent;
|
|
InputEvent inputEvent;
|
|
-
|
|
|
|
|
|
+
|
|
while ((inputEvent = inputEventQueue.poll()) != null) {
|
|
while ((inputEvent = inputEventQueue.poll()) != null) {
|
|
if (inputEvent instanceof TouchEvent) {
|
|
if (inputEvent instanceof TouchEvent) {
|
|
listener.onTouchEvent((TouchEvent)inputEvent);
|
|
listener.onTouchEvent((TouchEvent)inputEvent);
|
|
@@ -223,11 +222,11 @@ public class AndroidInputHandler implements TouchInput {
|
|
}
|
|
}
|
|
|
|
|
|
// -----------------------------------------
|
|
// -----------------------------------------
|
|
-
|
|
|
|
|
|
+
|
|
public TouchEvent getFreeTouchEvent() {
|
|
public TouchEvent getFreeTouchEvent() {
|
|
return touchEventPool.getNextFreeEvent();
|
|
return touchEventPool.getNextFreeEvent();
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
public void addEvent(InputEvent event) {
|
|
public void addEvent(InputEvent event) {
|
|
inputEventQueue.add(event);
|
|
inputEventQueue.add(event);
|
|
if (event instanceof TouchEvent) {
|
|
if (event instanceof TouchEvent) {
|
|
@@ -243,10 +242,6 @@ public class AndroidInputHandler implements TouchInput {
|
|
return mouseEventsEnabled;
|
|
return mouseEventsEnabled;
|
|
}
|
|
}
|
|
|
|
|
|
- public boolean getSimulateMouse() {
|
|
|
|
- return mouseEventsEnabled;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
public boolean isMouseEventsInvertX() {
|
|
public boolean isMouseEventsInvertX() {
|
|
return mouseEventsInvertX;
|
|
return mouseEventsInvertX;
|
|
}
|
|
}
|
|
@@ -254,20 +249,17 @@ public class AndroidInputHandler implements TouchInput {
|
|
public boolean isMouseEventsInvertY() {
|
|
public boolean isMouseEventsInvertY() {
|
|
return mouseEventsInvertY;
|
|
return mouseEventsInvertY;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
public void setSimulateKeyboard(boolean simulate) {
|
|
public void setSimulateKeyboard(boolean simulate) {
|
|
this.keyboardEventsEnabled = simulate;
|
|
this.keyboardEventsEnabled = simulate;
|
|
}
|
|
}
|
|
|
|
|
|
- public void setOmitHistoricEvents(boolean dontSendHistory) {
|
|
|
|
- this.dontSendHistory = dontSendHistory;
|
|
|
|
|
|
+ public boolean isSimulateKeyboard() {
|
|
|
|
+ return keyboardEventsEnabled;
|
|
}
|
|
}
|
|
|
|
|
|
- public void showVirtualKeyboard(boolean visible) {
|
|
|
|
- if (keyHandler != null) {
|
|
|
|
- keyHandler.showVirtualKeyboard(visible);
|
|
|
|
- }
|
|
|
|
|
|
+ public void setOmitHistoricEvents(boolean dontSendHistory) {
|
|
|
|
+ this.dontSendHistory = dontSendHistory;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
}
|
|
}
|