mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
add show_collisions
This commit is contained in:
parent
ca04158482
commit
9f577fdc28
@ -21,6 +21,7 @@
|
|||||||
#include "collisionEntry.h"
|
#include "collisionEntry.h"
|
||||||
#include "collisionPolygon.h"
|
#include "collisionPolygon.h"
|
||||||
#include "collisionRecorder.h"
|
#include "collisionRecorder.h"
|
||||||
|
#include "collisionVisualizer.h"
|
||||||
#include "config_collide.h"
|
#include "config_collide.h"
|
||||||
|
|
||||||
#include "transformState.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
|
#endif // DO_COLLISION_RECORDING
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
class CollisionNode;
|
class CollisionNode;
|
||||||
class CollisionRecorder;
|
class CollisionRecorder;
|
||||||
|
class CollisionVisualizer;
|
||||||
class Geom;
|
class Geom;
|
||||||
class NodePath;
|
class NodePath;
|
||||||
class CollisionEntry;
|
class CollisionEntry;
|
||||||
@ -77,6 +78,9 @@ PUBLISHED:
|
|||||||
INLINE bool has_recorder() const;
|
INLINE bool has_recorder() const;
|
||||||
INLINE CollisionRecorder *get_recorder() const;
|
INLINE CollisionRecorder *get_recorder() const;
|
||||||
INLINE void clear_recorder();
|
INLINE void clear_recorder();
|
||||||
|
|
||||||
|
CollisionVisualizer *show_collisions(const NodePath &root);
|
||||||
|
void hide_collisions();
|
||||||
#endif // DO_COLLISION_RECORDING
|
#endif // DO_COLLISION_RECORDING
|
||||||
|
|
||||||
void output(ostream &out) const;
|
void output(ostream &out) const;
|
||||||
@ -127,6 +131,7 @@ private:
|
|||||||
bool _respect_prev_transform;
|
bool _respect_prev_transform;
|
||||||
#ifdef DO_COLLISION_RECORDING
|
#ifdef DO_COLLISION_RECORDING
|
||||||
CollisionRecorder *_recorder;
|
CollisionRecorder *_recorder;
|
||||||
|
NodePath _collision_visualizer_np;
|
||||||
#endif // DO_COLLISION_RECORDING
|
#endif // DO_COLLISION_RECORDING
|
||||||
|
|
||||||
// Statistics
|
// Statistics
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user