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