|
@@ -77,6 +77,21 @@ public class Quad extends Mesh {
|
|
updateGeometry(width, height, flipCoords);
|
|
updateGeometry(width, height, flipCoords);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Create a quad with the given width and height. The quad
|
|
|
|
+ * is always created in the XY plane.
|
|
|
|
+ *
|
|
|
|
+ * @param width The X extent or width
|
|
|
|
+ * @param height The Y extent or width
|
|
|
|
+ * @param flipCoords If true, the texture coordinates will be flipped
|
|
|
|
+ * along the Y axis.
|
|
|
|
+ * @param originAtCenter If true then the origin of the quad will be at the center
|
|
|
|
+ * of the quad, rather than at one corner.
|
|
|
|
+ */
|
|
|
|
+ public Quad(float width, float height, boolean flipCoords, boolean originAtCenter){
|
|
|
|
+ updateGeometry(width, height, flipCoords, originAtCenter);
|
|
|
|
+ }
|
|
|
|
+
|
|
public float getHeight() {
|
|
public float getHeight() {
|
|
return height;
|
|
return height;
|
|
}
|
|
}
|
|
@@ -88,16 +103,29 @@ public class Quad extends Mesh {
|
|
public void updateGeometry(float width, float height){
|
|
public void updateGeometry(float width, float height){
|
|
updateGeometry(width, height, false);
|
|
updateGeometry(width, height, false);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
public void updateGeometry(float width, float height, boolean flipCoords) {
|
|
public void updateGeometry(float width, float height, boolean flipCoords) {
|
|
|
|
+ updateGeometry(width, height, flipCoords, false);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void updateGeometry(float width, float height, boolean flipCoords, boolean originAtCenter) {
|
|
this.width = width;
|
|
this.width = width;
|
|
this.height = height;
|
|
this.height = height;
|
|
- setBuffer(Type.Position, 3, new float[]{0, 0, 0,
|
|
|
|
- width, 0, 0,
|
|
|
|
- width, height, 0,
|
|
|
|
- 0, height, 0
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
|
|
+ if (originAtCenter) {
|
|
|
|
+ float halfWidth = width*0.5f;
|
|
|
|
+ float halfHeight = height*0.5f;
|
|
|
|
+ setBuffer(Type.Position, 3, new float[]{-halfWidth, -halfHeight, 0,
|
|
|
|
+ halfWidth, -halfHeight, 0,
|
|
|
|
+ halfWidth, halfHeight, 0,
|
|
|
|
+ -halfWidth, halfHeight, 0
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ setBuffer(Type.Position, 3, new float[]{0, 0, 0,
|
|
|
|
+ width, 0, 0,
|
|
|
|
+ width, height, 0,
|
|
|
|
+ 0, height, 0
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
|
|
if (flipCoords){
|
|
if (flipCoords){
|
|
setBuffer(Type.TexCoord, 2, new float[]{0, 1,
|
|
setBuffer(Type.TexCoord, 2, new float[]{0, 1,
|