Class BinaryExporter
- All Implemented Interfaces:
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
-
Field Summary
Modifier and TypeFieldDescriptionprotected int
static boolean
protected int
static boolean
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected byte[]
fixClassAlias
(byte[] bytes, int width) protected byte[]
getCapsule
(Savable object) Returns theOutputCapsule
for the given savable object.static BinaryExporter
int
processBinarySavable
(Savable object) void
Export theSavable
to a file.void
save
(Savable object, OutputStream os) Export theSavable
to an OutputStream.static <T extends Savable>
TsaveAndLoad
(AssetManager assetManager, T object) Saves the object into memory then loads it from memory.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.jme3.export.JmeExporter
save
-
Field Details
-
aliasCount
protected int aliasCount -
idCount
protected int idCount -
locationTable
-
debug
public static boolean debug -
useFastBufs
public static boolean useFastBufs
-
-
Constructor Details
-
BinaryExporter
public BinaryExporter()
-
-
Method Details
-
getInstance
-
saveAndLoad
Saves the object into memory then loads it from memory. Used by tests to check if the persistence system is working.- Type Parameters:
T
- The type of savable.- Parameters:
assetManager
- AssetManager to load assets from.object
- The object to save and then load.- Returns:
- A new instance that has been saved and loaded from the original object.
-
save
Description copied from interface:JmeExporter
Export theSavable
to an OutputStream.- Specified by:
save
in interfaceJmeExporter
- Parameters:
object
- The savable to exportos
- The output stream- Throws:
IOException
- If an io exception occurs during export
-
fixClassAlias
protected byte[] fixClassAlias(byte[] bytes, int width) -
save
Description copied from interface:JmeExporter
Export theSavable
to a file. If the path to the file doesn't exist, the parent directories can be created if thecreateDirectories
flag is true. If the path does not exist andcreateDirectories
is false, then an exception is thrown.- Specified by:
save
in interfaceJmeExporter
- Parameters:
object
- The savable to exportf
- The file to export tocreateDirectories
- flag to indicate if the directories should be created- Throws:
IOException
- If an io exception occurs during export
-
getCapsule
Description copied from interface:JmeExporter
Returns theOutputCapsule
for the given savable object.- Specified by:
getCapsule
in interfaceJmeExporter
- Parameters:
object
- The object to retrieve an output capsule for.- Returns:
- the
OutputCapsule
for the given savable object.
-
processBinarySavable
- Throws:
IOException
-
generateTag
protected byte[] generateTag()
-