00001 #include "X3DGLShapeNode.h" 00002 #include "X3DGLGeometryNode.h" 00003 #include "X3DGLAppearanceNode.h" 00004 00005 using namespace X3DTK; 00006 00007 X3DGLShapeNode::X3DGLShapeNode() 00008 : X3DGLChildNode(), _geometry(0), _appearance(0) 00009 { 00010 defineTagName("X3DGLShapeNode", "GLShape"); 00011 } 00012 00013 X3DGLShapeNode::X3DGLShapeNode(const X3DGLShapeNode &N) 00014 : X3DGLChildNode(N), _geometry(N._geometry), _appearance(N._appearance) 00015 { 00016 defineTagName("X3DGLShapeNode", "GLShape"); 00017 } 00018 00019 SFNode X3DGLShapeNode::clone() const 00020 { 00021 return 0; 00022 } 00023 00024 X3DGLShapeNode::~X3DGLShapeNode() 00025 { 00026 } 00027 00028 void X3DGLShapeNode::setGeometry(const X3DGLGeometryNode *geometry) 00029 { 00030 _geometry = (X3DGLGeometryNode *)geometry; 00031 } 00032 00033 void X3DGLShapeNode::setAppearance(const X3DGLAppearanceNode *appearance) 00034 { 00035 _appearance = (X3DGLAppearanceNode *)appearance; 00036 } 00037 00038 bool X3DGLShapeNode::addChild(const SFNode &N) 00039 { 00040 if (dynamic_cast<X3DGLGeometryNode *>(N) != 0) 00041 { 00042 if (_geometry != 0) 00043 return false; 00044 00045 _geometry = N; 00046 return true; 00047 } 00048 00049 if (dynamic_cast<X3DGLAppearanceNode *>(N) != 0) 00050 { 00051 if (_appearance != 0) 00052 return false; 00053 00054 _appearance = N; 00055 return true; 00056 } 00057 00058 return false; 00059 } 00060 00061 bool X3DGLShapeNode::setChild(const SFNode &N) 00062 { 00063 if (dynamic_cast<X3DGLGeometryNode *>(N) != 0) 00064 { 00065 _geometry = N; 00066 return true; 00067 } 00068 00069 if (dynamic_cast<X3DGLAppearanceNode *>(N) != 0) 00070 { 00071 _appearance = N; 00072 return true; 00073 } 00074 00075 return false; 00076 } 00077 00078 bool X3DGLShapeNode::removeChild(const SFNode &N) 00079 { 00080 if (_geometry == N) 00081 { 00082 _geometry = 0; 00083 return true; 00084 } 00085 00086 if (_appearance == N) 00087 { 00088 _appearance = 0; 00089 return true; 00090 } 00091 00092 return false; 00093 } 00094 00095 void X3DGLShapeNode::removeScenesToChildren(const MFScene &sceneList) 00096 { 00097 removeScenes(_geometry, sceneList); 00098 removeScenes(_appearance, sceneList); 00099 } 00100 00101 void X3DGLShapeNode::addScenesToChildren(const MFScene &sceneList) 00102 { 00103 addScenes(_geometry, sceneList); 00104 addScenes(_appearance, sceneList); 00105 }