Structure fix

This commit is contained in:
paulevsGitch 2020-09-30 10:50:47 +03:00
parent 310369cbb3
commit 2d53cedb90
8 changed files with 35 additions and 83 deletions

View file

@ -49,10 +49,11 @@ public class SplineHelper {
for (int i = 1; i < count; i++) {
Vector3f pos = spline.get(i);
float delta = (float) (i - 1) / max;
SDFLine line = new SDFLine(placerFunction)
SDF line = new SDFLine()
.setRadius(MathHelper.lerp(delta, radius1, radius2))
.setStart(start.getX(), start.getY(), start.getZ())
.setEnd(pos.getX(), pos.getY(), pos.getZ());
.setEnd(pos.getX(), pos.getY(), pos.getZ())
.setBlock(placerFunction);
result = result == null ? line : new SDFUnion().setSourceA(result).setSourceB(line);
start = pos;
}

View file

@ -1,10 +1,5 @@
package ru.betterend.util.sdf.primitive;
import java.util.function.Function;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import ru.betterend.util.MHelper;
@ -13,18 +8,6 @@ public class SDFCapedCone extends SDFPrimitive {
private float radius2;
private float height;
public SDFCapedCone(Function<BlockPos, BlockState> placerFunction) {
super(placerFunction);
}
public SDFCapedCone(BlockState state) {
super(state);
}
public SDFCapedCone(Block block) {
super(block);
}
public SDFCapedCone setRadius1(float radius) {
this.radius1 = radius;
return this;

View file

@ -1,10 +1,5 @@
package ru.betterend.util.sdf.primitive;
import java.util.function.Function;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import ru.betterend.util.MHelper;
@ -12,18 +7,6 @@ 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(Block block) {
super(block);
}
public SDFCapsule setRadius(float radius) {
this.radius = radius;
return this;

View file

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

View file

@ -8,22 +8,25 @@ import net.minecraft.util.math.BlockPos;
import ru.betterend.util.sdf.SDF;
public abstract class SDFPrimitive extends SDF {
protected final Function<BlockPos, BlockState> placerFunction;
protected Function<BlockPos, BlockState> placerFunction;
public SDFPrimitive(Function<BlockPos, BlockState> placerFunction) {
public SDFPrimitive setBlock(Function<BlockPos, BlockState> placerFunction) {
this.placerFunction = placerFunction;
return this;
}
public SDFPrimitive(BlockState state) {
public SDFPrimitive setBlock(BlockState state) {
this.placerFunction = (pos) -> {
return state;
};
return this;
}
public SDFPrimitive(Block block) {
public SDFPrimitive setBlock(Block block) {
this.placerFunction = (pos) -> {
return block.getDefaultState();
};
return this;
}
public BlockState getBlockState(BlockPos pos) {

View file

@ -1,27 +1,10 @@
package ru.betterend.util.sdf.primitive;
import java.util.function.Function;
import net.minecraft.block.Block;
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(Block block) {
super(block);
}
public SDFSphere setRadius(float radius) {
this.radius = radius;
return this;