Class BoundingVolume

java.lang.Object
com.jme3.bounding.BoundingVolume
All Implemented Interfaces:
Collidable, Savable, Cloneable
Direct Known Subclasses:
BoundingBox, BoundingSphere

public abstract class BoundingVolume extends Object implements Savable, Cloneable, Collidable
BoundingVolume defines an interface for dealing with containment of a collection of points.
  • Field Details

    • checkPlane

      protected int checkPlane
    • center

      protected Vector3f center
  • Constructor Details

    • BoundingVolume

      public BoundingVolume()
    • BoundingVolume

      public BoundingVolume(Vector3f center)
  • Method Details

    • getCheckPlane

      public int getCheckPlane()
      Grabs the plane we should check first.
      Returns:
      the index of the plane to be checked first
    • setCheckPlane

      public final void setCheckPlane(int value)
      Sets the index of the plane that should be first checked during rendering.
      Parameters:
      value - the index of the plane to be checked first
    • getType

      public abstract BoundingVolume.Type getType()
      getType returns the type of bounding volume this is.
      Returns:
      an enum value
    • transform

      public final BoundingVolume transform(Transform trans)
      transform alters the location of the bounding volume by a rotation, translation and a scalar.
      Parameters:
      trans - the transform to affect the bound.
      Returns:
      the new bounding volume.
    • transform

      public abstract BoundingVolume transform(Transform trans, BoundingVolume store)
      transform alters the location of the bounding volume by a rotation, translation and a scalar.
      Parameters:
      trans - the transform to affect the bound.
      store - bounding volume to store result in
      Returns:
      the new bounding volume.
    • transform

      public abstract BoundingVolume transform(Matrix4f trans, BoundingVolume store)
    • whichSide

      public abstract Plane.Side whichSide(Plane plane)
      whichSide returns the side on which the bounding volume lies on a plane. Possible values are POSITIVE_SIDE, NEGATIVE_SIDE, and NO_SIDE.
      Parameters:
      plane - the plane to check against this bounding volume.
      Returns:
      the side on which this bounding volume lies.
    • computeFromPoints

      public abstract void computeFromPoints(FloatBuffer points)
      computeFromPoints generates a bounding volume that encompasses a collection of points.
      Parameters:
      points - the points to contain.
    • merge

      public abstract BoundingVolume merge(BoundingVolume volume)
      merge combines two bounding volumes into a single bounding volume that contains both this bounding volume and the parameter volume.
      Parameters:
      volume - the volume to combine.
      Returns:
      the new merged bounding volume.
    • mergeLocal

      public abstract BoundingVolume mergeLocal(BoundingVolume volume)
      mergeLocal combines two bounding volumes into a single bounding volume that contains both this bounding volume and the parameter volume. The result is stored locally.
      Parameters:
      volume - the volume to combine.
      Returns:
      this
    • clone

      public abstract BoundingVolume clone(BoundingVolume store)
      clone creates a new BoundingVolume object containing the same data as this one.
      Parameters:
      store - where to store the cloned information. if null or wrong class, a new store is created.
      Returns:
      the new BoundingVolume
    • equals

      public boolean equals(Object other)
      Tests for exact equality with the argument, distinguishing -0 from 0. If other is null, false is returned. Either way, the current instance is unaffected.
      Overrides:
      equals in class Object
      Parameters:
      other - the object to compare (may be null, unaffected)
      Returns:
      true if this and other have identical values, otherwise false
    • hashCode

      public int hashCode()
      Returns a hash code. If two bounding volumes have identical values, they will have the same hash code. The current instance is unaffected.
      Overrides:
      hashCode in class Object
      Returns:
      a 32-bit value for use in hashing
    • getCenter

      public final Vector3f getCenter()
    • getCenter

      public final Vector3f getCenter(Vector3f store)
    • setCenter

      public final void setCenter(Vector3f newCenter)
    • setCenter

      public final void setCenter(float x, float y, float z)
    • distanceTo

      public final float distanceTo(Vector3f point)
      Find the distance from the center of this Bounding Volume to the given point.
      Parameters:
      point - The point to get the distance to
      Returns:
      distance
    • distanceSquaredTo

      public final float distanceSquaredTo(Vector3f point)
      Find the squared distance from the center of this Bounding Volume to the given point.
      Parameters:
      point - The point to get the distance to
      Returns:
      distance
    • distanceToEdge

      public abstract float distanceToEdge(Vector3f point)
      Find the distance from the nearest edge of this Bounding Volume to the given point.
      Parameters:
      point - The point to get the distance to
      Returns:
      distance
    • intersects

      public abstract boolean intersects(BoundingVolume bv)
      determines if this bounding volume and a second given volume are intersecting. Intersecting being: one volume contains another, one volume overlaps another or one volume touches another.
      Parameters:
      bv - the second volume to test against.
      Returns:
      true if this volume intersects the given volume.
    • intersects

      public abstract boolean intersects(Ray ray)
      determines if a ray intersects this bounding volume.
      Parameters:
      ray - the ray to test.
      Returns:
      true if this volume is intersected by a given ray.
    • intersectsSphere

      public abstract boolean intersectsSphere(BoundingSphere bs)
      determines if this bounding volume and a given bounding sphere are intersecting.
      Parameters:
      bs - the bounding sphere to test against.
      Returns:
      true if this volume intersects the given bounding sphere.
    • intersectsBoundingBox

      public abstract boolean intersectsBoundingBox(BoundingBox bb)
      determines if this bounding volume and a given bounding box are intersecting.
      Parameters:
      bb - the bounding box to test against.
      Returns:
      true if this volume intersects the given bounding box.
    • contains

      public abstract boolean contains(Vector3f point)
      determines if a given point is contained within this bounding volume. If the point is on the edge of the bounding volume, this method will return false. Use intersects(Vector3f) to check for edge intersection.
      Parameters:
      point - the point to check
      Returns:
      true if the point lies within this bounding volume.
    • intersects

      public abstract boolean intersects(Vector3f point)
      Determines if a given point intersects (touches or is inside) this bounding volume.
      Parameters:
      point - the point to check
      Returns:
      true if the point lies within this bounding volume.
    • getVolume

      public abstract float getVolume()
    • clone

      public BoundingVolume clone()
      Overrides:
      clone in class Object
    • write

      public void write(JmeExporter e) throws IOException
      Specified by:
      write in interface Savable
      Throws:
      IOException
    • read

      public void read(JmeImporter importer) throws IOException
      Specified by:
      read in interface Savable
      Throws:
      IOException
    • collideWith

      public int collideWith(Collidable other)