Elipsoid functions

This commit is contained in:
cyberpwn 2021-09-04 14:25:09 -04:00
parent 20f953b9cb
commit 422ecb758f

View File

@ -40,6 +40,7 @@ import org.bukkit.util.Vector;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.function.Supplier;
@Data @Data
public class MantleWriter implements IObjectPlacer { public class MantleWriter implements IObjectPlacer {
@ -66,6 +67,11 @@ public class MantleWriter implements IObjectPlacer {
} }
public <T> void setData(int x, int y, int z, T t) { public <T> void setData(int x, int y, int z, T t) {
if(t == null)
{
return;
}
int cx = x >> 4; int cx = x >> 4;
int cz = z >> 4; int cz = z >> 4;
@ -161,6 +167,10 @@ public class MantleWriter implements IObjectPlacer {
setElipsoid(cx, cy, cz, radius, radius, radius, fill, data); setElipsoid(cx, cy, cz, radius, radius, radius, fill, data);
} }
public <T> void setElipsoid(int cx, int cy, int cz, double rx, double ry, double rz, boolean fill, T data) {
setElipsoidFunction(cx, cy, cz, rx, ry, rz, fill, (a,b,c)->data);
}
/** /**
* Set an elipsoid into the mantle * Set an elipsoid into the mantle
* *
@ -174,7 +184,7 @@ public class MantleWriter implements IObjectPlacer {
* @param data the data to set * @param data the data to set
* @param <T> the type of data to apply to the mantle * @param <T> the type of data to apply to the mantle
*/ */
public <T> void setElipsoid(int cx, int cy, int cz, double rx, double ry, double rz, boolean fill, T data) { public <T> void setElipsoidFunction(int cx, int cy, int cz, double rx, double ry, double rz, boolean fill, Function3<Integer, Integer, Integer, T> data) {
rx += 0.5; rx += 0.5;
ry += 0.5; ry += 0.5;
rz += 0.5; rz += 0.5;
@ -217,15 +227,15 @@ public class MantleWriter implements IObjectPlacer {
} }
} }
setData(x + cx, y + cy, z + cz, data); setData(x + cx, y + cy, z + cz, data.apply(x + cx, y + cy, z + cz));
setData(-x + cx, y + cy, z + cz, data); setData(-x + cx, y + cy, z + cz, data.apply(-x + cx, y + cy, z + cz));
setData(x + cx, -y + cy, z + cz, data); setData(x + cx, -y + cy, z + cz, data.apply(x + cx, -y + cy, z + cz));
setData(x + cx, y + cy, -z + cz, data); setData(x + cx, y + cy, -z + cz, data.apply(x + cx, y + cy, -z + cz));
setData(-x + cx, y + cy, -z + cz, data); setData(-x + cx, y + cy, -z + cz, data.apply(-x + cx, y + cy, -z + cz));
setData(-x + cx, -y + cy, z + cz, data); setData(-x + cx, -y + cy, z + cz, data.apply(-x + cx, -y + cy, z + cz));
setData(x + cx, -y + cy, -z + cz, data); setData(x + cx, -y + cy, -z + cz, data.apply(x + cx, -y + cy, -z + cz));
setData(-x + cx, y + cy, -z + cz, data); setData(-x + cx, y + cy, -z + cz, data.apply(-x + cx, y + cy, -z + cz));
setData(-x + cx, -y + cy, -z + cz, data); setData(-x + cx, -y + cy, -z + cz, data.apply(-x + cx, -y + cy, -z + cz));
} }
} }
} }