forked from panda3d/panda3d
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathodeGeom.h
More file actions
164 lines (141 loc) · 4.71 KB
/
odeGeom.h
File metadata and controls
164 lines (141 loc) · 4.71 KB
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
/**
* PANDA 3D SOFTWARE
* Copyright (c) Carnegie Mellon University. All rights reserved.
*
* All use of this software is subject to the terms of the revised BSD
* license. You should have received a copy of this license along
* with this source code in a file named "LICENSE."
*
* @file odeGeom.h
* @author joswilso
* @date 2006-12-27
*/
#ifndef ODEGEOM_H
#define ODEGEOM_H
#include "pandabase.h"
#include "typedObject.h"
#include "luse.h"
#include "bitMask.h"
#include "ode_includes.h"
#include "odeSpace.h"
#include "odeBody.h"
class OdeBoxGeom;
class OdeCappedCylinderGeom;
// class OdeConvexGeom;
class OdeCylinderGeom;
// class OdeHeightfieldGeom;
class OdePlaneGeom;
class OdeRayGeom;
class OdeSphereGeom;
class OdeTriMeshGeom;
class OdeSimpleSpace;
class OdeHashSpace;
class OdeQuadTreeSpace;
class OdeUtil;
class OdeCollisionEntry;
/**
*
*/
class EXPCL_PANDAODE OdeGeom : public TypedObject {
friend class OdeContactGeom;
friend class OdeSpace;
friend class OdeUtil;
friend class OdeCollisionEntry;
public:
OdeGeom(dGeomID id);
PUBLISHED:
enum GeomClass { GC_sphere = 0,
GC_box,
GC_capped_cylinder,
GC_cylinder,
GC_plane,
GC_ray,
// GC_convex, GC_geom_transform,
GC_tri_mesh = 8,
// GC_heightfield,
GC_simple_space = 10,
GC_hash_space,
GC_quad_tree_space,
};
virtual ~OdeGeom();
void destroy();
INLINE bool is_empty() const;
INLINE dGeomID get_id() const;
// INLINE void set_data(void* data);
INLINE void set_body(OdeBody &body);
INLINE bool has_body() const;
INLINE OdeBody get_body() const;
INLINE void set_position(dReal x, dReal y, dReal z);
INLINE void set_position(const LVecBase3f &pos);
INLINE void set_rotation(const LMatrix3f &r);
INLINE void set_quaternion(const LQuaternionf &q);
INLINE LPoint3f get_position() const;
INLINE LMatrix3f get_rotation() const;
INLINE LQuaternionf get_quaternion() const;
INLINE void get_AABB(LVecBase3f &min, LVecBase3f &max) const;
EXTENSION(INLINE PyObject *get_AA_bounds() const);
INLINE int is_space();
INLINE int get_class() const;
INLINE void set_category_bits(const BitMask32 &bits);
INLINE void set_collide_bits(const BitMask32 &bits);
INLINE BitMask32 get_category_bits();
INLINE BitMask32 get_collide_bits();
INLINE void enable();
INLINE void disable();
INLINE int is_enabled();
INLINE void set_offset_position(dReal x, dReal y, dReal z);
INLINE void set_offset_position(const LVecBase3f &pos);
INLINE void set_offset_rotation(const LMatrix3f &r);
INLINE void set_offset_quaternion(const LQuaternionf &q);
INLINE void set_offset_world_position(dReal x, dReal y, dReal z);
INLINE void set_offset_world_position(const LVecBase3f &pos);
INLINE void set_offset_world_rotation(const LMatrix3f &r);
INLINE void set_offset_world_quaternion(const LQuaternionf &q);
INLINE void clear_offset();
INLINE int is_offset();
INLINE LPoint3f get_offset_position() const;
INLINE LMatrix3f get_offset_rotation() const;
INLINE LQuaternionf get_offset_quaternion() const;
// int get_surface_type() ; int get_collide_id() ; int set_collide_id( int
// collide_id); void set_surface_type( int surface_type);
// int test_collide_id( int collide_id);
OdeSpace get_space() const;
EXTENSION(INLINE PyObject *get_converted_space() const);
virtual void write(std::ostream &out = std::cout, unsigned int indent=0) const;
operator bool () const;
INLINE int compare_to(const OdeGeom &other) const;
EXTENSION(PyObject *convert() const);
OdeBoxGeom convert_to_box() const;
OdeCappedCylinderGeom convert_to_capped_cylinder() const;
// OdeConvexGeom convert_to_convex() const;
OdeCylinderGeom convert_to_cylinder() const;
// OdeHeightfieldGeom convert_to_heightfield() const;
OdePlaneGeom convert_to_plane() const;
OdeRayGeom convert_to_ray() const;
OdeSphereGeom convert_to_sphere() const;
OdeTriMeshGeom convert_to_tri_mesh() const;
OdeSimpleSpace convert_to_simple_space() const;
OdeHashSpace convert_to_hash_space() const;
OdeQuadTreeSpace convert_to_quad_tree_space() const;
public:
INLINE static int get_geom_class() { return -1; };
protected:
dGeomID _id;
public:
static TypeHandle get_class_type() {
return _type_handle;
}
static void init_type() {
TypedObject::init_type();
register_type(_type_handle, "OdeGeom",
TypedObject::get_class_type());
}
virtual TypeHandle get_type() const {
return get_class_type();
}
virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
private:
static TypeHandle _type_handle;
};
#include "odeGeom.I"
#endif