public class BinaryExporter extends java.lang.Object implements JmeExporter
Format description: (Each numbered item describes a series of bytes that follow sequentially, one after the other.)
1. "signature" - 4 bytes - 0x4A4D4533
2. "version" - 4 bytes - 0x00000002
3. "number of classes" - 4 bytes - number of entries in the class table
CLASS TABLE: X blocks, each consisting of items 4 thru 11, where X = the number of Savable classes from item 3
4. "class alias" - X bytes, where X = ((int) FastMath.log(aliasCount, 256) + 1) - a numeric ID used to refer to a Savable class when reading or writing
5. "full class-name size" - 4 bytes - the number of bytes in item 6
6. "full class name" - X bytes of text, where X = the size from item 5
- the fully qualified class name of the Savable class,
e.g. "com.jme.math.Vector3f"
7. "number of fields" - 4 bytes - the number of saved fields in the Savable class
8. "field alias" - 1 byte - a numeric ID used to refer to a saved field when reading or writing. Because field aliases are only a single byte, no Savable class can save more than 256 fields.
9. "field type" - 1 byte
- the type of data in the saved field. Values are defined in
com.jme.util.export.binary.BinaryClassField
.
10. "field-name size" - 4 bytes - the number of bytes in item 11
11. "field name" - X bytes of text, where X = the size from item 10 - the tag specified when reading or writing the saved field
12. "number of capsules" - 4 bytes - the number of capsules in this stream
LOCATION TABLE: X blocks, each consisting of items 13 and 14, where X = the number of capsules from item 12
13. "data id" - 4 bytes - numeric ID of an object that was saved to this stream
14. "data location" - 4 bytes - the offset in the capsule-data section where the savable object identified in item 13 is stored
15. "future use" - 4 bytes - 0x00000001
16. "root id" - 4 bytes - numeric ID of the top-level savable object CAPSULE-DATA SECTION: X blocks, each consisting of items 17 thru 19, where X = the number of capsules from item 12
17. "class alias" - 4 bytes - see item 4
18. "capsule length" - 4 bytes - the length in bytes of item 19
19. "capsule data" - X bytes of data, where X = the number of bytes from item 18
Modifier and Type | Field and Description |
---|---|
protected int |
aliasCount |
static boolean |
debug |
protected int |
idCount |
protected java.util.HashMap<java.lang.Integer,java.lang.Integer> |
locationTable |
static boolean |
useFastBufs |
Constructor and Description |
---|
BinaryExporter() |
Modifier and Type | Method and Description |
---|---|
protected byte[] |
fixClassAlias(byte[] bytes,
int width) |
protected byte[] |
generateTag() |
OutputCapsule |
getCapsule(Savable object)
Returns the
OutputCapsule for the given savable object. |
static BinaryExporter |
getInstance() |
int |
processBinarySavable(Savable object) |
void |
save(Savable object,
java.io.File f)
Export the
Savable to a file. |
void |
save(Savable object,
java.io.OutputStream os)
Export the
Savable to an OutputStream. |
static <T extends Savable> |
saveAndLoad(AssetManager assetManager,
T object)
Saves the object into memory then loads it from memory.
|
protected int aliasCount
protected int idCount
protected java.util.HashMap<java.lang.Integer,java.lang.Integer> locationTable
public static boolean debug
public static boolean useFastBufs
public static BinaryExporter getInstance()
public static <T extends Savable> T saveAndLoad(AssetManager assetManager, T object)
T
- The type of savable.assetManager
- AssetManager to load assets from.object
- The object to save and then load.public void save(Savable object, java.io.OutputStream os) throws java.io.IOException
JmeExporter
Savable
to an OutputStream.save
in interface JmeExporter
object
- The savable to exportos
- The output streamjava.io.IOException
- If an io exception occurs during exportprotected byte[] fixClassAlias(byte[] bytes, int width)
public void save(Savable object, java.io.File f) throws java.io.IOException
JmeExporter
Savable
to a file.save
in interface JmeExporter
object
- The savable to exportf
- The file to export tojava.io.IOException
- If an io exception occurs during exportpublic OutputCapsule getCapsule(Savable object)
JmeExporter
OutputCapsule
for the given savable object.getCapsule
in interface JmeExporter
object
- The object to retrieve an output capsule for.OutputCapsule
for the given savable object.public int processBinarySavable(Savable object) throws java.io.IOException
java.io.IOException
protected byte[] generateTag()