Panda3D
 All Classes Functions Variables Enumerations
collisionTube.I
1 // Filename: collisionTube.I
2 // Created by: drose (25Sep03)
3 //
4 ////////////////////////////////////////////////////////////////////
5 //
6 // PANDA 3D SOFTWARE
7 // Copyright (c) Carnegie Mellon University. All rights reserved.
8 //
9 // All use of this software is subject to the terms of the revised BSD
10 // license. You should have received a copy of this license along
11 // with this source code in a file named "LICENSE."
12 //
13 ////////////////////////////////////////////////////////////////////
14 
15 
16 ////////////////////////////////////////////////////////////////////
17 // Function: CollisionTube::Constructor
18 // Access: Public
19 // Description:
20 ////////////////////////////////////////////////////////////////////
21 INLINE CollisionTube::
22 CollisionTube(const LPoint3 &a, const LPoint3 &b, PN_stdfloat radius) :
23  _a(a), _b(b), _radius(radius)
24 {
25  recalc_internals();
26  nassertv(_radius >= 0.0f);
27 }
28 
29 ////////////////////////////////////////////////////////////////////
30 // Function: CollisionTube::Constructor
31 // Access: Public
32 // Description:
33 ////////////////////////////////////////////////////////////////////
34 INLINE CollisionTube::
35 CollisionTube(PN_stdfloat ax, PN_stdfloat ay, PN_stdfloat az,
36  PN_stdfloat bx, PN_stdfloat by, PN_stdfloat bz,
37  PN_stdfloat radius) :
38  _a(ax, ay, az), _b(bx, by, bz), _radius(radius)
39 {
40  recalc_internals();
41  nassertv(_radius >= 0.0f);
42 }
43 
44 ////////////////////////////////////////////////////////////////////
45 // Function: CollisionTube::Default constructor
46 // Access: Private
47 // Description: Creates an invalid tube. Only used when reading
48 // from a bam file.
49 ////////////////////////////////////////////////////////////////////
50 INLINE CollisionTube::
51 CollisionTube() {
52 }
53 
54 ////////////////////////////////////////////////////////////////////
55 // Function: CollisionTube::Copy Constructor
56 // Access: Public
57 // Description:
58 ////////////////////////////////////////////////////////////////////
59 INLINE CollisionTube::
60 CollisionTube(const CollisionTube &copy) :
61  CollisionSolid(copy),
62  _a(copy._a),
63  _b(copy._b),
64  _radius(copy._radius)
65 {
66  recalc_internals();
67 }
68 
69 ////////////////////////////////////////////////////////////////////
70 // Function: CollisionTube::flush_level
71 // Access: Public, Static
72 // Description: Flushes the PStatCollectors used during traversal.
73 ////////////////////////////////////////////////////////////////////
74 INLINE void CollisionTube::
76  _volume_pcollector.flush_level();
77  _test_pcollector.flush_level();
78 }
79 
80 ////////////////////////////////////////////////////////////////////
81 // Function: CollisionTube::set_point_a
82 // Access: Published
83 // Description:
84 ////////////////////////////////////////////////////////////////////
85 INLINE void CollisionTube::
86 set_point_a(const LPoint3 &a) {
87  _a = a;
88  recalc_internals();
89 }
90 
91 ////////////////////////////////////////////////////////////////////
92 // Function: CollisionTube::set_point_a
93 // Access: Published
94 // Description:
95 ////////////////////////////////////////////////////////////////////
96 INLINE void CollisionTube::
97 set_point_a(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z) {
98  set_point_a(LPoint3(x, y, z));
99 }
100 
101 ////////////////////////////////////////////////////////////////////
102 // Function: CollisionTube::get_point_a
103 // Access: Published
104 // Description:
105 ////////////////////////////////////////////////////////////////////
106 INLINE const LPoint3 &CollisionTube::
107 get_point_a() const {
108  return _a;
109 }
110 
111 ////////////////////////////////////////////////////////////////////
112 // Function: CollisionTube::set_point_b
113 // Access: Published
114 // Description:
115 ////////////////////////////////////////////////////////////////////
116 INLINE void CollisionTube::
117 set_point_b(const LPoint3 &b) {
118  _b = b;
119  recalc_internals();
120 }
121 
122 ////////////////////////////////////////////////////////////////////
123 // Function: CollisionTube::set_point_b
124 // Access: Published
125 // Description:
126 ////////////////////////////////////////////////////////////////////
127 INLINE void CollisionTube::
128 set_point_b(PN_stdfloat x, PN_stdfloat y, PN_stdfloat z) {
129  set_point_b(LPoint3(x, y, z));
130 }
131 
132 ////////////////////////////////////////////////////////////////////
133 // Function: CollisionTube::get_point_b
134 // Access: Published
135 // Description:
136 ////////////////////////////////////////////////////////////////////
137 INLINE const LPoint3 &CollisionTube::
138 get_point_b() const {
139  return _b;
140 }
141 
142 ////////////////////////////////////////////////////////////////////
143 // Function: CollisionTube::set_radius
144 // Access: Published
145 // Description:
146 ////////////////////////////////////////////////////////////////////
147 INLINE void CollisionTube::
148 set_radius(PN_stdfloat radius) {
149  nassertv(radius >= 0.0f);
150  _radius = radius;
151 
152  // We don't need to call recalc_internals(), since the radius
153  // doesn't change either of those properties.
154  mark_internal_bounds_stale();
155  mark_viz_stale();
156 }
157 
158 ////////////////////////////////////////////////////////////////////
159 // Function: CollisionTube::get_radius
160 // Access: Published
161 // Description:
162 ////////////////////////////////////////////////////////////////////
163 INLINE PN_stdfloat CollisionTube::
164 get_radius() const {
165  return _radius;
166 }
167 
The abstract base class for all things that can collide with other things in the world, and all the things they can collide with (except geometry).
static void flush_level()
Flushes the PStatCollectors used during traversal.
Definition: collisionTube.I:75
This is a three-component point in space (as opposed to a three-component vector, which represents a ...
Definition: lpoint3.h:99
This implements a solid roughly in cylindrical shape.
Definition: collisionTube.h:30