diff options
Diffstat (limited to 'src/de/gamezock/metacraft/data/VertexBuffer.java')
-rw-r--r-- | src/de/gamezock/metacraft/data/VertexBuffer.java | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/de/gamezock/metacraft/data/VertexBuffer.java b/src/de/gamezock/metacraft/data/VertexBuffer.java new file mode 100644 index 0000000..c2205a0 --- /dev/null +++ b/src/de/gamezock/metacraft/data/VertexBuffer.java @@ -0,0 +1,60 @@ +package de.gamezock.metacraft.data; + +import java.nio.FloatBuffer; + +import javax.vecmath.Point3f; +import javax.vecmath.Tuple3f; +import javax.vecmath.Vector3f; + +public class VertexBuffer { + private FloatBuffer buffer; + + public VertexBuffer(int num) { + buffer = FloatBuffer.allocate(2*3*num); + } + + public FloatBuffer getBuffer() { + return buffer; + } + + private void setTuple(int i, Tuple3f tuple) { + buffer.position(3*i); + + buffer.put(tuple.x); + buffer.put(tuple.y); + buffer.put(tuple.z); + } + + private Point3f getTuple(int i) { + buffer.position(3*i); + + return new Point3f(buffer.get(), buffer.get(), buffer.get()); + } + + public void setNormal(int i, Vector3f normal) { + setTuple(2*i, normal); + } + + public void setVertex(int i, Point3f vertex) { + setTuple(2*i + 1, vertex); + } + + public Vector3f getNormal(int i) { + return new Vector3f(getTuple(2*i)); + } + + public Point3f getVertex(int i) { + return getTuple(2*i + 1); + } + + public int getSize() { + return buffer.capacity() / (2*3); + } + + public void dump() { + buffer.clear(); + + while(buffer.hasRemaining()) + System.out.println(buffer.get()); + } +} |