classpublicPriority 3
Rotate
com.hypixel.hytale.builtin.buildertools.tooloperations.transform.Rotate
implements Transform
4
Methods
4
Public Methods
2
Fields
2
Constructors
Constants
TransformFACING_EAST= Z_90
TransformFACING_NORTH= X_90
TransformFACING_SOUTH= X_90.then(Y_180)
TransformFACING_WEST= Z_90.then(Y_180)
TransformX_180= new Rotate(Axis.X, 180)
TransformX_270= new Rotate(Axis.X, 270)
TransformX_90= new Rotate(Axis.X, 90)
TransformY_180= new Rotate(Axis.Y, 180)
TransformY_270= new Rotate(Axis.Y, 270)
TransformY_90= new Rotate(Axis.Y, 90)
TransformZ_180= new Rotate(Axis.Z, 180)
TransformZ_270= new Rotate(Axis.Z, 270)
TransformZ_90= new Rotate(Axis.Z, 90)
Constructors
public
Rotate(Axis axis)public
Rotate(Axis axis, int angle)Methods
Public Methods (4)
public
void apply(Vector3i vector3i)@Override
publicstatic
Transform forAxisAndAngle(BrushAxis axis, Rotation angle)publicstatic
Transform forDirection(Vector3i direction, Rotation angle)public
String toString()@Nonnull@Override
Fields
Private/Package Fields (2)
private
Axis axisprivate
int rotationsInheritance
Parent
Current
Interface
Child
Use mouse wheel to zoom, drag to pan. Click nodes to navigate.
Related Classes
Source Code
package com.hypixel.hytale.builtin.buildertools.tooloperations.transform;
import com.hypixel.hytale.math.Axis;
import com.hypixel.hytale.math.vector.Vector3i;
import com.hypixel.hytale.protocol.Rotation;
import com.hypixel.hytale.protocol.packets.buildertools.BrushAxis;
import javax.annotation.Nonnull;
public class Rotate implements Transform {
public static final Transform X_90 = new Rotate(Axis.X, 90);
public static final Transform X_180 = new Rotate(Axis.X, 180);
public static final Transform X_270 = new Rotate(Axis.X, 270);
public static final Transform Y_90 = new Rotate(Axis.Y, 90);
public static final Transform Y_180 = new Rotate(Axis.Y, 180);
public static final Transform Y_270 = new Rotate(Axis.Y, 270);
public static final Transform Z_90 = new Rotate(Axis.Z, 90);
public static final Transform Z_180 = new Rotate(Axis.Z, 180);
public static final Transform Z_270 = new Rotate(Axis.Z, 270);
public static final Transform FACING_NORTH = X_90;
public static final Transform FACING_EAST = Z_90;
public static final Transform FACING_SOUTH = X_90.then(Y_180);
public static final Transform FACING_WEST = Z_90.then(Y_180);
private final Axis axis;
private final int rotations;
public Rotate(Axis axis) {
this(axis, 90);
}
public Rotate(Axis axis, int angle) {
angle = Math.floorMod(angle, 360);
int rotations = angle / 90;
this.axis = axis;
this.rotations = rotations;
}
@Override
public void apply(@Nonnull Vector3i vector3i) {
if (this.rotations == 1) {
this.axis.rotate(vector3i);
} else if (this.rotations > 1) {
for (int i = 0; i < this.rotations; i++) {
this.axis.rotate(vector3i);
}
}
}
@Nonnull
@Override
public String toString() {
return "Rotate{axis=" + this.axis + ", rotations=" + this.rotations + "}";
}
public static Transform forDirection(@Nonnull Vector3i direction, Rotation angle) {
if (direction.getX() < 0) {
return selectRotation(angle, FACING_WEST, FACING_NORTH, FACING_EAST, FACING_SOUTH);
} else if (direction.getX() > 0) {
return selectRotation(angle, FACING_EAST, FACING_SOUTH, FACING_WEST, FACING_NORTH);
} else if (direction.getZ() < 0) {
return selectRotation(angle, FACING_NORTH, FACING_EAST, FACING_SOUTH, FACING_WEST);
} else {
return direction.getZ() > 0 ? selectRotation(angle, FACING_SOUTH, FACING_WEST, FACING_NORTH, FACING_EAST) : NONE;
}
}
public static Transform forAxisAndAngle(BrushAxis axis, Rotation angle) {
if (axis == BrushAxis.X) {
return selectRotation(angle, NONE, X_90, X_180, X_270);
} else if (axis == BrushAxis.Y) {
return selectRotation(angle, NONE, Y_90, Y_180, Y_270);
} else {
return axis == BrushAxis.Z ? selectRotation(angle, NONE, Z_90, Z_180, Z_270) : NONE;
}
}
private static Transform selectRotation(Rotation angle, Transform rotate0, Transform rotate90, Transform rotate180, Transform rotate270) {
if (angle == Rotation.Ninety) {
return rotate90;
} else if (angle == Rotation.OneEighty) {
return rotate180;
} else {
return angle == Rotation.TwoSeventy ? rotate270 : rotate0;
}
}
}