Package com.jme3.bullet.collision.shapes
Class ConicalFrustum
java.lang.Object
com.jme3.bullet.NativePhysicsObject
com.jme3.bullet.collision.shapes.CollisionShape
com.jme3.bullet.collision.shapes.ConvexShape
com.jme3.bullet.collision.shapes.ConicalFrustum
- All Implemented Interfaces:
com.jme3.export.Savable
,com.jme3.util.clone.JmeCloneable
,Cloneable
,Comparable<NativePhysicsObject>
A collision shape for a conical frustum with uniform density, based on
btConvexInternalShape
. By convention, the local Y axis is the height
axis, with the "A" base having y<0 and the "B" base having y>0.
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.ConicalFrustum
(float a, float b, float height) Instantiate a conical frustum with the specified dimensions. -
Method Summary
Modifier and TypeMethodDescriptionfloat
aRadius()
Return the radius of the "A" base.float
bRadius()
Return the radius of the "B" base.boolean
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
height()
Return the height of the frustum.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.void
write
(com.jme3.export.JmeExporter exporter) Serialize the shape to the specified exporter, for example when saving to a J3O file.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
-
ConicalFrustum
protected ConicalFrustum()No-argument constructor needed by SavableClassUtil. -
ConicalFrustum
public ConicalFrustum(float a, float b, float height) Instantiate a conical frustum with the specified dimensions.- Parameters:
a
- the desired radius of the "A" base for scale=(1,1,1) (>0)b
- the desired radius of the "B" base for scale=(1,1,1) (>0)height
- the desired height for scale=(1,1,1) (>0)
-
-
Method Details
-
aRadius
public float aRadius()Return the radius of the "A" base.- Returns:
- the unscaled radius (>0)
-
bRadius
public float bRadius()Return the radius of the "B" base.- Returns:
- the unscaled radius (>0)
-
height
public float height()Return the height of the frustum.- Returns:
- the unscaled height (>0)
-
canScale
public boolean canScale(com.jme3.math.Vector3f scale) Test whether the specified scale factors can be applied to the shape. For a conical frustum, scaling must preserve the circular cross section.- 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
-