Package com.jme3.bullet.collision.shapes
Class SphericalSegment
java.lang.Object
com.jme3.bullet.NativePhysicsObject
com.jme3.bullet.collision.shapes.CollisionShape
com.jme3.bullet.collision.shapes.ConvexShape
com.jme3.bullet.collision.shapes.SphericalSegment
- All Implemented Interfaces:
com.jme3.export.Savable
,com.jme3.util.clone.JmeCloneable
,Cloneable
,Comparable<NativePhysicsObject>
A collision shape for a spherical segment with uniform density, based on
btConvexInternalShape
. By convention, both bases are orthogonal to
the local Y axis.
This is an imprecise shape; margin always expands the shape.
-
Field Summary
Fields inherited from class com.jme3.bullet.collision.shapes.ConvexShape
loggerX
Fields inherited from class com.jme3.bullet.collision.shapes.CollisionShape
enableContactFilter, logger, margin, scale
Fields inherited from class com.jme3.bullet.NativePhysicsObject
loggerN
-
Constructor Summary
ModifierConstructorDescriptionprotected
No-argument constructor needed by SavableClassUtil.SphericalSegment
(float radius) Instantiate a hemisphere with the specified radius.SphericalSegment
(float radius, float yMax, float yMin) Instantiate a spherical segment with the specified dimensions. -
Method Summary
Modifier and TypeMethodDescriptionboolean
canScale
(com.jme3.math.Vector3f scale) Test whether the specified scale factors can be applied to the shape.void
cloneFields
(com.jme3.util.clone.Cloner cloner, Object original) Callback fromCloner
to convert this shallow-cloned shape into a deep-cloned one, using the specified Cloner and original to resolve copied fields.float
Return the height of the segment.float
Calculate how far the scaled shape extends from its center of mass, including collision margin.void
read
(com.jme3.export.JmeImporter importer) De-serialize the shape from the specified importer, for example when loading from a J3O file.float
Estimate the volume of the collision shape, including scale and margin.float
Return the radius of the parent sphere.void
write
(com.jme3.export.JmeExporter exporter) Serialize the shape to the specified exporter, for example when saving to a J3O file.float
yMax()
Return the Y offset of the upper base from the center of the parent sphere.float
yMin()
Return the Y offset of the lower base from the center of the parent sphere.Methods inherited from class com.jme3.bullet.collision.shapes.ConvexShape
isConcave, isConvex, toHullShape, toSplittableShape
Methods inherited from class com.jme3.bullet.collision.shapes.CollisionShape
aabbCenter, aabbScaledVolume, boundingBox, boundingBox, canSplit, copyShapeProperties, getDefaultMargin, getMargin, getScale, getScaleDp, getShapeType, getShapeType, isContactFilterEnabled, isInfinite, isNonMoving, isPolyhedral, jmeClone, nativeMargin, readShapeProperties, recalculateAabb, setContactFilterEnabled, setDefaultMargin, setMargin, setNativeId, setScale, setScale, setUserIndex, setUserIndex2, toString, updateScale, userIndex, userIndex2
Methods inherited from class com.jme3.bullet.NativePhysicsObject
compareTo, countTrackers, dumpTrackers, equals, freeUnusedObjects, hasAssignedNativeObject, hashCode, nativeId, reassignNativeId, setNativeIdNotTracked, unassignNativeObject
-
Field Details
-
logger2
message logger for this class
-
-
Constructor Details
-
SphericalSegment
protected SphericalSegment()No-argument constructor needed by SavableClassUtil. -
SphericalSegment
public SphericalSegment(float radius) Instantiate a hemisphere with the specified radius.- Parameters:
radius
- the desired radius, before scaling and excluding margin (>0)
-
SphericalSegment
public SphericalSegment(float radius, float yMax, float yMin) Instantiate a spherical segment with the specified dimensions.- Parameters:
radius
- the desired radius of the parent sphere, before scaling and excluding margin (>0)yMax
- the Y offset of the upper base from the center of the parent sphere, before scaling and excluding margin (≥yMin, ≤radius)yMin
- the Y offset of the lower base from the center of the parent sphere, before scaling and excluding margin (≥-radius, ≤yMax)
-
-
Method Details
-
getHeight
public float getHeight()Return the height of the segment.- Returns:
- the unscaled height (≥0)
-
sphereRadius
public float sphereRadius()Return the radius of the parent sphere.- Returns:
- the unscaled radius (>0)
-
yMax
public float yMax()Return the Y offset of the upper base from the center of the parent sphere.- Returns:
- the unscaled offset (≥-radius, ≤radius)
-
yMin
public float yMin()Return the Y offset of the lower base from the center of the parent sphere.- Returns:
- the unscaled offset (≥-radius, ≤radius)
-
canScale
public boolean canScale(com.jme3.math.Vector3f scale) Test whether the specified scale factors can be applied to the shape. For a spherical segment, scaling must be uniform.- Overrides:
canScale
in classCollisionShape
- Parameters:
scale
- the desired scale factor for each local axis (may be null, unaffected)- Returns:
- true if applicable, otherwise false
-
cloneFields
Callback fromCloner
to convert this shallow-cloned shape into a deep-cloned one, using the specified Cloner and original to resolve copied fields.- Specified by:
cloneFields
in interfacecom.jme3.util.clone.JmeCloneable
- Overrides:
cloneFields
in classCollisionShape
- Parameters:
cloner
- the Cloner that's cloning this shape (not null)original
- the instance from which this shape was shallow-cloned (not null, unaffected)
-
maxRadius
public float maxRadius()Calculate how far the scaled shape extends from its center of mass, including collision margin.- Overrides:
maxRadius
in classCollisionShape
- Returns:
- the distance (in physics-space units, ≥0)
-
read
De-serialize the shape from the specified importer, for example when loading from a J3O file.- Specified by:
read
in interfacecom.jme3.export.Savable
- Overrides:
read
in classCollisionShape
- Parameters:
importer
- (not null)- Throws:
IOException
- from the importer
-
scaledVolume
public float scaledVolume()Estimate the volume of the collision shape, including scale and margin.- Overrides:
scaledVolume
in classConvexShape
- Returns:
- the estimated volume (in physics-space units cubed, ≥0)
-
write
Serialize the shape to the specified exporter, for example when saving to a J3O file.- Specified by:
write
in interfacecom.jme3.export.Savable
- Overrides:
write
in classCollisionShape
- Parameters:
exporter
- (not null)- Throws:
IOException
- from the exporter
-