diff --git a/protocol/src/main/resources/gdscript/buffer/ByteBuffer.gd b/protocol/src/main/resources/gdscript/buffer/ByteBuffer.gd index e9f4aaf2..f86aeec4 100644 --- a/protocol/src/main/resources/gdscript/buffer/ByteBuffer.gd +++ b/protocol/src/main/resources/gdscript/buffer/ByteBuffer.gd @@ -131,6 +131,7 @@ func writeIntCount(value: int) -> int: if !(minInt <= value && value <= maxInt): printerr("value must range between minInt:-2147483648 and maxInt:2147483647") return 0 + value = (value << 1) ^ (value >> 63) if value >> 7 == 0: return 1 if value >> 14 == 0: diff --git a/protocol/src/test/gdscript/zfoogd/ByteBuffer.gd b/protocol/src/test/gdscript/zfoogd/ByteBuffer.gd index 848014b5..d54de737 100644 --- a/protocol/src/test/gdscript/zfoogd/ByteBuffer.gd +++ b/protocol/src/test/gdscript/zfoogd/ByteBuffer.gd @@ -25,11 +25,14 @@ func adjustPadding(predictionLength: int, beforeWriteIndex: int) -> void: setWriteOffset(currentWriteIndex) else: buffer.seek(currentWriteIndex - length) - var retainedByteBuf = buffer.get_partial_data(length) - buffer.seek(beforeWriteIndex) + var retainedByteBuf = buffer.get_partial_data(length)[1] + setWriteOffset(beforeWriteIndex) writeInt(length) + buffer.seek(beforeWriteIndex + lengthCount) buffer.put_partial_data(retainedByteBuf) - setWriteOffset(getWriteOffset() + length) + var count = beforeWriteIndex + lengthCount + length + buffer.seek(count) + setWriteOffset(count) pass func compatibleRead(beforeReadIndex: int, length: int) -> bool: @@ -131,6 +134,7 @@ func writeIntCount(value: int) -> int: if !(minInt <= value && value <= maxInt): printerr("value must range between minInt:-2147483648 and maxInt:2147483647") return 0 + value = (value << 1) ^ (value >> 63) if value >> 7 == 0: return 1 if value >> 14 == 0: