Package com.jme3.bullet.collision.shapes
Class GImpactCollisionShape
java.lang.Object
com.jme3.bullet.NativePhysicsObject
com.jme3.bullet.collision.shapes.CollisionShape
com.jme3.bullet.collision.shapes.GImpactCollisionShape
- All Implemented Interfaces:
com.jme3.export.Savable
,com.jme3.util.clone.JmeCloneable
,Cloneable
,Comparable<NativePhysicsObject>
A mesh collisions shape based on Bullet's
btGImpactMeshShape
.
Collisions between GImpactCollisionShape
and
PlaneCollisionShape
objects are never detected.
-
Field Summary
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.GImpactCollisionShape
(CompoundMesh mesh, com.jme3.math.Vector3f offset) Instantiate a shape based on the specified CompoundMesh and offset.GImpactCollisionShape
(IndexedMesh... submeshes) Instantiate a shape based on the specified native mesh(es).GImpactCollisionShape
(com.jme3.scene.Mesh... jmeMeshes) Instantiate a shape based on the specified JME mesh(es). -
Method Summary
Modifier and TypeMethodDescriptionboolean
canSplit()
Test whether the shape can be split by an arbitrary plane.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.int
Count how many triangles are in the mesh.int
Count how many vertices are in the mesh.int
Count how many submeshes are in the mesh.getSubmesh
(int index) Access the specified submesh.void
read
(com.jme3.export.JmeImporter importer) De-serialize the shape from the specified importer, for example when loading from a J3O file.protected void
Recalculate this shape's bounding box if necessary.void
setScale
(com.jme3.math.Vector3f scale) Alter the scale factors of this shape.split
(com.jme3.math.Triangle splittingTriangle) Attempt to divide this shape into 2 shapes.void
write
(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.CollisionShape
aabbCenter, aabbScaledVolume, boundingBox, boundingBox, canScale, copyShapeProperties, getDefaultMargin, getMargin, getScale, getScaleDp, getShapeType, getShapeType, isConcave, isContactFilterEnabled, isConvex, isInfinite, isNonMoving, isPolyhedral, jmeClone, maxRadius, nativeMargin, readShapeProperties, scaledVolume, setContactFilterEnabled, setDefaultMargin, setMargin, setNativeId, setScale, setUserIndex, setUserIndex2, toSplittableShape, 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
-
GImpactCollisionShape
protected GImpactCollisionShape()No-argument constructor needed by SavableClassUtil. -
GImpactCollisionShape
Instantiate a shape based on the specified CompoundMesh and offset.- Parameters:
mesh
- the mesh on which to base the shape (not null, must contain at least one triangle, unaffected)offset
- the offset to add to the vertex positions (not null, unaffected)
-
GImpactCollisionShape
Instantiate a shape based on the specified native mesh(es).- Parameters:
submeshes
- the mesh(es) on which to base the shape (not null, must contain at least one triangle)
-
GImpactCollisionShape
public GImpactCollisionShape(com.jme3.scene.Mesh... jmeMeshes) Instantiate a shape based on the specified JME mesh(es).- Parameters:
jmeMeshes
- the mesh(es) on which to base the shape (not null, must contain at least one triangle, unaffected)
-
-
Method Details
-
countMeshTriangles
public int countMeshTriangles()Count how many triangles are in the mesh.- Returns:
- the count (≥0)
-
countMeshVertices
public int countMeshVertices()Count how many vertices are in the mesh.- Returns:
- the count (≥0)
-
countSubmeshes
public int countSubmeshes()Count how many submeshes are in the mesh.- Returns:
- the count (≥0)
-
getSubmesh
Access the specified submesh.- Parameters:
index
- the index of the desired submesh (in the order the submeshes were added, ≥0)- Returns:
- the pre-existing instance (not null)
-
split
Attempt to divide this shape into 2 shapes.- Parameters:
splittingTriangle
- to define the splitting plane (in shape coordinates, not null, unaffected)- Returns:
- a pair of children, the first child generated by the plane's minus side and the 2nd child generated by its plus side; either child may be null, indicating an empty shape
-
canSplit
public boolean canSplit()Test whether the shape can be split by an arbitrary plane.- Overrides:
canSplit
in classCollisionShape
- Returns:
- true
-
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)
-
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
-
recalculateAabb
protected void recalculateAabb()Recalculate this shape's bounding box if necessary.- Overrides:
recalculateAabb
in classCollisionShape
-
setScale
public void setScale(com.jme3.math.Vector3f scale) Alter the scale factors of this shape.Note that if the shape is shared (between collision objects and/or compound shapes) changes can have unintended consequences.
- Overrides:
setScale
in classCollisionShape
- Parameters:
scale
- the desired scale factor for each local axis (not null, no negative component, unaffected, default=(1,1,1))
-
write
Serialize this 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
-