Fix frustum filtering tracker do not respect switch
This commit is contained in:
@@ -5,7 +5,7 @@ Subject: [PATCH] Frustum filtering tracker
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/level/ChunkMap.java b/net/minecraft/server/level/ChunkMap.java
|
diff --git a/net/minecraft/server/level/ChunkMap.java b/net/minecraft/server/level/ChunkMap.java
|
||||||
index 849ad46b2941ebba91b428846b3b20d11ee5e1c9..3291d17bc176b306a792a1ca59254615b188ee9e 100644
|
index 849ad46b2941ebba91b428846b3b20d11ee5e1c9..c4692448f52db9cf3968ed82df97506a9959a17a 100644
|
||||||
--- a/net/minecraft/server/level/ChunkMap.java
|
--- a/net/minecraft/server/level/ChunkMap.java
|
||||||
+++ b/net/minecraft/server/level/ChunkMap.java
|
+++ b/net/minecraft/server/level/ChunkMap.java
|
||||||
@@ -932,6 +932,7 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
|
@@ -932,6 +932,7 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
|
||||||
@@ -36,7 +36,7 @@ index 849ad46b2941ebba91b428846b3b20d11ee5e1c9..3291d17bc176b306a792a1ca59254615
|
|||||||
+ if (player.culling != null) {
|
+ if (player.culling != null) {
|
||||||
+ player.culling.far((float) Math.sqrt(distanceSquared));
|
+ player.culling.far((float) Math.sqrt(distanceSquared));
|
||||||
+
|
+
|
||||||
+ if (visibleToPlayer && !player.isSpectator() && distanceSquared > ((int)io.nanachiyo0721.shiroha.config.modules.optimizations.FrustumFilteringTrackerConfig.minForceVisibleDistance ^ 2)) {
|
+ if (visibleToPlayer && !player.isSpectator() && distanceSquared > (io.nanachiyo0721.shiroha.config.modules.optimizations.FrustumFilteringTrackerConfig.minForceVisibleDistance * io.nanachiyo0721.shiroha.config.modules.optimizations.FrustumFilteringTrackerConfig.minForceVisibleDistance)) {
|
||||||
+ visibleToPlayer = player.culling.isVisibleFor(this.entity.getBoundingBox());
|
+ visibleToPlayer = player.culling.isVisibleFor(this.entity.getBoundingBox());
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
@@ -45,14 +45,14 @@ index 849ad46b2941ebba91b428846b3b20d11ee5e1c9..3291d17bc176b306a792a1ca59254615
|
|||||||
if (visibleToPlayer) {
|
if (visibleToPlayer) {
|
||||||
if (this.seenBy.add(player.connection)) {
|
if (this.seenBy.add(player.connection)) {
|
||||||
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
|
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
|
||||||
index e5e5e1da691dc71dc806d3b039ff02b1fa50eacf..81c5a042b288fb1208bd71239b16f65dd63e69d6 100644
|
index e5e5e1da691dc71dc806d3b039ff02b1fa50eacf..6a314d934e476cf2579034324950961cf35bac84 100644
|
||||||
--- a/net/minecraft/world/entity/player/Player.java
|
--- a/net/minecraft/world/entity/player/Player.java
|
||||||
+++ b/net/minecraft/world/entity/player/Player.java
|
+++ b/net/minecraft/world/entity/player/Player.java
|
||||||
@@ -186,6 +186,8 @@ public abstract class Player extends Avatar implements ContainerUser {
|
@@ -186,6 +186,8 @@ public abstract class Player extends Avatar implements ContainerUser {
|
||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
+ public io.nanachiyo0721.shiroha.utils.Culling culling = io.nanachiyo0721.shiroha.utils.Culling.newDefault(this); // Shiroha - Frustum filtering tracker
|
+ public io.nanachiyo0721.shiroha.utils.Culling culling = io.nanachiyo0721.shiroha.config.modules.optimizations.FrustumFilteringTrackerConfig.enabled ? io.nanachiyo0721.shiroha.utils.Culling.fromConfig(this) : null; // Shiroha - Frustum filtering tracker
|
||||||
+
|
+
|
||||||
public Player(final Level level, final GameProfile gameProfile) {
|
public Player(final Level level, final GameProfile gameProfile) {
|
||||||
super(EntityTypes.PLAYER, level);
|
super(EntityTypes.PLAYER, level);
|
||||||
|
|||||||
+4
@@ -11,4 +11,8 @@ public class FrustumFilteringTrackerConfig implements IConfigModule {
|
|||||||
public static boolean enabled = false;
|
public static boolean enabled = false;
|
||||||
@ConfigInfo(name = "min_force_visible_distance")
|
@ConfigInfo(name = "min_force_visible_distance")
|
||||||
public static double minForceVisibleDistance = 5.0D;
|
public static double minForceVisibleDistance = 5.0D;
|
||||||
|
@ConfigInfo(name = "camera_fov")
|
||||||
|
public static double camera_fov = 90;
|
||||||
|
@ConfigInfo(name = "aspect")
|
||||||
|
public static double aspect = 1.0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package io.nanachiyo0721.shiroha.utils;
|
package io.nanachiyo0721.shiroha.utils;
|
||||||
|
|
||||||
|
import io.nanachiyo0721.shiroha.config.modules.optimizations.FrustumFilteringTrackerConfig;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.phys.AABB;
|
import net.minecraft.world.phys.AABB;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
@@ -20,6 +21,15 @@ public class Culling {
|
|||||||
private final Player player;
|
private final Player player;
|
||||||
private float[] planes;
|
private float[] planes;
|
||||||
|
|
||||||
|
public static Culling fromConfig(Player player) {
|
||||||
|
return new Builder()
|
||||||
|
.fov((float) Math.toRadians(FrustumFilteringTrackerConfig.camera_fov))
|
||||||
|
.near(NEAR)
|
||||||
|
.aspect((float) FrustumFilteringTrackerConfig.aspect)
|
||||||
|
.far(FAR)
|
||||||
|
.build(player);
|
||||||
|
}
|
||||||
|
|
||||||
@Contract(value = "_ -> new", pure = true)
|
@Contract(value = "_ -> new", pure = true)
|
||||||
public static @NonNull Culling newDefault(Player player) {
|
public static @NonNull Culling newDefault(Player player) {
|
||||||
return fromBuilder(new Builder(), player);
|
return fromBuilder(new Builder(), player);
|
||||||
|
|||||||
Reference in New Issue
Block a user