From 619c2156cd82d4f69c2d636aeafc3a755081ad3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB=20Gidiere?= Date: Thu, 5 Jun 2025 22:47:16 -0600 Subject: [PATCH] Use seismic func for perf 2 --- .../generation/math/samplers/Sampler3D.java | 4 +++- .../terrascript/script/functions/BiomeFunction.java | 5 +++-- .../terrascript/script/functions/BlockFunction.java | 5 +++-- .../terrascript/script/functions/CheckBlockFunction.java | 6 ++++-- .../terrascript/script/functions/LootFunction.java | 5 +++-- .../terrascript/script/functions/PullFunction.java | 6 ++++-- .../terrascript/script/functions/StateFunction.java | 5 +++-- .../terrascript/script/functions/StructureFunction.java | 9 +++++---- .../terra/addon/terrascript/check/CheckFunction.java | 6 ++++-- 9 files changed, 32 insertions(+), 19 deletions(-) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java index 90d69461a..cdab4e40a 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/samplers/Sampler3D.java @@ -7,6 +7,8 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.samplers; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; + import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties; import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ChunkInterpolator; import com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation.ElevationInterpolator; @@ -26,7 +28,7 @@ public class Sampler3D { } public double sample(double x, double y, double z) { - return interpolator.getNoise(x, y, z) + elevationInterpolator.getElevation((int) Math.round(x), (int) Math.round(z)); + return interpolator.getNoise(x, y, z) + elevationInterpolator.getElevation(FloatingPointFunctions.round(x), FloatingPointFunctions.round(z)); } public double sample(int x, int y, int z) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java index 14cb8b381..3ab8b7c5f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java @@ -7,6 +7,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import com.dfsek.seismic.type.vector.Vector2; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; @@ -45,9 +46,9 @@ public class BiomeFunction implements Function { return grid.getBiome(arguments.getOrigin().toFloat() .mutable() - .add(Vector3.of((int) Math.round(xz.getX()), + .add(Vector3.of(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), - (int) Math.round(xz.getZ()))).immutable(), arguments.getWorld().getSeed()).getID(); + FloatingPointFunctions.round(xz.getZ()))).immutable(), arguments.getWorld().getSeed()).getID(); } @Override diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java index fb8ffa22e..66f40696c 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java @@ -7,6 +7,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -71,9 +72,9 @@ public class BlockFunction implements Function { Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); try { - Vector3.Mutable set = Vector3.of((int) Math.round(xz.getX()), + Vector3.Mutable set = Vector3.of(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope).doubleValue(), - (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()); + FloatingPointFunctions.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()); BlockState current = arguments.getWorld().getBlockState(set); if(overwrite.apply(implementationArguments, scope) || current.isAir()) { arguments.getWorld().setBlockState(set, rot, physics.apply(implementationArguments, scope)); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java index fd3465c45..b0bd35890 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java @@ -7,6 +7,8 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; + import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; @@ -40,9 +42,9 @@ public class CheckBlockFunction implements Function { String data = arguments.getWorld() .getBlockState(arguments.getOrigin().toFloat() .mutable() - .add(Vector3.of((int) Math.round(xz.getX()), + .add(Vector3.of(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope) - .doubleValue(), (int) Math.round(xz.getZ())))) + .doubleValue(), FloatingPointFunctions.round(xz.getZ())))) .getAsString(); if(data.contains("[")) return data.substring(0, data.indexOf('[')); // Strip properties else return data; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java index 5fcc8e46b..bfb0c6d8c 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java @@ -7,6 +7,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -64,10 +65,10 @@ public class LootFunction implements Function { registry.get(RegistryKey.parse(id)) .ifPresentOrElse(table -> { - Vector3 apply = Vector3.of((int) Math.round(xz.getX()), + Vector3 apply = Vector3.of(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope) .intValue(), - (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()).immutable(); + FloatingPointFunctions.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()).immutable(); try { BlockEntity data = arguments.getWorld().getBlockEntity(apply); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java index b6cbd2bde..28890580a 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java @@ -7,6 +7,8 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; + import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Returnable; @@ -43,8 +45,8 @@ public class PullFunction implements Function { Vector2 xz = Vector2.Mutable.of(x.apply(implementationArguments, scope).doubleValue(), z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); - Vector3.Mutable mutable = Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), - (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()); + Vector3.Mutable mutable = Vector3.of(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), + FloatingPointFunctions.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()); while(mutable.getY() > arguments.getWorld().getMinHeight()) { if(!arguments.getWorld().getBlockState(mutable).isAir()) { arguments.getWorld().setBlockState(mutable, data); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java index fbc9dfced..95bdcfe13 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java @@ -7,6 +7,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,8 +44,8 @@ public class StateFunction implements Function { z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); - Vector3 origin = Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), - (int) Math.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()).immutable(); + Vector3 origin = Vector3.of(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), + FloatingPointFunctions.round(xz.getZ())).mutable().add(arguments.getOrigin().toFloat()).immutable(); try { BlockEntity state = arguments.getWorld().getBlockEntity(origin); state.applyState(data.apply(implementationArguments, scope)); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java index c62efde0a..5eb481354 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java @@ -7,6 +7,7 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; import com.dfsek.seismic.type.Rotation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -77,17 +78,17 @@ public class StructureFunction implements Function { if(script instanceof StructureScript structureScript) { return structureScript.generate(arguments.getOrigin(), arguments.getWorld() - .buffer((int) Math.round(xz.getX()), + .buffer(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), - (int) Math.round(xz.getZ())), + FloatingPointFunctions.round(xz.getZ())), arguments.getRandom(), arguments.getRotation().rotate(rotation1), arguments.getRecursions() + 1); } return script.generate(arguments.getOrigin(), arguments.getWorld() - .buffer((int) Math.round(xz.getX()), + .buffer(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope).intValue(), - (int) Math.round(xz.getZ())), + FloatingPointFunctions.round(xz.getZ())), arguments.getRandom(), arguments.getRotation().rotate(rotation1)); }).orElseGet(() -> { diff --git a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java index 0e9972fc0..5021935bf 100644 --- a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java +++ b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java @@ -7,6 +7,8 @@ package com.dfsek.terra.addon.terrascript.check; +import com.dfsek.seismic.math.floatingpoint.FloatingPointFunctions; + import com.dfsek.terra.addons.chunkgenerator.generation.NoiseChunkGenerator3D; import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.SamplerProvider; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; @@ -44,8 +46,8 @@ public class CheckFunction implements Function { z.apply(implementationArguments, scope).doubleValue()).rotate(arguments.getRotation()); Vector3 location = arguments.getOrigin().toFloat().mutable().add( - Vector3.of((int) Math.round(xz.getX()), y.apply(implementationArguments, scope).doubleValue(), - (int) Math.round(xz.getZ()))).immutable(); + Vector3.of(FloatingPointFunctions.round(xz.getX()), y.apply(implementationArguments, scope).doubleValue(), + FloatingPointFunctions.round(xz.getZ()))).immutable(); return apply(location, arguments.getWorld()); }