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