| 1 | <?xml version="1.0" encoding="UTF-8"?> | 
| 2 | <!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd"> | 
| 3 | <X3D profile='Interactive' version='3.0' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.0.xsd'> | 
| 4 | <head> | 
| 5 | <meta name='title' content=' Figure09_1SpinningCubeTouchSensor.x3d '/> | 
| 6 | <meta name='creator' content='Figure 9.1, The VRML 2.0 Sourcebook, Copyright [1997] By Andrea L. Ames, David R. Nadeau, and John L. Moreland'/> | 
| 7 | <meta name='reference' content=' http://www.wiley.com/legacy/compbooks/vrml2sbk/ch09/09fig01.htm '/> | 
| 8 | <meta name='translator' content='Don Brutzman'/> | 
| 9 | <meta name='created' content='9 August 2000'/> | 
| 10 | <meta name='modified' content='3 May 2024'/> | 
| 11 | <meta name='description' content='A cube that spins when the cursor moves over it. Also see Figure 9.2 for comparison.'/> | 
| 12 | <meta name='reference' content=' Figure09_2SpinningCubeTouchSensorClicked.x3d '/> | 
| 13 | <meta name='identifier' content=' https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter09SensingViewer/Figure09_1SpinningCubeTouchSensor.x3d '/> | 
| 14 | <meta name='generator' content='X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit'/> | 
| 15 | <meta name='license' content='../../license.html'/> | 
| 16 | </head> | 
 DEF nodes index: 
               
               CLOCK,
CUBE_TRANSFORM,
CubePathInterpolator,
MyTouchSensor
               
               
                  DEF nodes index: 
               
               CLOCK,
CUBE_TRANSFORM,
CubePathInterpolator,
MyTouchSensor
            | 17 | <Scene> | 
| 18 | <!-- Rotating Cube --> | 
| 19 | <WorldInfo title='Figure09_1SpinningCubeTouchSensor.x3d'/> | 
| 20 | <Group> | 
| 21 | 
               <!-- ROUTE information for CUBE_TRANSFORM node: 
[from CubePathInterpolator.value_changed to set_rotation
                              ]
 --> <Transform DEF='CUBE_TRANSFORM'> | 
| 22 | <Shape> | 
| 23 | <Box/> | 
| 24 | <Appearance> | 
| 25 | <Material diffuseColor='.5 .5 .5'/> | 
| 26 | </Appearance> | 
| 27 | </Shape> | 
| 28 | </Transform> | 
| 29 | 
               <!-- ROUTE information for MyTouchSensor node: 
[from isOver to CLOCK.set_enabled
                              ]
 --> <TouchSensor DEF='MyTouchSensor' description='Point at box to spin it'/> | 
| 30 | 
               <!-- ROUTE information for CLOCK node: 
[from MyTouchSensor.isOver to set_enabled
                              ]
[from fraction_changed to CubePathInterpolator.set_fraction
                              ]
 --> <TimeSensor DEF='CLOCK' cycleInterval='4' enabled='false' loop='true'/> | 
| 31 | 
               <!-- ROUTE information for CubePathInterpolator node: 
[from CLOCK.fraction_changed to set_fraction
                              ]
[from value_changed to CUBE_TRANSFORM.set_rotation
                              ]
 --> <OrientationInterpolator DEF='CubePathInterpolator' key='0.0 0.50 1.0' keyValue='0.0 1.0 0.0 0.0 0.0 1.0 0.0 3.14 0.0 1.0 0.0 6.28'/> | 
| 32 | </Group> | 
| 33 | <!-- Note that we are connecting a Boolean output to a Boolean input in the first ROUTE. --> | 
| 34 | < ROUTE fromNode='MyTouchSensor' fromField='isOver' toNode='CLOCK' toField='set_enabled'/> | 
| 35 | < ROUTE fromNode='CLOCK' fromField='fraction_changed' toNode='CubePathInterpolator' toField='set_fraction'/> | 
| 36 | < ROUTE fromNode='CubePathInterpolator' fromField='value_changed' toNode='CUBE_TRANSFORM' toField='set_rotation'/> | 
| 37 | </Scene> | 
| 38 | </X3D> | 
 DEF nodes index: 
         
         CLOCK,
CUBE_TRANSFORM,
CubePathInterpolator,
MyTouchSensor
         
         
            DEF nodes index: 
         
         CLOCK,
CUBE_TRANSFORM,
CubePathInterpolator,
MyTouchSensor
      Event Graph ROUTE Table entries with 3 ROUTE connections total, showing X3D event-model relationships for this scene.
Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.
| MyTouchSensor TouchSensor isOver SFBool | CLOCK TimeSensor set_enabled SFBool | then | CLOCK TimeSensor fraction_changed SFFloat | CubePathInterpolator OrientationInterpolator set_fraction SFFloat | then | CubePathInterpolator OrientationInterpolator value_changed SFRotation | CUBE_TRANSFORM Transform set_rotation SFRotation | 
         <!--
Color-coding legend: X3D terminology 
<X3dNode
          DEF='idName' field='value'/> 
 matches XML terminology 
<XmlElement
          DEF='idName' attribute='value'/> 
(Light-blue background: event-based behavior node or statement)
(Grey background inside box: inserted documentation)
(Magenta background: X3D Extensibility)
          -->
      
         
             <!--
For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints.
-->
         
         <!--
For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints.
-->