From 287c029bdabbf7569f2449d0968c1bec656f79c8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 27 Dec 2021 14:45:37 -0700 Subject: [PATCH] create GeometryUtil --- .../dfsek/terra/api/util/GeometryUtil.java | 34 +++++++++++++++++++ .../terra/api/util/vector/Vector3Int.java | 4 +++ 2 files changed, 38 insertions(+) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/GeometryUtil.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/GeometryUtil.java b/common/api/src/main/java/com/dfsek/terra/api/util/GeometryUtil.java new file mode 100644 index 000000000..8ac5c1054 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/util/GeometryUtil.java @@ -0,0 +1,34 @@ +package com.dfsek.terra.api.util; + +import com.dfsek.terra.api.util.vector.Vector3Int; + +import java.util.function.Consumer; + + +public final class GeometryUtil { + private GeometryUtil() { + + } + + public static void sphere(Vector3Int origin, int radius, Consumer action) { + for(int x = -radius; x <= radius; x++) { + for(int y = -radius; y <= radius; y++) { + for(int z = -radius; z <= radius; z++) { + if(x * x + y * y + z * z <= radius * radius) { + action.accept(Vector3Int.of(origin, x, y, z)); + } + } + } + } + } + + public static void cube(Vector3Int origin, int radius, Consumer action) { + for(int x = -radius; x <= radius; x++) { + for(int y = -radius; y <= radius; y++) { + for(int z = -radius; z <= radius; z++) { + action.accept(Vector3Int.of(origin, x, y, z)); + } + } + } + } +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3Int.java b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3Int.java index 671595949..8a0efe36b 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3Int.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/vector/Vector3Int.java @@ -24,6 +24,10 @@ public class Vector3Int { return new Vector3Int(x, y, z); } + public static Vector3Int of(Vector3Int origin, int x, int y, int z) { + return new Vector3Int(origin.x + x, origin.y + y, origin.z + z); + } + public int getX() { return x; }