Skip to content

Commit e3bf888

Browse files
committed
Merge remote-tracking branch 'origin/feat/serializers' into feat/serializers
# Conflicts: # surf-api-core/surf-api-core-api/src/main/kotlin/dev/slne/surf/surfapi/core/api/serializer/SurfSerializerModule.kt
2 parents f2a6c5d + 4450aba commit e3bf888

File tree

13 files changed

+349
-4
lines changed

13 files changed

+349
-4
lines changed

.idea/misc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Lines changed: 0 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

surf-api-core/surf-api-core-api/src/main/kotlin/dev/slne/surf/surfapi/core/api/serializer/SurfSerializerModule.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,16 @@ import dev.slne.surf.surfapi.core.api.serializer.spongepowered.math.vector.vnd.S
3030
import dev.slne.surf.surfapi.core.api.serializer.spongepowered.math.vector.vnf.SpongeVectorNfSerializer
3131
import dev.slne.surf.surfapi.core.api.serializer.spongepowered.math.vector.vni.SpongeVectorNiSerializer
3232
import dev.slne.surf.surfapi.core.api.serializer.spongepowered.math.vector.vnl.SpongeVectorNlSerializer
33+
import dev.slne.surf.surfapi.core.api.serializer.spongepowered.matrix.m2d.SpongeMatrix2dSerializer
34+
import dev.slne.surf.surfapi.core.api.serializer.spongepowered.matrix.m2f.SpongeMatrix2fSerializer
35+
import dev.slne.surf.surfapi.core.api.serializer.spongepowered.matrix.m3d.SpongeMatrix3dSerializer
36+
import dev.slne.surf.surfapi.core.api.serializer.spongepowered.matrix.m3f.SpongeMatrix3fSerializer
37+
import dev.slne.surf.surfapi.core.api.serializer.spongepowered.matrix.m4d.SpongeMatrix4dSerializer
38+
import dev.slne.surf.surfapi.core.api.serializer.spongepowered.matrix.m4f.SpongeMatrix4fSerializer
39+
import dev.slne.surf.surfapi.core.api.serializer.spongepowered.matrix.mnd.SpongeMatrixNdSerializer
40+
import dev.slne.surf.surfapi.core.api.serializer.spongepowered.matrix.mnf.SpongeMatrixNfSerializer
41+
import dev.slne.surf.surfapi.core.api.serializer.spongepowered.quaternion.qnd.SpongeQuaterniondSerializer
42+
import dev.slne.surf.surfapi.core.api.serializer.spongepowered.quaternion.qnf.SpongeQuaternionfSerializer
3343
import kotlinx.serialization.modules.SerializersModule
3444
import kotlinx.serialization.modules.contextual
3545

@@ -66,6 +76,17 @@ object SurfSerializerModule {
6676
contextual(SpongeVectorNfSerializer)
6777
contextual(SpongeVectorNiSerializer)
6878
contextual(SpongeVectorNlSerializer)
79+
80+
contextual(SpongeMatrix2dSerializer)
81+
contextual(SpongeMatrix2fSerializer)
82+
contextual(SpongeMatrix3dSerializer)
83+
contextual(SpongeMatrix3fSerializer)
84+
contextual(SpongeMatrix4dSerializer)
85+
contextual(SpongeMatrix4fSerializer)
86+
contextual(SpongeMatrixNdSerializer)
87+
contextual(SpongeMatrixNfSerializer)
88+
contextual(SpongeQuaterniondSerializer)
89+
contextual(SpongeQuaternionfSerializer)
6990
}
7091

7192
val java = SerializersModule {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package dev.slne.surf.surfapi.core.api.serializer.spongepowered.matrix.m2d
2+
3+
import kotlinx.serialization.KSerializer
4+
import kotlinx.serialization.Serializable
5+
import kotlinx.serialization.builtins.DoubleArraySerializer
6+
import kotlinx.serialization.descriptors.SerialDescriptor
7+
import kotlinx.serialization.encoding.Decoder
8+
import kotlinx.serialization.encoding.Encoder
9+
import org.spongepowered.math.matrix.Matrix2d
10+
11+
typealias SerializableMatrix2d = @Serializable(with = SpongeMatrix2dSerializer::class) Matrix2d
12+
13+
object SpongeMatrix2dSerializer : KSerializer<Matrix2d> {
14+
private val arraySerializer = DoubleArraySerializer()
15+
override val descriptor =
16+
SerialDescriptor("surfapi.sponge.Matrix2d", arraySerializer.descriptor)
17+
18+
override fun serialize(
19+
encoder: Encoder,
20+
value: Matrix2d,
21+
) {
22+
encoder.encodeSerializableValue(arraySerializer, value.toArray())
23+
}
24+
25+
override fun deserialize(decoder: Decoder): Matrix2d {
26+
val array = decoder.decodeSerializableValue(arraySerializer)
27+
require(array.size == 4) { "Expected array of size 4, got ${array.size}" }
28+
return Matrix2d(
29+
array[0], array[1],
30+
array[2], array[3],
31+
)
32+
}
33+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package dev.slne.surf.surfapi.core.api.serializer.spongepowered.matrix.m2f
2+
3+
import kotlinx.serialization.KSerializer
4+
import kotlinx.serialization.Serializable
5+
import kotlinx.serialization.builtins.FloatArraySerializer
6+
import kotlinx.serialization.descriptors.SerialDescriptor
7+
import kotlinx.serialization.encoding.Decoder
8+
import kotlinx.serialization.encoding.Encoder
9+
import org.spongepowered.math.matrix.Matrix2f
10+
11+
typealias SerializableMatrix2f = @Serializable(with = SpongeMatrix2fSerializer::class) Matrix2f
12+
13+
object SpongeMatrix2fSerializer : KSerializer<Matrix2f> {
14+
private val arraySerializer = FloatArraySerializer()
15+
override val descriptor =
16+
SerialDescriptor("surfapi.sponge.Matrix2f", arraySerializer.descriptor)
17+
18+
override fun serialize(
19+
encoder: Encoder,
20+
value: Matrix2f,
21+
) {
22+
encoder.encodeSerializableValue(arraySerializer, value.toArray())
23+
}
24+
25+
override fun deserialize(decoder: Decoder): Matrix2f {
26+
val array = decoder.decodeSerializableValue(arraySerializer)
27+
require(array.size == 4) { "Expected array of size 4, got ${array.size}" }
28+
return Matrix2f(
29+
array[0], array[1],
30+
array[2], array[3],
31+
)
32+
}
33+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package dev.slne.surf.surfapi.core.api.serializer.spongepowered.matrix.m3d
2+
3+
import dev.slne.surf.surfapi.core.api.serializer.spongepowered.matrix.m2d.SpongeMatrix2dSerializer
4+
import kotlinx.serialization.KSerializer
5+
import kotlinx.serialization.Serializable
6+
import kotlinx.serialization.builtins.DoubleArraySerializer
7+
import kotlinx.serialization.descriptors.SerialDescriptor
8+
import kotlinx.serialization.encoding.Decoder
9+
import kotlinx.serialization.encoding.Encoder
10+
import org.spongepowered.math.matrix.Matrix3d
11+
12+
typealias SerializableMatrix3d = @Serializable(with = SpongeMatrix2dSerializer::class) Matrix3d
13+
14+
object SpongeMatrix3dSerializer : KSerializer<Matrix3d> {
15+
private val arraySerializer = DoubleArraySerializer()
16+
override val descriptor =
17+
SerialDescriptor("surfapi.sponge.Matrix3d", arraySerializer.descriptor)
18+
19+
override fun serialize(
20+
encoder: Encoder,
21+
value: Matrix3d,
22+
) {
23+
encoder.encodeSerializableValue(arraySerializer, value.toArray())
24+
}
25+
26+
override fun deserialize(decoder: Decoder): Matrix3d {
27+
val array = decoder.decodeSerializableValue(arraySerializer)
28+
require(array.size == 9) { "Expected array of size 9, got ${array.size}" }
29+
return Matrix3d(
30+
array[0], array[1], array[2],
31+
array[3], array[4], array[5],
32+
array[6], array[7], array[8],
33+
)
34+
}
35+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package dev.slne.surf.surfapi.core.api.serializer.spongepowered.matrix.m3f
2+
3+
import kotlinx.serialization.KSerializer
4+
import kotlinx.serialization.Serializable
5+
import kotlinx.serialization.builtins.FloatArraySerializer
6+
import kotlinx.serialization.descriptors.SerialDescriptor
7+
import kotlinx.serialization.encoding.Decoder
8+
import kotlinx.serialization.encoding.Encoder
9+
import org.spongepowered.math.matrix.Matrix3f
10+
11+
typealias SerializableMatrix3f = @Serializable(with = SpongeMatrix3fSerializer::class) Matrix3f
12+
13+
object SpongeMatrix3fSerializer : KSerializer<Matrix3f> {
14+
private val arraySerializer = FloatArraySerializer()
15+
override val descriptor =
16+
SerialDescriptor("surfapi.sponge.Matrix3f", arraySerializer.descriptor)
17+
18+
override fun serialize(
19+
encoder: Encoder,
20+
value: Matrix3f,
21+
) {
22+
encoder.encodeSerializableValue(arraySerializer, value.toArray())
23+
}
24+
25+
override fun deserialize(decoder: Decoder): Matrix3f {
26+
val array = decoder.decodeSerializableValue(arraySerializer)
27+
require(array.size == 9) { "Expected array of size 9, got ${array.size}" }
28+
return Matrix3f(
29+
array[0], array[1], array[2],
30+
array[3], array[4], array[5],
31+
array[6], array[7], array[8],
32+
)
33+
}
34+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package dev.slne.surf.surfapi.core.api.serializer.spongepowered.matrix.m4d
2+
3+
import kotlinx.serialization.KSerializer
4+
import kotlinx.serialization.Serializable
5+
import kotlinx.serialization.builtins.DoubleArraySerializer
6+
import kotlinx.serialization.descriptors.SerialDescriptor
7+
import kotlinx.serialization.encoding.Decoder
8+
import kotlinx.serialization.encoding.Encoder
9+
import org.spongepowered.math.matrix.Matrix4d
10+
11+
typealias SerializableMatrix4d = @Serializable(with = SpongeMatrix4dSerializer::class) Matrix4d
12+
13+
object SpongeMatrix4dSerializer : KSerializer<Matrix4d> {
14+
private val arraySerializer = DoubleArraySerializer()
15+
override val descriptor =
16+
SerialDescriptor("surfapi.sponge.Matrix4d", arraySerializer.descriptor)
17+
18+
override fun serialize(
19+
encoder: Encoder,
20+
value: Matrix4d,
21+
) {
22+
encoder.encodeSerializableValue(arraySerializer, value.toArray())
23+
}
24+
25+
override fun deserialize(decoder: Decoder): Matrix4d {
26+
val array = decoder.decodeSerializableValue(arraySerializer)
27+
require(array.size == 16) { "Expected array of size 16, got ${array.size}" }
28+
return Matrix4d(
29+
array[0], array[1], array[2], array[3],
30+
array[4], array[5], array[6], array[7],
31+
array[8], array[9], array[10], array[11],
32+
array[12], array[13], array[14], array[15],
33+
)
34+
}
35+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package dev.slne.surf.surfapi.core.api.serializer.spongepowered.matrix.m4f
2+
3+
import kotlinx.serialization.KSerializer
4+
import kotlinx.serialization.Serializable
5+
import kotlinx.serialization.builtins.FloatArraySerializer
6+
import kotlinx.serialization.descriptors.SerialDescriptor
7+
import kotlinx.serialization.encoding.Decoder
8+
import kotlinx.serialization.encoding.Encoder
9+
import org.spongepowered.math.matrix.Matrix4f
10+
11+
typealias SerializableMatrix4f = @Serializable(with = SpongeMatrix4fSerializer::class) Matrix4f
12+
13+
object SpongeMatrix4fSerializer : KSerializer<Matrix4f> {
14+
private val arraySerializer = FloatArraySerializer()
15+
override val descriptor =
16+
SerialDescriptor("surfapi.sponge.Matrix4f", arraySerializer.descriptor)
17+
18+
override fun serialize(
19+
encoder: Encoder,
20+
value: Matrix4f,
21+
) {
22+
encoder.encodeSerializableValue(arraySerializer, value.toArray())
23+
}
24+
25+
override fun deserialize(decoder: Decoder): Matrix4f {
26+
val array = decoder.decodeSerializableValue(arraySerializer)
27+
require(array.size == 16) { "Expected array of size 16, got ${array.size}" }
28+
return Matrix4f(
29+
array[0], array[1], array[2], array[3],
30+
array[4], array[5], array[6], array[7],
31+
array[8], array[9], array[10], array[11],
32+
array[12], array[13], array[14], array[15],
33+
)
34+
}
35+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package dev.slne.surf.surfapi.core.api.serializer.spongepowered.matrix.mnd
2+
3+
import kotlinx.serialization.KSerializer
4+
import kotlinx.serialization.Serializable
5+
import kotlinx.serialization.builtins.DoubleArraySerializer
6+
import kotlinx.serialization.descriptors.SerialDescriptor
7+
import kotlinx.serialization.encoding.Decoder
8+
import kotlinx.serialization.encoding.Encoder
9+
import org.spongepowered.math.matrix.MatrixNd
10+
11+
typealias SerializableMatrixNd = @Serializable(with = SpongeMatrixNdSerializer::class) MatrixNd
12+
13+
object SpongeMatrixNdSerializer : KSerializer<MatrixNd> {
14+
private val arraySerializer = DoubleArraySerializer()
15+
override val descriptor =
16+
SerialDescriptor("surfapi.sponge.MatrixNd", arraySerializer.descriptor)
17+
18+
override fun serialize(
19+
encoder: Encoder,
20+
value: MatrixNd,
21+
) {
22+
encoder.encodeSerializableValue(arraySerializer, value.toArray())
23+
}
24+
25+
override fun deserialize(decoder: Decoder): MatrixNd {
26+
val decodeSerializableValue = decoder.decodeSerializableValue(arraySerializer)
27+
return MatrixNd(*decodeSerializableValue)
28+
}
29+
}

0 commit comments

Comments
 (0)