00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __GEOMETRYNODE__H__
00013 #define __GEOMETRYNODE__H__
00014
00015 #include "scenenode.h"
00016 #include "bvhnode.h"
00017 #include "material.h"
00018 #include "geometry.h"
00019 #include "moddefs.h"
00020
00021 namespace VRUT
00022 {
00024 class GeometryNode : public SceneNode
00025 {
00026 protected:
00028 GEOMETRY_ID geometryID;
00030 MATERIAL_ID materialID;
00031
00032 public:
00034 GeometryNode(const wxString & _uid, const wxString & _name)
00035 : SceneNode(_uid, _name, SceneNode::GEOMETRY),
00036 geometryID(GEOMETRY_ID_NONE),
00037 materialID(MATERIAL_ID_NONE)
00038 {
00039 }
00040
00042 GeometryNode(const GeometryNode & g)
00043 : SceneNode(g),
00044 geometryID(g.geometryID),
00045 materialID(g.materialID)
00046 {
00047 }
00048
00050 virtual ~GeometryNode()
00051 {
00052 }
00053
00055 GEOMETRY_ID GetGeometryID() const
00056 {
00057 return geometryID;
00058 }
00059
00061 MATERIAL_ID GetMaterialID() const
00062 {
00063 return materialID;
00064 }
00065
00067 virtual wxString ToString() const
00068 {
00069 return wxString::Format(wxT("%s\nGeometry ID: %i\nMaterial ID: %i\n"), SceneNode::ToString().c_str(), geometryID, materialID);
00070 }
00071
00073 virtual SceneNode * Clone() const
00074 {
00075 return new GeometryNode(*this);
00076 }
00077
00078 friend class Scene;
00079 friend class BVH;
00080 };
00081 };
00082
00083
00084 #endif