<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "https://www.web3d.org/specifications/x3d-3.3.dtd">
<X3D profile='Immersive'  version='3.3 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' https://www.web3d.org/specifications/x3d-3.3.xsd ' >
<head>
<meta name='titlecontent=' SharkLeftyLocale.x3d '/>
<meta name='descriptioncontent='Lefty Shark with animation to traverse the tank'/>
<meta name='creatorcontent='Tim McLean'/>
<meta name='translatorcontent='Don Brutzman'/>
<meta name='createdcontent='1 June 1998'/>
<meta name='modifiedcontent='20 October 2019'/>
<meta name='referencecontent=' http://faculty.nps.edu/brutzman/kelp '/>
<meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/SharkLeftyLocale.x3d '/>
<meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent=' ../license.html'/>
</head>
<!--

to top <!-- Event Graph ROUTE Table shows event connections -->
 
<!-- Index for DEF nodes: _0, _4, SHARK2_CLOCK, SHARK2_ORIENTATION, SHARK2_POSITION, sharkSwimmingInTankTrigger_5
-->
<Scene>
<WorldInfo title='SharkLeftyLocale.x3d'/>
<!-- ROUTE information for _0 node:  [from SHARK2_POSITION.value_changed to set_translation ] [from SHARK2_ORIENTATION.value_changed to set_rotation ] -->
<Transform DEF='_0translation='0.0 -5.5 -1.0'>
<Inline
  url=' SharkLefty.x3d"https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/SharkLefty.x3d" "SharkLefty.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/SharkLefty.wrl" ' />

<Group>

<!-- ROUTE information for SHARK2_POSITION node:  [from SHARK2_CLOCK.fraction_changed to set_fraction ] [from value_changed to _0.set_translation ] -->
<PositionInterpolator DEF='SHARK2_POSITIONkey='0.0 0.152 0.194 0.224 0.288 0.35 0.427 0.549 0.632 0.7 0.813 1.0keyValue='0.0 -4.25 -1.0 3.75 -4.5 -0.75 4.75 -4.5 -1.0 4.75 -4.5 -2.0 3.25 -4.0 -2.5 1.75 -4.0 -2.75 0.0 -4.0 -3.25 -3.0 -3.5 -4.0 -5.0 -4.0 -2.5 -5.75 -4.5 0.0 -4.5 -4.5 0.25 0.0 -4.25 -1.0'/>

<!-- ROUTE information for SHARK2_ORIENTATION node:  [from SHARK2_CLOCK.fraction_changed to set_fraction ] [from value_changed to _0.set_rotation ] -->
<OrientationInterpolator DEF='SHARK2_ORIENTATIONkey='0.0 0.152 0.194 0.224 0.288 0.35 0.427 0.549 0.632 0.7 0.813 1.0keyValue='0.0 1.0 0.0 6.2134 0.0 1.0 0.0 0.244 0.0 1.0 0.0 1.57 0.1564 0.9974 -0.0262 2.8141 0.0 1.0 0.0 2.967 0.0 1.0 0.0 2.7227 0.0872 0.9961 -0.0107 2.8982 -0.1218 0.9917 -0.0407 3.7824 -0.1469 0.9832 -0.1087 4.3995 0.0 1.0 0.0 6.0912 0.0 1.0 0.0 0.2618 0.0 1.0 0.0 6.2134'/>
</Group>
</Transform>
<!-- ROUTE information for _4 node:  [from sharkSwimmingInTankTrigger_5.firstTime to set_enabled ] [from time to sharkSwimmingInTankTrigger_5.triggerIn ] -->
<TimeSensor DEF='_4loop='true'/>

<!-- ROUTE information for sharkSwimmingInTankTrigger_5 node:  [from _4.time to triggerIn ] [from startTime to SHARK2_CLOCK.set_startTime ] [from firstTime to _4.set_enabled ] -->
<Script DEF='sharkSwimmingInTankTrigger_5'>
<field name='triggerIntype='SFTimeaccessType='inputOnly'/>
<field name='startTimetype='SFTimeaccessType='outputOnly'/>
<field name='firstTimetype='SFBoolaccessType='outputOnly'/>
<![CDATA[
      
ecmascript:

function triggerIn (value, time) 
{
	startTime = value;
	firstTime = false;
}

    
]]>
</Script>
< ROUTE  fromNode=' sharkSwimmingInTankTrigger_5' fromField='startTime' toNode=' SHARK2_CLOCK' toField='set_startTime'/>
< ROUTE  fromNode=' SHARK2_CLOCK' fromField='fraction_changed' toNode=' SHARK2_POSITION' toField='set_fraction'/>
< ROUTE  fromNode=' SHARK2_CLOCK' fromField='fraction_changed' toNode=' SHARK2_ORIENTATION' toField='set_fraction'/>
< ROUTE  fromNode=' SHARK2_POSITION' fromField='value_changed' toNode=' _0' toField='set_translation'/>
< ROUTE  fromNode=' SHARK2_ORIENTATION' fromField='value_changed' toNode=' _0' toField='set_rotation'/>
< ROUTE  fromNode=' sharkSwimmingInTankTrigger_5' fromField='firstTime' toNode=' _4' toField='set_enabled'/>
< ROUTE  fromNode=' _4' fromField='time' toNode=' sharkSwimmingInTankTrigger_5' toField='triggerIn'/>
</Scene>
</X3D>
<!--

to top <!-- Event Graph ROUTE Table shows event connections -->
 
<!-- Index for DEF nodes: _0, _4, SHARK2_CLOCK, SHARK2_ORIENTATION, SHARK2_POSITION, sharkSwimmingInTankTrigger_5
-->

Event Graph ROUTE Table entries with 7 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.

The following ROUTE begins an event-routing loop! Loop occurs at nodeDepth=4.
 
ROUTE _4.time TO sharkSwimmingInTankTrigger_5.triggerIn
_4
TimeSensor
time
SFTime

ROUTE
event to
(1)
sharkSwimmingInTankTrigger_5
Script
triggerIn
SFTime

 
 
then
sharkSwimmingInTankTrigger_5
Script
firstTime
SFBool

ROUTE
event to
(2)
_4
TimeSensor
set_enabled
SFBool

 
 
then
_4
TimeSensor
time
SFTime

ROUTE
event to
(3)
sharkSwimmingInTankTrigger_5
Script
triggerIn
SFTime

 
 
then
sharkSwimmingInTankTrigger_5
Script
firstTime
SFBool

ROUTE
event to
(4)
_4
TimeSensor
set_enabled
SFBool

 
 
then
_4
TimeSensor
time
SFTime

ROUTE
event to
(5)
sharkSwimmingInTankTrigger_5
Script
triggerIn
SFTime

 
 
then
sharkSwimmingInTankTrigger_5
Script
firstTime
SFBool

ROUTE
event to
(6)
_4
TimeSensor
set_enabled
SFBool

 
 
then
_4
TimeSensor
time
SFTime

ROUTE
event to
(7)
sharkSwimmingInTankTrigger_5
Script
triggerIn
SFTime
 
 
 
then
sharkSwimmingInTankTrigger_5
Script
startTime
SFTime

ROUTE
event to
(6)
SHARK2_CLOCK
TimeSensor
set_startTime
SFTime

 
 
then
SHARK2_CLOCK
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(7)
SHARK2_POSITION
PositionInterpolator
set_fraction
SFFloat
 
 
 
then
SHARK2_CLOCK
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(7)
SHARK2_ORIENTATION
OrientationInterpolator
set_fraction
SFFloat
 
 
 
then
sharkSwimmingInTankTrigger_5
Script
startTime
SFTime

ROUTE
event to
(4)
SHARK2_CLOCK
TimeSensor
set_startTime
SFTime

 
 
then
SHARK2_CLOCK
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(5)
SHARK2_POSITION
PositionInterpolator
set_fraction
SFFloat

 
 
then
SHARK2_POSITION
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(6)
_0
Transform
set_translation
SFVec3f
 
 
 
then
SHARK2_CLOCK
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(5)
SHARK2_ORIENTATION
OrientationInterpolator
set_fraction
SFFloat

 
 
then
SHARK2_ORIENTATION
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(6)
_0
Transform
set_rotation
SFRotation
 
 
 
then
sharkSwimmingInTankTrigger_5
Script
startTime
SFTime

ROUTE
event to
(2)
SHARK2_CLOCK
TimeSensor
set_startTime
SFTime

 
 
then
SHARK2_CLOCK
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(3)
SHARK2_POSITION
PositionInterpolator
set_fraction
SFFloat

 
 
then
SHARK2_POSITION
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(4)
_0
Transform
set_translation
SFVec3f
 
 
 
then
SHARK2_CLOCK
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(3)
SHARK2_ORIENTATION
OrientationInterpolator
set_fraction
SFFloat

 
 
then
SHARK2_ORIENTATION
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(4)
_0
Transform
set_rotation
SFRotation


SHARK2_CLOCK
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
SHARK2_POSITION
PositionInterpolator
set_fraction
SFFloat

 
 
then
SHARK2_POSITION
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(2)
_0
Transform
set_translation
SFVec3f
SHARK2_CLOCK
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
SHARK2_ORIENTATION
OrientationInterpolator
set_fraction
SFFloat

 
 
then
SHARK2_ORIENTATION
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(2)
_0
Transform
set_rotation
SFRotation



-->

<!-- Online at
https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/SharkLeftyLocaleIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/SharkLeftyLocale.x3d -->

<!-- Color 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)
-->

to top <!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->