Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

X3DGLShapeNode.cpp

Go to the documentation of this file.
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 }

Generated on Wed May 14 10:03:12 2003 for X3DToolKit by doxygen1.3