Added the ability to create a quad with the origin at the center.

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@10695 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
Zer..om 12 years ago
parent 413bbbf680
commit 81d7a145a7
  1. 30
      engine/src/core/com/jme3/scene/shape/Quad.java

@ -77,6 +77,21 @@ public class Quad extends Mesh {
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() {
return height;
}
@ -90,14 +105,27 @@ public class Quad extends Mesh {
}
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.height = height;
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){
setBuffer(Type.TexCoord, 2, new float[]{0, 1,

Loading…
Cancel
Save