Set "immutable after" to true if registered before getting

This commit is contained in:
DBotThePony 2022-10-08 13:32:50 +07:00
parent 158bf6b224
commit f7c3f5efeb
Signed by: DBot
GPG Key ID: DCC23B5715498507

View File

@ -57,6 +57,11 @@ private fun equals(existing: ImmutableList<RenderType>?, types: ImmutableList<Re
return true
}
/**
* Consider this class internal, because it is almost as rigid at Mojang's [MultiBufferSource.BufferSource]
*
* Allows to batch OTM's geometry
*/
class DynamicBufferSource(val minimalBufferSize: Int = 0) : MultiBufferSource {
private inner class State(
val type: RenderType,
@ -297,7 +302,7 @@ class DynamicBufferSource(val minimalBufferSize: Int = 0) : MultiBufferSource {
var getState = buffers[renderType]
if (getState == null) {
getState = State(renderType, ImmutableList.of(after))
getState = State(renderType, ImmutableList.of(after), immutableAfter = true)
buffers[renderType] = getState
bufferList.add(getState)
sortBufferList()
@ -311,7 +316,7 @@ class DynamicBufferSource(val minimalBufferSize: Int = 0) : MultiBufferSource {
var getState = buffers[renderType]
if (getState == null) {
getState = State(renderType, ImmutableList.copyOf(after))
getState = State(renderType, ImmutableList.copyOf(after), immutableAfter = true)
buffers[renderType] = getState
bufferList.add(getState)
sortBufferList()
@ -325,7 +330,7 @@ class DynamicBufferSource(val minimalBufferSize: Int = 0) : MultiBufferSource {
var getState = buffers[renderType]
if (getState == null) {
getState = State(renderType, after)
getState = State(renderType, after, immutableAfter = true)
buffers[renderType] = getState
bufferList.add(getState)
sortBufferList()