Compare commits

...

4 Commits

Author SHA1 Message Date
Eiren Rain
6c27186ce9 Make GUI less garbage (still gabage, but less) 2021-08-26 11:57:35 +03:00
Eiren Rain
74c25c2ca3 Don't use source port to id trackers 2021-08-23 16:39:43 +03:00
Eiren Rain
91ee6ff6c0 Merge pull request #35 from adigyran/patch-6
Update README.md
2021-08-22 15:59:17 +03:00
Yury
05ba866bef Update README.md
new build command
2021-08-22 15:55:38 +03:00
5 changed files with 60 additions and 27 deletions

View File

@@ -31,4 +31,4 @@ gradlew shadowJar
Open Slime VR Server project in Eclipse or Intellij Idea
run gradle command `serverJar` to build a runnable server JAR
run gradle command `shadowJar` to build a runnable server JAR

View File

@@ -1,6 +1,7 @@
package io.eiren.gui;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -40,7 +41,7 @@ public class TrackersList extends EJBox {
Vector3f v = new Vector3f();
float[] angles = new float[3];
private List<TrackerRow> trackers = new FastList<>();
private List<TrackerPanel> trackers = new FastList<>();
private final VRServer server;
private final VRServerGUI gui;
@@ -64,16 +65,42 @@ public class TrackersList extends EJBox {
Class<? extends Tracker> currentClass = null;
EJBox line = null;
boolean first = true;
for(int i = 0; i < trackers.size(); ++i) {
add(Box.createVerticalStrut(3));
TrackerRow tr = trackers.get(i);
TrackerPanel tr = trackers.get(i);
Tracker t = tr.t;
if(t instanceof ReferenceAdjustedTracker)
t = ((ReferenceAdjustedTracker<?>) t).getTracker();
if(currentClass != t.getClass()) {
currentClass = t.getClass();
add(new JLabel(currentClass.getSimpleName()));
if(line != null)
line.add(Box.createHorizontalGlue());
line = null;
line = new EJBox(BoxLayout.LINE_AXIS);
line.add(Box.createHorizontalGlue());
JLabel nameLabel;
line.add(nameLabel = new JLabel(currentClass.getSimpleName()));
nameLabel.setFont(nameLabel.getFont().deriveFont(Font.BOLD));
line.add(Box.createHorizontalGlue());
add(line);
line = null;
}
if(line == null) {
line = new EJBox(BoxLayout.LINE_AXIS);
add(Box.createVerticalStrut(3));
add(line);
first = true;
} else {
line.add(Box.createHorizontalStrut(3));
first = false;
}
tr.build();
line.add(tr);
if(!first)
line = null;
}
validate();
gui.refresh();
@@ -93,12 +120,12 @@ public class TrackersList extends EJBox {
@ThreadSafe
public void newTrackerAdded(Tracker t) {
java.awt.EventQueue.invokeLater(() -> {
trackers.add(new TrackerRow(t));
trackers.add(new TrackerPanel(t));
build();
});
}
private class TrackerRow extends EJBag {
private class TrackerPanel extends EJBag {
final Tracker t;
JLabel position;
@@ -116,21 +143,23 @@ public class TrackersList extends EJBox {
JLabel correction;
@AWTThread
public TrackerRow(Tracker t) {
public TrackerPanel(Tracker t) {
super();
this.t = t;
}
@SuppressWarnings("unchecked")
@AWTThread
public TrackerRow build() {
public TrackerPanel build() {
int row = 0;
Tracker realTracker = t;
if(t instanceof ReferenceAdjustedTracker)
realTracker = ((ReferenceAdjustedTracker<? extends Tracker>) t).getTracker();
removeAll();
add(new JLabel(t.getName()), s(c(0, row, 0, GridBagConstraints.FIRST_LINE_START), 4, 1));
JLabel nameLabel;
add(nameLabel = new JLabel(t.getName()), s(c(0, row, 0, GridBagConstraints.FIRST_LINE_START), 4, 1));
nameLabel.setFont(nameLabel.getFont().deriveFont(Font.BOLD));
row++;
if(t.userEditable()) {
@@ -285,14 +314,14 @@ public class TrackersList extends EJBox {
}
private static int getTrackerSort(Tracker t) {
if(t instanceof HMDTracker)
return 0;
if(t instanceof ComputedTracker)
return 1;
if(t instanceof IMUTracker)
return 2;
if(t instanceof ReferenceAdjustedTracker)
return 5;
t = ((ReferenceAdjustedTracker<?>) t).getTracker();
if(t instanceof IMUTracker)
return 0;
if(t instanceof HMDTracker)
return 100;
if(t instanceof ComputedTracker)
return 200;
return 1000;
}
}

View File

@@ -11,6 +11,7 @@ import io.eiren.vr.VRServer;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -56,6 +57,8 @@ public class VRServerGUI extends JFrame {
add(scroll = new JScrollPane(pane = new EJBox(PAGE_AXIS), ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED));
setMinimumSize(new Dimension(1280, 1080));
build();
}
@@ -65,7 +68,7 @@ public class VRServerGUI extends JFrame {
public void refresh() {
// Pack and display
pack();
//pack();
setVisible(true);
java.awt.EventQueue.invokeLater(new Runnable() {
@Override

View File

@@ -7,7 +7,7 @@ import io.eiren.util.logging.LogManager;
public class Main {
public static String VERSION = "0.0.16";
public static String VERSION = "0.0.17";
public static VRServer vrServer;

View File

@@ -4,6 +4,7 @@ import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketAddress;
import java.net.SocketTimeoutException;
import java.nio.ByteBuffer;
@@ -39,7 +40,7 @@ public class TrackersUDPServer extends Thread {
private final Quaternion buf = new Quaternion();
private final Random random = new Random();
private final List<TrackerConnection> trackers = new FastList<>();
private final Map<SocketAddress, TrackerConnection> trackersMap = new HashMap<>();
private final Map<InetAddress, TrackerConnection> trackersMap = new HashMap<>();
private final Map<Tracker, Consumer<String>> calibrationDataRequests = new HashMap<>();
private final Consumer<Tracker> trackersConsumer;
private final int port;
@@ -55,7 +56,7 @@ public class TrackersUDPServer extends Thread {
private void setUpNewSensor(DatagramPacket handshakePacket, ByteBuffer data) throws IOException {
System.out.println("[TrackerServer] Handshake recieved from " + handshakePacket.getAddress() + ":" + handshakePacket.getPort());
SocketAddress addr = handshakePacket.getSocketAddress();
InetAddress addr = handshakePacket.getAddress();
TrackerConnection sensor;
synchronized(trackers) {
sensor = trackersMap.get(addr);
@@ -105,7 +106,7 @@ public class TrackersUDPServer extends Thread {
IMUTracker imu = new IMUTracker("udp:/" + handshakePacket.getAddress().toString(), this);
ReferenceAdjustedTracker<IMUTracker> adjustedTracker = new ReferenceAdjustedTracker<>(imu);
trackersConsumer.accept(adjustedTracker);
sensor = new TrackerConnection(imu, addr);
sensor = new TrackerConnection(imu, handshakePacket.getSocketAddress());
sensor.isOwoTrack = isOwo;
int i = 0;
synchronized(trackers) {
@@ -113,13 +114,13 @@ public class TrackersUDPServer extends Thread {
trackers.add(sensor);
trackersMap.put(addr, sensor);
}
System.out.println("[TrackerServer] Sensor " + i + " added with address " + addr + ". Board type: " + boardType + ", imu type: " + imuType + ", firmware: " + firmware + " (" + firmwareBuild + "), mac: " + macString);
System.out.println("[TrackerServer] Sensor " + i + " added with address " + handshakePacket.getSocketAddress() + ". Board type: " + boardType + ", imu type: " + imuType + ", firmware: " + firmware + " (" + firmwareBuild + "), mac: " + macString);
}
sensor.tracker.setStatus(TrackerStatus.OK);
socket.send(new DatagramPacket(HANDSHAKE_BUFFER, HANDSHAKE_BUFFER.length, handshakePacket.getAddress(), handshakePacket.getPort()));
}
private void setUpAuxialrySensor(TrackerConnection connection) throws IOException {
private void setUpAuxilarySensor(TrackerConnection connection) throws IOException {
System.out.println("[TrackerServer] Setting up auxilary sensor for " + connection.tracker.getName());
IMUTracker imu = new IMUTracker(connection.tracker.getName() + "/1", this);
connection.secondTracker = imu;
@@ -146,7 +147,7 @@ public class TrackersUDPServer extends Thread {
TrackerConnection connection;
IMUTracker tracker = null;
synchronized(trackers) {
connection = trackersMap.get(recieve.getSocketAddress());
connection = trackersMap.get(recieve.getAddress());
}
if(connection != null)
connection.lastPacket = System.currentTimeMillis();
@@ -361,7 +362,7 @@ public class TrackersUDPServer extends Thread {
sensorId = bb.get() & 0xFF;
int sensorStatus = bb.get() & 0xFF;
if(sensorId == 1 && sensorStatus == 1 && connection.secondTracker == null) {
setUpAuxialrySensor(connection);
setUpAuxilarySensor(connection);
}
bb.rewind();
bb.putInt(15);