Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Related Pages

# Hybrid/vtkVRML.h

Go to the documentation of this file.

    00001 /*=========================================================================
    00002
    00003   Program:   Visualization Toolkit
    00004   Module:    $RCSfile: vtkVRML.h,v $
    00005   Language:  C++
    00006
    00007   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen
    00008   All rights reserved.
    00009   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
    00010
    00011      This software is distributed WITHOUT ANY WARRANTY; without even
    00012      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
    00013      PURPOSE.  See the above copyright notice for more information.
    00014
    00015 =========================================================================*/
    00016 /* ======================================================================
    00017
    00018    Importer based on BNF Yacc and Lex parser definition from:
    00019
    00020     **************************************************
    00021         * VRML 2.0 Parser
    00022         * Copyright (C) 1996 Silicon Graphics, Inc.
    00023         *
    00024         * Author(s) :    Gavin Bell
    00025         *                Daniel Woods (first port)
    00026         **************************************************
    00027
    00028   Ported to VTK By:     Thomas D. Citriniti
    00029                         Rensselaer Polytechnic Institute
    00030                         citrit@rpi.edu
    00031
    00032 =======================================================================*/
    00033 #ifndef _VTKVRML_H_
    00034 #define _VTKVRML_H_
    00035
    00036 #define DEFAULTINCREMENT        100
    00037
    00038 #include "vtkHeap.h"
    00039
    00040 #ifdef VTK_USE_ANSI_STDLIB
    00041 #include <new>
    00042 #else
    00043 #include <new.h>
    00044 #endif
    00045
    00046 #if defined(__BORLANDC__) && (__BORLANDC__<0x0560)
    00047 // seems to be missing from new.h and new for borland
    00048 void* operator new[](unsigned int,void *v)
    00049 {
    00050   return v;
    00051 }
    00052 #endif
    00053
    00054 // Use a user-managed heap to remove memory leaks
    00055 // This code must come before "#include vtkVRML.h" because
    00056 // it uses the functions below.
    00057 struct vtkVRMLAllocator
    00058 {
    00059   static void Initialize();
    00060   static void *AllocateMemory(size_t n);
    00061   static void CleanUp();
    00062   static char* StrDup(const char *str);
    00063   static vtkHeap *Heap;
    00064 };
    00065
    00066
    00067
    00068 template <class T>
    00069 class VTK_HYBRID_EXPORT vtkVRMLVectorType
    00070 {
    00071 protected:
    00072   T *Data;
    00073   int Allocated;
    00074   int Used;
    00075 public:
    00076   void Init()
    00077     {
    00078       Allocated=DEFAULTINCREMENT;
    00079       if (!this->UseNew)
    00080         {
    00081         vtkVRMLAllocator::Initialize();
    00082         void* mem = vtkVRMLAllocator::AllocateMemory(Allocated*sizeof(T));
    00083         Data=new(mem) T[Allocated];
    00084         }
    00085       else
    00086         {
    00087         Data = new T[Allocated];
    00088         }
    00089       Used=0;
    00090     }
    00091   vtkVRMLVectorType()
    00092     {
    00093       this->UseNew = 0;
    00094       this->Init();
    00095     }
    00096   vtkVRMLVectorType(int usenew) : UseNew(usenew)
    00097     {
    00098       this->Init();
    00099     }
    00100   ~vtkVRMLVectorType(void)
    00101     {
    00102       if (this->UseNew)
    00103         {
    00104         delete[] Data;
    00105         }
    00106     }
    00107   void Reserve(int newSize)
    00108     {
    00109       T *temp;
    00110       int oldSize;
    00111       if(newSize >= Allocated)
    00112         {
    00113         oldSize=Allocated;
    00114         Allocated=newSize+DEFAULTINCREMENT;
    00115         temp=Data;
    00116         if (!this->UseNew)
    00117           {
    00118           void* mem = vtkVRMLAllocator::AllocateMemory(Allocated*sizeof(T));
    00119           Data=new(mem) T[Allocated];
    00120           }
    00121         else
    00122           {
    00123           Data=new T[Allocated];
    00124           }
    00125         if(Data==(T *)'\0')
    00126           {
    00127           return;
    00128           }
    00129         memcpy((void*)Data, (void*)temp, oldSize*sizeof(T));
    00130         if (this->UseNew)
    00131           {
    00132           delete[] temp;
    00133           }
    00134         }
    00135     }
    00136
    00137   void Demand(int newSize)
    00138     {
    00139       Reserve(newSize);
    00140       Used=newSize;
    00141     }
    00142   int Count(void) const
    00143     {
    00144       return Used;
    00145     }
    00146   T& Get(int index) const
    00147     {
    00148       if (index > Used)
    00149         return Data[Used-1];
    00150       return Data[index];
    00151     }
    00152   T& operator[](int index)
    00153     {
    00154       if (index > Used)
    00155         Demand(index);
    00156       return Data[index];
    00157     }
    00158   operator T*() const
    00159     {
    00160       return Data;
    00161     }
    00162   vtkVRMLVectorType<T>& operator+=(T datum)
    00163     {
    00164       Reserve(Used+1);
    00165       Data[Used]=datum;
    00166       Used++;
    00167       return *this;
    00168     }
    00169   void Push(T datum)
    00170     {
    00171       Reserve(Used+1);
    00172       Data[Used]=datum;
    00173       Used++;
    00174     }
    00175   T& Pop()
    00176     {
    00177       Used--;
    00178       return Data[Used];
    00179     }
    00180   T& Top()
    00181     {
    00182       return Data[Used-1];
    00183     }
    00184
    00185   void* operator new(size_t n)
    00186     {
    00187       return vtkVRMLAllocator::AllocateMemory(n);
    00188     }
    00189
    00190   void operator delete(void *)
    00191     {
    00192     }
    00193
    00194   int UseNew;
    00195 };
    00196
    00197 static const char standardNodes[][2042] = {
    00198   "#VRML V2.0 utf8 \n\
    00199 # \n\
    00200 # ************************************************** \n\
    00201 # * VRML 2.0 Parser \n\
    00202 # * Copyright (C) 1996 Silicon Graphics, Inc. \n\
    00203 # * \n\
    00204 # * Author(s)    : Gavin Bell \n\
    00205 # *                Daniel Woods (first port) \n\
    00206 # ************************************************** \n\
    00207 # \n\
    00208 # Definitions for all of the nodes built-in to the spec. \n\
    00209 # Taken almost directly from the VRML 2.0 final spec: \n\
    00210  \n\
    00211 PROTO Anchor [ \n\
    00212   eventIn      MFNode   addChildren \n\
    00213   eventIn      MFNode   removeChildren \n\
    00214   exposedField MFNode   children        [] \n\
    00215   exposedField SFString description     \"\"  \n\
    00216   exposedField MFString parameter       [] \n\
    00217   exposedField MFString url             [] \n\
    00218   field        SFVec3f  bboxCenter      0.0 0.0 0.0 \n\
    00219   field        SFVec3f  bboxSize        -1.0 -1.0 -1.0 \n\
    00220 ] { } \n\
    00221  \n\
    00222 PROTO Appearance [ \n\
    00223   exposedField SFNode material          NULL \n\
    00224   exposedField SFNode texture           NULL \n\
    00225   exposedField SFNode textureTransform  NULL \n\
    00226 ] { } \n\
    00227  \n\
    00228 PROTO AudioClip [ \n\
    00229   exposedField   SFString description  \"\" \n\
    00230   exposedField   SFBool   loop         FALSE \n\
    00231   exposedField   SFFloat  pitch        1.0 \n\
    00232   exposedField   SFTime   startTime    0 \n\
    00233   exposedField   SFTime   stopTime     0 \n\
    00234   exposedField   MFString url          [] \n\
    00235   eventOut       SFTime   duration_changed \n\
    00236   eventOut       SFBool   isActive \n\
    00237 ] { } \n\
    00238  \n\
    00239 PROTO Background [ \n\
    00240   eventIn      SFBool   set_bind \n\
    00241   exposedField MFFloat  groundAngle  [] \n\
    00242   exposedField MFColor  groundColor  [] \n\
    00243   exposedField MFString backUrl      [] \n\
    00244   exposedField MFString bottomUrl    [] \n\
    00245   exposedField MFString frontUrl     [] \n\
    00246   exposedField MFString leftUrl      [] \n\
    00247   exposedField MFString rightUrl     [] \n\
    00248   exposedField MFString topUrl       [] \n\
    00249   exposedField MFFloat  skyAngle     [] \n\
    00250   exposedField MFColor  skyColor     [ 0 0 0  ] \n\
    00251   eventOut     SFBool   isBound \n\
    00252 ] { }",
    00253   "PROTO Billboard [ \n\
    00254   eventIn      MFNode   addChildren \n\
    00255   eventIn      MFNode   removeChildren \n\
    00256   exposedField SFVec3f  axisOfRotation  0 1 0 \n\
    00257   exposedField MFNode   children        [] \n\
    00258   field        SFVec3f  bboxCenter      0 0 0 \n\
    00259   field        SFVec3f  bboxSize        -1 -1 -1 \n\
    00260 ] { } \n\
    00261  \n\
    00262 PROTO Box [ \n\
    00263   field    SFVec3f size  2 2 2  \n\
    00264 ] { } \n\
    00265  \n\
    00266 PROTO Collision [  \n\
    00267   eventIn      MFNode   addChildren \n\
    00268   eventIn      MFNode   removeChildren \n\
    00269   exposedField MFNode   children        [] \n\
    00270   exposedField SFBool   collide         TRUE \n\
    00271   field        SFVec3f  bboxCenter      0 0 0 \n\
    00272   field        SFVec3f  bboxSize        -1 -1 -1 \n\
    00273   field        SFNode   proxy           NULL \n\
    00274   eventOut     SFTime   collideTime \n\
    00275 ] { } \n\
    00276  \n\
    00277 PROTO Color [ \n\
    00278   exposedField MFColor color     [] \n\
    00279 ] { } \n\
    00280  \n\
    00281 PROTO ColorInterpolator [ \n\
    00282   eventIn      SFFloat set_fraction \n\
    00283   exposedField MFFloat key       [] \n\
    00284   exposedField MFColor keyValue  [] \n\
    00285   eventOut     SFColor value_changed \n\
    00286 ] { } \n\
    00287  \n\
    00288 PROTO Cone [ \n\
    00289   field     SFFloat   bottomRadius 1 \n\
    00290   field     SFFloat   height       2 \n\
    00291   field     SFBool    side         TRUE \n\
    00292   field     SFBool    bottom       TRUE \n\
    00293 ] { } \n\
    00294  \n\
    00295 PROTO Coordinate [ \n\
    00296   exposedField MFVec3f point  [] \n\
    00297 ] { } \n\
    00298  \n\
    00299 PROTO CoordinateInterpolator [ \n\
    00300   eventIn      SFFloat set_fraction \n\
    00301   exposedField MFFloat key       [] \n\
    00302   exposedField MFVec3f keyValue  [] \n\
    00303   eventOut     MFVec3f value_changed \n\
    00304 ] { } \n\
    00305  \n\
    00306 PROTO Cylinder [ \n\
    00307   field    SFBool    bottom  TRUE \n\
    00308   field    SFFloat   height  2 \n\
    00309   field    SFFloat   radius  1 \n\
    00310   field    SFBool    side    TRUE \n\
    00311   field    SFBool    top     TRUE \n\
    00312 ] { } \n\
    00313  \n\
    00314 PROTO CylinderSensor [ \n\
    00315   exposedField SFBool     autoOffset TRUE \n\
    00316   exposedField SFFloat    diskAngle  0.262 \n\
    00317   exposedField SFBool     enabled    TRUE \n\
    00318   exposedField SFFloat    maxAngle   -1 \n\
    00319   exposedField SFFloat    minAngle   0 \n\
    00320   exposedField SFFloat    offset     0 \n\
    00321   eventOut     SFBool     isActive \n\
    00322   eventOut     SFRotation rotation_changed \n\
    00323   eventOut     SFVec3f    trackPoint_changed \n\
    00324 ] { }",
    00325   "PROTO DirectionalLight [ \n\
    00326   exposedField SFFloat ambientIntensity  0  \n\
    00327   exposedField SFColor color             1 1 1 \n\
    00328   exposedField SFVec3f direction         0 0 -1 \n\
    00329   exposedField SFFloat intensity         1  \n\
    00330   exposedField SFBool  on                TRUE  \n\
    00331 ] { } \n\
    00332  \n\
    00333 PROTO ElevationGrid [ \n\
    00334   eventIn      MFFloat  set_height \n\
    00335   exposedField SFNode   color             NULL \n\
    00336   exposedField SFNode   normal            NULL \n\
    00337   exposedField SFNode   texCoord          NULL \n\
    00338   field        SFBool   ccw               TRUE \n\
    00339   field        SFBool   colorPerVertex    TRUE \n\
    00340   field        SFFloat  creaseAngle       0 \n\
    00341   field        MFFloat  height            [] \n\
    00342   field        SFBool   normalPerVertex   TRUE \n\
    00343   field        SFBool   solid             TRUE \n\
    00344   field        SFInt32  xDimension        0 \n\
    00345   field        SFFloat  xSpacing          0.0 \n\
    00346   field        SFInt32  zDimension        0 \n\
    00347   field        SFFloat  zSpacing          0.0 \n\
    00348  \n\
    00349 ] { } \n\
    00350  \n\
    00351 PROTO Extrusion [ \n\
    00352   eventIn MFVec2f    set_crossSection \n\
    00353   eventIn MFRotation set_orientation \n\
    00354   eventIn MFVec2f    set_scale \n\
    00355   eventIn MFVec3f    set_spine \n\
    00356   field   SFBool     beginCap         TRUE \n\
    00357   field   SFBool     ccw              TRUE \n\
    00358   field   SFBool     convex           TRUE \n\
    00359   field   SFFloat    creaseAngle      0 \n\
    00360   field   MFVec2f    crossSection     [ 1 1, 1 -1, -1 -1, -1 1, 1 1 ] \n\
    00361   field   SFBool     endCap           TRUE \n\
    00362   field   MFRotation orientation      0 0 1 0 \n\
    00363   field   MFVec2f    scale            1 1 \n\
    00364   field   SFBool     solid            TRUE \n\
    00365   field   MFVec3f    spine            [ 0 0 0, 0 1 0 ] \n\
    00366 ] { } \n\
    00367  \n\
    00368 PROTO Fog [ \n\
    00369   exposedField SFColor  color            1 1 1 \n\
    00370   exposedField SFString fogType          \"LINEAR\" \n\
    00371   exposedField SFFloat  visibilityRange  0 \n\
    00372   eventIn      SFBool   set_bind \n\
    00373   eventOut     SFBool   isBound \n\
    00374 ] { }",
    00375   "PROTO FontStyle [ \n\
    00376   field SFString family     \"SERIF\" \n\
    00377   field SFBool   horizontal  TRUE \n\
    00378   field MFString justify     \"BEGIN\" \n\
    00379   field SFString language    \"\" \n\
    00380   field SFBool   leftToRight TRUE \n\
    00381   field SFFloat  size       1.0 \n\
    00382   field SFFloat  spacing     1.0 \n\
    00383   field SFString style       \"PLAIN\" \n\
    00384   field SFBool   topToBottom TRUE \n\
    00385 ] { } \n\
    00386  \n\
    00387 PROTO Group [ \n\
    00388   eventIn      MFNode  addChildren \n\
    00389   eventIn      MFNode  removeChildren \n\
    00390   exposedField MFNode  children   [] \n\
    00391   field        SFVec3f bboxCenter 0 0 0 \n\
    00392   field        SFVec3f bboxSize   -1 -1 -1 \n\
    00393 ] { } \n\
    00394  \n\
    00395 PROTO ImageTexture [ \n\
    00396   exposedField MFString url     [] \n\
    00397   field        SFBool   repeatS TRUE \n\
    00398   field        SFBool   repeatT TRUE \n\
    00399 ] { } \n\
    00400  \n\
    00401 PROTO IndexedFaceSet [  \n\
    00402   eventIn       MFInt32 set_colorIndex \n\
    00403   eventIn       MFInt32 set_coordIndex \n\
    00404   eventIn       MFInt32 set_normalIndex \n\
    00405   eventIn       MFInt32 set_texCoordIndex \n\
    00406   exposedField  SFNode  color             NULL \n\
    00407   exposedField  SFNode  coord             NULL \n\
    00408   exposedField  SFNode  normal            NULL \n\
    00409   exposedField  SFNode  texCoord          NULL \n\
    00410   field         SFBool  ccw               TRUE \n\
    00411   field         MFInt32 colorIndex        [] \n\
    00412   field         SFBool  colorPerVertex    TRUE \n\
    00413   field         SFBool  convex            TRUE \n\
    00414   field         MFInt32 coordIndex        [] \n\
    00415   field         SFFloat creaseAngle       0 \n\
    00416   field         MFInt32 normalIndex       [] \n\
    00417   field         SFBool  normalPerVertex   TRUE \n\
    00418   field         SFBool  solid             TRUE \n\
    00419   field         MFInt32 texCoordIndex     [] \n\
    00420 ] { } \n\
    00421  \n\
    00422 PROTO IndexedLineSet [ \n\
    00423   eventIn       MFInt32 set_colorIndex \n\
    00424   eventIn       MFInt32 set_coordIndex \n\
    00425   exposedField  SFNode  color             NULL \n\
    00426   exposedField  SFNode  coord             NULL \n\
    00427   field         MFInt32 colorIndex        [] \n\
    00428   field         SFBool  colorPerVertex    TRUE \n\
    00429   field         MFInt32 coordIndex        [] \n\
    00430 ] { }",
    00431   "PROTO Inline [ \n\
    00432   exposedField MFString url        [] \n\
    00433   field        SFVec3f  bboxCenter 0 0 0 \n\
    00434   field        SFVec3f  bboxSize   -1 -1 -1 \n\
    00435 ] { } \n\
    00436 PROTO LOD [ \n\
    00437   exposedField MFNode  level    []  \n\
    00438   field        SFVec3f center   0 0 0 \n\
    00439   field        MFFloat range    []  \n\
    00440 ] { } \n\
    00441  \n\
    00442 PROTO Material [ \n\
    00443   exposedField SFFloat ambientIntensity  0.2 \n\
    00444   exposedField SFColor diffuseColor      0.8 0.8 0.8 \n\
    00445   exposedField SFColor emissiveColor     0 0 0 \n\
    00446   exposedField SFFloat shininess         0.2 \n\
    00447   exposedField SFColor specularColor     0 0 0 \n\
    00448   exposedField SFFloat transparency      0 \n\
    00449 ] { } \n\
    00450  \n\
    00451 PROTO MovieTexture [ \n\
    00452   exposedField SFBool   loop       FALSE \n\
    00453   exposedField SFFloat  speed      1 \n\
    00454   exposedField SFTime   startTime  0 \n\
    00455   exposedField SFTime   stopTime   0 \n\
    00456   exposedField MFString url       [] \n\
    00457   field        SFBool   repeatS    TRUE \n\
    00458   field        SFBool   repeatT    TRUE \n\
    00459   eventOut     SFFloat  duration_changed \n\
    00460   eventOut     SFBool   isActive \n\
    00461 ] { } \n\
    00462  \n\
    00463 PROTO NavigationInfo [ \n\
    00464   eventIn      SFBool   set_bind \n\
    00465   exposedField MFFloat  avatarSize       [ 0.25, 1.6, 0.75 ] \n\
    00466   exposedField SFBool   headlight        TRUE \n\
    00467   exposedField SFFloat  speed            1.0  \n\
    00468   exposedField MFString type             \"WALK\"  \n\
    00469   exposedField SFFloat  visibilityLimit  0.0  \n\
    00470   eventOut     SFBool   isBound \n\
    00471 ] { } \n\
    00472  \n\
    00473 PROTO Normal [ \n\
    00474   exposedField MFVec3f vector [] \n\
    00475 ] { } \n\
    00476  \n\
    00477 PROTO NormalInterpolator [ \n\
    00478   eventIn      SFFloat set_fraction \n\
    00479   exposedField MFFloat key       [] \n\
    00480   exposedField MFVec3f keyValue  [] \n\
    00481   eventOut     MFVec3f value_changed \n\
    00482 ] { } \n\
    00483  \n\
    00484 PROTO OrientationInterpolator [ \n\
    00485   eventIn      SFFloat    set_fraction \n\
    00486   exposedField MFFloat    key       [] \n\
    00487   exposedField MFRotation keyValue  [] \n\
    00488   eventOut     SFRotation value_changed \n\
    00489 ] { } \n\
    00490  \n\
    00491 PROTO PixelTexture [ \n\
    00492   exposedField SFImage  image      0 0 0 \n\
    00493   field        SFBool   repeatS    TRUE \n\
    00494   field        SFBool   repeatT    TRUE \n\
    00495 ] { }",
    00496   "PROTO PlaneSensor [ \n\
    00497   exposedField SFBool  autoOffset  TRUE \n\
    00498   exposedField SFBool  enabled     TRUE \n\
    00499   exposedField SFVec2f maxPosition -1 -1 \n\
    00500   exposedField SFVec2f minPosition 0 0 \n\
    00501   exposedField SFVec3f offset      0 0 0 \n\
    00502   eventOut     SFBool  isActive \n\
    00503   eventOut     SFVec3f trackPoint_changed \n\
    00504   eventOut     SFVec3f translation_changed \n\
    00505 ] { } \n\
    00506  \n\
    00507 PROTO PointLight [ \n\
    00508   exposedField SFFloat ambientIntensity  0  \n\
    00509   exposedField SFVec3f attenuation       1 0 0 \n\
    00510   exposedField SFColor color             1 1 1  \n\
    00511   exposedField SFFloat intensity         1 \n\
    00512   exposedField SFVec3f location          0 0 0 \n\
    00513   exposedField SFBool  on                TRUE  \n\
    00514   exposedField SFFloat radius            100 \n\
    00515 ] { } \n\
    00516  \n\
    00517 PROTO PointSet [ \n\
    00518   exposedField  SFNode  color      NULL \n\
    00519   exposedField  SFNode  coord      NULL \n\
    00520 ] { } \n\
    00521  \n\
    00522 PROTO PositionInterpolator [ \n\
    00523   eventIn      SFFloat set_fraction \n\
    00524   exposedField MFFloat key       [] \n\
    00525   exposedField MFVec3f keyValue  [] \n\
    00526   eventOut     SFVec3f value_changed \n\
    00527 ] { } \n\
    00528  \n\
    00529 PROTO ProximitySensor [ \n\
    00530   exposedField SFVec3f    center      0 0 0 \n\
    00531   exposedField SFVec3f    size        0 0 0 \n\
    00532   exposedField SFBool     enabled     TRUE \n\
    00533   eventOut     SFBool     isActive \n\
    00534   eventOut     SFVec3f    position_changed \n\
    00535   eventOut     SFRotation orientation_changed \n\
    00536   eventOut     SFTime     enterTime \n\
    00537   eventOut     SFTime     exitTime \n\
    00538 ] { }",
    00539   "PROTO ScalarInterpolator [ \n\
    00540   eventIn      SFFloat set_fraction \n\
    00541   exposedField MFFloat key       [] \n\
    00542   exposedField MFFloat keyValue  [] \n\
    00543   eventOut     SFFloat value_changed \n\
    00544 ] { } \n\
    00545  \n\
    00546 PROTO Script [ \n\
    00547   exposedField MFString url           [ ]  \n\
    00548   field        SFBool   directOutput  FALSE \n\
    00549   field        SFBool   mustEvaluate  FALSE \n\
    00550 ] { } \n\
    00551  \n\
    00552 PROTO Shape [ \n\
    00553   field SFNode appearance NULL \n\
    00554   field SFNode geometry   NULL \n\
    00555 ] { } \n\
    00556  \n\
    00557 PROTO Sound [ \n\
    00558   exposedField SFVec3f  direction     0 0 1 \n\
    00559   exposedField SFFloat  intensity     1 \n\
    00560   exposedField SFVec3f  location      0 0 0 \n\
    00561   exposedField SFFloat  maxBack       10 \n\
    00562   exposedField SFFloat  maxFront      10 \n\
    00563   exposedField SFFloat  minBack       1 \n\
    00564   exposedField SFFloat  minFront      1 \n\
    00565   exposedField SFFloat  priority      0 \n\
    00566   exposedField SFNode   source        NULL \n\
    00567   field        SFBool   spatialize    TRUE \n\
    00568 ] { } \n\
    00569  \n\
    00570 PROTO Sphere [ \n\
    00571   field SFFloat radius  1 \n\
    00572 ] { } \n\
    00573  \n\
    00574 PROTO SphereSensor [ \n\
    00575   exposedField SFBool     autoOffset TRUE \n\
    00576   exposedField SFBool     enabled    TRUE \n\
    00577   exposedField SFRotation offset     0 1 0 0 \n\
    00578   eventOut     SFBool     isActive \n\
    00579   eventOut     SFRotation rotation_changed \n\
    00580   eventOut     SFVec3f    trackPoint_changed \n\
    00581 ] { } \n\
    00582  \n\
    00583 PROTO SpotLight [ \n\
    00584   exposedField SFFloat ambientIntensity  0  \n\
    00585   exposedField SFVec3f attenuation       1 0 0 \n\
    00586   exposedField SFFloat beamWidth         1.570796 \n\
    00587   exposedField SFColor color             1 1 1  \n\
    00588   exposedField SFFloat cutOffAngle       0.785398  \n\
    00589   exposedField SFVec3f direction         0 0 -1 \n\
    00590   exposedField SFFloat intensity         1   \n\
    00591   exposedField SFVec3f location          0 0 0   \n\
    00592   exposedField SFBool  on                TRUE \n\
    00593   exposedField SFFloat radius            100 \n\
    00594 ] { } \n\
    00595  \n\
    00596 PROTO Switch [ \n\
    00597   exposedField    MFNode  choice      [] \n\
    00598   exposedField    SFInt32 whichChoice -1 \n\
    00599 ] { } \n\
    00600  \n\
    00601 PROTO Text [ \n\
    00602   exposedField  MFString string    [] \n\
    00603   field         SFNode   fontStyle NULL \n\
    00604   field         MFFloat  length    [] \n\
    00605   field         SFFloat  maxExtent 0.0 \n\
    00606 ] { }",
    00607   "PROTO TextureCoordinate [ \n\
    00608   exposedField MFVec2f point [] \n\
    00609 ] { } \n\
    00610 PROTO TextureTransform [ \n\
    00611   exposedField SFVec2f center      0 0 \n\
    00612   exposedField SFFloat rotation    0 \n\
    00613   exposedField SFVec2f scale       1 1 \n\
    00614   exposedField SFVec2f translation 0 0 \n\
    00615 ] { } \n\
    00616  \n\
    00617 PROTO TimeSensor [ \n\
    00618   exposedField SFTime   cycleInterval 1 \n\
    00619   exposedField SFBool   enabled       TRUE \n\
    00620   exposedField SFBool   loop          FALSE \n\
    00621   exposedField SFTime   startTime     0 \n\
    00622   exposedField SFTime   stopTime      0 \n\
    00623   eventOut     SFTime   cycleTime \n\
    00624   eventOut     SFFloat  fraction_changed \n\
    00625   eventOut     SFBool   isActive \n\
    00626   eventOut     SFTime   time \n\
    00627 ] { } \n\
    00628  \n\
    00629 PROTO TouchSensor [ \n\
    00630   exposedField SFBool  enabled TRUE \n\
    00631   eventOut     SFVec3f hitNormal_changed \n\
    00632   eventOut     SFVec3f hitPoint_changed \n\
    00633   eventOut     SFVec2f hitTexCoord_changed \n\
    00634   eventOut     SFBool  isActive \n\
    00635   eventOut     SFBool  isOver \n\
    00636   eventOut     SFTime  touchTime \n\
    00637 ] { } \n\
    00638  \n\
    00639 PROTO Transform [ \n\
    00640   eventIn      MFNode      addChildren \n\
    00641   eventIn      MFNode      removeChildren \n\
    00642   exposedField SFVec3f     center           0 0 0 \n\
    00643   exposedField MFNode      children         [] \n\
    00644   exposedField SFRotation  rotation         0 0 1  0 \n\
    00645   exposedField SFVec3f     scale            1 1 1 \n\
    00646   exposedField SFRotation  scaleOrientation 0 0 1  0 \n\
    00647   exposedField SFVec3f     translation      0 0 0 \n\
    00648   field        SFVec3f     bboxCenter       0 0 0 \n\
    00649   field        SFVec3f     bboxSize         -1 -1 -1 \n\
    00650 ] { } \n\
    00651  \n\
    00652 PROTO Viewpoint [ \n\
    00653   eventIn      SFBool     set_bind \n\
    00654   exposedField SFFloat    fieldOfView    0.785398 \n\
    00655   exposedField SFBool     jump           TRUE \n\
    00656   exposedField SFRotation orientation    0 0 1  0 \n\
    00657   exposedField SFVec3f    position       0 0 10 \n\
    00658   field        SFString   description    \"\" \n\
    00659   eventOut     SFTime     bindTime \n\
    00660   eventOut     SFBool     isBound \n\
    00661 ] { }",
    00662   "PROTO VisibilitySensor [ \n\
    00663   exposedField SFVec3f center   0 0 0 \n\
    00664   exposedField SFBool  enabled  TRUE \n\
    00665   exposedField SFVec3f size     0 0 0 \n\
    00666   eventOut     SFTime  enterTime \n\
    00667   eventOut     SFTime  exitTime \n\
    00668   eventOut     SFBool  isActive \n\
    00669 ] { } \n\
    00670  \n\
    00671 PROTO WorldInfo [ \n\
    00672   field MFString info  [] \n\
    00673   field SFString title \"\" \n\
    00674 ] { }",""
    00675 };
    00676 #endif