From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- Minecraft.World/FloatBuffer.cpp | 66 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Minecraft.World/FloatBuffer.cpp (limited to 'Minecraft.World/FloatBuffer.cpp') 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 -- cgit v1.2.3