Panda3D
|
00001 // Filename: physxDebugGeomNode.h 00002 // Created by: enn0x (15Sep09) 00003 // 00004 //////////////////////////////////////////////////////////////////// 00005 // 00006 // PANDA 3D SOFTWARE 00007 // Copyright (c) Carnegie Mellon University. All rights reserved. 00008 // 00009 // All use of this software is subject to the terms of the revised BSD 00010 // license. You should have received a copy of this license along 00011 // with this source code in a file named "LICENSE." 00012 // 00013 //////////////////////////////////////////////////////////////////// 00014 00015 #ifndef PHYSXDEBUGGEOMNODE_H 00016 #define PHYSXDEBUGGEOMNODE_H 00017 00018 #include "pandabase.h" 00019 #include "pointerTo.h" 00020 #include "geomNode.h" 00021 #include "transformState.h" 00022 #include "geom.h" 00023 #include "geomVertexData.h" 00024 #include "geomLines.h" 00025 #include "geomTriangles.h" 00026 00027 #include "physx_includes.h" 00028 00029 class PhysxScene; 00030 00031 //////////////////////////////////////////////////////////////////// 00032 // Class : PhysxDebugGeomNode 00033 // Description : Renderable geometry which represents visualizations 00034 // of physics objects. Intended to help with 00035 // debugging code. 00036 //////////////////////////////////////////////////////////////////// 00037 class EXPCL_PANDAPHYSX PhysxDebugGeomNode : public GeomNode { 00038 00039 PUBLISHED: 00040 INLINE PhysxDebugGeomNode(); 00041 INLINE ~PhysxDebugGeomNode(); 00042 00043 void on(); 00044 void off(); 00045 void toggle(); 00046 00047 INLINE void visualize_world_axes(bool value); 00048 INLINE void visualize_body_axes(bool value); 00049 INLINE void visualize_body_mass_axes(bool value); 00050 INLINE void visualize_body_lin_velocity(bool value); 00051 INLINE void visualize_body_ang_velocity(bool value); 00052 INLINE void visualize_body_joint_groups(bool value); 00053 INLINE void visualize_joint_local_axes(bool value); 00054 INLINE void visualize_joint_world_axes(bool value); 00055 INLINE void visualize_joint_limits(bool value); 00056 INLINE void visualize_contact_point(bool value); 00057 INLINE void visualize_contact_normal(bool value); 00058 INLINE void visualize_contact_error(bool value); 00059 INLINE void visualize_contact_force(bool value); 00060 INLINE void visualize_actor_axes(bool value); 00061 INLINE void visualize_collision_aabbs(bool value); 00062 INLINE void visualize_collision_shapes(bool value); 00063 INLINE void visualize_collision_axes(bool value); 00064 INLINE void visualize_collision_compounds(bool value); 00065 INLINE void visualize_collision_vnormals(bool value); 00066 INLINE void visualize_collision_fnormals(bool value); 00067 INLINE void visualize_collision_edges(bool value); 00068 INLINE void visualize_collision_spheres(bool value); 00069 INLINE void visualize_collision_static(bool value); 00070 INLINE void visualize_collision_dynamic(bool value); 00071 INLINE void visualize_collision_free(bool value); 00072 INLINE void visualize_collision_ccd(bool value); 00073 INLINE void visualize_collision_skeletons(bool value); 00074 INLINE void visualize_cloth_mesh(bool value); 00075 INLINE void visualize_cloth_validbounds(bool value); 00076 INLINE void visualize_softbody_mesh(bool value); 00077 INLINE void visualize_softbody_validbounds(bool value); 00078 INLINE void visualize_force_fields(bool value); 00079 00080 public: 00081 void update(NxScene *scenePtr); 00082 00083 private: 00084 float _scale; 00085 00086 PT(GeomVertexData) _vdata; 00087 PT(Geom) _geom_lines; 00088 PT(GeomLines) _prim_lines; 00089 PT(Geom) _geom_triangles; 00090 PT(GeomTriangles) _prim_triangles; 00091 00092 //////////////////////////////////////////////////////////////////// 00093 public: 00094 static TypeHandle get_class_type() { 00095 return _type_handle; 00096 } 00097 static void init_type() { 00098 GeomNode::init_type(); 00099 register_type(_type_handle, "PhysxDebugGeomNode", 00100 GeomNode::get_class_type()); 00101 } 00102 virtual TypeHandle get_type() const { 00103 return get_class_type(); 00104 } 00105 virtual TypeHandle force_init_type() { 00106 init_type(); 00107 return get_class_type(); 00108 } 00109 00110 private: 00111 static TypeHandle _type_handle; 00112 }; 00113 00114 #include "physxDebugGeomNode.I" 00115 00116 #endif // PHYSXDEBUGGEOMNODE_H