14 #ifndef COLLISIONTRAVERSER_H
15 #define COLLISIONTRAVERSER_H
30 class CollisionRecorder;
31 class CollisionVisualizer;
51 INLINE
void set_respect_prev_transform(
bool flag);
52 INLINE
bool get_respect_prev_transform()
const;
53 MAKE_PROPERTY(respect_preV_transform, get_respect_prev_transform,
54 set_respect_prev_transform);
55 MAKE_PROPERTY(respect_prev_transform, get_respect_prev_transform,
56 set_respect_prev_transform);
59 bool remove_collider(
const NodePath &collider);
60 bool has_collider(
const NodePath &collider)
const;
61 int get_num_colliders()
const;
63 MAKE_SEQ(get_colliders, get_num_colliders, get_collider);
65 void clear_colliders();
66 MAKE_SEQ_PROPERTY(colliders, get_num_colliders, get_collider);
68 BLOCKING
void traverse(
const NodePath &root);
70 #if defined(DO_COLLISION_RECORDING) || !defined(CPPPARSER)
71 void set_recorder(CollisionRecorder *recorder);
72 INLINE
bool has_recorder()
const;
73 INLINE CollisionRecorder *get_recorder()
const;
74 INLINE
void clear_recorder();
75 MAKE_PROPERTY2(recorder, has_recorder, get_recorder,
76 set_recorder, clear_recorder);
78 CollisionVisualizer *show_collisions(
const NodePath &root);
79 void hide_collisions();
82 void output(std::ostream &out)
const;
83 void write(std::ostream &out,
int indent_level)
const;
85 EXTENSION(PyObject *__getstate__()
const);
86 EXTENSION(
void __setstate__(PyObject *state));
121 class OrderedColliderDef {
128 Colliders _colliders;
130 OrderedColliders _ordered_colliders;
135 Handlers::iterator remove_handler(Handlers::iterator hi);
137 bool _respect_prev_transform;
138 #ifdef DO_COLLISION_RECORDING
139 CollisionRecorder *_recorder;
142 CollisionRecorder *_recorder_disabled =
nullptr;
143 NodePath _collision_visualizer_np_disabled;
155 PassCollectors _pass_collectors;
159 SolidCollideCollectors _solid_collide_collectors;
165 static void init_type() {
172 friend class SortByColliderSort;
175 INLINE std::ostream &operator << (std::ostream &out,
const CollisionTraverser &trav) {
Defines a single collision event.
The abstract interface to a number of classes that decide what to do when a collision is detected.
This is the state information the CollisionTraverser retains for each level during traversal.
A node in the scene graph that can hold any number of CollisionSolids.
This class manages the traversal through the scene graph to detect collisions.
A container for geometry primitives.
This is another abstract class, for a general class of bounding volumes that actually enclose points ...
A base class for all things which can have a name.
void output(std::ostream &out) const
Outputs the Namable.
NodePath is the fundamental system for disambiguating instances, and also provides a higher-level int...
A lightweight class that represents a single element that may be timed and/or counted via stats.
TypeHandle is the identifier used to differentiate C++ class types.
This is our own Panda specialization on the default STL map.
This is our own Panda specialization on the default STL vector.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...