diff options
Diffstat (limited to 'src/main/java/makamys/lodmod/util')
| -rw-r--r-- | src/main/java/makamys/lodmod/util/BufferWriter.java | 46 | ||||
| -rw-r--r-- | src/main/java/makamys/lodmod/util/Util.java | 6 |
2 files changed, 50 insertions, 2 deletions
diff --git a/src/main/java/makamys/lodmod/util/BufferWriter.java b/src/main/java/makamys/lodmod/util/BufferWriter.java new file mode 100644 index 0000000..ae81be1 --- /dev/null +++ b/src/main/java/makamys/lodmod/util/BufferWriter.java @@ -0,0 +1,46 @@ +package makamys.lodmod.util; + +import java.nio.ByteBuffer; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; +import java.nio.ShortBuffer; + +public class BufferWriter { + + private ByteBuffer buf; + + private FloatBuffer floatBuffer; + private ShortBuffer shortBuffer; + private IntBuffer intBuffer; + + public BufferWriter(ByteBuffer buf) { + this.buf = buf; + this.floatBuffer = buf.asFloatBuffer(); + this.shortBuffer = buf.asShortBuffer(); + this.intBuffer = buf.asIntBuffer(); + } + + private void incrementPosition(int add) { + buf.position(buf.position() + add); + floatBuffer.position(buf.position() / 4); + shortBuffer.position(buf.position() / 2); + intBuffer.position(buf.position() / 4); + } + + public void writeFloat(float x) { + try { + floatBuffer.put(x); + + incrementPosition(4); + } catch(Exception e){ + e.printStackTrace(); + } + } + + public void writeInt(int x) { + intBuffer.put(x); + + incrementPosition(4); + } + +}
\ No newline at end of file diff --git a/src/main/java/makamys/lodmod/util/Util.java b/src/main/java/makamys/lodmod/util/Util.java index ae80b78..851e6f5 100644 --- a/src/main/java/makamys/lodmod/util/Util.java +++ b/src/main/java/makamys/lodmod/util/Util.java @@ -53,9 +53,11 @@ public class Util { } public static byte[] byteBufferToArray(ByteBuffer buffer) { - byte[] dst = new byte[buffer.remaining()]; + byte[] dst = new byte[buffer.limit()]; + int pos = buffer.position(); + buffer.position(0); buffer.get(dst); - buffer.flip(); + buffer.position(pos); return dst; } |
