Touch device updated
This commit is contained in:
parent
6e327f0eb1
commit
84590f6f20
12
.classpath
12
.classpath
@ -1,6 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||
<attributes>
|
||||
<attribute name="test" value="true"/>
|
||||
@ -13,13 +17,13 @@
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry excluding="org/warp/picalculator/gui/graphicengine/html/*" kind="src" output="target/classes" path="src/main/java">
|
||||
<classpathentry excluding="org/warp/picalculator/gui/graphicengine/cpu/CPUEngine|org/warp/picalculator/gui/graphicengine/cpu/CPURenderer|org/warp/picalculator/gui/graphicengine/cpu/SwingWindow|org/warp/picalculator/gui/graphicengine/gpu/*|org/warp/picalculator/gui/graphicengine/headless24bit/*|org/warp/picalculator/gui/graphicengine/headless256/*|org/warp/picalculator/gui/graphicengine/headless8/*|org/warp/picalculator/gui/graphicengine/framebuffer/*" kind="src" output="target/classes" path="src/main/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/rules">
|
||||
<classpathentry excluding="org/warp/picalculator/gui/graphicengine/cpu/CPUEngine|org/warp/picalculator/gui/graphicengine/cpu/CPURenderer|org/warp/picalculator/gui/graphicengine/cpu/SwingWindow|org/warp/picalculator/gui/graphicengine/gpu/*|org/warp/picalculator/gui/graphicengine/headless24bit/*|org/warp/picalculator/gui/graphicengine/headless256/*|org/warp/picalculator/gui/graphicengine/headless8/*|org/warp/picalculator/gui/graphicengine/framebuffer/*" kind="src" output="target/classes" path="src/main/rules">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="optional" value="true"/>
|
||||
@ -30,7 +34,7 @@
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry excluding="org/warp/picalculator/gui/graphicengine/html/*" kind="src" output="target/classes" path="src/jar-specific/java">
|
||||
<classpathentry excluding="org/warp/picalculator/gui/graphicengine/cpu/CPUEngine|org/warp/picalculator/gui/graphicengine/cpu/CPURenderer|org/warp/picalculator/gui/graphicengine/cpu/SwingWindow|org/warp/picalculator/gui/graphicengine/gpu/*|org/warp/picalculator/gui/graphicengine/headless24bit/*|org/warp/picalculator/gui/graphicengine/headless256/*|org/warp/picalculator/gui/graphicengine/headless8/*|org/warp/picalculator/gui/graphicengine/framebuffer/*" kind="src" output="target/classes" path="src/js-specific/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
|
@ -1,4 +1,4 @@
|
||||
activeProfiles=jarprofile
|
||||
activeProfiles=jsprofile
|
||||
eclipse.preferences.version=1
|
||||
resolveWorkspaceProjects=true
|
||||
version=1
|
||||
|
4
pom.xml
4
pom.xml
@ -31,6 +31,10 @@
|
||||
<updatePolicy>always</updatePolicy>
|
||||
</snapshots>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>jitpack.io</id> <!-- JitPack allows github repo to be used as a maven repo -->
|
||||
<url>https://jitpack.io</url> <!-- For documentation: http://jitpack.io/ -->
|
||||
</repository>
|
||||
</repositories>
|
||||
<pluginRepositories>
|
||||
<pluginRepository>
|
||||
|
@ -114,7 +114,13 @@ public class StorageUtils {
|
||||
throw e;
|
||||
}
|
||||
} else {
|
||||
return Files.newInputStream(Paths.get(string.substring(1)));
|
||||
if (string.length() > 0) {
|
||||
char ch = string.charAt(0);
|
||||
if (ch == '/' || ch == File.separatorChar) {
|
||||
string = string.substring(1);
|
||||
}
|
||||
}
|
||||
return Files.newInputStream(Paths.get(string));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -9,6 +9,7 @@ import org.warp.picalculator.device.HardwareTouchDevice;
|
||||
import org.warp.picalculator.device.InputManager;
|
||||
import org.warp.picalculator.device.Keyboard;
|
||||
import org.warp.picalculator.device.PIHardwareDisplay;
|
||||
import org.warp.picalculator.device.PIHardwareTouchDevice;
|
||||
import org.warp.picalculator.gui.CalculatorHUD;
|
||||
import org.warp.picalculator.gui.DisplayManager;
|
||||
import org.warp.picalculator.gui.HUD;
|
||||
@ -29,26 +30,13 @@ public class Main {
|
||||
System.out.println("WarpPI Calculator");
|
||||
instance = this;
|
||||
Main.args = args;
|
||||
ClassUtils.classLoader = this.getClass();
|
||||
// ClassUtils.classLoader = this.getClass();
|
||||
beforeStart();
|
||||
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
|
||||
PlatformUtils.setThreadName(Thread.currentThread(), "Main thread");
|
||||
DisplayManager dm = new DisplayManager(disp, hud, screen, "WarpPI Calculator by Andrea Cavalli (@Cavallium)");
|
||||
Keyboard k = new Keyboard();
|
||||
HardwareTouchDevice touch = new HardwareTouchDevice() {
|
||||
@Override
|
||||
public boolean getInvertedY() {
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public boolean getInvertedXY() {
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public boolean getInvertedX() {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
HardwareTouchDevice touch = new PIHardwareTouchDevice(false,false,false);
|
||||
InputManager im = new InputManager(k, touch);
|
||||
HardwareDevice hardwareDevice = new HardwareDevice(dm, im);
|
||||
hardwareDevice.setup(() -> {
|
||||
|
@ -1,10 +1,14 @@
|
||||
package org.warp.picalculator.device;
|
||||
|
||||
public interface HardwareTouchDevice {
|
||||
import org.warp.picalculator.event.TouchEventListener;
|
||||
import org.warp.picalculator.event.TouchPoint;
|
||||
|
||||
public interface HardwareTouchDevice extends TouchEventListener {
|
||||
public boolean getInvertedXY();
|
||||
public boolean getInvertedX();
|
||||
public boolean getInvertedY();
|
||||
public default void setInvertedXY() {}
|
||||
public default void setInvertedX() {}
|
||||
public default void setInvertedY() {}
|
||||
public TouchPoint makePoint(long id, float x, float y, int maxX, int maxY, float radiusX, float radiusY, float force, float rotationAngle);
|
||||
}
|
||||
|
@ -0,0 +1,111 @@
|
||||
package org.warp.picalculator.device;
|
||||
|
||||
import org.warp.picalculator.event.TouchCancelEvent;
|
||||
import org.warp.picalculator.event.TouchEndEvent;
|
||||
import org.warp.picalculator.event.TouchMoveEvent;
|
||||
import org.warp.picalculator.event.TouchPoint;
|
||||
import org.warp.picalculator.event.TouchStartEvent;
|
||||
import org.warp.picalculator.gui.screens.Screen;
|
||||
|
||||
public class PIHardwareTouchDevice implements HardwareTouchDevice {
|
||||
|
||||
private final boolean invertXY, invertX, invertY;
|
||||
|
||||
public PIHardwareTouchDevice(boolean invertXY, boolean invertX, boolean invertY) {
|
||||
this.invertXY = invertXY;
|
||||
this.invertX = invertX;
|
||||
this.invertY = invertY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchStart(TouchStartEvent e) {
|
||||
final Screen scr = HardwareDevice.INSTANCE.getDisplayManager().getScreen();
|
||||
boolean refresh = false;
|
||||
if (scr != null && scr.initialized && scr.onTouchStart(e)) {
|
||||
refresh = true;
|
||||
} else {
|
||||
//Default behavior
|
||||
}
|
||||
if (refresh) {
|
||||
HardwareDevice.INSTANCE.getDisplayManager().forceRefresh = true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchEnd(TouchEndEvent e) {
|
||||
final Screen scr = HardwareDevice.INSTANCE.getDisplayManager().getScreen();
|
||||
boolean refresh = false;
|
||||
if (scr != null && scr.initialized && scr.onTouchEnd(e)) {
|
||||
refresh = true;
|
||||
} else {
|
||||
//Default behavior
|
||||
}
|
||||
if (refresh) {
|
||||
HardwareDevice.INSTANCE.getDisplayManager().forceRefresh = true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchCancel(TouchCancelEvent e) {
|
||||
final Screen scr = HardwareDevice.INSTANCE.getDisplayManager().getScreen();
|
||||
boolean refresh = false;
|
||||
if (scr != null && scr.initialized && scr.onTouchCancel(e)) {
|
||||
refresh = true;
|
||||
} else {
|
||||
//Default behavior
|
||||
}
|
||||
if (refresh) {
|
||||
HardwareDevice.INSTANCE.getDisplayManager().forceRefresh = true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchMove(TouchMoveEvent e) {
|
||||
final Screen scr = HardwareDevice.INSTANCE.getDisplayManager().getScreen();
|
||||
boolean refresh = false;
|
||||
if (scr != null && scr.initialized && scr.onTouchMove(e)) {
|
||||
refresh = true;
|
||||
} else {
|
||||
//Default behavior
|
||||
}
|
||||
if (refresh) {
|
||||
HardwareDevice.INSTANCE.getDisplayManager().forceRefresh = true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getInvertedXY() {
|
||||
return invertXY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getInvertedX() {
|
||||
return invertX;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getInvertedY() {
|
||||
return invertY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TouchPoint makePoint(long id, float x, float y, int screenWidth, int screenHeight, float radiusX, float radiusY, float force, float rotationAngle) {
|
||||
if (getInvertedXY()) {
|
||||
double oldX = x;
|
||||
double oldY = y;
|
||||
x = (float) (oldY * ((double)screenWidth)/((double)screenHeight));
|
||||
y = (float) (oldX * ((double)screenHeight)/((double)screenWidth));
|
||||
}
|
||||
if (getInvertedX()) {
|
||||
x = screenWidth - x;
|
||||
}
|
||||
if (getInvertedY()) {
|
||||
y = screenHeight - y;
|
||||
}
|
||||
return new TouchPoint(id, x, y, radiusX, radiusY, force, rotationAngle);
|
||||
}
|
||||
}
|
@ -31,7 +31,7 @@ import org.warp.picalculator.gui.screens.Screen;
|
||||
|
||||
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
||||
|
||||
public final class DisplayManager implements RenderingLoop, TouchEventListener {
|
||||
public final class DisplayManager implements RenderingLoop {
|
||||
private HardwareDevice device;
|
||||
private float brightness;
|
||||
|
||||
@ -50,14 +50,14 @@ public final class DisplayManager implements RenderingLoop, TouchEventListener {
|
||||
private Screen screen;
|
||||
private final HUD hud;
|
||||
private final String initialTitle;
|
||||
private final Screen initialScreen;
|
||||
private Screen initialScreen;
|
||||
public DSemaphore screenChange = new DSemaphore(0);
|
||||
public String displayDebugString;
|
||||
public ObjectArrayList<GUIErrorMessage> errorMessages;
|
||||
/**
|
||||
* Set to true when an event is fired
|
||||
*/
|
||||
private boolean forceRefresh;
|
||||
public boolean forceRefresh;
|
||||
|
||||
public DisplayManager(HardwareDisplay monitor, HUD hud, Screen screen, String title) {
|
||||
engine = chooseGraphicEngine();
|
||||
@ -87,7 +87,6 @@ public final class DisplayManager implements RenderingLoop, TouchEventListener {
|
||||
DSystem.exit(0);
|
||||
}
|
||||
|
||||
setScreen(initialScreen);
|
||||
try {
|
||||
engine.create();
|
||||
renderer = engine.getRenderer();
|
||||
@ -393,6 +392,10 @@ public final class DisplayManager implements RenderingLoop, TouchEventListener {
|
||||
load_fonts();
|
||||
|
||||
try {
|
||||
if (initialScreen != null) {
|
||||
setScreen(initialScreen);
|
||||
initialScreen = null;
|
||||
}
|
||||
screen.initialize();
|
||||
} catch (final Exception e) {
|
||||
e.printStackTrace();
|
||||
@ -529,64 +532,4 @@ public final class DisplayManager implements RenderingLoop, TouchEventListener {
|
||||
public void waitForExit() {
|
||||
engine.waitForExit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchStart(TouchStartEvent e) {
|
||||
final Screen scr = getScreen();
|
||||
boolean refresh = false;
|
||||
if (scr != null && scr.initialized && scr.onTouchStart(e)) {
|
||||
refresh = true;
|
||||
} else {
|
||||
//Default behavior
|
||||
}
|
||||
if (refresh) {
|
||||
forceRefresh = true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchEnd(TouchEndEvent e) {
|
||||
final Screen scr = getScreen();
|
||||
boolean refresh = false;
|
||||
if (scr != null && scr.initialized && scr.onTouchEnd(e)) {
|
||||
refresh = true;
|
||||
} else {
|
||||
//Default behavior
|
||||
}
|
||||
if (refresh) {
|
||||
forceRefresh = true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchCancel(TouchCancelEvent e) {
|
||||
final Screen scr = getScreen();
|
||||
boolean refresh = false;
|
||||
if (scr != null && scr.initialized && scr.onTouchCancel(e)) {
|
||||
refresh = true;
|
||||
} else {
|
||||
//Default behavior
|
||||
}
|
||||
if (refresh) {
|
||||
forceRefresh = true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchMove(TouchMoveEvent e) {
|
||||
final Screen scr = getScreen();
|
||||
boolean refresh = false;
|
||||
if (scr != null && scr.initialized && scr.onTouchMove(e)) {
|
||||
refresh = true;
|
||||
} else {
|
||||
//Default behavior
|
||||
}
|
||||
if (refresh) {
|
||||
forceRefresh = true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
@ -3,12 +3,16 @@ package org.warp.picalculator.gui.graphicengine.cpu;
|
||||
import java.awt.Cursor;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Insets;
|
||||
import java.awt.Point;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.event.ComponentEvent;
|
||||
import java.awt.event.ComponentListener;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.KeyListener;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
import java.awt.event.MouseMotionListener;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.awt.image.DataBufferInt;
|
||||
|
||||
@ -19,9 +23,15 @@ import org.warp.picalculator.StaticVars;
|
||||
import org.warp.picalculator.Utils;
|
||||
import org.warp.picalculator.device.HardwareDevice;
|
||||
import org.warp.picalculator.device.Keyboard;
|
||||
import org.warp.picalculator.event.TouchEndEvent;
|
||||
import org.warp.picalculator.event.TouchMoveEvent;
|
||||
import org.warp.picalculator.event.TouchPoint;
|
||||
import org.warp.picalculator.event.TouchStartEvent;
|
||||
import org.warp.picalculator.gui.DisplayManager;
|
||||
import org.warp.picalculator.gui.graphicengine.RenderingLoop;
|
||||
|
||||
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
||||
|
||||
public class SwingWindow extends JFrame {
|
||||
private static final long serialVersionUID = 2945898937634075491L;
|
||||
public CustomCanvas c;
|
||||
@ -99,6 +109,49 @@ public class SwingWindow extends JFrame {
|
||||
|
||||
}
|
||||
});
|
||||
addMouseMotionListener(new MouseMotionListener() {
|
||||
@Override
|
||||
public void mouseDragged(MouseEvent e) {
|
||||
final Insets wp = SwingWindow.this.getInsets();
|
||||
TouchPoint p = new TouchPoint(0, e.getX() - wp.left, e.getY() - wp.top, 5, 5, 1, 0);
|
||||
ObjectArrayList<TouchPoint> touches = new ObjectArrayList<>();
|
||||
ObjectArrayList<TouchPoint> changedTouches = new ObjectArrayList<>();
|
||||
touches.add(p);
|
||||
changedTouches.add(p);
|
||||
TouchMoveEvent tse = new TouchMoveEvent(changedTouches, touches);
|
||||
HardwareDevice.INSTANCE.getInputManager().getTouchDevice().onTouchMove(tse);
|
||||
}
|
||||
@Override
|
||||
public void mouseMoved(MouseEvent e) {
|
||||
}
|
||||
});
|
||||
addMouseListener(new MouseListener() {
|
||||
@Override public void mouseClicked(MouseEvent e) {
|
||||
}
|
||||
@Override public void mousePressed(MouseEvent e) {
|
||||
final Insets wp = SwingWindow.this.getInsets();
|
||||
TouchPoint p = new TouchPoint(0, e.getX() - wp.left, e.getY() - wp.top, 5, 5, 1, 0);
|
||||
ObjectArrayList<TouchPoint> touches = new ObjectArrayList<>();
|
||||
ObjectArrayList<TouchPoint> changedTouches = new ObjectArrayList<>();
|
||||
touches.add(p);
|
||||
changedTouches.add(p);
|
||||
TouchStartEvent tse = new TouchStartEvent(changedTouches, touches);
|
||||
HardwareDevice.INSTANCE.getInputManager().getTouchDevice().onTouchStart(tse);
|
||||
}
|
||||
@Override public void mouseReleased(MouseEvent e) {
|
||||
final Insets wp = SwingWindow.this.getInsets();
|
||||
TouchPoint p = new TouchPoint(0, e.getX() - wp.left, e.getY() - wp.top, 5, 5, 1, 0);
|
||||
ObjectArrayList<TouchPoint> touches = new ObjectArrayList<>();
|
||||
ObjectArrayList<TouchPoint> changedTouches = new ObjectArrayList<>();
|
||||
changedTouches.add(p);
|
||||
TouchEndEvent tse = new TouchEndEvent(changedTouches, touches);
|
||||
HardwareDevice.INSTANCE.getInputManager().getTouchDevice().onTouchEnd(tse);
|
||||
}
|
||||
@Override public void mouseEntered(MouseEvent e) {
|
||||
}
|
||||
@Override public void mouseExited(MouseEvent e) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -54,7 +54,7 @@ public class GPUEngine implements GraphicEngine {
|
||||
}
|
||||
wnd.window.setResizable(r);
|
||||
wnd.window.setUndecorated(!r);
|
||||
wnd.window.setPointerVisible(true);
|
||||
wnd.window.setPointerVisible(r);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -148,6 +148,12 @@ public class GPURenderer implements Renderer {
|
||||
public void glFillRect(float x, float y, float width, float height, float uvX, float uvY, float uvWidth,
|
||||
float uvHeight) {
|
||||
enableTexture();
|
||||
if (uvWidth < 0) {
|
||||
uvX -= uvWidth;
|
||||
}
|
||||
if (uvHeight < 0) {
|
||||
uvY -= uvHeight;
|
||||
}
|
||||
uvWidth /= currentTexWidth;
|
||||
uvX /= currentTexWidth;
|
||||
uvHeight /= currentTexHeight;
|
||||
|
@ -297,22 +297,22 @@ class NEWTWindow implements GLEventListener {
|
||||
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
List<TouchPoint> newPoints = new ObjectArrayList<>();
|
||||
List<TouchPoint> changedPoints = new ObjectArrayList<>();
|
||||
List<TouchPoint> oldPoints = touches;
|
||||
int[] xs = e.getAllX();
|
||||
int[] ys = e.getAllY();
|
||||
float[] ps = e.getAllPressures();
|
||||
short[] is = e.getAllPointerIDs();
|
||||
for (int i = 0; i < e.getPointerCount(); i++) {
|
||||
newPoints.add(new TouchPoint(is[i], xs[i], ys[i], 5, 5, ps[i], 0));
|
||||
}
|
||||
|
||||
changedPoints.add(newPoints.get(0));
|
||||
newPoints.remove(0);
|
||||
touches = newPoints;
|
||||
HardwareDevice.INSTANCE.getDisplayManager().onTouchStart(new TouchStartEvent(changedPoints, touches));
|
||||
HardwareDevice.INSTANCE.getDisplayManager().onTouchEnd(new TouchEndEvent(changedPoints, touches));
|
||||
// List<TouchPoint> newPoints = new ObjectArrayList<>();
|
||||
// List<TouchPoint> changedPoints = new ObjectArrayList<>();
|
||||
// List<TouchPoint> oldPoints = touches;
|
||||
// int[] xs = e.getAllX();
|
||||
// int[] ys = e.getAllY();
|
||||
// float[] ps = e.getAllPressures();
|
||||
// short[] is = e.getAllPointerIDs();
|
||||
// for (int i = 0; i < e.getPointerCount(); i++) {
|
||||
// newPoints.add(HardwareDevice.INSTANCE.getInputManager().getTouchDevice().makePoint(is[i], xs[i], ys[i], disp.getWidth(), disp.getHeight(), 5, 5, ps[i], 0));
|
||||
// }
|
||||
//
|
||||
// changedPoints.add(newPoints.get(0));
|
||||
// newPoints.remove(0);
|
||||
// touches = newPoints;
|
||||
// HardwareDevice.INSTANCE.getInputManager().getTouchDevice().onTouchStart(new TouchStartEvent(changedPoints, touches));
|
||||
// HardwareDevice.INSTANCE.getInputManager().getTouchDevice().onTouchEnd(new TouchEndEvent(changedPoints, touches));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -337,11 +337,11 @@ class NEWTWindow implements GLEventListener {
|
||||
float[] ps = e.getAllPressures();
|
||||
short[] is = e.getAllPointerIDs();
|
||||
for (int i = 0; i < e.getPointerCount(); i++) {
|
||||
newPoints.add(new TouchPoint(is[i], xs[i], ys[i], 5, 5, ps[i], 0));
|
||||
newPoints.add(HardwareDevice.INSTANCE.getInputManager().getTouchDevice().makePoint(is[i], xs[i], ys[i], disp.getWidth(), disp.getHeight(), 5, 5, ps[i], 0));
|
||||
}
|
||||
changedPoints.add(newPoints.get(0));
|
||||
touches = newPoints;
|
||||
HardwareDevice.INSTANCE.getDisplayManager().onTouchStart(new TouchStartEvent(changedPoints, touches));
|
||||
HardwareDevice.INSTANCE.getInputManager().getTouchDevice().onTouchStart(new TouchStartEvent(changedPoints, touches));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -354,42 +354,47 @@ class NEWTWindow implements GLEventListener {
|
||||
float[] ps = e.getAllPressures();
|
||||
short[] is = e.getAllPointerIDs();
|
||||
for (int i = 0; i < e.getPointerCount(); i++) {
|
||||
newPoints.add(new TouchPoint(is[i], xs[i], ys[i], 5, 5, ps[i], 0));
|
||||
newPoints.add(HardwareDevice.INSTANCE.getInputManager().getTouchDevice().makePoint(is[i], xs[i], ys[i], disp.getWidth(), disp.getHeight(), 5, 5, ps[i], 0));
|
||||
}
|
||||
changedPoints.add(newPoints.get(0));
|
||||
newPoints.remove(0);
|
||||
touches = newPoints;
|
||||
HardwareDevice.INSTANCE.getDisplayManager().onTouchEnd(new TouchEndEvent(changedPoints, touches));
|
||||
HardwareDevice.INSTANCE.getInputManager().getTouchDevice().onTouchEnd(new TouchEndEvent(changedPoints, touches));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseMoved(MouseEvent e) {
|
||||
|
||||
}
|
||||
|
||||
private long lastDraggedTime = 0;
|
||||
|
||||
@Override
|
||||
public void mouseDragged(MouseEvent e) {
|
||||
List<TouchPoint> newPoints = new ObjectArrayList<>();
|
||||
List<TouchPoint> changedPoints = new ObjectArrayList<>();
|
||||
List<TouchPoint> oldPoints = touches;
|
||||
int[] xs = e.getAllX();
|
||||
int[] ys = e.getAllY();
|
||||
float[] ps = e.getAllPressures();
|
||||
short[] is = e.getAllPointerIDs();
|
||||
for (int i = 0; i < e.getPointerCount(); i++) {
|
||||
newPoints.add(new TouchPoint(is[i], xs[i], ys[i], 5, 5, ps[i], 0));
|
||||
}
|
||||
newPoints.forEach((newp) -> {
|
||||
oldPoints.forEach((oldp) -> {
|
||||
if (newp.getID() == oldp.getID()) {
|
||||
if (newp.equals(oldp) == false) {
|
||||
changedPoints.add(newp);
|
||||
long curTime = System.currentTimeMillis();
|
||||
if (curTime - lastDraggedTime > 50) {
|
||||
lastDraggedTime = curTime;
|
||||
List<TouchPoint> newPoints = new ObjectArrayList<>();
|
||||
List<TouchPoint> changedPoints = new ObjectArrayList<>();
|
||||
List<TouchPoint> oldPoints = touches;
|
||||
int[] xs = e.getAllX();
|
||||
int[] ys = e.getAllY();
|
||||
float[] ps = e.getAllPressures();
|
||||
short[] is = e.getAllPointerIDs();
|
||||
for (int i = 0; i < e.getPointerCount(); i++) {
|
||||
newPoints.add(HardwareDevice.INSTANCE.getInputManager().getTouchDevice().makePoint(is[i], xs[i], ys[i], disp.getWidth(), disp.getHeight(), 5, 5, ps[i], 0));
|
||||
}
|
||||
newPoints.forEach((newp) -> {
|
||||
oldPoints.forEach((oldp) -> {
|
||||
if (newp.getID() == oldp.getID()) {
|
||||
if (newp.equals(oldp) == false) {
|
||||
changedPoints.add(newp);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
touches = newPoints;
|
||||
HardwareDevice.INSTANCE.getDisplayManager().onTouchMove(new TouchMoveEvent(changedPoints, touches));
|
||||
touches = newPoints;
|
||||
HardwareDevice.INSTANCE.getInputManager().getTouchDevice().onTouchMove(new TouchMoveEvent(changedPoints, touches));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
x
Reference in New Issue
Block a user