Class SoftBodyControl

java.lang.Object
com.jme3.bullet.control.AbstractPhysicsControl
com.jme3.bullet.control.SoftBodyControl
All Implemented Interfaces:
PhysicsControl, com.jme3.export.Savable, com.jme3.scene.control.Control, com.jme3.util.clone.JmeCloneable, Cloneable

public class SoftBodyControl extends AbstractPhysicsControl
A PhysicsControl to link a PhysicsSoftBody to a Spatial.
  • Field Details

    • logger2

      public static final Logger logger2
      message logger for this class
  • Constructor Details

    • SoftBodyControl

      public SoftBodyControl()
      Instantiate an enabled Control for a soft body based on a single Geometry. Merge duplicate vertices, match physics-space coordinates to world coordinates, and update mesh normals if present.
    • SoftBodyControl

      public SoftBodyControl(boolean localPhysics, boolean updateNormals, boolean mergeVertices)
      Instantiate an enabled Control for a soft body based on a single Geometry.
      Parameters:
      localPhysics - true → match physics-space coordinates to the spatial's local coordinates, false → match physics-space coordinates to world coordinates
      updateNormals - true→update mesh normals if present, false→never update mesh normals (default=true)
      mergeVertices - true→merge duplicate vertices in the soft body, false→don't merge duplicate vertices (default=true), see NativeSoftBodyUtil.generateIndexMap(java.nio.FloatBuffer)
    • SoftBodyControl

      public SoftBodyControl(boolean localPhysics, boolean updateNormals, boolean mergeVertices, UseTriangles useTriangles)
      Instantiate an enabled Control for a soft body based on a single Geometry.
      Parameters:
      localPhysics - true → match physics-space coordinates to the spatial's local coordinates, false → match physics-space coordinates to world coordinates
      updateNormals - true→update mesh normals if present, false→never update mesh normals (default=true)
      mergeVertices - true→merge duplicate vertices in the soft body, false→don't merge duplicate vertices (default=true), see NativeSoftBodyUtil.generateIndexMap(java.nio.FloatBuffer)
      useTriangles - how to use triangle indices (not null, default=FacesOnly)
  • Method Details

    • getBody

      public PhysicsSoftBody getBody()
      Access the soft body managed by this Control.
      Returns:
      the pre-existing instance, or null if the Control is not added to a Spatial
    • addPhysics

      protected void addPhysics()
      Add all managed physics objects to the PhysicsSpace.
      Specified by:
      addPhysics in class AbstractPhysicsControl
    • cloneFields

      public void cloneFields(com.jme3.util.clone.Cloner cloner, Object original)
      Callback from Cloner to convert this shallow-cloned Control into a deep-cloned one, using the specified Cloner and original to resolve copied fields.
      Specified by:
      cloneFields in interface com.jme3.util.clone.JmeCloneable
      Overrides:
      cloneFields in class AbstractPhysicsControl
      Parameters:
      cloner - the Cloner that's cloning this Control (not null, modified)
      original - the instance from which this Control was shallow-cloned (not null)
    • createSpatialData

      protected void createSpatialData(com.jme3.scene.Spatial spatial)
      Create spatial-dependent data. Invoked when this Control is added to a Spatial.
      Specified by:
      createSpatialData in class AbstractPhysicsControl
      Parameters:
      spatial - the controlled Spatial (not null, alias created)
    • read

      public void read(com.jme3.export.JmeImporter importer) throws IOException
      De-serialize this Control from the specified importer, for example when loading from a J3O file.
      Specified by:
      read in interface com.jme3.export.Savable
      Overrides:
      read in class AbstractPhysicsControl
      Parameters:
      importer - (not null)
      Throws:
      IOException - from the importer
    • removePhysics

      protected void removePhysics()
      Remove all managed physics objects from the PhysicsSpace.
      Specified by:
      removePhysics in class AbstractPhysicsControl
    • removeSpatialData

      protected void removeSpatialData(com.jme3.scene.Spatial spatial)
      Destroy spatial-dependent data. Invoked when this Control is removed from its Spatial.
      Specified by:
      removeSpatialData in class AbstractPhysicsControl
      Parameters:
      spatial - the Spatial to which this Control was added (unused)
    • setPhysicsLocation

      public void setPhysicsLocation(com.jme3.math.Vector3f location)
      Translate the soft body to the specified location.
      Specified by:
      setPhysicsLocation in class AbstractPhysicsControl
      Parameters:
      location - the desired location (in physics-space coordinates, not null, finite, unaffected)
    • setPhysicsRotation

      protected void setPhysicsRotation(com.jme3.math.Quaternion orientation)
      Rotate the soft body to the specified orientation.
      Specified by:
      setPhysicsRotation in class AbstractPhysicsControl
      Parameters:
      orientation - the desired orientation (in physics-space coordinates, not null, unaffected)
    • setPhysicsSpace

      public void setPhysicsSpace(PhysicsSpace newSpace)
      If enabled, add this control's physics object to the specified PhysicsSpace. If not enabled, alter where the object would be added. The object is removed from any other space it's currently in.
      Specified by:
      setPhysicsSpace in interface PhysicsControl
      Overrides:
      setPhysicsSpace in class AbstractPhysicsControl
      Parameters:
      newSpace - where to add, or null to simply remove
    • update

      public void update(float tpf)
      Update this Control. Invoked once per frame during the logical-state update, provided the Control is added to a scene. Do not invoke directly from user code.
      Parameters:
      tpf - the time interval between frames (in seconds, ≥0)
    • write

      public void write(com.jme3.export.JmeExporter exporter) throws IOException
      Serialize this Control to the specified exporter, for example when saving to a J3O file.
      Specified by:
      write in interface com.jme3.export.Savable
      Overrides:
      write in class AbstractPhysicsControl
      Parameters:
      exporter - (not null)
      Throws:
      IOException - from the exporter