aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/FloatBuffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.World/FloatBuffer.cpp')
-rw-r--r--Minecraft.World/FloatBuffer.cpp66
1 files changed, 66 insertions, 0 deletions
diff --git a/Minecraft.World/FloatBuffer.cpp b/Minecraft.World/FloatBuffer.cpp
new file mode 100644
index 00000000..6fe0fd02
--- /dev/null
+++ b/Minecraft.World/FloatBuffer.cpp
@@ -0,0 +1,66 @@
+#include "stdafx.h"
+#include "FloatBuffer.h"
+
+//Allocates a new float buffer.
+//The new buffer's position will be zero, its limit will be its capacity, and its mark will be undefined.
+//It will have a backing array, and its array offset will be zero.
+//
+//Parameters:
+//capacity - The new buffer's capacity, in floats
+FloatBuffer::FloatBuffer(unsigned int capacity) : Buffer( capacity )
+{
+ buffer = new float[capacity];
+ memset( buffer,0,sizeof(float)*capacity);
+}
+
+FloatBuffer::FloatBuffer( unsigned int capacity, float *backingArray ) : Buffer( capacity )
+{
+ hasBackingArray = true;
+ buffer = backingArray;
+}
+
+FloatBuffer::~FloatBuffer()
+{
+ if( !hasBackingArray )
+ delete[] buffer;
+}
+
+//Flips this buffer. The limit is set to the current position and then the position is set to zero.
+//If the mark is defined then it is discarded.
+//
+//Returns:
+//This buffer
+FloatBuffer *FloatBuffer::flip()
+{
+ m_limit = m_position;
+ m_position = 0;
+ return this;
+}
+
+//Relative put method (optional operation).
+//Writes the given float into this buffer at the current position, and then increments the position.
+//
+//Parameters:
+//f - The float to be written
+//Returns:
+//This buffer
+FloatBuffer *FloatBuffer::put(float f)
+{
+ buffer[m_position++] = f;
+ return this;
+}
+
+//Relative bulk get method.
+//This method transfers floats from this buffer into the given destination array.
+//An invocation of this method of the form src.get(a) behaves in exactly the same way as the invocation
+//
+// src.get(a, 0, a.length)
+//Returns:
+//This buffer
+void FloatBuffer::get(floatArray *dst)
+{
+ assert( dst->length <= m_capacity );
+
+ for (unsigned int i = 0; i < dst->length; i++)
+ dst->data[i] = buffer[i];
+} \ No newline at end of file