Files
MinecraftConsoles/Minecraft.World/FloatBuffer.cpp
2026-03-01 12:16:08 +08:00

66 lines
1.7 KiB
C++

#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];
}