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) throws IOException
      Description copied from interface: JmeExporter
      Export the Savable to a file.
      Specified by:
      save in interface JmeExporter
      Parameters:
      object - The savable to export
      f - The file to export to
      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()