If enum has null value and it is saved by BinaryExporter.
It can't be restored.
patch
Index: src/com/jme/util/export/binary/BinaryOutputCapsule.java
===================================================================
--- src/com/jme/util/export/binary/BinaryOutputCapsule.java (revision 4533)
+++ src/com/jme/util/export/binary/BinaryOutputCapsule.java (working copy)
@@ -870,7 +870,6 @@
if (value == defVal)
return;
if (value == null) {
- write(NULL_OBJECT);
return;
} else {
write(value.name(), name, null);
Here is the test code
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import com.jme.util.export.InputCapsule;
import com.jme.util.export.JMEExporter;
import com.jme.util.export.JMEImporter;
import com.jme.util.export.OutputCapsule;
import com.jme.util.export.Savable;
import com.rontab.bim.loader.JmeUtil;
public class TestEnum {
public enum E {
A, B, C
}
public class Sav implements Savable {
@Override
public Class getClassTag() {
return getClass();
}
@Override
public void read(JMEImporter im) throws IOException {
InputCapsule in = im.getCapsule(this);
in.readEnum("enum", E.class, null);
}
@Override
public void write(JMEExporter ex) throws IOException {
OutputCapsule out = ex.getCapsule(this);
out.write((E)null, "enum", null);
}
}
public static void main(String[] args) {
HitCondition cond = new HitCondition();
File file = new File("C:/test.rb");
try {
JmeUtil.instance().save(cond, file, false);
JmeUtil.instance().load(new FileInputStream(file));
} catch (IOException e) {
e.printStackTrace();
}
}
}