| 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_8ClickDragTouchSensorPlaneSensor.x3d '/> | 
| 6 | <meta name='creator' content='Figure 9.8, 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/09fig08.htm '/> | 
| 8 | <meta name='translator' content='Don Brutzman'/> | 
| 9 | <meta name='created' content='12 August 2000'/> | 
| 10 | <meta name='modified' content='20 October 2019'/> | 
| 11 | <meta name='description' content='Two shapes that rotate about an axis when the viewer drags them, with coordinate axes superimposed to show X3D/VRML directions.'/> | 
| 12 | <meta name='identifier' content=' https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter09SensingViewer/Figure09_8ClickDragTouchSensorPlaneSensor.x3d '/> | 
| 13 | <meta name='generator' content='X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit'/> | 
| 14 | <meta name='license' content='../../license.html'/> | 
| 15 | </head> | 
 DEF nodes index: 
               
               CLICK_SENSOR,
CLOCK,
DRAG_SENSOR,
ROTATING_SHAPE_TRANSFORM,
SPIN_PATH,
TRANSPARENT_BOX_TRANSFORM
               
               
                  DEF nodes index: 
               
               CLICK_SENSOR,
CLOCK,
DRAG_SENSOR,
ROTATING_SHAPE_TRANSFORM,
SPIN_PATH,
TRANSPARENT_BOX_TRANSFORM
            | 16 | <Scene> | 
| 17 | <!-- Click and drag to spin and move shapes. Superfluous Group nodes removed. --> | 
| 18 | <WorldInfo title='Figure09_8ClickDragTouchSensorPlaneSensor.x3d'/> | 
| 19 | <Group> | 
| 20 | 
               <!-- ROUTE information for ROTATING_SHAPE_TRANSFORM node: 
[from SPIN_PATH.value_changed to set_rotation
                              ]
[from DRAG_SENSOR.translation_changed to set_translation
                              ]
 --> <Transform DEF='ROTATING_SHAPE_TRANSFORM'> | 
| 21 | <Shape> | 
| 22 | <Box size='1.414 1.414 1.414'/> | 
| 23 | <Appearance> | 
| 24 | <Material diffuseColor='.1 .9 .9' emissiveColor='.05 .2 .2'/> | 
| 25 | </Appearance> | 
| 26 | </Shape> | 
| 27 | </Transform> | 
| 28 | 
               <!-- ROUTE information for CLICK_SENSOR node: 
[from isOver to CLOCK.set_enabled
                              ]
 --> <TouchSensor DEF='CLICK_SENSOR' description='Touch to spin'/> | 
| 29 | 
               <!-- ROUTE information for DRAG_SENSOR node: 
[from translation_changed to ROTATING_SHAPE_TRANSFORM.set_translation
                              ]
 --> <PlaneSensor DEF='DRAG_SENSOR' description='Click to drag in plane' maxPosition='4 4' minPosition='-4 -4'/> | 
| 30 | 
               <!-- ROUTE information for CLOCK node: 
[from CLICK_SENSOR.isOver to set_enabled
                              ]
[from fraction_changed to SPIN_PATH.set_fraction
                              ]
 --> <TimeSensor DEF='CLOCK' cycleInterval='4' enabled='false' loop='true'/> | 
| 31 | 
               <!-- ROUTE information for SPIN_PATH node: 
[from CLOCK.fraction_changed to set_fraction
                              ]
[from value_changed to ROTATING_SHAPE_TRANSFORM.set_rotation
                              ]
 --> <OrientationInterpolator DEF='SPIN_PATH' key='0 0.5 1' keyValue='0 1 0 0 0 1 0 3.14 0 1 0 6.28'/> | 
| 32 | </Group> | 
| 33 | <!-- A small transparent box is added to indicate the virtual geometry of the PlaneSensor --> | 
| 34 | <Transform DEF='TRANSPARENT_BOX_TRANSFORM'> | 
| 35 | <Shape> | 
| 36 | <Box size='8 8 0.1'/> | 
| 37 | <Appearance> | 
| 38 | <Material diffuseColor='.7 .7 .7' transparency='.5'/> | 
| 39 | </Appearance> | 
| 40 | </Shape> | 
| 41 | </Transform> | 
| 42 | <!-- Note that we are connecting a chain of behavior engines in these ROUTEs. The event types passed via each ROUTE must each match. --> | 
| 43 | < ROUTE fromNode='CLICK_SENSOR' fromField='isOver' toNode='CLOCK' toField='set_enabled'/> | 
| 44 | < ROUTE fromNode='CLOCK' fromField='fraction_changed' toNode='SPIN_PATH' toField='set_fraction'/> | 
| 45 | < ROUTE fromNode='SPIN_PATH' fromField='value_changed' toNode='ROTATING_SHAPE_TRANSFORM' toField='set_rotation'/> | 
| 46 | < ROUTE fromNode='DRAG_SENSOR' fromField='translation_changed' toNode='ROTATING_SHAPE_TRANSFORM' toField='set_translation'/> | 
| 47 | </Scene> | 
| 48 | </X3D> | 
 DEF nodes index: 
         
         CLICK_SENSOR,
CLOCK,
DRAG_SENSOR,
ROTATING_SHAPE_TRANSFORM,
SPIN_PATH,
TRANSPARENT_BOX_TRANSFORM
         
         
            DEF nodes index: 
         
         CLICK_SENSOR,
CLOCK,
DRAG_SENSOR,
ROTATING_SHAPE_TRANSFORM,
SPIN_PATH,
TRANSPARENT_BOX_TRANSFORM
      Event Graph ROUTE Table entries with 4 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.
| CLICK_SENSOR TouchSensor isOver SFBool | CLOCK TimeSensor set_enabled SFBool | then | CLOCK TimeSensor fraction_changed SFFloat | SPIN_PATH OrientationInterpolator set_fraction SFFloat | then | SPIN_PATH OrientationInterpolator value_changed SFRotation | ROTATING_SHAPE_TRANSFORM Transform set_rotation SFRotation | 
| DRAG_SENSOR PlaneSensor translation_changed SFVec3f | ROTATING_SHAPE_TRANSFORM Transform set_translation SFVec3f | 
         <!--
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.
-->