add show_collisions

This commit is contained in:
David Rose 2003-11-18 22:40:47 +00:00
parent ca04158482
commit 9f577fdc28
2 changed files with 40 additions and 0 deletions

View File

@ -21,6 +21,7 @@
#include "collisionEntry.h"
#include "collisionPolygon.h"
#include "collisionRecorder.h"
#include "collisionVisualizer.h"
#include "config_collide.h"
#include "transformState.h"
@ -358,6 +359,40 @@ set_recorder(CollisionRecorder *recorder) {
}
}
}
////////////////////////////////////////////////////////////////////
// Function: CollisionTraverser::show_collisions
// Access: Published
// Description: This is a high-level function to create a
// CollisionVisualizer object to render the collision
// tests performed by this traverser. The supplied root
// should be any node in the scene graph; typically, the
// top node (e.g. render). The CollisionVisualizer will
// be attached to this node.
////////////////////////////////////////////////////////////////////
CollisionVisualizer *CollisionTraverser::
show_collisions(const NodePath &root) {
hide_collisions();
CollisionVisualizer *viz = new CollisionVisualizer("show_collisions");
_collision_visualizer_np = root.attach_new_node(viz);
set_recorder(viz);
return viz;
}
////////////////////////////////////////////////////////////////////
// Function: CollisionTraverser::hide_collisions
// Access: Published
// Description: Undoes the effect of a previous call to
// show_collisions().
////////////////////////////////////////////////////////////////////
void CollisionTraverser::
hide_collisions() {
if (!_collision_visualizer_np.is_empty()) {
_collision_visualizer_np.remove_node();
}
clear_recorder();
}
#endif // DO_COLLISION_RECORDING
////////////////////////////////////////////////////////////////////

View File

@ -31,6 +31,7 @@
class CollisionNode;
class CollisionRecorder;
class CollisionVisualizer;
class Geom;
class NodePath;
class CollisionEntry;
@ -77,6 +78,9 @@ PUBLISHED:
INLINE bool has_recorder() const;
INLINE CollisionRecorder *get_recorder() const;
INLINE void clear_recorder();
CollisionVisualizer *show_collisions(const NodePath &root);
void hide_collisions();
#endif // DO_COLLISION_RECORDING
void output(ostream &out) const;
@ -127,6 +131,7 @@ private:
bool _respect_prev_transform;
#ifdef DO_COLLISION_RECORDING
CollisionRecorder *_recorder;
NodePath _collision_visualizer_np;
#endif // DO_COLLISION_RECORDING
// Statistics