private void addNormal(final Md2GlCommand cmd, final Md2Frame frame, final int normalIndex, final FloatBufferData norms) { final int index = cmd.vertIndices[normalIndex]; final byte[] vertData = frame.vertData; Md2Normals.getNormalVector(vertData[index * 4 + 3], calcVert); norms.getBuffer().put(calcVert.getXf()).put(calcVert.getYf()).put(calcVert.getZf()); }
/** * * <code>setVertexData</code> sets the vertex positions that define the box. These eight points are determined from * the minimum and maximum point. * */ private void setVertexData() { _meshData.setVertexBuffer(BufferUtils.createVector3Buffer(_meshData.getVertexBuffer(), 8)); final Vector3[] vert = computeVertices(); // returns 8 _meshData.getVertexBuffer().clear(); _meshData.getVertexBuffer().put(vert[0].getXf()).put(vert[0].getYf()).put(vert[0].getZf()); _meshData.getVertexBuffer().put(vert[1].getXf()).put(vert[1].getYf()).put(vert[1].getZf()); _meshData.getVertexBuffer().put(vert[2].getXf()).put(vert[2].getYf()).put(vert[2].getZf()); _meshData.getVertexBuffer().put(vert[3].getXf()).put(vert[3].getYf()).put(vert[3].getZf()); _meshData.getVertexBuffer().put(vert[4].getXf()).put(vert[4].getYf()).put(vert[4].getZf()); _meshData.getVertexBuffer().put(vert[5].getXf()).put(vert[5].getYf()).put(vert[5].getZf()); _meshData.getVertexBuffer().put(vert[6].getXf()).put(vert[6].getYf()).put(vert[6].getZf()); _meshData.getVertexBuffer().put(vert[7].getXf()).put(vert[7].getYf()).put(vert[7].getZf()); }
verts.put(vert3.getXf()).put(vert3.getYf()).put(vert3.getZf()); verts.put(vert2.getXf()).put(vert2.getYf()).put(vert2.getZf()); verts.put(vert1.getXf()).put(vert1.getYf()).put(vert1.getZf()); verts.put(vert0.getXf()).put(vert0.getYf()).put(vert0.getZf()); verts.put(vert0.getXf()).put(vert0.getYf()).put(vert0.getZf()); verts.put(vert1.getXf()).put(vert1.getYf()).put(vert1.getZf()); verts.put(peak.getXf()).put(peak.getYf()).put(peak.getZf()); verts.put(vert1.getXf()).put(vert1.getYf()).put(vert1.getZf()); verts.put(vert2.getXf()).put(vert2.getYf()).put(vert2.getZf()); verts.put(peak.getXf()).put(peak.getYf()).put(peak.getZf()); verts.put(vert2.getXf()).put(vert2.getYf()).put(vert2.getZf()); verts.put(vert3.getXf()).put(vert3.getYf()).put(vert3.getZf()); verts.put(peak.getXf()).put(peak.getYf()).put(peak.getZf()); verts.put(vert3.getXf()).put(vert3.getYf()).put(vert3.getZf()); verts.put(vert0.getXf()).put(vert0.getYf()).put(vert0.getZf()); verts.put(peak.getXf()).put(peak.getYf()).put(peak.getZf());
private void addVert(final Md2GlCommand cmd, final Md2Frame frame, final int vertIndex, final FloatBufferData verts) { final int index = cmd.vertIndices[vertIndex]; final byte[] vertData = frame.vertData; calcVert.set(vertData[index * 4 + 0] & 0xFF, vertData[index * 4 + 1] & 0xFF, vertData[index * 4 + 2] & 0xFF); calcVert.multiplyLocal(frame.scale).addLocal(frame.translate); verts.getBuffer().put(calcVert.getXf()).put(calcVert.getYf()).put(calcVert.getZf()); }
/** * * <code>setVertexData</code> sets the vertex positions that define the box. These eight points are determined from * the minimum and maximum point. * */ private void setVertexData() { _meshData.setVertexBuffer(BufferUtils.createVector3Buffer(_meshData.getVertexBuffer(), 8)); final Vector3[] vert = computeVertices(); // returns 8 _meshData.getVertexBuffer().clear(); _meshData.getVertexBuffer().put(vert[0].getXf()).put(vert[0].getYf()).put(vert[0].getZf()); _meshData.getVertexBuffer().put(vert[1].getXf()).put(vert[1].getYf()).put(vert[1].getZf()); _meshData.getVertexBuffer().put(vert[2].getXf()).put(vert[2].getYf()).put(vert[2].getZf()); _meshData.getVertexBuffer().put(vert[3].getXf()).put(vert[3].getYf()).put(vert[3].getZf()); _meshData.getVertexBuffer().put(vert[4].getXf()).put(vert[4].getYf()).put(vert[4].getZf()); _meshData.getVertexBuffer().put(vert[5].getXf()).put(vert[5].getYf()).put(vert[5].getZf()); _meshData.getVertexBuffer().put(vert[6].getXf()).put(vert[6].getYf()).put(vert[6].getZf()); _meshData.getVertexBuffer().put(vert[7].getXf()).put(vert[7].getYf()).put(vert[7].getZf()); }
verts.put(vert3.getXf()).put(vert3.getYf()).put(vert3.getZf()); verts.put(vert2.getXf()).put(vert2.getYf()).put(vert2.getZf()); verts.put(vert1.getXf()).put(vert1.getYf()).put(vert1.getZf()); verts.put(vert0.getXf()).put(vert0.getYf()).put(vert0.getZf()); verts.put(vert0.getXf()).put(vert0.getYf()).put(vert0.getZf()); verts.put(vert1.getXf()).put(vert1.getYf()).put(vert1.getZf()); verts.put(peak.getXf()).put(peak.getYf()).put(peak.getZf()); verts.put(vert1.getXf()).put(vert1.getYf()).put(vert1.getZf()); verts.put(vert2.getXf()).put(vert2.getYf()).put(vert2.getZf()); verts.put(peak.getXf()).put(peak.getYf()).put(peak.getZf()); verts.put(vert2.getXf()).put(vert2.getYf()).put(vert2.getZf()); verts.put(vert3.getXf()).put(vert3.getYf()).put(vert3.getZf()); verts.put(peak.getXf()).put(peak.getYf()).put(peak.getZf()); verts.put(vert3.getXf()).put(vert3.getYf()).put(vert3.getZf()); verts.put(vert0.getXf()).put(vert0.getYf()).put(vert0.getZf()); verts.put(peak.getXf()).put(peak.getYf()).put(peak.getZf());
@Override public void getGLApplyMatrix(final FloatBuffer store) { if (_rotationMatrix) { store.put(0, (float) (_scale.getX() * _matrix._m00)); store.put(1, (float) (_scale.getX() * _matrix._m10)); store.put(2, (float) (_scale.getX() * _matrix._m20)); store.put(4, (float) (_scale.getY() * _matrix._m01)); store.put(5, (float) (_scale.getY() * _matrix._m11)); store.put(6, (float) (_scale.getY() * _matrix._m21)); store.put(8, (float) (_scale.getZ() * _matrix._m02)); store.put(9, (float) (_scale.getZ() * _matrix._m12)); store.put(10, (float) (_scale.getZ() * _matrix._m22)); } else { store.put(0, (float) _matrix._m00); store.put(1, (float) _matrix._m10); store.put(2, (float) _matrix._m20); store.put(4, (float) _matrix._m01); store.put(5, (float) _matrix._m11); store.put(6, (float) _matrix._m21); store.put(8, (float) _matrix._m02); store.put(9, (float) _matrix._m12); store.put(10, (float) _matrix._m22); } store.put(12, _translation.getXf()); store.put(13, _translation.getYf()); store.put(14, _translation.getZf()); store.put(15, 1.0f); }
store.put(13, _translation.getYf()); store.put(14, _translation.getZf()); store.put(15, 1f);
private Rectangle2 getRelativeComponentBounds(final Rectangle2 store, final int width, final int height) { final ReadOnlyTransform local = getTransform(); if (local.isIdentity() || local.getMatrix().isIdentity()) { store.set(0, 0, width, height); } else { float minX, maxX, minY, maxY; final Vector3 t = Vector3.fetchTempInstance(); t.set(width, height, 0); local.applyForwardVector(t); minX = Math.min(t.getXf(), 0); maxX = Math.max(t.getXf(), 0); minY = Math.min(t.getYf(), 0); maxY = Math.max(t.getYf(), 0); t.set(0, height, 0); local.applyForwardVector(t); minX = Math.min(t.getXf(), minX); maxX = Math.max(t.getXf(), maxX); minY = Math.min(t.getYf(), minY); maxY = Math.max(t.getYf(), maxY); t.set(width, 0, 0); local.applyForwardVector(t); minX = Math.min(t.getXf(), minX); maxX = Math.max(t.getXf(), maxX); minY = Math.min(t.getYf(), minY); maxY = Math.max(t.getYf(), maxY); Vector3.releaseTempInstance(t); store.set(Math.round(minX), Math.round(minY), Math.round(maxX - minX), Math.round(maxY - minY)); } return store; }
private Rectangle2 getRelativeComponentBounds(final Rectangle2 store, final int width, final int height) { final ReadOnlyTransform local = getTransform(); if (local.isIdentity() || local.getMatrix().isIdentity()) { store.set(0, 0, width, height); } else { float minX, maxX, minY, maxY; final Vector3 t = Vector3.fetchTempInstance(); t.set(width, height, 0); local.applyForwardVector(t); minX = Math.min(t.getXf(), 0); maxX = Math.max(t.getXf(), 0); minY = Math.min(t.getYf(), 0); maxY = Math.max(t.getYf(), 0); t.set(0, height, 0); local.applyForwardVector(t); minX = Math.min(t.getXf(), minX); maxX = Math.max(t.getXf(), maxX); minY = Math.min(t.getYf(), minY); maxY = Math.max(t.getYf(), maxY); t.set(width, 0, 0); local.applyForwardVector(t); minX = Math.min(t.getXf(), minX); maxX = Math.max(t.getXf(), maxX); minY = Math.min(t.getYf(), minY); maxY = Math.max(t.getYf(), maxY); Vector3.releaseTempInstance(t); store.set(Math.round(minX), Math.round(minY), Math.round(maxX - minX), Math.round(maxY - minY)); } return store; }
public void startDrag(final int mouseX, final int mouseY) { final Vector3 vec = Vector3.fetchTempInstance(); vec.set(mouseX, mouseY, 0); _uiFrameStatusBar.getWorldTransform().applyInverseVector(vec); _initialX = Math.round(vec.getXf()); _initialY = Math.round(vec.getYf()); Vector3.releaseTempInstance(vec); final UIFrame frame = UIFrame.findParentFrame(_uiFrameStatusBar); _initialLocalComponentWidth = frame.getLocalComponentWidth(); _initialLocalComponentHeight = frame.getLocalComponentHeight(); _initFrameTransform.set(frame.getWorldTransform()); }
public void startDrag(final int mouseX, final int mouseY) { final Vector3 vec = Vector3.fetchTempInstance(); vec.set(mouseX, mouseY, 0); _uiFrameStatusBar.getWorldTransform().applyInverseVector(vec); _initialX = Math.round(vec.getXf()); _initialY = Math.round(vec.getYf()); Vector3.releaseTempInstance(vec); final UIFrame frame = UIFrame.findParentFrame(_uiFrameStatusBar); _initialLocalComponentWidth = frame.getLocalComponentWidth(); _initialLocalComponentHeight = frame.getLocalComponentHeight(); _initFrameTransform.set(frame.getWorldTransform()); }
/** * * <code>setNormalData</code> sets the normals of each of the box's planes. * * */ private void setNormalData() { final Vector3[] vert = computeVertices(); // returns 8 _meshData.setNormalBuffer(BufferUtils.createVector3Buffer(_meshData.getNormalBuffer(), 8)); final Vector3 norm = new Vector3(); _meshData.getNormalBuffer().clear(); for (int i = 0; i < 8; i++) { norm.set(vert[i]).normalizeLocal(); _meshData.getNormalBuffer().put(norm.getXf()).put(norm.getYf()).put(norm.getZf()); } }
public float getHeightAt(final double x, final double z) { final Vector3 heightCalc = new Vector3(x, 0, z); worldToLocal(heightCalc, heightCalc); final float height = getClipmaps().get(0).getCache().getSubHeight(heightCalc.getXf(), heightCalc.getZf()); heightCalc.set(x, height, z); localToWorld(heightCalc, heightCalc); return heightCalc.getYf(); }
/** * * <code>setNormalData</code> sets the normals of each of the box's planes. * * */ private void setNormalData() { final Vector3[] vert = computeVertices(); // returns 8 _meshData.setNormalBuffer(BufferUtils.createVector3Buffer(_meshData.getNormalBuffer(), 8)); final Vector3 norm = new Vector3(); _meshData.getNormalBuffer().clear(); for (int i = 0; i < 8; i++) { norm.set(vert[i]).normalizeLocal(); _meshData.getNormalBuffer().put(norm.getXf()).put(norm.getYf()).put(norm.getZf()); } }
/** * Get height of the terrain at the given world coordinates. This height will correlate to the finest level of * detail, currently valid clipmap level at the given coordinates. * * @param x * world x-coordinate * @param z * world z-coordinate * @return the height, in world coordinate */ public float getHeightAt(final double x, final double z) { final Vector3 heightCalc = new Vector3(x, 0, z); worldToLocal(heightCalc, heightCalc); final float height = getClipmaps().get(0).getCache().getSubHeight(heightCalc.getXf(), heightCalc.getZf()); heightCalc.set(x, height, z); localToWorld(heightCalc, heightCalc); return heightCalc.getYf(); }
final int y = Math.round(vec.getYf());
final int y = Math.round(vec.getYf());