Spaces:
Build error
Build error
File size: 1,688 Bytes
d46f4a3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
package net.minecraft.client.sounds;
import com.google.common.collect.Lists;
import it.unimi.dsi.fastutil.floats.FloatConsumer;
import java.nio.ByteBuffer;
import java.util.List;
import net.minecraft.util.Mth;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import org.lwjgl.BufferUtils;
@OnlyIn(Dist.CLIENT)
public class ChunkedSampleByteBuf implements FloatConsumer {
private final List<ByteBuffer> buffers = Lists.newArrayList();
private final int bufferSize;
private int byteCount;
private ByteBuffer currentBuffer;
public ChunkedSampleByteBuf(int p_330452_) {
this.bufferSize = p_330452_ + 1 & -2;
this.currentBuffer = BufferUtils.createByteBuffer(p_330452_);
}
@Override
public void accept(float p_332948_) {
if (this.currentBuffer.remaining() == 0) {
this.currentBuffer.flip();
this.buffers.add(this.currentBuffer);
this.currentBuffer = BufferUtils.createByteBuffer(this.bufferSize);
}
int i = Mth.clamp((int)(p_332948_ * 32767.5F - 0.5F), -32768, 32767);
this.currentBuffer.putShort((short)i);
this.byteCount += 2;
}
public ByteBuffer get() {
this.currentBuffer.flip();
if (this.buffers.isEmpty()) {
return this.currentBuffer;
} else {
ByteBuffer bytebuffer = BufferUtils.createByteBuffer(this.byteCount);
this.buffers.forEach(bytebuffer::put);
bytebuffer.put(this.currentBuffer);
bytebuffer.flip();
return bytebuffer;
}
}
public int size() {
return this.byteCount;
}
} |