diff --git a/engine/src/networking/com/jme3/network/serializing/Serializer.java b/engine/src/networking/com/jme3/network/serializing/Serializer.java index d17946155..5b33f53a3 100644 --- a/engine/src/networking/com/jme3/network/serializing/Serializer.java +++ b/engine/src/networking/com/jme3/network/serializing/Serializer.java @@ -132,7 +132,7 @@ public abstract class Serializer { Serializable serializable = (Serializable)cls.getAnnotation(Serializable.class); Class serializerClass = serializable.serializer(); - short classId = serializable.id(); + short classId = serializable.id(); if (classId == 0) classId = --nextId; Serializer serializer = getSerializer(serializerClass); diff --git a/engine/src/networking/com/jme3/network/serializing/serializers/FieldSerializer.java b/engine/src/networking/com/jme3/network/serializing/serializers/FieldSerializer.java index 742e5c45c..8e9565b2b 100644 --- a/engine/src/networking/com/jme3/network/serializing/serializers/FieldSerializer.java +++ b/engine/src/networking/com/jme3/network/serializing/serializers/FieldSerializer.java @@ -88,6 +88,11 @@ public class FieldSerializer extends Serializer { } public T readObject(ByteBuffer data, Class c) throws IOException { + + // Read the null/non-null marker + if (data.get() == 0x0) + return null; + SavedField[] fields = savedFields.get(c); T object; @@ -117,6 +122,14 @@ public class FieldSerializer extends Serializer { } public void writeObject(ByteBuffer buffer, Object object) throws IOException { + + // Add the null/non-null marker + buffer.put( (byte)(object != null ? 0x1 : 0x0) ); + if (object == null) { + // Nothing left to do + return; + } + SavedField[] fields = savedFields.get(object.getClass()); if (fields == null) throw new IOException("The " + object.getClass() + " is not registered"