Package com.jme3.bullet.collision.shapes
Class CylinderCollisionShape
java.lang.Object
com.jme3.bullet.NativePhysicsObject
com.jme3.bullet.collision.shapes.CollisionShape
com.jme3.bullet.collision.shapes.ConvexShape
com.jme3.bullet.collision.shapes.CylinderCollisionShape
- All Implemented Interfaces:
com.jme3.export.Savable,com.jme3.util.clone.JmeCloneable,Cloneable,Comparable<NativePhysicsObject>
A cylindrical collision shape based on Bullet's
btCylinderShapeX,
btCylinderShape, or btCylinderShapeZ.-
Field Summary
FieldsFields inherited from class com.jme3.bullet.collision.shapes.ConvexShape
loggerXFields inherited from class com.jme3.bullet.collision.shapes.CollisionShape
enableContactFilter, logger, margin, scaleFields inherited from class com.jme3.bullet.NativePhysicsObject
loggerN -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedNo-argument constructor needed by SavableClassUtil.CylinderCollisionShape(float radius, float height, int axisIndex) Instantiate a cylinder shape around the specified main (height) axis.CylinderCollisionShape(com.jme3.math.Vector3f halfExtents) Instantiate a Z-axis cylinder shape with the specified half extents.CylinderCollisionShape(com.jme3.math.Vector3f halfExtents, int axisIndex) Instantiate a cylinder shape around the specified main (height) axis.CylinderCollisionShape(FloatBuffer buffer, int startPosition, int endPosition, int axisIndex) Instantiate a cylinder shape that encloses the sample locations in the specified FloatBuffer range. -
Method Summary
Modifier and TypeMethodDescriptionbooleancanScale(com.jme3.math.Vector3f scale) Test whether the specified scale factors can be applied to this shape.voidcloneFields(com.jme3.util.clone.Cloner cloner, Object original) Callback fromClonerto convert this shallow-cloned shape into a deep-cloned one, using the specified Cloner and original to resolve copied fields.intgetAxis()Return the main (height) axis of the cylinder.com.jme3.math.Vector3fgetHalfExtents(com.jme3.math.Vector3f storeResult) Copy the half extents of the cylinder.floatReturn the height of the cylinder.floatCalculate how far the scaled shape extends from its center.voidread(com.jme3.export.JmeImporter importer) De-serialize the shape from the specified importer, for example when loading from a J3O file.Approximate this shape with a HullCollisionShape.floatReturn the unscaled volume of the cylinder.voidwrite(com.jme3.export.JmeExporter exporter) Serialize this 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, scaledVolume, toSplittableShapeMethods 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, userIndex2Methods 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
-
CylinderCollisionShape
protected CylinderCollisionShape()No-argument constructor needed by SavableClassUtil. -
CylinderCollisionShape
public CylinderCollisionShape(float radius, float height, int axisIndex) Instantiate a cylinder shape around the specified main (height) axis.- Parameters:
radius- the desired unscaled radius (in shape units, ≥0)height- the desired unscaled height (in shape units, ≥0)axisIndex- which local axis to use for the height: 0→X, 1→Y, 2→Z (default=2)
-
CylinderCollisionShape
public CylinderCollisionShape(FloatBuffer buffer, int startPosition, int endPosition, int axisIndex) Instantiate a cylinder shape that encloses the sample locations in the specified FloatBuffer range.- Parameters:
buffer- the buffer that contains the sample locations (not null, unaffected)startPosition- the position at which the sample locations start (≥0, ≤endPosition)endPosition- the position at which the sample locations end (≥startPosition, ≤capacity)axisIndex- which local axis to use for the height: 0→X, 1→Y, 2→Z
-
CylinderCollisionShape
public CylinderCollisionShape(com.jme3.math.Vector3f halfExtents) Instantiate a Z-axis cylinder shape with the specified half extents.- Parameters:
halfExtents- the desired unscaled half extents (not null, no negative component, unaffected)
-
CylinderCollisionShape
public CylinderCollisionShape(com.jme3.math.Vector3f halfExtents, int axisIndex) Instantiate a cylinder shape around the specified main (height) axis.- Parameters:
halfExtents- the desired unscaled half extents (not null, no negative component, unaffected)axisIndex- which local axis to use for the height: 0→X, 1→Y, 2→Z (default=2)
-
-
Method Details
-
getAxis
public int getAxis()Return the main (height) axis of the cylinder.- Returns:
- the axis index: 0→X, 1→Y, 2→Z
-
getHalfExtents
public com.jme3.math.Vector3f getHalfExtents(com.jme3.math.Vector3f storeResult) Copy the half extents of the cylinder.- Parameters:
storeResult- storage for the result (modified if not null)- Returns:
- the unscaled half extent for each local axis (either storeResult or a new vector, not null, no negative component)
-
getHeight
public float getHeight()Return the height of the cylinder.- Returns:
- the unscaled height (≥0)
-
unscaledVolume
public float unscaledVolume()Return the unscaled volume of the cylinder.- Returns:
- the volume (in shape units cubed, ≥0)
-
canScale
public boolean canScale(com.jme3.math.Vector3f scale) Test whether the specified scale factors can be applied to this shape. For cylinder shapes, radial scaling must be uniform. The shape is unaffected.- Overrides:
canScalein classCollisionShape- Parameters:
scale- the desired scale factor for each local axis (may be null, unaffected)- Returns:
- true if applicable, otherwise false
-
cloneFields
Callback fromClonerto convert this shallow-cloned shape into a deep-cloned one, using the specified Cloner and original to resolve copied fields.- Specified by:
cloneFieldsin interfacecom.jme3.util.clone.JmeCloneable- Overrides:
cloneFieldsin 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.- Overrides:
maxRadiusin 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:
readin interfacecom.jme3.export.Savable- Overrides:
readin classCollisionShape- Parameters:
importer- (not null)- Throws:
IOException- from the importer
-
toHullShape
Approximate this shape with a HullCollisionShape.- Overrides:
toHullShapein classConvexShape- Returns:
- a new shape
-
write
Serialize this shape to the specified exporter, for example when saving to a J3O file.- Specified by:
writein interfacecom.jme3.export.Savable- Overrides:
writein classCollisionShape- Parameters:
exporter- (not null)- Throws:
IOException- from the exporter
-