]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/common/messages/BoundingBoxSerializer.java
Tidy up
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / common / messages / BoundingBoxSerializer.java
1 package com.irtimaled.bbor.common.messages;
2
3 import com.irtimaled.bbor.common.models.AbstractBoundingBox;
4 import com.irtimaled.bbor.common.models.BoundingBoxCuboid;
5
6 import java.util.HashMap;
7 import java.util.Map;
8 import java.util.function.BiConsumer;
9
10 class BoundingBoxSerializer {
11     private static final Map<Class, BiConsumer<AbstractBoundingBox, PayloadBuilder>> serializers = new HashMap<>();
12
13     static {
14         serializers.put(BoundingBoxCuboid.class, (bb, pb) -> serializeStructure((BoundingBoxCuboid) bb, pb));
15     }
16
17     static boolean canSerialize(AbstractBoundingBox key) {
18         return serializers.containsKey(key.getClass());
19     }
20
21     static void serialize(AbstractBoundingBox boundingBox, PayloadBuilder builder) {
22         BiConsumer<AbstractBoundingBox, PayloadBuilder> serializer = serializers.get(boundingBox.getClass());
23         if (serializer == null) return;
24
25         serializer.accept(boundingBox, builder);
26     }
27
28     private static void serializeStructure(BoundingBoxCuboid boundingBox, PayloadBuilder builder) {
29         builder.writeChar('S')
30                 .writeInt(boundingBox.getType().hashCode())
31                 .writeCoords(boundingBox.getMinCoords())
32                 .writeCoords(boundingBox.getMaxCoords());
33     }
34 }