<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
<X3D profile='Immersive'  version='3.0 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' https://www.web3d.org/specifications/x3d-3.0.xsd ' >
<head>
<meta name='titlecontent=' NetworkReroutingAlternateRoutes.x3d '/>
<meta name='descriptioncontent='This scene demonstrates that even though a minimal interference secondary route has been identified in case of link failure, (a) both routes may be invalid due to an overlap at a critical link, and (b) some reasonable third path may exist to route packets. Note that the hop count is larger (by 1) for each successive route. By pushing the right rear button, the critical link that overlaps the primary and secondary route will turn red opaque.'/>
<meta name='creatorcontent='Bill Fischer'/>
<meta name='translatorcontent='Xeena'/>
<meta name='modifiedcontent='20 October 2019'/>
<meta name='modifiedcontent='20 October 2019'/>
<meta name='Imagecontent='NetworkReroutingAlternateRoutes.png' />
<meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/Basic/Networking/NetworkReroutingAlternateRoutes.x3d '/>
<meta name='referencecontent=' NetworkReroutingRoutes.x3d '/>
<meta name='referencecontent=' NetworkReroutingNetwork.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: default, default_network, linkFailure, network, nodeFailure, pipe_material, pipe_material2, red_pipe, red_pipe2, routes

Index for Viewpoint node: default
-->
<Scene>
<WorldInfo title='NetworkReroutingAlternateRoutes.x3d'/>
<Viewpoint DEF='defaultdescription='Network Rerouting Alternate Routesorientation='1 0 0 -.5position='0 6 10'/>
<Group DEF='default_network'> </Group>
<Group> </Group>
<Group>
<Transform rotation='0 1 0 -.785translation='-3 -.5 1'>
<Transform rotation='0 0 1 1.57'>
<Shape>
<Appearance>
<!-- ROUTE information for pipe_material node:  [from linkFailure.toggleValue to transparency ] [from linkFailure.transparency to transparency ] -->
<Material DEF='pipe_materialdiffuseColor='.8 0 0transparency='1'/>
</Appearance>
<Cylinder radius='.1'/>
</Shape>
</Transform>
</Transform>
<Transform rotation='0 1 0 .785translation='-1 -.5 1'>
<Transform rotation='0 0 1 1.57'>
<Shape>
<Appearance>
<!-- ROUTE information for pipe_material2 node:  [from nodeFailure.toggleValue to transparency ] [from nodeFailure.transparency to transparency ] -->
<Material DEF='pipe_material2diffuseColor='.8 0 0transparency='1'/>
</Appearance>
<Cylinder radius='.1'/>
</Shape>
</Transform>
</Transform>
<Transform rotation='0 1 0 .785translation='-3 -.5 3'>
<Transform rotation='0 0 1 1.57'>
<Shape>
<Appearance>
<Material USE=' pipe_material2'/>
</Appearance>
<Cylinder radius='.1'/>
</Shape>
</Transform>
</Transform>
<Transform rotation='0 1 0 -.785translation='-3 -.5 1'>
<Transform rotation='0 0 1 1.57'>
<Shape>
<Appearance>
<Material USE=' pipe_material2'/>
</Appearance>
<Cylinder radius='.1'/>
</Shape>
</Transform>
</Transform>
<Transform/>
<Transform scale='.4 .4 .4translation='4 -.5 -6'>
<Group>
<Transform scale='1 1.5 1translation='0 -.5 0'>
<Shape>
<Appearance>
<Material diffuseColor='.5 .5 .5'/>
</Appearance>
<Box/>
</Shape>
</Transform>
<Shape>
<Appearance>
<Material emissiveColor='1 0 0'/>
</Appearance>
<Cylinder height='2.5radius='.5'/>
</Shape>
<!-- ROUTE information for red_pipe node:  [from isActive to linkFailure.toggle ] -->
<TouchSensor DEF='red_pipedescription='#1 red pipe touchsensor'/>

<Transform translation='0 11 0'>
<Billboard>
<Shape>
<Text string='"Link Error"'>
<FontStyle horizontal='falsestyle='BOLD'/>
</Text>
<Appearance>
<Material emissiveColor='1 0 0'/>
</Appearance>
</Shape>
</Billboard>
</Transform>
</Group>
<Group>
<Transform scale='1 1.5 1translation='3 -.5 0'>
<Shape>
<Appearance>
<Material diffuseColor='.5 .5 .5'/>
</Appearance>
<Box/>
</Shape>
</Transform>
<Transform translation='3 0 0'>
<Shape>
<Appearance>
<Material emissiveColor='1 0 0'/>
</Appearance>
<Cylinder height='2.5radius='.5'/>
</Shape>
<!-- ROUTE information for red_pipe2 node:  [from isActive to nodeFailure.toggle ] -->
<TouchSensor DEF='red_pipe2description='#2 red pipe touchsensor'/>
</Transform>
<Transform translation='3 11 0'>
<Billboard>
<Shape>
<Text string='"Node Error"'>
<FontStyle horizontal='falsestyle='BOLD'/>
</Text>
<Appearance>
<Material emissiveColor='1 0 0'/>
</Appearance>
</Shape>
</Billboard>
</Transform>
</Group>
</Transform>
<field name='toggletype='SFBoolaccessType='inputOnly'/>
<field name='statetype='SFBoolvalue='falseaccessType='initializeOnly'/>
<field name='toggleValuetype='SFFloataccessType='outputOnly'/>
<field name='transStatetype='SFFloatvalue='1accessType='initializeOnly'/>
<field name='transparencytype='SFFloataccessType='outputOnly'/>
<![CDATA[
        
ecmascript:

function toggle ( value, ts ) {
 if(value == true){
   state = !state;
   toggleValue = state;
   }
  if(state){
      transState = 0;
      transparency = transState;
   }
   else{
      transState = 1;
      transparency = transState;
   }
}

      
]]>
</Script>
<field name='toggletype='SFBoolaccessType='inputOnly'/>
<field name='statetype='SFBoolvalue='falseaccessType='initializeOnly'/>
<field name='toggleValuetype='SFFloataccessType='outputOnly'/>
<field name='transStatetype='SFFloatvalue='1accessType='initializeOnly'/>
<field name='transparencytype='SFFloataccessType='outputOnly'/>
<![CDATA[
        
ecmascript:

function toggle ( value, ts ) {
 if(value == true){
   state = !state;
   toggleValue = state;
   }
  if(state){
      transState = 0;
      transparency = transState;
   }
   else{
      transState = 1;
      transparency = transState;
   }
}

      
]]>
</Script>
</Group>
< ROUTE  fromNode=' red_pipe' fromField='isActive' toNode=' linkFailure' toField='toggle'/>
< ROUTE  fromNode=' linkFailure' fromField='toggleValue' toNode=' pipe_material' toField='transparency'/>
< ROUTE  fromNode=' linkFailure' fromField='transparency' toNode=' pipe_material' toField='transparency'/>
< ROUTE  fromNode=' red_pipe2' fromField='isActive' toNode=' nodeFailure' toField='toggle'/>
< ROUTE  fromNode=' nodeFailure' fromField='toggleValue' toNode=' pipe_material2' toField='transparency'/>
< ROUTE  fromNode=' nodeFailure' fromField='transparency' toNode=' pipe_material2' toField='transparency'/>
</Scene>
</X3D>
<!--

to top <!-- Event Graph ROUTE Table shows event connections -->
 
<!-- Index for DEF nodes: default, default_network, linkFailure, network, nodeFailure, pipe_material, pipe_material2, red_pipe, red_pipe2, routes

Index for Viewpoint node: default
-->

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

red_pipe
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
linkFailure
Script
toggle
SFBool

 
 
then
linkFailure
Script
toggleValue
SFFloat

ROUTE
event to
(2)
pipe_material
Material
transparency
SFFloat
 
 
 
then
linkFailure
Script
transparency
SFFloat

ROUTE
event to
(2)
pipe_material
Material
transparency
SFFloat


red_pipe2
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
nodeFailure
Script
toggle
SFBool

 
 
then
nodeFailure
Script
toggleValue
SFFloat

ROUTE
event to
(2)
pipe_material2
Material
transparency
SFFloat
 
 
 
then
nodeFailure
Script
transparency
SFFloat

ROUTE
event to
(2)
pipe_material2
Material
transparency
SFFloat



-->

<!-- Online at
https://www.web3d.org/x3d/content/examples/Basic/Networking/NetworkReroutingAlternateRoutesIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/Networking/NetworkReroutingAlternateRoutes.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. -->