SDF materials

This commit is contained in:
paulevsGitch 2020-09-29 01:38:56 +03:00
parent 2e632bf245
commit 257307d93d
14 changed files with 107 additions and 15 deletions

View file

@ -1,13 +1,24 @@
package ru.betterend.util.sdf.primitive;
import java.util.function.Function;
import net.minecraft.block.BlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import ru.betterend.util.MHelper;
import ru.betterend.util.sdf.ISDF;
public class SDFCapsule implements ISDF {
public class SDFCapsule extends SDFPrimitive {
private float radius;
private float height;
public SDFCapsule(Function<BlockPos, BlockState> placerFunction) {
super(placerFunction);
}
public SDFCapsule(BlockState state) {
super(state);
}
public SDFCapsule setRadius(float radius) {
this.radius = radius;
return this;

View file

@ -1,10 +1,13 @@
package ru.betterend.util.sdf.primitive;
import java.util.function.Function;
import net.minecraft.block.BlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import ru.betterend.util.MHelper;
import ru.betterend.util.sdf.ISDF;
public class SDFLine implements ISDF {
public class SDFLine extends SDFPrimitive {
private float radius;
private float x1;
private float y1;
@ -13,6 +16,14 @@ public class SDFLine implements ISDF {
private float y2;
private float z2;
public SDFLine(Function<BlockPos, BlockState> placerFunction) {
super(placerFunction);
}
public SDFLine(BlockState state) {
super(state);
}
public SDFLine setRadius(float radius) {
this.radius = radius;
return this;

View file

@ -0,0 +1,27 @@
package ru.betterend.util.sdf.primitive;
import java.util.function.Function;
import net.minecraft.block.BlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ServerWorldAccess;
import ru.betterend.util.BlocksHelper;
import ru.betterend.util.sdf.ISDF;
public abstract class SDFPrimitive implements ISDF {
protected final Function<BlockPos, BlockState> placerFunction;
public SDFPrimitive(Function<BlockPos, BlockState> placerFunction) {
this.placerFunction = placerFunction;
}
public SDFPrimitive(BlockState state) {
this.placerFunction = (pos) -> {
return state;
};
}
public void setBlock(ServerWorldAccess world, BlockPos pos) {
BlocksHelper.setWithoutUpdate(world, pos, placerFunction.apply(pos));
}
}

View file

@ -1,11 +1,22 @@
package ru.betterend.util.sdf.primitive;
import ru.betterend.util.MHelper;
import ru.betterend.util.sdf.ISDF;
import java.util.function.Function;
public class SDFSphere implements ISDF {
import net.minecraft.block.BlockState;
import net.minecraft.util.math.BlockPos;
import ru.betterend.util.MHelper;
public class SDFSphere extends SDFPrimitive {
private float radius;
public SDFSphere(Function<BlockPos, BlockState> placerFunction) {
super(placerFunction);
}
public SDFSphere(BlockState state) {
super(state);
}
public SDFSphere setRadius(float radius) {
this.radius = radius;
return this;