public void setCustomUv( EnumFacing facing, float u1, float v1, float u2, float v2 ) { this.customUv.put( facing, new Vector4f( u1, v1, u2, v2 ) ); }
}; case 4: Vector4f vecc = new Vector4f( fs[0], fs[1], fs[2], fs[3] );
private float[] transform( float[] fs ) { switch( fs.length ) { case 3: Vector3f vec = new Vector3f( fs[0], fs[1], fs[2] ); vec.x -= 0.5f; vec.y -= 0.5f; vec.z -= 0.5f; this.f2r.getMat().transform( vec ); vec.x += 0.5f; vec.y += 0.5f; vec.z += 0.5f; return new float[] { vec.x, vec.y, vec.z }; case 4: Vector4f vecc = new Vector4f( fs[0], fs[1], fs[2], fs[3] ); vecc.x -= 0.5f; vecc.y -= 0.5f; vecc.z -= 0.5f; this.f2r.getMat().transform( vecc ); vecc.x += 0.5f; vecc.y += 0.5f; vecc.z += 0.5f; return new float[] { vecc.x, vecc.y, vecc.z, vecc.w }; default: return fs; } }
@Override public void put(int element, float... data) { VertexFormatElement formatElement = DefaultVertexFormats.ITEM.getElement(element); switch(formatElement.getUsage()) { case POSITION: { float[] newData = new float[4]; Vector4f vec = new Vector4f(data); transform.getMatrix().transform(vec); vec.get(newData); parent.put(element, newData); break; } default: { parent.put(element, data); break; } } } };
@Override public void put(int element, float... data) { VertexFormatElement formatElement = DefaultVertexFormats.ITEM.getElement(element); switch(formatElement.getUsage()) { case POSITION: { float[] newData = new float[4]; Vector4f vec = new Vector4f(data); transform.getMatrix().transform(vec); vec.get(newData); parent.put(element, newData); break; } default: { parent.put(element, data); break; } } } };
private float[] transformNormal(float[] fs) { Vector4f normal; switch (fs.length) { case 3: normal = new Vector4f(fs[0], fs[1], fs[2], 0); this.transform.transform(normal); normal.normalize(); return new float[]{ normal.x, normal.y, normal.z }; case 4: normal = new Vector4f(fs[0], fs[1], fs[2], fs[3]); this.transform.transform(normal); normal.normalize(); return new float[]{ normal.x, normal.y, normal.z, normal.w }; default: return fs; } } }
}; case 4: Vector4f vecc = new Vector4f(fs[0], fs[1], fs[2], fs[3]);
private static int getIntersectSlot(Vec3d fromVec, Vec3d toVec, Matrix4f transform) { Matrix4f inv = new Matrix4f(); inv.invert(transform); // Convert the vectors into "minecart" space Vector4f to = new Vector4f((float) toVec.x, (float) toVec.y, (float) toVec.z, 1); inv.transform(to); Vector4f from = new Vector4f((float) fromVec.x, (float) fromVec.y, (float) fromVec.z, 1); inv.transform(from); Vector4f step = new Vector4f(); step.sub(to, from); step.scale(1 / 100.0f); // Now ray-trace to find where they intersect with the bounding box. for (int offset = 0; offset <= 100; offset++) { for (int i = 0; i < BOUNDS.length; i++) { AxisAlignedBB bb = BOUNDS[i]; if (bb.contains(new Vec3d(from.getX(), from.getY(), from.getZ()))) { // If we got the actual block itself then pretend nothing happened. return i - 1; } } from.add(step); } return -1; }
Vector4f eye = new Vector4f(0, 0, -100, 1); Matrix4f rotMat = new Matrix4f(); rotMat.setIdentity();
@Override public void put(int element, float... data) { VertexFormatElement.EnumUsage usage = parent.getVertexFormat().getElement(element).getUsage(); // transform normals and position if(usage == VertexFormatElement.EnumUsage.POSITION && data.length >= 3) { Vector4f vec = new Vector4f(data[0], data[1], data[2], 1f); transformation.transform(vec); data = new float[4]; vec.get(data); } else if(usage == VertexFormatElement.EnumUsage.NORMAL && data.length >= 3) { Vector3f vec = new Vector3f(data); normalTransformation.transform(vec); vec.normalize(); data = new float[4]; vec.get(data); } super.put(element, data); }
@Override public void put(int element, float... data) { VertexFormatElement.EnumUsage usage = parent.getVertexFormat().getElement(element).getUsage(); // transform normals and position if (usage == VertexFormatElement.EnumUsage.POSITION && data.length >= 3) { Vector4f vec = new Vector4f(data[0], data[1], data[2], 1f); transformation.transform(vec); data = new float[4]; vec.get(data); } else if (usage == VertexFormatElement.EnumUsage.NORMAL && data.length >= 3) { Vector3f vec = new Vector3f(data); normalTransformation.transform(vec); vec.normalize(); data = new float[4]; vec.get(data); } super.put(element, data); }
@Override public void put(int element, float... data) { VertexFormatElement.EnumUsage usage = parent.getVertexFormat().getElement(element).getUsage(); // transform normals and position if (usage == VertexFormatElement.EnumUsage.POSITION && data.length >= 3) { Vector4f vec = new Vector4f(data); vec.setW(1.0f); transformation.transform(vec); data = new float[4]; vec.get(data); } else if (usage == VertexFormatElement.EnumUsage.NORMAL && data.length >= 3) { Vector3f vec = new Vector3f(data); normalTransformation.transform(vec); vec.normalize(); data = new float[4]; vec.get(data); } super.put(element, data); }
@Override public void put(int element, float... data) { VertexFormatElement.EnumUsage usage = parent.getVertexFormat().getElement(element).getUsage(); // transform normals and position if (usage == VertexFormatElement.EnumUsage.POSITION && data.length >= 3) { Vector4f vec = new Vector4f(data); vec.setW(1.0f); transformation.transform(vec); data = new float[4]; vec.get(data); } else if (usage == VertexFormatElement.EnumUsage.NORMAL && data.length >= 3) { Vector3f vec = new Vector3f(data); normalTransformation.transform(vec); vec.normalize(); data = new float[4]; vec.get(data); } super.put(element, data); }
public static Vector4f generateRandomVector4f(Random random, Tuple4f lowerBound, Tuple4f upperBound) { Vector4f ret = new Vector4f(); ret.setX(generateRandomFloatInRange(random, lowerBound.getX(), upperBound.getX())); ret.setY(generateRandomFloatInRange(random, lowerBound.getY(), upperBound.getY())); ret.setZ(generateRandomFloatInRange(random, lowerBound.getZ(), upperBound.getZ())); ret.setW(generateRandomFloatInRange(random, lowerBound.getW(), upperBound.getW())); return ret; }