Add a more robust camera tracking

This commit is contained in:
SerpentSpirale 2021-05-22 22:05:02 +02:00 committed by SerpentSpirale
parent 62ac772904
commit e8e4089e91

View file

@ -320,6 +320,7 @@ public class BaseMainActivity extends LoggableActivity {
glTouchListener = new OnTouchListener(){ glTouchListener = new OnTouchListener(){
private boolean isTouchInHotbar = false; private boolean isTouchInHotbar = false;
private int hotbarX, hotbarY; private int hotbarX, hotbarY;
private float prevX, prevY;
@Override @Override
public boolean onTouch(View p1, MotionEvent e) { public boolean onTouch(View p1, MotionEvent e) {
@ -346,14 +347,7 @@ public class BaseMainActivity extends LoggableActivity {
// System.out.println("Pre touch, isTouchInHotbar=" + Boolean.toString(isTouchInHotbar) + ", action=" + MotionEvent.actionToString(e.getActionMasked())); // System.out.println("Pre touch, isTouchInHotbar=" + Boolean.toString(isTouchInHotbar) + ", action=" + MotionEvent.actionToString(e.getActionMasked()));
if(e.getHistorySize() > 0 && CallbackBridge.isGrabbing()) {
mouse_x += (int)(e.getX() - e.getHistoricalX(0));
mouse_y += (int)(e.getY() - e.getHistoricalY(0));
}
if(!CallbackBridge.isGrabbing()) {
mouse_x = (int) (e.getX() * scaleFactor);
mouse_y = (int) (e.getY() * scaleFactor);
}
int hudKeyHandled = handleGuiBar((int)e.getX(), (int)e.getY()); int hudKeyHandled = handleGuiBar((int)e.getX(), (int)e.getY());
if (!CallbackBridge.isGrabbing() && gestureDetector.onTouchEvent(e)) { if (!CallbackBridge.isGrabbing() && gestureDetector.onTouchEvent(e)) {
@ -380,6 +374,8 @@ public class BaseMainActivity extends LoggableActivity {
} else { } else {
CallbackBridge.mouseX = mouse_x; CallbackBridge.mouseX = mouse_x;
CallbackBridge.mouseY = mouse_y; CallbackBridge.mouseY = mouse_y;
prevX = e.getX();
prevY = e.getY();
CallbackBridge.sendCursorPos(mouse_x, mouse_y); CallbackBridge.sendCursorPos(mouse_x, mouse_y);
if (!rightOverride) { if (!rightOverride) {
CallbackBridge.mouseLeft = true; CallbackBridge.mouseLeft = true;
@ -453,6 +449,23 @@ public class BaseMainActivity extends LoggableActivity {
} }
} }
/*if(e.getHistorySize() > 0 && CallbackBridge.isGrabbing()) {
mouse_x += (int)(e.getX() - e.getHistoricalX(0))*4;
mouse_y += (int)(e.getY() - e.getHistoricalY(0))*4;
}*/
if(CallbackBridge.isGrabbing()){
if(e.getActionMasked() == MotionEvent.ACTION_MOVE){
mouse_x += (int) (e.getX() - prevX);
mouse_y += (int) (e.getY() - prevY);
prevX = e.getX();
prevY = e.getY();
}
}
if(!CallbackBridge.isGrabbing()) {
mouse_x = (int) (e.getX() * scaleFactor);
mouse_y = (int) (e.getY() * scaleFactor);
}
debugText.setText(CallbackBridge.DEBUG_STRING.toString()); debugText.setText(CallbackBridge.DEBUG_STRING.toString());
CallbackBridge.DEBUG_STRING.setLength(0); CallbackBridge.DEBUG_STRING.setLength(0);