Class BinaryExporter

java.lang.Object
com.jme3.export.binary.BinaryExporter
All Implemented Interfaces:
JmeExporter

public class BinaryExporter extends Object implements JmeExporter
Exports savable objects in jMonkeyEngine's native binary format.

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 Details

    • aliasCount

      protected int aliasCount
    • idCount

      protected int idCount
    • locationTable

      protected HashMap<Integer,Integer> locationTable
    • debug

      public static boolean debug
    • useFastBufs

      public static boolean useFastBufs
  • Constructor Details

    • BinaryExporter

      public BinaryExporter()
  • Method Details

    • getInstance

      public static BinaryExporter getInstance()
    • saveAndLoad

      public static <T extends Savable> T saveAndLoad(AssetManager assetManager, T object)
      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

      public void save(Savable object, OutputStream os) throws IOException
      Description copied from interface: JmeExporter
      Export the Savable to an OutputStream.
      Specified by:
      save in interface JmeExporter
      Parameters:
      object - The savable to export
      os - The output stream
      Throws:
      IOException - If an io exception occurs during export
    • fixClassAlias

      protected byte[] fixClassAlias(byte[] bytes, int width)
    • save

      public void save(Savable object, File f, boolean createDirectories) throws IOException
      Description copied from interface: JmeExporter
      Export the Savable to a file. If the path to the file doesn't exist, the parent directories can be created if the createDirectories flag is true. If the path does not exist and createDirectories is false, then an exception is thrown.
      Specified by:
      save in interface JmeExporter
      Parameters:
      object - The savable to export
      f - The file to export to
      createDirectories - flag to indicate if the directories should be created
      Throws:
      IOException - If an io exception occurs during export
    • getCapsule

      public OutputCapsule getCapsule(Savable object)
      Description copied from interface: JmeExporter
      Returns the OutputCapsule for the given savable object.
      Specified by:
      getCapsule in interface JmeExporter
      Parameters:
      object - The object to retrieve an output capsule for.
      Returns:
      the OutputCapsule for the given savable object.
    • processBinarySavable

      public int processBinarySavable(Savable object) throws IOException
      Throws:
      IOException
    • generateTag

      protected byte[] generateTag()