/** * @param angle in radians */ public void rotate(double px, double py, double pz, double ax, double ay, double az, double angle) { Quat quat = Quat.aroundAxis(ax, ay, az, angle); for (int i = 0; i < 8; i++) { verts[i].add(-px, -py, -pz); quat.rotate(verts[i]); verts[i].add(px, py, pz); } }
@Override public AxisAlignedBB toAABB() { return bounds.aabb(); } };
public static void genSelectionBoxes(Cuboid6[] subSelection, int i, double min, double min2, double max2) { subSelection[i] = new Cuboid6(min2, 0.0, min2, max2, min, max2); subSelection[i + 1] = new Cuboid6(min2, 1.0 - min, min2, max2, 1.0, max2); subSelection[i + 2] = new Cuboid6(min2, min2, 0.0, max2, max2, min); subSelection[i + 3] = new Cuboid6(min2, min2, 1.0 - min, max2, max2, 1.0); subSelection[i + 4] = new Cuboid6(0.0, min2, min2, min, max2, max2); subSelection[i + 5] = new Cuboid6(1.0 - min, min2, min2, 1.0, max2, max2); }
private static void generateModels() { Cuboid6 box = new Cuboid6(0.125, 0, 0.125, 0.875, 1, 0.875); double inset = 0.0625; modelFrame = CCModel.quadModel(48).generateBlock(0, box); CCModel.generateBackface(modelFrame, 0, modelFrame, 24, 24); modelFrame.computeNormals(); for (int i = 24; i < 48; i++) { modelFrame.verts[i].vec.add(modelFrame.normals()[i].copy().multiply(inset)); } modelFrame.shrinkUVs(RenderHelper.RENDER_OFFSET); }
static Cuboid6 getCoverPlateBox(EnumFacing side, double plateThickness, boolean offsetSide) { double offset = offsetSide ? 2.5 / 16.0 : 0.0; Cuboid6 coverPlateBox = new Cuboid6(offset, 0.0, offset, 1.0 - offset, plateThickness, 1.0 - offset); coverPlateBox.apply(Rotation.sideOrientation(side.getIndex(), 0).at(Vector3.center)); return coverPlateBox; }
public CCModel generateConnection() { CCModel model = CCModel.newModel(7, 64); double v = 0.375 * TDProps.largeInnerModelScaling; double o = 1.01; for (int k = 0; k < 8; k++) { model.verts[k * 4] = new Vertex5(octoFace[k].copy().multiply(o, 1, o), 0.5 - innerSize, 0); model.verts[k * 4 + 1] = new Vertex5(octoFace[k].copy().multiply(o, 1, o).setSide(0, -v), 0.5 - innerSize, 0.5 - v); model.verts[k * 4 + 2] = new Vertex5(octoFace[(k + 1) % 8].copy().multiply(o, 1, o).setSide(0, -v), 0.5 + innerSize, 0.5 - v); model.verts[k * 4 + 3] = new Vertex5(octoFace[(k + 1) % 8].copy().multiply(o, 1, o), 0.5 + innerSize, 0); } CCModel.generateBackface(model, 0, model, 32, 32); return model; }
@Override protected Transformation getBaseTransformation() { return new Translation(0d, 0.5d, 0d); }
public void flipCoords(int ax, int ay, int az) { for (int i = 0; i < 8; i++) { verts[i].add(ax, ay, az); } }
@Override public Object getScale(double d) { return new Scale(d); }
@Override public Object getRotation(double d, int i, int j, int k) { return new Rotation(d, i, j, k); }
@Override public Cuboid6 getCuboid() { return bounds[side].copy(); }
@Override public Object getRotation(int i, int j) { return Rotation.sideOrientation(i, j); }
protected Transformation getBaseTransformation() { return new RedundantTransformation(); }
@Override protected Transformation getBaseTransformation() { return new Translation(0d, 0.5d, 0d); }
@Override public Object getScale(double d, double e, double f) { return new Scale(d, e, f); }
@Override public Cuboid6 getCuboid() { return TileGrid.subSelection[side].copy(); }
@Override public Cuboid6 getCuboid() { return TileGrid.subSelection[side].copy(); }