00001
00002
00003
00004
00005
00006
00007 #ifndef __VPSCENENODE_H
00008 #define __VPSCENENODE_H
00009
00010 #include "vpmemoryobj.h"
00011 #include <list>
00012 #include <string>
00013
00022 class VPSceneNode : public VPMemoryObj
00023 {
00024 public:
00025
00026 enum TypeID { NONE, GRAPHIC_OBJ, BOX, CONE, CURVE, BEZIER,
00027 CYLINDER, IMAGE, IMAGE_2D, VOLUME, MESH_OBJECT,
00028 SPHERE, JOINT, BIAXIAL_JOINT, CONDYLAR_JOINT,
00029 ELLIPSOID_JOINT, SADDLE_JOINT, PLANE_JOINT,
00030 POLYAXIAL_JOINT, UNIAXIAL_JOINT, HINGE_JOINT,
00031 PIVOT_JOINT };
00032
00034 VPSceneNode();
00035 VPSceneNode(const VPSceneNode& node);
00036 virtual ~VPSceneNode();
00037 VPSceneNode& operator=(const VPSceneNode& node);
00039 const std::string& GetDescription() const { return description; }
00041 void SetDescription(const std::string& desc) { description = desc; }
00043 void AddChild(const VPSceneNode& child);
00046 virtual bool DrawOGL() const;
00047 virtual TypeID GetID() const { return NONE; }
00049 void AutoDeleteChildren() const;
00050 protected:
00051
00053 virtual bool DrawInstanceOGL() const { return false; };
00054
00056 std::list<const VPSceneNode*> childList;
00058 std::string description;
00059 };
00060
00061 #endif