diff --git a/src/main/java/com/volmit/iris/object/IrisObjectRotation.java b/src/main/java/com/volmit/iris/object/IrisObjectRotation.java index 8d6ddb88f..32e57e853 100644 --- a/src/main/java/com/volmit/iris/object/IrisObjectRotation.java +++ b/src/main/java/com/volmit/iris/object/IrisObjectRotation.java @@ -22,7 +22,6 @@ import java.util.List; @Data public class IrisObjectRotation { - @DontObfuscate @Desc("If this rotator is enabled or not") private boolean enabled = true; @@ -54,6 +53,51 @@ public class IrisObjectRotation return getRotation(spin, zAxis); } + public IrisObject rotateCopy(IrisObject e) + { + return e.rotateCopy(this); + } + + + public IrisJigsawPiece rotateCopy(IrisJigsawPiece v) { + IrisJigsawPiece piece = v.copy(); + for(IrisJigsawPieceConnector i : piece.getConnectors()) + { + i.setPosition(rotate(i.getPosition())); + i.setDirection(rotate(i.getDirection())); + } + + return piece; + } + + + public BlockVector rotate(BlockVector direction) { + return rotate(direction, 0,0,0); + } + + public IrisDirection rotate(IrisDirection direction) { + BlockVector v = rotate(direction.toVector().toBlockVector()); + return IrisDirection.closest(v); + } + + public static IrisObjectRotation of(double x, double y, double z) { + IrisObjectRotation rt = new IrisObjectRotation(); + rt.setEnabled(true); + IrisAxisRotationClamp rtx = new IrisAxisRotationClamp(); + rtx.setEnabled(x != 0); + rtx.setMax(x); + rt.setXAxis(rtx); + IrisAxisRotationClamp rty = new IrisAxisRotationClamp(); + rty.setEnabled(y != 0); + rty.setMax(y); + rt.setXAxis(rty); + IrisAxisRotationClamp rtz = new IrisAxisRotationClamp(); + rtz.setEnabled(z != 0); + rtz.setMax(z); + rt.setXAxis(rtz); + return rt; + } + public double getRotation(int spin, IrisAxisRotationClamp clamp) { if(!enabled) @@ -242,6 +286,16 @@ public class IrisObjectRotation return d; } + public IrisPosition rotate(IrisPosition b) + { + return rotate(b, 0,0,0); + } + + public IrisPosition rotate(IrisPosition b, int spinx, int spiny, int spinz) + { + return new IrisPosition(rotate(new BlockVector(b.getX(), b.getY(), b.getZ()), spinx, spiny, spinz)); + } + public BlockVector rotate(BlockVector b, int spinx, int spiny, int spinz) { if(!canRotate())