first commit
This commit is contained in:
66
Minecraft.World/FloatBuffer.cpp
Normal file
66
Minecraft.World/FloatBuffer.cpp
Normal file
@@ -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];
|
||||
}
|
||||
Reference in New Issue
Block a user