ChunkedSampleByteBuf.java
net.minecraft.client.sounds.ChunkedSampleByteBuf
信息
- 全限定名:net.minecraft.client.sounds.ChunkedSampleByteBuf
- 类型:public class
- 包:net.minecraft.client.sounds
- 源码路径:src/main/java/net/minecraft/client/sounds/ChunkedSampleByteBuf.java
- 起始行号:L13
- 实现:FloatConsumer
- 职责:
TODO
字段/常量
-
buffers- 类型:
List<ByteBuffer> - 修饰符:
private final - 源码定位:
L14 - 说明:
TODO
- 类型:
-
bufferSize- 类型:
int - 修饰符:
private final - 源码定位:
L15 - 说明:
TODO
- 类型:
-
byteCount- 类型:
int - 修饰符:
private - 源码定位:
L16 - 说明:
TODO
- 类型:
-
currentBuffer- 类型:
ByteBuffer - 修饰符:
private - 源码定位:
L17 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public ChunkedSampleByteBuf(int bufferSize) @ L19
- 构造器名:ChunkedSampleByteBuf
- 源码定位:L19
- 修饰符:public
参数:
- bufferSize: int
说明:
TODO
方法
下面的方法块按源码顺序生成。
public void accept(float sample) @ L24
- 方法名:accept
- 源码定位:L24
- 返回类型:void
- 修饰符:public
参数:
- sample: float
说明:
TODO
public ByteBuffer get() @ L37
- 方法名:get
- 源码定位:L37
- 返回类型:ByteBuffer
- 修饰符:public
参数:
- 无
说明:
TODO
public int size() @ L50
- 方法名:size
- 源码定位:L50
- 返回类型:int
- 修饰符:public
参数:
- 无
说明:
TODO
代码
@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 bufferSize) {
this.bufferSize = bufferSize + 1 & -2;
this.currentBuffer = BufferUtils.createByteBuffer(bufferSize);
}
@Override
public void accept(float sample) {
if (this.currentBuffer.remaining() == 0) {
this.currentBuffer.flip();
this.buffers.add(this.currentBuffer);
this.currentBuffer = BufferUtils.createByteBuffer(this.bufferSize);
}
int intVal = Mth.clamp((int)(sample * 32767.5F - 0.5F), -32768, 32767);
this.currentBuffer.putShort((short)intVal);
this.byteCount += 2;
}
public ByteBuffer get() {
this.currentBuffer.flip();
if (this.buffers.isEmpty()) {
return this.currentBuffer;
} else {
ByteBuffer result = BufferUtils.createByteBuffer(this.byteCount);
this.buffers.forEach(result::put);
result.put(this.currentBuffer);
result.flip();
return result;
}
}
public int size() {
return this.byteCount;
}
}引用的其他类
- Mth
- 引用位置:
方法调用 - 关联成员:
Mth.clamp()
- 引用位置: