Skip to content

Commit 19268a6

Browse files
committed
Minor optimisations
1 parent 7cf368e commit 19268a6

File tree

3 files changed

+9
-9
lines changed

3 files changed

+9
-9
lines changed

projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wireless/WirelessModemPeripheral.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public double getCachedSignalDegradation(Vec3i receiverPos) {
8282
public void addCachedSignalDegradation(Vec3i receiverPos, double signalDegradation) {
8383
// Prevent overflow the lazy way
8484
if (cachedSignalStrengths.size() > 2000) {
85-
cachedSignalStrengths = new HashMap<>();
85+
cachedSignalStrengths.clear();
8686
}
8787

8888
var senderPos = WirelessHelpers.floorToVec3i(getPosition());

projects/common/src/main/java/dan200/computercraft/shared/peripheral/modem/wireless/WirelessNetwork.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,15 @@
1212
import dan200.computercraft.shared.util.WirelessHelpers;
1313
import net.minecraft.core.BlockPos;
1414
import net.minecraft.core.Vec3i;
15-
import net.minecraft.util.Tuple;
1615

1716
import java.util.*;
1817
import java.util.concurrent.ConcurrentHashMap;
1918

2019
public class WirelessNetwork implements PacketNetwork {
2120
private final Set<PacketReceiver> receivers = Collections.newSetFromMap(new ConcurrentHashMap<>());
2221

22+
private final static List<Vec3i> obstructionBlocks = new ArrayList<Vec3i>(2048);
23+
2324
@Override
2425
public void addReceiver(PacketReceiver receiver) {
2526
Objects.requireNonNull(receiver, "device cannot be null");
@@ -64,13 +65,13 @@ private static void tryTransmit(PacketReceiver receiver, Packet packet, double r
6465
}
6566
} catch (LuaException ignored) {}
6667

67-
boolean noCache = false;
68+
boolean useCache = true;
6869

6970
// 65534 -> Default GPS, exclude from low range for now
7071
if (packet.channel() > 1024 && packet.channel() != 65534) {
7172
// High frequency local wireless
7273
receiveRange /= 8;
73-
noCache = true;
74+
useCache = false;
7475
}
7576

7677
if (distanceSq <= receiveRange * receiveRange) {
@@ -85,7 +86,7 @@ private static void tryTransmit(PacketReceiver receiver, Packet packet, double r
8586
}
8687

8788
//TODO: Signal range & Different degradation based on channel - 3 groups? (low, mid, high)
88-
if (!noCache) {
89+
if (useCache) {
8990
var cachedSignalDegradation = ((WirelessModemPeripheral)sender).getCachedSignalDegradation(receiverBlockPosition);
9091
if (cachedSignalDegradation != Integer.MAX_VALUE) {
9192
//System.out.println("Cache hit for " + sender.getSenderID() + " -> " + receiverBlockPosition.toString() + "!");
@@ -98,7 +99,7 @@ private static void tryTransmit(PacketReceiver receiver, Packet packet, double r
9899
}
99100

100101

101-
List<Vec3i> obstructionBlocks = WirelessHelpers.Bresenham3D(senderBlockPosition, receiverBlockPosition);
102+
WirelessHelpers.Bresenham3D(obstructionBlocks, senderBlockPosition, receiverBlockPosition);
102103
var signalDegradation = 0.0;
103104
var diagonalCompensation = WirelessHelpers.getDiagonalCompensation(senderBlockPosition, receiverBlockPosition);
104105

projects/common/src/main/java/dan200/computercraft/shared/util/WirelessHelpers.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ public static double getDiagonalCompensation(Vec3i sender, Vec3i receiver) {
3939
return yawDiagonal * pitchDiagonal;
4040
}
4141

42-
public static List<Vec3i> Bresenham3D(Vec3i source, Vec3i target) {
42+
public static void Bresenham3D(List<Vec3i> ListOfPoints, Vec3i source, Vec3i target) {
43+
ListOfPoints.clear();
4344
int x1 = source.getX();
4445
int y1 = source.getY();
4546
int z1 = source.getZ();
@@ -48,7 +49,6 @@ public static List<Vec3i> Bresenham3D(Vec3i source, Vec3i target) {
4849
int y2 = target.getY();
4950
int z2 = target.getZ();
5051

51-
List<Vec3i> ListOfPoints = new ArrayList<>();
5252
ListOfPoints.add(new Vec3i(x1, y1, z1));
5353
int dx = Math.abs(x2 - x1);
5454
int dy = Math.abs(y2 - y1);
@@ -129,6 +129,5 @@ public static List<Vec3i> Bresenham3D(Vec3i source, Vec3i target) {
129129
ListOfPoints.add(new Vec3i(x1, y1, z1));
130130
}
131131
}
132-
return ListOfPoints;
133132
}
134133
}

0 commit comments

Comments
 (0)