Bullet Collision Detection & Physics Library
|
Go to the documentation of this file.
24 #ifndef GIMPACT_SHAPE_H
25 #define GIMPACT_SHAPE_H
130 aabbMin = transformedbox.
m_min;
131 aabbMax = transformedbox.
m_max;
239 aabbMin = child_aabb.
m_min;
240 aabbMax = child_aabb.
m_max;
265 (void)resultCallback;
361 (void)children_has_transform;
486 return "GImpactCompound";
647 vertex[0] = svertices[0] *
m_scale[0];
648 vertex[1] = svertices[1] *
m_scale[1];
649 vertex[2] = svertices[2] *
m_scale[2];
664 unsigned int indices[3];
665 get_indices(prim_index, indices[0], indices[1], indices[2]);
674 unsigned int indices[3];
675 get_indices(prim_index, indices[0], indices[1], indices[2]);
761 return "GImpactMeshShapePart";
1069 return "GImpactMesh";
1107 #endif //GIMPACT_MESH_SHAPE_H
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
virtual int get_primitive_count() const
virtual bool needsRetrieveTetrahedrons() const
Determines if this shape has tetrahedrons.
TrimeshPrimitiveManager()
virtual void calculateLocalInertia(btScalar mass, btVector3 &inertia) const
virtual int getNumChildShapes() const
Gets the number of children.
virtual void unlockChildShapes() const
virtual void unlockChildShapes() const
virtual void setLocalScaling(const btVector3 &scaling)
virtual btCollisionShape * getChildShape(int index)
Gets the children.
virtual bool childrenHasTransform() const
if true, then its children must get transforms.
virtual btTransform getChildTransform(int index) const
Gets the children transform.
virtual int get_primitive_count() const
virtual void calculateLocalInertia(btScalar mass, btVector3 &inertia) const
btAlignedObjectArray< btCollisionShape * > m_childShapes
virtual void getBulletTriangle(int prim_index, btTriangleShapeEx &triangle) const
virtual int getNumChildShapes() const
Gets the number of children.
virtual bool needsRetrieveTriangles() const
Determines if this shape has triangles.
virtual ~TrimeshPrimitiveManager()
void buildMeshParts(btStridingMeshInterface *meshInterface)
virtual bool needsRetrieveTriangles() const =0
Determines if this shape has triangles.
virtual const char * serialize(void *dataBuffer, btSerializer *serializer) const
fills the dataBuffer and returns the struct name (and 0 on failure)
btScalar m_collisionMargin
virtual void getChildAabb(int child_index, const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const
Retrieves the bound from a child.
virtual void get_primitive_box(int prim_index, btAABB &primbox) const
void setValue(const btScalar &_x, const btScalar &_y, const btScalar &_z)
virtual void rayTest(const btVector3 &rayFrom, const btVector3 &rayTo, btCollisionWorld::RayResultCallback &resultCallback) const
virtual method for ray collision
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
virtual const btPrimitiveManagerBase * getPrimitiveManager() const
Obtains the primitive manager.
const btGImpactBoxSet * getBoxSet() const
gets boxset
virtual void get_primitive_box(int prim_index, btAABB &primbox) const
void addChildShape(const btTransform &localTransform, btCollisionShape *shape)
Use this method for adding children. Only Convex shapes are allowed.
virtual void calculateLocalInertia(btScalar mass, btVector3 &inertia) const
Calculates the exact inertia tensor for this shape.
virtual void setMargin(btScalar margin)
The btConcaveShape class provides an interface for non-moving (static) concave shapes.
btAABB getGlobalBox() const
virtual void lockChildShapes() const
call when reading child shapes
virtual void rayTest(const btVector3 &rayFrom, const btVector3 &rayTo, btCollisionWorld::RayResultCallback &resultCallback) const
virtual method for ray collision
virtual const btVector3 & getLocalScaling() const
virtual bool is_trimesh() const
determines if this manager consist on only triangles, which special case will be optimized
void addChildShape(btCollisionShape *shape)
Use this method for adding children. Only Convex shapes are allowed.
const btAABB & getLocalBox()
Obtains the local box, which is the global calculated box of the total of subshapes.
virtual void calcLocalAABB()
use this function for perfofm refit in bounding boxes
virtual btTransform getChildTransform(int index) const
Gets the children transform.
btStridingMeshInterface * getMeshInterface()
void clear()
clear the array, deallocated memory. Generally it is better to use array.resize(0),...
This class manages a sub part of a mesh supplied by the btStridingMeshInterface interface.
virtual void getBulletTetrahedron(int prim_index, btTetrahedronShapeEx &tetrahedron) const =0
virtual int getNumChildShapes() const
Gets the number of children.
virtual void setLocalScaling(const btVector3 &scaling)
virtual bool needsRetrieveTetrahedrons() const =0
Determines if this shape has tetrahedrons.
btGImpactCompoundShape(bool children_has_transform=true)
virtual bool childrenHasTransform() const
if true, then its children must get transforms.
virtual const char * getName() const
virtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const
Subshape member functions.
btStridingMeshInterface * m_meshInterface
virtual void calcLocalAABB()
use this function for perfofm refit in bounding boxes use this function for perfofm refit in bounding...
virtual void get_primitive_triangle(int prim_index, btPrimitiveTriangle &triangle) const =0
retrieves only the points of the triangle, and the collision margin
Trimesh primitive manager.
virtual void setLocalScaling(const btVector3 &scaling)
This class manages a mesh supplied by the btStridingMeshInterface interface.
btGImpactCompoundShape * m_compoundShape
virtual btCollisionShape * getChildShape(int index)
Gets the children.
CompoundPrimitiveManager(btGImpactCompoundShape *compoundShape)
virtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const
Subshape member functions.
btGImpactShapeInterface()
CompoundPrimitiveManager m_primitive_manager
const unsigned char * vertexbase
void getAabb(const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const
If the Bounding box is not updated, then this class attemps to calculate it.
Used for GIMPACT Trimesh integration.
TrimeshPrimitiveManager(btStridingMeshInterface *meshInterface, int part)
virtual const btCollisionShape * getChildShape(int index) const
Gets the child.
CompoundPrimitiveManager(const CompoundPrimitiveManager &compound)
virtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const =0
Subshape member functions.
The btStridingMeshInterface is the interface class for high performance generic access to triangle me...
virtual void getChildAabb(int child_index, const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const
Retrieves the bound from a child.
btAlignedObjectArray< btTransform > m_childTransforms
virtual bool needsRetrieveTriangles() const
Determines if this shape has triangles.
The btCollisionShape class provides an interface for collision shapes that can be shared among btColl...
Helper class for colliding Bullet Triangle Shapes.
const btGImpactMeshShapePart * getMeshPart(int index) const
int get_vertex_count() const
virtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const
Subshape member functions.
int getMeshPartCount() const
CompoundPrimitiveManager * getCompoundPrimitiveManager()
Obtains the compopund primitive manager.
btStridingMeshInterfaceData m_meshInterface
btGImpactBoxSet m_box_set
virtual const btCollisionShape * getChildShape(int index) const
Gets the child.
virtual const btPrimitiveManagerBase * getPrimitiveManager() const =0
Obtains the primitive manager.
virtual void setMargin(btScalar margin)
PHY_ScalarType
PHY_ScalarType enumerates possible scalar types.
btGImpactMeshShape(btStridingMeshInterface *meshInterface)
virtual void getChildAabb(int child_index, const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const
Retrieves the bound from a child.
virtual void postUpdate()
Tells to this object that is needed to refit the box set.
btGImpactQuantizedBvh btGImpactBoxSet
declare Quantized trees, (you can change to float based trees)
virtual void getAabb(const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const =0
getAabb returns the axis aligned bounding box in the coordinate frame of the given transform t.
void get_vertex(unsigned int vertex_index, btVector3 &vertex) const
compound primitive manager
int getVertexCount() const
btScalar getMargin() const
The btTriangleCallback provides a callback for each overlapping triangle when calling processAllTrian...
PHY_ScalarType indicestype
void update()
node manager prototype functions
virtual int getNumChildShapes() const =0
Gets the number of children.
virtual bool childrenHasTransform() const
if true, then its children must get transforms.
virtual bool is_trimesh() const
determines if this manager consist on only triangles, which special case will be optimized
virtual void processAllTriangles(btTriangleCallback *callback, const btVector3 &aabbMin, const btVector3 &aabbMax) const
Function for retrieve triangles.
void setPrimitiveManager(btPrimitiveManagerBase *primitive_manager)
btVector3 can be used to represent 3D points and vectors.
virtual void setChildTransform(int index, const btTransform &transform)
Sets the children transform.
void get_bullet_triangle(int prim_index, btTriangleShapeEx &triangle) const
virtual btTransform getChildTransform(int index) const
Gets the children transform.
virtual ~btGImpactMeshShape()
virtual bool needsRetrieveTetrahedrons() const
Determines if this shape has tetrahedrons.
virtual void getBulletTetrahedron(int prim_index, btTetrahedronShapeEx &tetrahedron) const
btGImpactMeshShapePart * getMeshPart(int index)
virtual btCollisionShape * getChildShape(int index)=0
Gets the children.
virtual void getLockedReadOnlyVertexIndexBase(const unsigned char **vertexbase, int &numverts, PHY_ScalarType &type, int &stride, const unsigned char **indexbase, int &indexstride, int &numfaces, PHY_ScalarType &indicestype, int subpart=0) const =0
virtual void lockChildShapes() const
call when reading child shapes
virtual void postUpdate()
Tells to this object that is needed to refit all the meshes.
virtual int calculateSerializeBufferSize() const
void setMargin(btScalar margin)
virtual btCollisionShape * getChildShape(int index)
Gets the children.
virtual void getBulletTetrahedron(int prim_index, btTetrahedronShapeEx &tetrahedron) const
virtual void processAllTrianglesRay(btTriangleCallback *callback, const btVector3 &rayFrom, const btVector3 &rayTo) const
Function for retrieve triangles.
const btVector3 & getScaling() const
btCollisionShapeData m_collisionShapeData
void calc_from_triangle_margin(const CLASS_POINT &V1, const CLASS_POINT &V2, const CLASS_POINT &V3, btScalar margin)
virtual void getBulletTriangle(int prim_index, btTriangleShapeEx &triangle) const
virtual void unlockChildShapes() const
btAlignedObjectArray< btGImpactMeshShapePart * > m_mesh_parts
#define SIMD_FORCE_INLINE
virtual const btVector3 & getLocalScaling() const
virtual void setChildTransform(int index, const btTransform &transform)
Sets the children transform.
virtual void lockChildShapes() const
call when reading child shapes
virtual bool needsRetrieveTriangles() const
Determines if this shape has triangles.
virtual btTransform getChildTransform(int index) const =0
Gets the children transform.
Prototype Base class for primitive classification.
const btStridingMeshInterface * getMeshInterface() const
virtual void setMargin(btScalar margin)=0
Base class for gimpact shapes.
virtual void processAllTrianglesRay(btTriangleCallback *, const btVector3 &, const btVector3 &) const
Function for retrieve triangles.
virtual ~btGImpactCompoundShape()
void merge(const btAABB &box)
Merges a Box.
void appy_transform(const btTransform &trans)
Apply a transform to an AABB.
void setVertices(const btVector3 &v0, const btVector3 &v1, const btVector3 &v2, const btVector3 &v3)
btGImpactCompoundShape allows to handle multiple btCollisionShape objects at once
virtual void get_primitive_triangle(int prim_index, btPrimitiveTriangle &triangle) const
retrieves only the points of the triangle, and the collision margin
virtual void getBulletTriangle(int prim_index, btTriangleShapeEx &triangle) const =0
void get_indices(int face_index, unsigned int &i0, unsigned int &i1, unsigned int &i2) const
btVector3FloatData m_localScaling
virtual ~CompoundPrimitiveManager()
virtual int getNumSubParts() const =0
getNumSubParts returns the number of separate subparts each subpart has a continuous array of vertice...
virtual void processAllTriangles(btTriangleCallback *callback, const btVector3 &aabbMin, const btVector3 &aabbMax) const
Function for retrieve triangles.
const unsigned char * indexbase
virtual void setChildTransform(int index, const btTransform &transform)=0
Sets the children transform.
virtual void getBulletTetrahedron(int prim_index, btTetrahedronShapeEx &tetrahedron) const
void getPrimitiveTriangle(int index, btPrimitiveTriangle &triangle) const
if this trimesh
The btBU_Simplex1to4 implements tetrahedron, triangle, line, vertex collision shapes....
virtual void setMargin(btScalar margin)
CompoundPrimitiveManager()
virtual const btPrimitiveManagerBase * getPrimitiveManager() const
Obtains the primitive manager.
virtual const btCollisionShape * getChildShape(int index) const
Gets the children.
void getVertex(int vertex_index, btVector3 &vertex) const
TrimeshPrimitiveManager(const TrimeshPrimitiveManager &manager)
virtual int getShapeType() const
TrimeshPrimitiveManager * getTrimeshPrimitiveManager()
TrimeshPrimitiveManager m_primitive_manager
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
virtual const char * getName() const
virtual bool childrenHasTransform() const =0
if true, then its children must get transforms.
virtual void get_primitive_box(int prim_index, btAABB &primbox) const =0
int getNodeCount() const
node count
RayResultCallback is used to report new raycast results.
virtual void setChildTransform(int index, const btTransform &transform)
Sets the children transform.
void push_back(const T &_Val)
virtual const char * getName() const
virtual void getBulletTriangle(int prim_index, btTriangleShapeEx &triangle) const
virtual void unLockReadOnlyVertexBase(int subpart) const =0
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
void updateBound()
performs refit operation
virtual void processAllTriangles(btTriangleCallback *callback, const btVector3 &aabbMin, const btVector3 &aabbMax) const
Function for retrieve triangles.
virtual const btPrimitiveManagerBase * getPrimitiveManager() const
Obtains the primitive manager.
bool hasBoxSet() const
Determines if this class has a hierarchy structure for sorting its primitives.
virtual ~btGImpactMeshShapePart()
Structure for containing Boxes.
virtual void get_primitive_triangle(int prim_index, btPrimitiveTriangle &triangle) const
retrieves only the points of the triangle, and the collision margin
virtual void processAllTrianglesRay(btTriangleCallback *callback, const btVector3 &rayFrom, const btVector3 &rayTo) const
Function for retrieve triangles.
int size() const
return the number of elements in the array
virtual bool needsRetrieveTetrahedrons() const
Determines if this shape has tetrahedrons.
btStridingMeshInterface * m_meshInterface
Helper class for tetrahedrons.
void buildSet()
this rebuild the entire set