Skip to content

Commit

Permalink
Remove realTracker checks for cleaner code (#203)
Browse files Browse the repository at this point in the history
  • Loading branch information
loucass003 committed Jun 28, 2022
1 parent 66e4e4e commit b3efcd1
Show file tree
Hide file tree
Showing 11 changed files with 78 additions and 225 deletions.
10 changes: 4 additions & 6 deletions src/main/java/dev/slimevr/VRServer.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dev.slimevr;

import dev.slimevr.autobone.AutoBoneHandler;
import dev.slimevr.bridge.Bridge;
import dev.slimevr.bridge.VMCBridge;
import dev.slimevr.platform.windows.WindowsNamedPipeBridge;
Expand Down Expand Up @@ -27,7 +28,6 @@
import java.util.*;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.function.Consumer;
import dev.slimevr.autobone.AutoBoneHandler;


public class VRServer extends Thread {
Expand Down Expand Up @@ -297,11 +297,9 @@ public void updateTrackersFilters(TrackerFilters filter, float amount, int ticks

IMUTracker imu;
for (Tracker t : this.getAllTrackers()) {
Tracker realTracker = t;
if (t instanceof ReferenceAdjustedTracker)
realTracker = ((ReferenceAdjustedTracker<? extends Tracker>) t).getTracker();
if (realTracker instanceof IMUTracker) {
imu = (IMUTracker) realTracker;
Tracker tracker = t.get();
if (tracker instanceof IMUTracker) {
imu = (IMUTracker) tracker;
imu.setFilter(filter.name(), amount, ticks);
}
}
Expand Down
59 changes: 26 additions & 33 deletions src/main/java/dev/slimevr/gui/TrackersList.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,12 @@ public TrackersList(VRServer server, VRServerGUI gui) {
}

private static int getTrackerSort(Tracker t) {
if (t instanceof ReferenceAdjustedTracker)
t = ((ReferenceAdjustedTracker<?>) t).getTracker();
if (t instanceof IMUTracker)
Tracker tracker = t.get();
if (tracker instanceof IMUTracker)
return 0;
if (t instanceof HMDTracker)
if (tracker instanceof HMDTracker)
return 100;
if (t instanceof ComputedTracker)
if (tracker instanceof ComputedTracker)
return 200;
return 1000;
}
Expand All @@ -72,9 +71,7 @@ private void build() {
boolean first = true;

for (TrackerPanel tr : trackers) {
Tracker t = tr.t;
if (t instanceof ReferenceAdjustedTracker)
t = ((ReferenceAdjustedTracker<?>) t).getTracker();
Tracker t = tr.t.get();
if (currentClass != t.getClass()) {
currentClass = t.getClass();
if (line != null)
Expand Down Expand Up @@ -162,9 +159,7 @@ public TrackerPanel(Tracker t) {
public TrackerPanel build() {
int row = 0;

Tracker realTracker = t;
if (t instanceof ReferenceAdjustedTracker)
realTracker = ((ReferenceAdjustedTracker<? extends Tracker>) t).getTracker();
Tracker tracker = t.get();
removeAll();
JLabel nameLabel;
add(
Expand Down Expand Up @@ -206,8 +201,8 @@ public void actionPerformed(ActionEvent e) {
server.trackerUpdated(t);
}
});
if (realTracker instanceof IMUTracker) {
IMUTracker imu = (IMUTracker) realTracker;
if (tracker instanceof IMUTracker) {
IMUTracker imu = (IMUTracker) tracker;
JComboBox<String> mountSelect;
add(
mountSelect = new JComboBox<>(),
Expand Down Expand Up @@ -242,7 +237,7 @@ public void actionPerformed(ActionEvent e) {
if (t.hasPosition())
add(new JLabel("Position"), c(1, row, 2, GridBagConstraints.FIRST_LINE_START));
add(new JLabel("TPS"), c(3, row, 2, GridBagConstraints.FIRST_LINE_START));
if (realTracker instanceof IMUTracker) {
if (tracker instanceof IMUTracker) {
add(new JLabel("Ping"), c(2, row, 2, GridBagConstraints.FIRST_LINE_START));
add(new JLabel("Signal"), c(4, row, 2, GridBagConstraints.FIRST_LINE_START));
}
Expand All @@ -257,14 +252,14 @@ public void actionPerformed(ActionEvent e) {
position = new JLabel("0 0 0"),
c(1, row, 2, GridBagConstraints.FIRST_LINE_START)
);
if (realTracker instanceof IMUTracker) {
if (tracker instanceof IMUTracker) {
add(ping = new JLabel(""), c(2, row, 2, GridBagConstraints.FIRST_LINE_START));
add(
signalStrength = new JLabel(""),
c(4, row, 2, GridBagConstraints.FIRST_LINE_START)
);
}
if (realTracker instanceof TrackerWithTPS) {
if (tracker instanceof TrackerWithTPS) {
add(tps = new JLabel("0"), c(3, row, 2, GridBagConstraints.FIRST_LINE_START));
} else {
add(new JLabel(""), c(3, row, 2, GridBagConstraints.FIRST_LINE_START));
Expand All @@ -275,7 +270,7 @@ public void actionPerformed(ActionEvent e) {
status = new JLabel(t.getStatus().toString().toLowerCase()),
c(1, row, 2, GridBagConstraints.FIRST_LINE_START)
);
if (realTracker instanceof TrackerWithBattery) {
if (tracker instanceof TrackerWithBattery) {
add(new JLabel("Battery:"), c(2, row, 2, GridBagConstraints.FIRST_LINE_START));
add(bat = new JLabel("0"), c(3, row, 2, GridBagConstraints.FIRST_LINE_START));
}
Expand All @@ -286,21 +281,21 @@ public void actionPerformed(ActionEvent e) {
s(c(1, row, 2, GridBagConstraints.FIRST_LINE_START), 3, 1)
);

if (debug && realTracker instanceof IMUTracker) {
if (debug && tracker instanceof IMUTracker) {
add(new JLabel("Quat:"), c(2, row, 2, GridBagConstraints.FIRST_LINE_START));
add(rotQuat = new JLabel("0"), c(3, row, 2, GridBagConstraints.FIRST_LINE_START));
}
row++;

if (debug && realTracker instanceof IMUTracker) {
if (debug && tracker instanceof IMUTracker) {
add(new JLabel("Raw mag:"), c(0, row, 2, GridBagConstraints.FIRST_LINE_START));
add(
rawMag = new JLabel("0 0 0"),
s(c(1, row, 2, GridBagConstraints.FIRST_LINE_START), 3, 1)
);
add(new JLabel("Gyro fix:"), c(2, row, 2, GridBagConstraints.FIRST_LINE_START));
add(
new JLabel(String.format("0x%8x", realTracker.hashCode())),
new JLabel(String.format("0x%8x", tracker.hashCode())),
s(c(3, row, 2, GridBagConstraints.FIRST_LINE_START), 3, 1)
);
row++;
Expand Down Expand Up @@ -356,9 +351,7 @@ public void actionPerformed(ActionEvent e) {
public void update() {
if (position == null && rotation == null)
return;
Tracker realTracker = t;
if (t instanceof ReferenceAdjustedTracker)
realTracker = ((ReferenceAdjustedTracker<? extends Tracker>) t).getTracker();
Tracker tracker = t.get();
t.getRotation(q);
t.getPosition(v);
q.toAngles(angles);
Expand All @@ -383,11 +376,11 @@ public void update() {
);
status.setText(t.getStatus().toString().toLowerCase());

if (realTracker instanceof TrackerWithTPS) {
tps.setText(StringUtils.prettyNumber(((TrackerWithTPS) realTracker).getTPS(), 1));
if (tracker instanceof TrackerWithTPS) {
tps.setText(StringUtils.prettyNumber(((TrackerWithTPS) tracker).getTPS(), 1));
}
if (realTracker instanceof TrackerWithBattery) {
TrackerWithBattery twb = (TrackerWithBattery) realTracker;
if (tracker instanceof TrackerWithBattery) {
TrackerWithBattery twb = (TrackerWithBattery) tracker;
float level = twb.getBatteryLevel();
float voltage = twb.getBatteryVoltage();
if (level == 0.0f) {
Expand Down Expand Up @@ -442,11 +435,11 @@ public void update() {
);
}
}
if (realTracker instanceof IMUTracker) {
if (tracker instanceof IMUTracker) {
if (ping != null)
ping.setText(String.valueOf(((IMUTracker) realTracker).ping));
ping.setText(String.valueOf(((IMUTracker) tracker).ping));
if (signalStrength != null) {
int signal = ((IMUTracker) realTracker).signalStrength;
int signal = ((IMUTracker) tracker).signalStrength;
if (signal == -1) {
signalStrength.setText("N/A");
} else {
Expand All @@ -457,7 +450,7 @@ public void update() {
}
}
}
realTracker.getRotation(q);
tracker.getRotation(q);
q.toAngles(angles);
raw
.setText(
Expand All @@ -467,8 +460,8 @@ public void update() {
+ " "
+ StringUtils.prettyNumber(angles[2] * FastMath.RAD_TO_DEG, 0)
);
if (realTracker instanceof IMUTracker) {
IMUTracker imu = (IMUTracker) realTracker;
if (tracker instanceof IMUTracker) {
IMUTracker imu = (IMUTracker) tracker;
if (rawMag != null) {
imu.rotMagQuaternion.toAngles(angles);
rawMag
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/dev/slimevr/poserecorder/PoseFrameTracker.java
Original file line number Diff line number Diff line change
Expand Up @@ -261,4 +261,9 @@ public int getTrackerNum() {
public UDPDevice getDevice() {
return null;
}

@Override
public Tracker get() {
return this;
}
}
5 changes: 5 additions & 0 deletions src/main/java/dev/slimevr/poserecorder/TrackerFrame.java
Original file line number Diff line number Diff line change
Expand Up @@ -192,4 +192,9 @@ public int getTrackerNum() {
public UDPDevice getDevice() {
return null;
}

@Override
public Tracker get() {
return null;
}
}
33 changes: 16 additions & 17 deletions src/main/java/dev/slimevr/protocol/RPCHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -195,23 +195,22 @@ public void onAssignTrackerRequest(GenericConnection conn, RpcMessageHeader mess
Tracker tracker = this.api.server.getTrackerById(req.trackerId().unpack());
if (tracker == null)
return;

TrackerPosition.getByBodyPart(req.bodyPosition()).ifPresent(tracker::setBodyPosition);

if (tracker instanceof ReferenceAdjustedTracker) {
ReferenceAdjustedTracker refTracker = (ReferenceAdjustedTracker) tracker;
if (refTracker.getTracker() instanceof IMUTracker) {
IMUTracker imu = (IMUTracker) refTracker.getTracker();
imu
.setMountingRotation(
new Quaternion(
req.mountingRotation().x(),
req.mountingRotation().y(),
req.mountingRotation().z(),
req.mountingRotation().w()
)
);
}
tracker = tracker.get();

TrackerPosition pos = TrackerPosition.getByBodyPart(req.bodyPosition()).orElse(null);
tracker.setBodyPosition(pos);

if (tracker instanceof IMUTracker) {
IMUTracker imu = (IMUTracker) tracker;
imu
.setMountingRotation(
new Quaternion(
req.mountingRotation().x(),
req.mountingRotation().y(),
req.mountingRotation().z(),
req.mountingRotation().w()
)
);
}
this.api.server.trackerUpdated(tracker);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,9 @@ public TrackerRole getTrackerRole() {
public UDPDevice getDevice() {
return null;
}

@Override
public Tracker get() {
return this;
}
}
5 changes: 5 additions & 0 deletions src/main/java/dev/slimevr/vr/trackers/ComputedTracker.java
Original file line number Diff line number Diff line change
Expand Up @@ -153,4 +153,9 @@ public int getTrackerNum() {
public UDPDevice getDevice() {
return null;
}

@Override
public Tracker get() {
return this;
}
}
5 changes: 5 additions & 0 deletions src/main/java/dev/slimevr/vr/trackers/IMUTracker.java
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,11 @@ public String getDescriptiveName() {
return this.descriptiveName;
}

@Override
public Tracker get() {
return this;
}

public enum CalibrationAccuracy {

UNRELIABLE(0), LOW(1), MEDIUM(2), HIGH(3),;
Expand Down
Loading

0 comments on commit b3efcd1

Please sign in to comment.