Move vectors io to streams
This commit is contained in:
parent
50a3fa6865
commit
d9a6d97c4f
@ -1,41 +1,48 @@
|
||||
package ru.dbotthepony.kstarbound.io
|
||||
|
||||
import it.unimi.dsi.fastutil.bytes.ByteArrayList
|
||||
import ru.dbotthepony.kommons.io.DelegateSyncher
|
||||
import ru.dbotthepony.kommons.io.StreamCodec
|
||||
import ru.dbotthepony.kommons.io.readBinaryString
|
||||
import ru.dbotthepony.kommons.util.IStruct2d
|
||||
import ru.dbotthepony.kommons.util.IStruct2i
|
||||
import ru.dbotthepony.kommons.io.readDouble
|
||||
import ru.dbotthepony.kommons.io.readFloat
|
||||
import ru.dbotthepony.kommons.io.readLong
|
||||
import ru.dbotthepony.kommons.io.readInt
|
||||
import ru.dbotthepony.kommons.io.readSignedVarInt
|
||||
import ru.dbotthepony.kstarbound.math.vector.readVector2d
|
||||
import ru.dbotthepony.kstarbound.math.vector.readVector2f
|
||||
import ru.dbotthepony.kommons.io.writeBinaryString
|
||||
import ru.dbotthepony.kommons.io.writeDouble
|
||||
import ru.dbotthepony.kommons.io.writeFloat
|
||||
import ru.dbotthepony.kommons.io.writeLong
|
||||
import ru.dbotthepony.kommons.io.writeSignedVarInt
|
||||
import ru.dbotthepony.kommons.io.writeStruct2d
|
||||
import ru.dbotthepony.kommons.io.writeStruct2f
|
||||
import ru.dbotthepony.kommons.io.writeStruct2i
|
||||
import ru.dbotthepony.kommons.io.writeStruct3d
|
||||
import ru.dbotthepony.kommons.io.writeStruct3f
|
||||
import ru.dbotthepony.kommons.io.writeStruct3i
|
||||
import ru.dbotthepony.kommons.io.writeStruct4d
|
||||
import ru.dbotthepony.kommons.io.writeStruct4f
|
||||
import ru.dbotthepony.kommons.io.writeStruct4i
|
||||
import ru.dbotthepony.kommons.math.RGBAColor
|
||||
import ru.dbotthepony.kstarbound.math.AABB
|
||||
import ru.dbotthepony.kommons.util.DelegateGetter
|
||||
import ru.dbotthepony.kommons.util.DelegateSetter
|
||||
import ru.dbotthepony.kommons.util.Either
|
||||
import ru.dbotthepony.kommons.util.IStruct2d
|
||||
import ru.dbotthepony.kommons.util.KOptional
|
||||
import ru.dbotthepony.kstarbound.math.vector.Vector2d
|
||||
import ru.dbotthepony.kstarbound.math.vector.Vector2i
|
||||
import ru.dbotthepony.kommons.util.ListenableDelegate
|
||||
import ru.dbotthepony.kstarbound.Starbound
|
||||
import ru.dbotthepony.kstarbound.math.AABB
|
||||
import ru.dbotthepony.kstarbound.math.vector.Vector2d
|
||||
import ru.dbotthepony.kstarbound.math.vector.Vector2f
|
||||
import ru.dbotthepony.kstarbound.math.vector.Vector2i
|
||||
import ru.dbotthepony.kstarbound.math.vector.Vector3d
|
||||
import ru.dbotthepony.kstarbound.math.vector.Vector3f
|
||||
import ru.dbotthepony.kstarbound.math.vector.Vector3i
|
||||
import ru.dbotthepony.kstarbound.math.vector.Vector4d
|
||||
import ru.dbotthepony.kstarbound.math.vector.Vector4f
|
||||
import ru.dbotthepony.kstarbound.math.vector.Vector4i
|
||||
import ru.dbotthepony.kstarbound.world.ChunkPos
|
||||
import java.io.DataInput
|
||||
import java.io.DataOutput
|
||||
import java.io.DataInputStream
|
||||
import java.io.DataOutputStream
|
||||
import java.io.EOFException
|
||||
import java.io.IOException
|
||||
import java.io.InputStream
|
||||
import java.io.OutputStream
|
||||
import java.io.RandomAccessFile
|
||||
import java.util.*
|
||||
import java.util.function.IntConsumer
|
||||
import java.util.function.IntSupplier
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
fun InputStream.readByteChar(): Char {
|
||||
return read().toChar()
|
||||
@ -199,3 +206,60 @@ fun OutputStream.writeNullableDouble(value: Double?) = writeNullable(value) { wr
|
||||
fun OutputStream.writeNullableDouble(value: Double?, isLegacy: Boolean) = writeNullable(value) { if (isLegacy) writeFloat(it.toFloat()) else writeDouble(it) }
|
||||
fun OutputStream.writeDouble(value: Double, isLegacy: Boolean) = if (isLegacy) writeFloat(value.toFloat()) else writeDouble(value)
|
||||
fun OutputStream.writeStruct2d(value: IStruct2d, isLegacy: Boolean) = if (isLegacy) { writeFloat(value.component1().toFloat()); writeFloat(value.component2().toFloat()) } else { writeDouble(value.component1()); writeDouble(value.component2()) }
|
||||
|
||||
private inline fun <T, I> InputStream.read2(factory: (I, I) -> T, reader: (InputStream) -> I): T {
|
||||
return factory(reader(this), reader(this))
|
||||
}
|
||||
|
||||
private inline fun <T, I> InputStream.read3(factory: (I, I, I) -> T, reader: (InputStream) -> I): T {
|
||||
return factory(reader(this), reader(this), reader(this))
|
||||
}
|
||||
|
||||
private inline fun <T, I> InputStream.read4(factory: (I, I, I, I) -> T, reader: (InputStream) -> I): T {
|
||||
return factory(reader(this), reader(this), reader(this), reader(this))
|
||||
}
|
||||
|
||||
fun InputStream.readVector2i() = read2(::Vector2i) { it.readInt() }
|
||||
fun InputStream.readVector2d() = read2(::Vector2d) { it.readDouble() }
|
||||
fun InputStream.readVector2f() = read2(::Vector2f) { it.readFloat() }
|
||||
|
||||
fun InputStream.readVector3i() = read3(::Vector3i) { it.readInt() }
|
||||
fun InputStream.readVector3d() = read3(::Vector3d) { it.readDouble() }
|
||||
fun InputStream.readVector3f() = read3(::Vector3f) { it.readFloat() }
|
||||
|
||||
fun InputStream.readVector4i() = read4(::Vector4i) { it.readInt() }
|
||||
fun InputStream.readVector4d() = read4(::Vector4d) { it.readDouble() }
|
||||
fun InputStream.readVector4f() = read4(::Vector4f) { it.readFloat() }
|
||||
|
||||
val Vector2iCodec = StreamCodec.Impl(DataInputStream::readVector2i, DataOutputStream::writeStruct2i)
|
||||
val Vector2dCodec = StreamCodec.Impl(DataInputStream::readVector2d, DataOutputStream::writeStruct2d)
|
||||
val Vector2fCodec = StreamCodec.Impl(DataInputStream::readVector2f, DataOutputStream::writeStruct2f)
|
||||
|
||||
val Vector3iCodec = StreamCodec.Impl(DataInputStream::readVector3i, DataOutputStream::writeStruct3i)
|
||||
val Vector3dCodec = StreamCodec.Impl(DataInputStream::readVector3d, DataOutputStream::writeStruct3d)
|
||||
val Vector3fCodec = StreamCodec.Impl(DataInputStream::readVector3f, DataOutputStream::writeStruct3f)
|
||||
|
||||
val Vector4iCodec = StreamCodec.Impl(DataInputStream::readVector4i, DataOutputStream::writeStruct4i)
|
||||
val Vector4dCodec = StreamCodec.Impl(DataInputStream::readVector4d, DataOutputStream::writeStruct4d)
|
||||
val Vector4fCodec = StreamCodec.Impl(DataInputStream::readVector4f, DataOutputStream::writeStruct4f)
|
||||
|
||||
fun DelegateSyncher.vec2i(value: Vector2i, setter: DelegateSetter<Vector2i> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector2i> = DelegateGetter.passthrough()) = Slot(
|
||||
ListenableDelegate.maskSmart(value, getter, setter), Vector2iCodec)
|
||||
fun DelegateSyncher.vec2d(value: Vector2d, setter: DelegateSetter<Vector2d> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector2d> = DelegateGetter.passthrough()) = Slot(
|
||||
ListenableDelegate.maskSmart(value, getter, setter), Vector2dCodec)
|
||||
fun DelegateSyncher.vec2f(value: Vector2f, setter: DelegateSetter<Vector2f> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector2f> = DelegateGetter.passthrough()) = Slot(
|
||||
ListenableDelegate.maskSmart(value, getter, setter), Vector2fCodec)
|
||||
|
||||
fun DelegateSyncher.vec3i(value: Vector3i, setter: DelegateSetter<Vector3i> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector3i> = DelegateGetter.passthrough()) = Slot(
|
||||
ListenableDelegate.maskSmart(value, getter, setter), Vector3iCodec)
|
||||
fun DelegateSyncher.vec3d(value: Vector3d, setter: DelegateSetter<Vector3d> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector3d> = DelegateGetter.passthrough()) = Slot(
|
||||
ListenableDelegate.maskSmart(value, getter, setter), Vector3dCodec)
|
||||
fun DelegateSyncher.vec3f(value: Vector3f, setter: DelegateSetter<Vector3f> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector3f> = DelegateGetter.passthrough()) = Slot(
|
||||
ListenableDelegate.maskSmart(value, getter, setter), Vector3fCodec)
|
||||
|
||||
fun DelegateSyncher.vec4i(value: Vector4i, setter: DelegateSetter<Vector4i> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector4i> = DelegateGetter.passthrough()) = Slot(
|
||||
ListenableDelegate.maskSmart(value, getter, setter), Vector4iCodec)
|
||||
fun DelegateSyncher.vec4d(value: Vector4d, setter: DelegateSetter<Vector4d> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector4d> = DelegateGetter.passthrough()) = Slot(
|
||||
ListenableDelegate.maskSmart(value, getter, setter), Vector4dCodec)
|
||||
fun DelegateSyncher.vec4f(value: Vector4f, setter: DelegateSetter<Vector4f> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector4f> = DelegateGetter.passthrough()) = Slot(
|
||||
ListenableDelegate.maskSmart(value, getter, setter), Vector4fCodec)
|
||||
|
@ -1,72 +0,0 @@
|
||||
package ru.dbotthepony.kstarbound.math.vector
|
||||
|
||||
import ru.dbotthepony.kommons.io.DelegateSyncher
|
||||
import ru.dbotthepony.kommons.io.StreamCodec
|
||||
import ru.dbotthepony.kommons.io.readDouble
|
||||
import ru.dbotthepony.kommons.io.readFloat
|
||||
import ru.dbotthepony.kommons.io.readInt
|
||||
import ru.dbotthepony.kommons.io.writeStruct2d
|
||||
import ru.dbotthepony.kommons.io.writeStruct2f
|
||||
import ru.dbotthepony.kommons.io.writeStruct2i
|
||||
import ru.dbotthepony.kommons.io.writeStruct3d
|
||||
import ru.dbotthepony.kommons.io.writeStruct3f
|
||||
import ru.dbotthepony.kommons.io.writeStruct3i
|
||||
import ru.dbotthepony.kommons.io.writeStruct4d
|
||||
import ru.dbotthepony.kommons.io.writeStruct4f
|
||||
import ru.dbotthepony.kommons.io.writeStruct4i
|
||||
import ru.dbotthepony.kommons.util.DelegateGetter
|
||||
import ru.dbotthepony.kommons.util.DelegateSetter
|
||||
import ru.dbotthepony.kommons.util.ListenableDelegate
|
||||
import ru.dbotthepony.kstarbound.io.readDouble
|
||||
import ru.dbotthepony.kstarbound.io.writeStruct2d
|
||||
import java.io.DataInputStream
|
||||
import java.io.DataOutputStream
|
||||
import java.io.InputStream
|
||||
|
||||
private inline fun <T, I> InputStream.read2(factory: (I, I) -> T, reader: (InputStream) -> I): T {
|
||||
return factory(reader(this), reader(this))
|
||||
}
|
||||
|
||||
private inline fun <T, I> InputStream.read3(factory: (I, I, I) -> T, reader: (InputStream) -> I): T {
|
||||
return factory(reader(this), reader(this), reader(this))
|
||||
}
|
||||
|
||||
private inline fun <T, I> InputStream.read4(factory: (I, I, I, I) -> T, reader: (InputStream) -> I): T {
|
||||
return factory(reader(this), reader(this), reader(this), reader(this))
|
||||
}
|
||||
|
||||
fun InputStream.readVector2i() = read2(::Vector2i) { it.readInt() }
|
||||
fun InputStream.readVector2d() = read2(::Vector2d) { it.readDouble() }
|
||||
fun InputStream.readVector2f() = read2(::Vector2f) { it.readFloat() }
|
||||
|
||||
fun InputStream.readVector3i() = read3(::Vector3i) { it.readInt() }
|
||||
fun InputStream.readVector3d() = read3(::Vector3d) { it.readDouble() }
|
||||
fun InputStream.readVector3f() = read3(::Vector3f) { it.readFloat() }
|
||||
|
||||
fun InputStream.readVector4i() = read4(::Vector4i) { it.readInt() }
|
||||
fun InputStream.readVector4d() = read4(::Vector4d) { it.readDouble() }
|
||||
fun InputStream.readVector4f() = read4(::Vector4f) { it.readFloat() }
|
||||
|
||||
val Vector2iCodec = StreamCodec.Impl(DataInputStream::readVector2i, DataOutputStream::writeStruct2i)
|
||||
val Vector2dCodec = StreamCodec.Impl(DataInputStream::readVector2d, DataOutputStream::writeStruct2d)
|
||||
val Vector2fCodec = StreamCodec.Impl(DataInputStream::readVector2f, DataOutputStream::writeStruct2f)
|
||||
|
||||
val Vector3iCodec = StreamCodec.Impl(DataInputStream::readVector3i, DataOutputStream::writeStruct3i)
|
||||
val Vector3dCodec = StreamCodec.Impl(DataInputStream::readVector3d, DataOutputStream::writeStruct3d)
|
||||
val Vector3fCodec = StreamCodec.Impl(DataInputStream::readVector3f, DataOutputStream::writeStruct3f)
|
||||
|
||||
val Vector4iCodec = StreamCodec.Impl(DataInputStream::readVector4i, DataOutputStream::writeStruct4i)
|
||||
val Vector4dCodec = StreamCodec.Impl(DataInputStream::readVector4d, DataOutputStream::writeStruct4d)
|
||||
val Vector4fCodec = StreamCodec.Impl(DataInputStream::readVector4f, DataOutputStream::writeStruct4f)
|
||||
|
||||
fun DelegateSyncher.vec2i(value: Vector2i, setter: DelegateSetter<Vector2i> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector2i> = DelegateGetter.passthrough()) = Slot(ListenableDelegate.maskSmart(value, getter, setter), Vector2iCodec)
|
||||
fun DelegateSyncher.vec2d(value: Vector2d, setter: DelegateSetter<Vector2d> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector2d> = DelegateGetter.passthrough()) = Slot(ListenableDelegate.maskSmart(value, getter, setter), Vector2dCodec)
|
||||
fun DelegateSyncher.vec2f(value: Vector2f, setter: DelegateSetter<Vector2f> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector2f> = DelegateGetter.passthrough()) = Slot(ListenableDelegate.maskSmart(value, getter, setter), Vector2fCodec)
|
||||
|
||||
fun DelegateSyncher.vec3i(value: Vector3i, setter: DelegateSetter<Vector3i> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector3i> = DelegateGetter.passthrough()) = Slot(ListenableDelegate.maskSmart(value, getter, setter), Vector3iCodec)
|
||||
fun DelegateSyncher.vec3d(value: Vector3d, setter: DelegateSetter<Vector3d> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector3d> = DelegateGetter.passthrough()) = Slot(ListenableDelegate.maskSmart(value, getter, setter), Vector3dCodec)
|
||||
fun DelegateSyncher.vec3f(value: Vector3f, setter: DelegateSetter<Vector3f> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector3f> = DelegateGetter.passthrough()) = Slot(ListenableDelegate.maskSmart(value, getter, setter), Vector3fCodec)
|
||||
|
||||
fun DelegateSyncher.vec4i(value: Vector4i, setter: DelegateSetter<Vector4i> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector4i> = DelegateGetter.passthrough()) = Slot(ListenableDelegate.maskSmart(value, getter, setter), Vector4iCodec)
|
||||
fun DelegateSyncher.vec4d(value: Vector4d, setter: DelegateSetter<Vector4d> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector4d> = DelegateGetter.passthrough()) = Slot(ListenableDelegate.maskSmart(value, getter, setter), Vector4dCodec)
|
||||
fun DelegateSyncher.vec4f(value: Vector4f, setter: DelegateSetter<Vector4f> = DelegateSetter.passthrough(), getter: DelegateGetter<Vector4f> = DelegateGetter.passthrough()) = Slot(ListenableDelegate.maskSmart(value, getter, setter), Vector4fCodec)
|
Loading…
Reference in New Issue
Block a user