00001 #ifndef XDKWRL_TRAVERSER_H
00002 #define XDKWRL_TRAVERSER_H
00003
00004 #include <xdkwrl/tools/transformator.h>
00005
00006 namespace wrl
00007 {
00008 class Node;
00009
00010 class Anchor;
00011 class Appearance;
00012 class AudioClip;
00013 class Background;
00014 class Billboard;
00015 class Box;
00016 class Collision;
00017 class Color;
00018 class ColorInterpolator;
00019 class Cone;
00020 class Contour2D;
00021 class Coordinate;
00022 class CoordinateDeformer;
00023 class CoordinateInterpolator;
00024 class Cylinder;
00025 class CylinderSensor;
00026 class DirectionalLight;
00027 class ElevationGrid;
00028 class Extrusion;
00029 class Fog;
00030 class FontStyle;
00031 class GeoCoordinate;
00032 class GeoElevationGrid;
00033 class GeoLOD;
00034 class GeoLocation;
00035 class GeoMetadata;
00036 class GeoOrigin;
00037 class GeoPositionInterpolator;
00038 class GeoTouchSensor;
00039 class GeoViewpoint;
00040 class Group;
00041 class ImageTexture;
00042 class IndexedFaceSet;
00043 class IndexedLineSet;
00044 class Inline;
00045 class InlineLoadControl;
00046 class LOD;
00047 class Material;
00048 class MovieTexture;
00049 class NavigationInfo;
00050 class Normal;
00051 class NormalInterpolator;
00052 class NurbsCurve;
00053 class NurbsCurve2D;
00054 class NurbsGroup;
00055 class NurbsPositionInterpolator;
00056 class NurbsSurface;
00057 class NurbsTextureSurface;
00058 class OrientationInterpolator;
00059 class PixelTexture;
00060 class PlaneSensor;
00061 class PointLight;
00062 class PointSet;
00063 class Polyline2D;
00064 class PositionInterpolator;
00065 class ProximitySensor;
00066 class ScalarInterpolator;
00067 class Shape;
00068 class Sound;
00069 class Sphere;
00070 class SphereSensor;
00071 class SpotLight;
00072 class Switch;
00073 class Text;
00074 class TextureCoordinate;
00075 class TextureTransform;
00076 class TimeSensor;
00077 class TouchSensor;
00078 class Transform;
00079 class TrimmedSurface;
00080 class Viewpoint;
00081 class VisibilitySensor;
00082 class WorldInfo;
00083
00084
00085
00086 class Traverser
00087 {
00088 public:
00089 void operator()(wrl::Node* node);
00090 virtual ~Traverser() {}
00091 protected:
00092 virtual void treat(Anchor*);
00093 virtual void treat(Appearance*);
00094 virtual void treat(AudioClip*);
00095 virtual void treat(Background*);
00096 virtual void treat(Billboard*);
00097 virtual void treat(Box*);
00098 virtual void treat(Collision*);
00099 virtual void treat(Color*);
00100 virtual void treat(ColorInterpolator*);
00101 virtual void treat(Cone*);
00102 virtual void treat(Contour2D*);
00103 virtual void treat(Coordinate*);
00104 virtual void treat(CoordinateDeformer*);
00105 virtual void treat(CoordinateInterpolator*);
00106 virtual void treat(Cylinder*);
00107 virtual void treat(CylinderSensor*);
00108 virtual void treat(DirectionalLight*);
00109 virtual void treat(ElevationGrid*);
00110 virtual void treat(Extrusion*);
00111 virtual void treat(Fog*);
00112 virtual void treat(FontStyle*);
00113 virtual void treat(GeoCoordinate*);
00114 virtual void treat(GeoElevationGrid*);
00115 virtual void treat(GeoLOD*);
00116 virtual void treat(GeoLocation*);
00117 virtual void treat(GeoMetadata*);
00118 virtual void treat(GeoOrigin*);
00119 virtual void treat(GeoPositionInterpolator*);
00120 virtual void treat(GeoTouchSensor*);
00121 virtual void treat(GeoViewpoint*);
00122 virtual void treat(Group*);
00123 virtual void treat(ImageTexture*);
00124 virtual void treat(IndexedFaceSet*);
00125 virtual void treat(IndexedLineSet*);
00126 virtual void treat(Inline*);
00127 virtual void treat(InlineLoadControl*);
00128 virtual void treat(LOD*);
00129 virtual void treat(Material*);
00130 virtual void treat(MovieTexture*);
00131 virtual void treat(NavigationInfo*);
00132 virtual void treat(Normal*);
00133 virtual void treat(NormalInterpolator*);
00134 virtual void treat(NurbsCurve*);
00135 virtual void treat(NurbsCurve2D*);
00136 virtual void treat(NurbsGroup*);
00137 virtual void treat(NurbsPositionInterpolator*);
00138 virtual void treat(NurbsSurface*);
00139 virtual void treat(NurbsTextureSurface*);
00140 virtual void treat(OrientationInterpolator*);
00141 virtual void treat(PixelTexture*);
00142 virtual void treat(PlaneSensor*);
00143 virtual void treat(PointLight*);
00144 virtual void treat(PointSet*);
00145 virtual void treat(Polyline2D*);
00146 virtual void treat(PositionInterpolator*);
00147 virtual void treat(ProximitySensor*);
00148 virtual void treat(ScalarInterpolator*);
00149 virtual void treat(Shape*);
00150 virtual void treat(Sound*);
00151 virtual void treat(Sphere*);
00152 virtual void treat(SphereSensor*);
00153 virtual void treat(SpotLight*);
00154 virtual void treat(Switch*);
00155 virtual void treat(Text*);
00156 virtual void treat(TextureCoordinate*);
00157 virtual void treat(TextureTransform*);
00158 virtual void treat(TimeSensor*);
00159 virtual void treat(TouchSensor*);
00160 virtual void treat(Transform*);
00161 virtual void treat(TrimmedSurface*);
00162 virtual void treat(Viewpoint*);
00163 virtual void treat(VisibilitySensor*);
00164 virtual void treat(WorldInfo*);
00165 protected:
00166 inline const TransformatorHierarchy& transformHierarchy() const;
00167 inline TransformatorHierarchy& transformHierarchy();
00168 private:
00169 TransformatorHierarchy transformHierarchy_;
00170 };
00171
00172
00173
00174 inline const TransformatorHierarchy&
00175 Traverser::transformHierarchy() const
00176 {
00177 return transformHierarchy_;
00178 }
00179 inline TransformatorHierarchy&
00180 Traverser::transformHierarchy()
00181 {
00182 return transformHierarchy_;
00183 }
00184 }
00185
00186 #endif // XDKWRL_TRAVERSER_H
00187
00188
00189
00190
00191
00192