summaryrefslogtreecommitdiff
path: root/thirdparty/bullet/Bullet3Collision/NarrowPhaseCollision/shared/b3Collidable.h
blob: 9a8c668af2cbbd4d6786a7c0478d08d4b1f03f54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

#ifndef B3_COLLIDABLE_H
#define B3_COLLIDABLE_H

#include "Bullet3Common/shared/b3Float4.h"
#include "Bullet3Common/shared/b3Quat.h"

enum b3ShapeTypes
{
	SHAPE_HEIGHT_FIELD = 1,

	SHAPE_CONVEX_HULL = 3,
	SHAPE_PLANE = 4,
	SHAPE_CONCAVE_TRIMESH = 5,
	SHAPE_COMPOUND_OF_CONVEX_HULLS = 6,
	SHAPE_SPHERE = 7,
	MAX_NUM_SHAPE_TYPES,
};

typedef struct b3Collidable b3Collidable_t;

struct b3Collidable
{
	union {
		int m_numChildShapes;
		int m_bvhIndex;
	};
	union {
		float m_radius;
		int m_compoundBvhIndex;
	};

	int m_shapeType;
	union {
		int m_shapeIndex;
		float m_height;
	};
};

typedef struct b3GpuChildShape b3GpuChildShape_t;
struct b3GpuChildShape
{
	b3Float4 m_childPosition;
	b3Quat m_childOrientation;
	union {
		int m_shapeIndex;  //used for SHAPE_COMPOUND_OF_CONVEX_HULLS
		int m_capsuleAxis;
	};
	union {
		float m_radius;        //used for childshape of SHAPE_COMPOUND_OF_SPHERES or SHAPE_COMPOUND_OF_CAPSULES
		int m_numChildShapes;  //used for compound shape
	};
	union {
		float m_height;  //used for childshape of SHAPE_COMPOUND_OF_CAPSULES
		int m_collidableShapeIndex;
	};
	int m_shapeType;
};

struct b3CompoundOverlappingPair
{
	int m_bodyIndexA;
	int m_bodyIndexB;
	//	int	m_pairType;
	int m_childShapeIndexA;
	int m_childShapeIndexB;
};

#endif  //B3_COLLIDABLE_H