anchor.diff:  ----
   
   *  You can add as many data objects (of String, Boolean, Integer, Float, Array types) to a Spatial as you want. Just make sure to label them with unique case-sensitive strings (`health`, `Inventory`, `equipment`, etc).
  -*  The saved data can even be a custom Java object if you make the custom Java class <<jme3/advanced/save_and_load#custom_savable_class,implement the Savable interface>>!
  +*  The saved data can even be a custom Java object if you make the custom Java class xref:jme3/advanced/save_and_load.adoc#custom-savable-class[implement the Savable interface]!
   *  When you save a Spatial as a .j3o file, the custom data is saved, too, and all Savables are restored the next time you load the .j3o!
   
   This is how you list all data keys that are already defined for one Spatial:
  
positive.code: = Spatial
  :author:
  :revnumber:
  :revdate: 2016/03/17 20:48
  :keywords: spatial, node, mesh, geometry, scenegraph
  :relfileprefix: ../../
  :imagesdir: ../..
  ifdef::env-github,env-browser[:outfilesuffix: .adoc]
  
  
  This is an introduction to the concept of Spatials, the elements of the 3D scene graph. The scene graph is a data structure that manages all objects in your 3D world. For example, the scene graph keeps track of the 3D models that you load and position. When you extend a Java class from com.jme3.app.SimpleApplication, you automatically inherit the scene graph and its rootNode.
  
negative.code: playerNode.setUserData("health", 100);
  ----
  
  The second example adds a set of custom accessor methods to the player object. You create a xref:jme3/advanced/custom_controls.adoc[custom PlayerControl() class] and you add this control to the Spatial:
  
  [source,java]
  ----
  