{ "X3D": {
    "encoding":"UTF-8",
    "@profile":"Immersive",
    "@version":"3.0",
    "@xsd:noNamespaceSchemaLocation":"https://www.web3d.org/specifications/x3d-3.0.xsd",
    "JSON schema":"https://www.web3d.org/specifications/x3d-4.0-JSONSchema.autogenerated.json",
    "head": {
        "meta": [
          {
            "@name":"title",
            "@content":"UssColeTerroristAttack.x3d"
          },
          {
            "@name":"description",
            "@content":"Unclassified physical based model of the Al-Qaida sponsored terrorist attack on the USS COLE on 12 October 2000. Click on the Terrorist boat to trigger the explosion."
          },
          {
            "@name":"creator",
            "@content":"James Harney"
          },
          {
            "@name":"created",
            "@content":"7 October 2001"
          },
          {
            "@name":"modified",
            "@content":"23 August 2023"
          },
          {
            "@name":"reference",
            "@content":"http://en.wikipedia.org/wiki/USS_Cole_bombing"
          },
          {
            "@name":"reference",
            "@content":"http://www.foia.navy.mil/usscole/index.html"
          },
          {
            "@name":"reference",
            "@content":"UssColeTerroristAttack.ppt"
          },
          {
            "@name":"reference",
            "@content":"https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/UssColeTerroristAttack.ppt"
          },
          {
            "@name":"reference",
            "@content":"http://www.pilotonline.com"
          },
          {
            "@name":"reference",
            "@content":"http://www.prop1.org/nucnews/nucnews.htm"
          },
          {
            "@name":"reference",
            "@content":"http://www.jpost.com/Editions/2001/08/12/Features/Features.32382.html"
          },
          {
            "@name":"reference",
            "@content":"https://www.web3d.org/x3d/content/examples/Savage/Scenarios/CollisionUssGreenvilleEhimeMaru/CollisionCourses.x3d"
          },
          {
            "@name":"reference",
            "@content":"https://www.web3d.org/x3d/content/examples/Savage/Scenarios/CollisionUssGreenvilleEhimeMaru/CollisionCourses.wrl"
          },
          {
            "@name":"reference",
            "@content":"https://www.web3d.org/x3d/content/examples/Savage/Tools/Animation/WaypointInterpolatorPrototype.x3d"
          },
          {
            "@name":"reference",
            "@content":"https://www.fas.org/man/dod-101/navy/docs/swos/cmd/cp17/sld001.htm"
          },
          {
            "@name":"reference",
            "@content":"NIMA Chart No. 62098 Banda at Tdwahi, 4th Ed. 30 Sep 1995"
          },
          {
            "@name":"reference",
            "@content":"NIMA62098.jpg"
          },
          {
            "@name":"reference",
            "@content":"https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/NIMA62098.jpg"
          },
          {
            "@name":"reference",
            "@content":"https://www.fas.org/irp/doddir/dod/app-j_THREATCON.htm"
          },
          {
            "@name":"reference",
            "@content":"https://www.fas.org/irp/program/core/dted.htm"
          },
          {
            "@name":"subject",
            "@content":"USS COLE, Al-Qaida sponsored Terrorist Attacks"
          },
          {
            "@name":"identifier",
            "@content":"https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/UssColeTerroristAttack.x3d"
          },
          {
            "@name":"generator",
            "@content":"X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit"
          },
          {
            "@name":"license",
            "@content":"../../license.html"
          },
          {
            "@name":"translated",
            "@content":"26 March 2026"
          },
          {
            "@name":"generator",
            "@content":"X3dToJson.xslt, https://www.web3d.org/x3d/stylesheets/X3dToJson.html"
          },
          {
            "@name":"reference",
            "@content":"X3D JSON encoding: https://www.web3d.org/wiki/index.php/X3D_JSON_Encoding"
          }
        ]
    },
    "Scene": {
        "-children":[
          {
            "#comment":"<Group DEF='ExternProtoDeclareGroup'> </Group>"
          },
          {
            "#comment":"This group holds ExternProtoDeclare statements to simplify editing"
          },
          { "WorldInfo":
            {
              "@title":"UssColeTerroristAttack.x3d"
            }
          },
          { "ExternProtoDeclare":
            {
              "@name":"WaypointInterpolator",
              "@appinfo":"Reads waypoints and legSpeeds/legDurations/defaultSpeed to provide a customizable position/orientation interpolator.",
              "@url":["../../../Savage/Tools/Animation/WaypointInterpolatorPrototype.x3d#WaypointInterpolator","https://www.web3d.org/x3d/content/examples/Savage/Tools/Animation/WaypointInterpolatorPrototype.x3d#WaypointInterpolator","../../../Savage/Tools/Animation/WaypointInterpolatorPrototype.wrl#WaypointInterpolator","https://www.web3d.org/x3d/content/examples/Savage/Tools/Animation/WaypointInterpolatorPrototype.wrl#WaypointInterpolator"],
              "-children":[
                {
                  "#comment":"Priority of use: legSpeeds (m/sec), legDurations (seconds), defaultSpeed (m/sec)"
                },
                {
                  "#comment":"interpolation fields"
                },
                {
                  "#comment":"display-related fields"
                }
              ],
              "field": [
                {
                  "@name":"description",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Short description of what is animated by this WaypointInterpolator.",
                  "@type":"SFString"
                },
                {
                  "@name":"waypoints",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Waypoints being traversed with interpolation of intermediate positions and orientations.",
                  "@type":"MFVec3f"
                },
                {
                  "@name":"add_waypoint",
                  "@accessType":"inputOnly",
                  "@appinfo":"Add another single waypoint to array of waypoints recalculate interpolator values.",
                  "@type":"SFVec3f"
                },
                {
                  "@name":"set_waypoints",
                  "@accessType":"inputOnly",
                  "@appinfo":"Replace all waypoints recalculate interpolator values.",
                  "@type":"MFVec3f"
                },
                {
                  "@name":"pitchUpDownForVerticalWaypoints",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Whether to pitch child geometry (such as a vehicle) up or down to match vertical slope",
                  "@type":"SFBool"
                },
                {
                  "@name":"legSpeeds",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Units m/sec. If used array lengths for legSpeeds and legDurations must be one less than number of waypoints.",
                  "@type":"MFFloat"
                },
                {
                  "@name":"legDurations",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Units in seconds. If used array lengths for legSpeeds and legDurations must be one less than number of waypoints.",
                  "@type":"MFTime"
                },
                {
                  "@name":"defaultSpeed",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Units m/sec.",
                  "@type":"SFFloat"
                },
                {
                  "@name":"turningRate",
                  "@accessType":"initializeOnly",
                  "@appinfo":"turningRate (degrees/second) also determines standoff distance prior to waypoint where turn commences. If 0 turns are instantaneous.",
                  "@type":"SFFloat"
                },
                {
                  "@name":"totalDuration",
                  "@accessType":"outputOnly",
                  "@appinfo":"Output calculation summing all leg durations, useful for setting TimeSensor cycleInterval. Units in seconds.",
                  "@type":"SFTime"
                },
                {
                  "@name":"set_fraction",
                  "@accessType":"inputOnly",
                  "@appinfo":"exposed PositionInterpolator and OrientationInterpolator setting",
                  "@type":"SFFloat"
                },
                {
                  "@name":"position_changed",
                  "@accessType":"outputOnly",
                  "@appinfo":"exposed PositionInterpolator setting",
                  "@type":"SFVec3f"
                },
                {
                  "@name":"orientation_changed",
                  "@accessType":"outputOnly",
                  "@appinfo":"exposed OrientationInterpolator setting",
                  "@type":"SFRotation"
                },
                {
                  "@name":"lineColor",
                  "@accessType":"inputOutput",
                  "@appinfo":"default color for non-active line segments",
                  "@type":"SFColor"
                },
                {
                  "@name":"highlightSegmentColor",
                  "@accessType":"inputOutput",
                  "@appinfo":"active segment highlight color",
                  "@type":"SFColor"
                },
                {
                  "@name":"transparency",
                  "@accessType":"inputOutput",
                  "@appinfo":"1.0 is completely transparent, 0.0 is completely opaque.",
                  "@type":"SFFloat"
                },
                {
                  "@name":"labelDisplayMode",
                  "@accessType":"initializeOnly",
                  "@appinfo":"allowed values: none; waypoints (produce labels at each waypoint); or interpolation (produce single moving label at interpolator time course speed location)",
                  "@type":"SFString"
                },
                {
                  "@name":"heightLabel",
                  "@accessType":"initializeOnly",
                  "@appinfo":"allowed values: altitude depth (negate Y value) none",
                  "@type":"SFString"
                },
                {
                  "@name":"labelOffset",
                  "@accessType":"initializeOnly",
                  "@appinfo":"heightLabel relative location",
                  "@type":"SFVec3f"
                },
                {
                  "@name":"labelFontSize",
                  "@accessType":"initializeOnly",
                  "@appinfo":"heightLabel text size",
                  "@type":"SFFloat"
                },
                {
                  "@name":"labelColor",
                  "@accessType":"initializeOnly",
                  "@appinfo":"heightLabel text color",
                  "@type":"SFColor"
                },
                {
                  "@name":"traceEnabled",
                  "@accessType":"initializeOnly",
                  "@appinfo":"enable console output to trace script computations and prototype progress",
                  "@type":"SFBool"
                },
                {
                  "@name":"outputInitializationComputations",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Output the number of waypoints totalDistance and totalDuration to console upon initialization",
                  "@type":"SFBool"
                },
                {
                  "@name":"verticalDropLineColor",
                  "@accessType":"inputOutput",
                  "@appinfo":"default color for vertical drop-line segments",
                  "@type":"SFColor"
                },
                {
                  "@name":"verticalDropLineTransparency",
                  "@accessType":"inputOutput",
                  "@appinfo":"1.0 is completely transparent, 0.0 is completely opaque.",
                  "@type":"SFFloat"
                }
              ]
            }
          },
          { "ExternProtoDeclare":
            {
              "@name":"TNTBasedExplosion",
              "@appinfo":"Physics-based explosion model",
              "@url":["PhysicsBasedExplosionPrototype.x3d#TNTBasedExplosion","https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/PhysicsBasedExplosionPrototype.x3d#TNTBasedExplosion","PhysicsBasedExplosionPrototype.wrl#TNTBasedExplosion","https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/PhysicsBasedExplosionPrototype.wrl#TNTBasedExplosion"],
              "field": [
                {
                  "@name":"startExplosion",
                  "@accessType":"inputOnly",
                  "@type":"SFTime"
                }
              ]
            }
          },
          { "ExternProtoDeclare":
            {
              "@name":"TerroristBoat",
              "@url":["TerroristBoatPrototype.x3d#TerroristBoat","https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/TerroristBoatPrototype.x3d#TerroristBoat","TerroristBoatPrototype.wrl#TerroristBoat","https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/TerroristBoatPrototype.wrl#TerroristBoat"],
              "field": [
                {
                  "@name":"startExplosion",
                  "@accessType":"inputOnly",
                  "@type":"SFTime"
                }
              ]
            }
          },
          { "ExternProtoDeclare":
            {
              "@name":"ArleighBurke",
              "@appinfo":"Arleigh Burke class destroyer",
              "@url":["../../ShipsMilitary/DDGArleighBurkeUnitedStates/ArleighBurkePrototype.x3d#ArleighBurke","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/DDGArleighBurkeUnitedStates/ArleighBurkePrototype.x3d#ArleighBurke","../../ShipsMilitary/DDGArleighBurkeUnitedStates/ArleighBurkePrototype.wrl#ArleighBurke","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/DDGArleighBurkeUnitedStates/ArleighBurkePrototype.wrl#ArleighBurke"],
              "field": [
                {
                  "@name":"startExplosion",
                  "@accessType":"inputOnly",
                  "@type":"SFTime"
                }
              ]
            }
          },
          { "ExternProtoDeclare":
            {
              "@name":"CameraCompass12",
              "@appinfo":"Circular set of compass bearings that follow the active viewpoint set at 360/12 = 30 degree intervals. North = +X axis East = +Z axis up = +Y axis.",
              "@url":["../../../Savage/Tools/HeadsUpDisplays/CameraCompassPrototypes.x3d#CameraCompass12","https://www.web3d.org/x3d/content/examples/Savage/Tools/HeadsUpDisplays/CameraCompassPrototypes.x3d#CameraCompass12","../../../Savage/Tools/HeadsUpDisplays/CameraCompassPrototypes.wrl#CameraCompass12","https://www.web3d.org/x3d/content/examples/Savage/Tools/HeadsUpDisplays/CameraCompassPrototypes.wrl#CameraCompass12"],
              "field": [
                {
                  "@name":"enabled",
                  "@accessType":"inputOutput",
                  "@type":"SFBool"
                },
                {
                  "@name":"positionOffsetFromCamera",
                  "@accessType":"inputOutput",
                  "@type":"SFVec3f"
                },
                {
                  "@name":"markerColor",
                  "@accessType":"inputOutput",
                  "@type":"SFColor"
                },
                {
                  "@name":"labelColor",
                  "@accessType":"inputOutput",
                  "@type":"SFColor"
                }
              ]
            }
          },
          { "ExternProtoDeclare":
            {
              "@name":"DvdController",
              "@appinfo":"Digital Virtual Display (DVD) Controller Prototype is a heads-up display (HUD) to control animation timing",
              "@url":["../../Tools/HeadsUpDisplays/DvdControllerPrototype.x3d#DvdController","https://www.web3d.org/x3d/content/examples/Savage/Tools/HeadsUpDisplays/DvdControllerPrototype.x3d#DvdController","../../Tools/HeadsUpDisplays/DvdControllerPrototype.wrl#DvdController","https://www.web3d.org/x3d/content/examples/Savage/Tools/HeadsUpDisplays/DvdControllerPrototype.wrl#DvdController"],
              "field": [
                {
                  "@name":"description",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Short description of what is animated by this DvdController.",
                  "@type":"SFString"
                },
                {
                  "@name":"playEnabled",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Whether or not play mode is enabled including during startup.",
                  "@type":"SFBool"
                },
                {
                  "@name":"displayMode",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Initializes how control buttons and slider are displayed. The control buttons include DIS control (i.e. Master Ghost Local) and Playback control (i.e. Reset to Start Fast Rewind Rewind Pause Play Fast Forward Reset to End). Possible values are (case sensitive): ALL DIS_ONLY PLAYBACK_ONLY SLIDER_ONLY DIS_PLAYBACK DIS_SLIDER PLAYBACK_SLIDER and NONE.",
                  "@type":"SFString"
                },
                {
                  "@name":"setDisplayMode",
                  "@accessType":"inputOnly",
                  "@appinfo":"Sets how control buttons and slider are displayed. The control buttons include DIS control (i.e. Master Ghost Local) and Playback control (i.e. Reset to Start Fast Rewind Rewind Pause Play Fast Forward Reset to End). Possible values are (case sensitive): ALL DIS_ONLY PLAYBACK_ONLY SLIDER_ONLY DIS_PLAYBACK DIS_SLIDER PLAYBACK_SLIDER and NONE.",
                  "@type":"SFString"
                },
                {
                  "@name":"buttonColor",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Default button color.",
                  "@type":"SFColor"
                },
                {
                  "@name":"selectedButtonColor",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Button color when selected by user.",
                  "@type":"SFColor"
                },
                {
                  "@name":"labelColor",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Default label color.",
                  "@type":"SFColor"
                },
                {
                  "@name":"selectedLabelColor",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Label color when selected by user.",
                  "@type":"SFColor"
                },
                {
                  "@name":"locationOffset",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Modified screen location and distance (for size).",
                  "@type":"SFVec3f"
                },
                {
                  "@name":"clockEnabled",
                  "@accessType":"initializeOnly",
                  "@type":"SFBool"
                },
                {
                  "@name":"cycleInterval",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Time for complete loop cycle in seconds.",
                  "@type":"SFTime"
                },
                {
                  "@name":"set_cycleInterval",
                  "@accessType":"inputOnly",
                  "@type":"SFTime"
                },
                {
                  "@name":"cycleInterval_changed",
                  "@accessType":"outputOnly",
                  "@type":"SFTime"
                },
                {
                  "@name":"speedFactor",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Factor used to determine the speed increase/decrease for Fast Rewind and Fast Forward action.",
                  "@type":"SFFloat"
                },
                {
                  "@name":"isActive",
                  "@accessType":"outputOnly",
                  "@type":"SFBool"
                },
                {
                  "@name":"startTime_changed",
                  "@accessType":"outputOnly",
                  "@type":"SFTime"
                },
                {
                  "@name":"stopTime_changed",
                  "@accessType":"outputOnly",
                  "@type":"SFTime"
                },
                {
                  "@name":"time_changed",
                  "@accessType":"outputOnly",
                  "@type":"SFTime"
                },
                {
                  "@name":"fraction_changed",
                  "@accessType":"outputOnly",
                  "@type":"SFFloat"
                },
                {
                  "@name":"secondsElapsed",
                  "@accessType":"outputOnly",
                  "@type":"SFTime"
                },
                {
                  "@name":"isMaster",
                  "@accessType":"outputOnly",
                  "@appinfo":"isMaster isRemote and isLocal are booleans represent a 3-way toggle. Only one of them can have a true value at any time.",
                  "@type":"SFBool"
                },
                {
                  "@name":"isRemote",
                  "@accessType":"outputOnly",
                  "@appinfo":"isMaster isRemote and isLocal are booleans represent a 3-way toggle. Only one of them can have a true value at any time.",
                  "@type":"SFBool"
                },
                {
                  "@name":"isLocal",
                  "@accessType":"outputOnly",
                  "@appinfo":"isMaster isRemote and isLocal are booleans represent a 3-way toggle. Only one of them can have a true value at any time.",
                  "@type":"SFBool"
                },
                {
                  "@name":"isPaused",
                  "@accessType":"outputOnly",
                  "@appinfo":"isPaused and isRunning always have opposite values. When isPaused is true isRunning will be false and vice versa.",
                  "@type":"SFBool"
                },
                {
                  "@name":"isRunning",
                  "@accessType":"outputOnly",
                  "@appinfo":"isPaused and isRunning always have opposite values. When isPaused is true isRunning will be false and vice versa.",
                  "@type":"SFBool"
                },
                {
                  "@name":"traceEnabled",
                  "@accessType":"initializeOnly",
                  "@appinfo":"Enable/disable console output for troubleshooting",
                  "@type":"SFBool"
                },
                {
                  "@name":"testTimeVal",
                  "@accessType":"initializeOnly",
                  "@type":"SFTime"
                }
              ]
            }
          },
          { "ExternProtoDeclare":
            {
              "@name":"LineBoat",
              "@url":["LineBoatPrototype.x3d#LineBoat","https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/LineBoatPrototype.x3d#TerroristBoat","LineBoatPrototype.wrl#LineBoat","https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/LineBoatPrototype.wrl#TerroristBoat"],
              "field": [
                {
                  "@name":"startExplosion",
                  "@accessType":"inputOnly",
                  "@type":"SFTime"
                }
              ]
            }
          },
          { "ExternProtoDeclare":
            {
              "@name":"GarbageBoat",
              "@url":["GarbageBoatPrototype.x3d#GarbageBoat","https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/GarbageBoatPrototype.x3d#GarbageBoat","GarbageBoatPrototype.wrl#GarbageBoat","https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/GarbageBoatPrototype.wrl#GarbageBoat"],
              "field": [
                {
                  "@name":"startExplosion",
                  "@accessType":"inputOnly",
                  "@type":"SFTime"
                }
              ]
            }
          },
          { "Group":
            {
              "-children":[
                { "NavigationInfo":
                  {
                    "@speed":100,
                    "@type":["EXAMINE","FLY","ANY"],
                    "@visibilityLimit":50000
                  }
                },
                { "Background":
                  {
                    "@groundAngle":[1.309,1.570796],
                    "@groundColor":[0.1,0.1,0,0.4,0.25,0.2,0.6,0.6,0.6],
                    "@skyAngle":[1.309,1.571],
                    "@skyColor":[0,0.2,0.7,0,0.5,1,1,1,1]
                  }
                },
                {
                  "#comment":"*****************************Main Scene Viewpoints******************"
                },
                { "Group":
                  {
                    "@DEF":"ViewPoints",
                    "-children":[
                      { "Viewpoint":
                        {
                          "@DEF":"EntryView",
                          "@description":"Aden Chart",
                          "@position":[0,0.1,4]
                        }
                      },
                      { "Viewpoint":
                        {
                          "@description":"Aden Chart Close Up",
                          "@position":[0,0.5,2]
                        }
                      },
                      { "Viewpoint":
                        {
                          "@description":"Harbor View",
                          "@orientation":[1,0,0,-0.95],
                          "@position":[17000,20000,40000]
                        }
                      },
                      { "Viewpoint":
                        {
                          "@description":"Overhead RefuelingDolphin Seven",
                          "@orientation":[1,0,0,-1.57],
                          "@position":[27838.31,700,14166.67]
                        }
                      },
                      { "Viewpoint":
                        {
                          "@description":"Final View of Terrorist Attack",
                          "@position":[27793.31,10,14330]
                        }
                      },
                      {
                        "#comment":"***************************Scene Compass**********************"
                      }
                    ]
                  }
                },
                { "Transform":
                  {
                    "@DEF":"Compass",
                    "-children":[
                      { "ProtoInstance":
                        {
                          "@name":"CameraCompass12",
                          "fieldValue": [
                            {
                              "@name":"enabled",
                              "@value":true
                            },
                            {
                              "@name":"positionOffsetFromCamera",
                              "@value":[0,5,0]
                            },
                            {
                              "@name":"markerColor",
                              "@value":[0.3,0.3,0.8]
                            },
                            {
                              "@name":"labelColor",
                              "@value":[1,1,1]
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "#comment":"************DVD Controller for Scene************"
                },
                {
                  "#comment":"Looks like this must be instantiated before WaypointInterpolator in order to receive totalDuration value; this is a browser bug."
                },
                {
                  "#comment":"initialilze cycleInterval to correct value as default, in case initialization ROUTE fails. cycleInterval should not need to be reset, so this is superfluous."
                },
                { "ProtoInstance":
                  {
                    "@name":"DvdController",
                    "@DEF":"ColeAnimationDvdController",
                    "fieldValue": [
                      {
                        "@name":"description",
                        "@value":"ColeAnimationDvdController"
                      },
                      {
                        "@name":"buttonColor",
                        "@value":[0.655,0.655,0.655]
                      },
                      {
                        "@name":"selectedButtonColor",
                        "@value":[0.675,0.675,0.675]
                      },
                      {
                        "@name":"selectedLabelColor",
                        "@value":[0.9,0,0]
                      },
                      {
                        "@name":"locationOffset",
                        "@value":[-6,-3,-1]
                      },
                      {
                        "@name":"cycleInterval",
                        "@value":13416
                      },
                      {
                        "@name":"speedFactor",
                        "@value":25
                      }
                    ]
                  }
                },
                {
                  "#comment":"*************COLE Code*************"
                },
                { "Transform":
                  {
                    "@DEF":"ColeTransform",
                    "-children":[
                      { "ProtoInstance":
                        {
                          "@name":"ArleighBurke",
                          "@DEF":"DDG-51"
                        }
                      }
                    ]
                  }
                },
                { "ProtoInstance":
                  {
                    "@name":"WaypointInterpolator",
                    "@DEF":"ColeInterpolator",
                    "fieldValue": [
                      {
                        "@name":"description",
                        "@value":"ColeInterpolator"
                      },
                      {
                        "@name":"waypoints",
                        "@value":[27000,0,34000,24000,0,29000,23000,0,22000,23000,0,18000,26500,0,15000,28950,0,14000,27838.31,0,14167,27838.31,0,14167]
                      },
                      {
                        "@name":"legDurations",
                        "@value":[700,723,754,811,819,849,8760]
                      },
                      {
                        "@name":"turningRate",
                        "@value":5
                      },
                      {
                        "@name":"labelDisplayMode",
                        "@value":"interpolation"
                      },
                      {
                        "@name":"lineColor",
                        "@value":[0,0.8,0.8]
                      },
                      {
                        "@name":"labelColor",
                        "@value":[0,0.8,0.8]
                      },
                      {
                        "@name":"labelOffset",
                        "@value":[0,20,0]
                      },
                      {
                        "@name":"labelFontSize",
                        "@value":6
                      },
                      {
                        "@name":"traceEnabled",
                        "@value":false
                      }
                    ],
                    "-children":[
                      {
                        "#comment":"1 knot = 0.514444444 meters/second, 11 knots = 5.66 meters/second"
                      }
                    ]
                  }
                },
                {
                  "#comment":"*************Terrorist Boat and Explosion Code***"
                },
                { "Transform":
                  {
                    "@DEF":"TerroristBoatTransform",
                    "@rotation":[0,1,0,-0.5],
                    "-children":[
                      { "ProtoInstance":
                        {
                          "@name":"TerroristBoat",
                          "@DEF":"Boat"
                        }
                      },
                      { "TouchSensor":
                        {
                          "@DEF":"TerroristTouch",
                          "@description":"touch to trigger explosion"
                        }
                      },
                      { "ROUTE":
                        {
                          "@fromField":"touchTime",
                          "@fromNode":"TerroristTouch",
                          "@toField":"startExplosion",
                          "@toNode":"Boat"
                        }
                      },
                      {
                        "#comment":"********************Explosion Code*****************"
                      },
                      { "Transform":
                        {
                          "@DEF":"TNTtransform",
                          "@translation":[9,0,0],
                          "-children":[
                            { "ProtoInstance":
                              {
                                "@name":"TNTBasedExplosion",
                                "@DEF":"TerroristExplosion"
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                { "ProtoInstance":
                  {
                    "@name":"WaypointInterpolator",
                    "@DEF":"TerroristInterpolator",
                    "fieldValue": [
                      {
                        "@name":"description",
                        "@value":"TerroristInterpolator"
                      },
                      {
                        "@name":"waypoints",
                        "@value":[25000,-9.5,14000,27000,-9.5,15000,27000,-9.5,14350,27793.31,-9.5,14300,27760.31,-9.5,14201,27760.31,-9.5,14201]
                      },
                      {
                        "@name":"legDurations",
                        "@value":[9068,811,819,2698,88]
                      },
                      {
                        "@name":"turningRate",
                        "@value":5
                      },
                      {
                        "@name":"labelDisplayMode",
                        "@value":"interpolation"
                      },
                      {
                        "@name":"lineColor",
                        "@value":[0.8,0.4,0.1]
                      },
                      {
                        "@name":"labelColor",
                        "@value":[0.8,0.4,0.1]
                      },
                      {
                        "@name":"labelOffset",
                        "@value":[0,10,0]
                      },
                      {
                        "@name":"labelFontSize",
                        "@value":3
                      },
                      {
                        "@name":"traceEnabled",
                        "@value":false
                      }
                    ],
                    "-children":[
                      {
                        "#comment":"1 knot = 0.514444444 meters/second, 11 knots = 5.66 meters/second"
                      }
                    ]
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"touchTime",
                    "@fromNode":"TerroristTouch",
                    "@toField":"startExplosion",
                    "@toNode":"TerroristExplosion"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"touchTime",
                    "@fromNode":"TerroristTouch",
                    "@toField":"startExplosion",
                    "@toNode":"DDG-51"
                  }
                },
                {
                  "#comment":"*************Clock control*************"
                },
                {
                  "#comment":"TimeSensor cycleInterval is reset when each WaypointInterpolator is initialized"
                },
                { "TimeSensor":
                  {
                    "@DEF":"MasterClock"
                  }
                },
                { "TimeSensor":
                  {
                    "@DEF":"TerroristClock"
                  }
                },
                {
                  "#comment":"TODO: Delete if unneeded"
                },
                { "PositionInterpolator":
                  {
                    "@DEF":"DummyInterpolator",
                    "@key":[0,1],
                    "@keyValue":[0,0,0,0,0,0]
                  }
                },
                { "Group":
                  {
                    "@DEF":"InlineGroup",
                    "-children":[
                      {
                        "#comment":"*************Geography and Entry Point Code***"
                      },
                      {
                        "#comment":"<LOD center='27793.31 0 14159'/>"
                      },
                      { "Inline":
                        {
                          "@url":["AdenHarbor.x3d","https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/AdenHarbor.x3d","AdenHarbor.wrl","https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/AdenHarbor.wrl"]
                        }
                      },
                      { "Inline":
                        {
                          "@url":["AdenHarborChart.x3d","https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/AdenHarborChart.x3d","AdenHarborChart.wrl","https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/AdenHarborChart.wrl"]
                        }
                      },
                      {
                        "#comment":"*************Refueling Pier Code*************"
                      },
                      { "Transform":
                        {
                          "@DEF":"RefuelingDolphin",
                          "@translation":[27793.31,-10,14159],
                          "-children":[
                            { "Inline":
                              {
                                "@url":["RefuelingPierSeven.x3d","https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/RefuelingPierSeven.x3d","RefuelingPierSeven.wrl","https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/RefuelingPierSeven.wrl"]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "#comment":"*******Background entities***********"
                      },
                      { "Transform":
                        {
                          "@DEF":"TankerTransform",
                          "@rotation":[0,1,0,3.24],
                          "@translation":[28550,0,14700],
                          "-children":[
                            { "Inline":
                              {
                                "@DEF":"TANKER",
                                "@url":["../../ShipsCivilian/Supertanker/SupertankerExampleDay.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/Supertanker/SupertankerExampleDay.x3d","../../ShipsCivilian/Supertanker/SupertankerExampleDay.wrl","https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/Supertanker/SupertankerExampleDay.wrl"]
                              }
                            }
                          ]
                        }
                      },
                      { "Transform":
                        {
                          "@DEF":"MerchantATransform",
                          "@translation":[27200,-6.5,15100],
                          "-children":[
                            { "Inline":
                              {
                                "@DEF":"MERCHANT",
                                "@url":["../../ShipsCivilian/MerchantLivestockCarrier/MerchantLivestockCarrier.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/MerchantLivestockCarrier/MerchantLivestockCarrier.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsCivilian/MerchantLivestockCarrier/MerchantLivestockCarrier.wrl"]
                              }
                            }
                          ]
                        }
                      },
                      { "Transform":
                        {
                          "@DEF":"MerchantBTransform",
                          "@rotation":[0,1,0,-0.1],
                          "@translation":[27850,-6.5,14900],
                          "-children":[
                            { "Inline":
                              {
                                "@USE":"MERCHANT"
                              }
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "#comment":"***********Other Boat Entities in Scene*********"
                },
                {
                  "#comment":"*******Line Boats************"
                },
                { "Transform":
                  {
                    "@DEF":"LineBoatATransform",
                    "@rotation":[0,1,0,1.57],
                    "-children":[
                      { "ProtoInstance":
                        {
                          "@name":"LineBoat",
                          "@DEF":"LINEBOATA"
                        }
                      }
                    ]
                  }
                },
                { "ProtoInstance":
                  {
                    "@name":"WaypointInterpolator",
                    "@DEF":"LineBoatAInterpolator",
                    "fieldValue": [
                      {
                        "@name":"description",
                        "@value":"LineBoatAInterpolator"
                      },
                      {
                        "@name":"waypoints",
                        "@value":[31215,-9.5,14316,31215,-9.5,14316,27838,-9.5,14186,27838,-9.5,14186,31215,-9.5,14316,31215,-9.5,14316,31215,-9.5,14316]
                      },
                      {
                        "@name":"legDurations",
                        "@value":[4296,360,1260,360,10,7130]
                      },
                      {
                        "@name":"turningRate",
                        "@value":5
                      },
                      {
                        "@name":"labelDisplayMode",
                        "@value":"none"
                      },
                      {
                        "@name":"lineColor",
                        "@value":[1,1,1]
                      },
                      {
                        "@name":"labelColor",
                        "@value":[1,1,1]
                      },
                      {
                        "@name":"labelOffset",
                        "@value":[0,10,0]
                      },
                      {
                        "@name":"labelFontSize",
                        "@value":3
                      },
                      {
                        "@name":"traceEnabled",
                        "@value":false
                      }
                    ],
                    "-children":[
                      {
                        "#comment":"1 knot = 0.514444444 meters/second, 11 knots = 5.66 meters/second"
                      }
                    ]
                  }
                },
                { "Transform":
                  {
                    "@DEF":"LineBoatBTransform",
                    "@rotation":[0,1,0,1.57],
                    "-children":[
                      { "ProtoInstance":
                        {
                          "@name":"LineBoat",
                          "@DEF":"LINEBOATB"
                        }
                      }
                    ]
                  }
                },
                { "ProtoInstance":
                  {
                    "@name":"WaypointInterpolator",
                    "@DEF":"LineBoatBInterpolator",
                    "fieldValue": [
                      {
                        "@name":"description",
                        "@value":"LineBoatBInterpolator"
                      },
                      {
                        "@name":"waypoints",
                        "@value":[31200,-9.5,14216,31200,-9.5,14216,27760,-9.5,14201,27720,-9.5,14201,27720,-9.5,14201,31200,-9.5,14216,31200,-9.5,14216]
                      },
                      {
                        "@name":"legDurations",
                        "@value":[4296,360,200,1260,360,6940]
                      },
                      {
                        "@name":"turningRate",
                        "@value":5
                      },
                      {
                        "@name":"labelDisplayMode",
                        "@value":"none"
                      },
                      {
                        "@name":"lineColor",
                        "@value":[1,1,1]
                      },
                      {
                        "@name":"labelColor",
                        "@value":[1,1,1]
                      },
                      {
                        "@name":"labelOffset",
                        "@value":[0,10,0]
                      },
                      {
                        "@name":"labelFontSize",
                        "@value":3
                      },
                      {
                        "@name":"traceEnabled",
                        "@value":false
                      }
                    ],
                    "-children":[
                      {
                        "#comment":"1 knot = 0.514444444 meters/second, 11 knots = 5.66 meters/second"
                      }
                    ]
                  }
                },
                {
                  "#comment":"**********Garbage Boat***********"
                },
                { "Transform":
                  {
                    "@DEF":"GarbageBoatTransform",
                    "-children":[
                      { "ProtoInstance":
                        {
                          "@name":"GarbageBoat",
                          "@DEF":"GARBAGEBOAT"
                        }
                      }
                    ]
                  }
                },
                { "ProtoInstance":
                  {
                    "@name":"WaypointInterpolator",
                    "@DEF":"GarbageBoatInterpolator",
                    "fieldValue": [
                      {
                        "@name":"description",
                        "@value":"GarbageBoatInterpolator"
                      },
                      {
                        "@name":"waypoints",
                        "@value":[30000,-9.75,14216,30000,-9.75,14216,27838,-9.75,14176,27838,-9.75,14176,27838,-9.75,14200,31200,-9.75,14200,31200,-9.75,14220]
                      },
                      {
                        "@name":"legDurations",
                        "@value":[5736,300,600,600,360,5820]
                      },
                      {
                        "@name":"turningRate",
                        "@value":5
                      },
                      {
                        "@name":"labelDisplayMode",
                        "@value":"none"
                      },
                      {
                        "@name":"lineColor",
                        "@value":[1,1,0]
                      },
                      {
                        "@name":"labelColor",
                        "@value":[1,1,0]
                      },
                      {
                        "@name":"labelOffset",
                        "@value":[0,10,0]
                      },
                      {
                        "@name":"labelFontSize",
                        "@value":3
                      },
                      {
                        "@name":"traceEnabled",
                        "@value":false
                      }
                    ],
                    "-children":[
                      {
                        "#comment":"1 knot = 0.514444444 meters/second, 11 knots = 5.66 meters/second"
                      }
                    ]
                  }
                },
                {
                  "#comment":"MasterClock is a simple TimeSensor, these ROUTEs are replaced. Farther down, route totalDuration to ColeAnimationDvdController.set_cycleInterval"
                },
                { "ROUTE":
                  {
                    "@fromField":"totalDuration",
                    "@fromNode":"ColeInterpolator",
                    "@toField":"cycleInterval",
                    "@toNode":"MasterClock"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"totalDuration",
                    "@fromNode":"TerroristInterpolator",
                    "@toField":"cycleInterval",
                    "@toNode":"TerroristClock"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"fraction_changed",
                    "@fromNode":"MasterClock",
                    "@toField":"set_fraction",
                    "@toNode":"DummyInterpolator"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"fraction_changed",
                    "@fromNode":"TerroristClock",
                    "@toField":"set_fraction",
                    "@toNode":"DummyInterpolator"
                  }
                },
                {
                  "#comment":"ColeAnimationDvdController replaces TimeSensor functionality"
                },
                { "ROUTE":
                  {
                    "@fromField":"totalDuration",
                    "@fromNode":"ColeInterpolator",
                    "@toField":"set_cycleInterval",
                    "@toNode":"ColeAnimationDvdController"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"fraction_changed",
                    "@fromNode":"ColeAnimationDvdController",
                    "@toField":"set_fraction",
                    "@toNode":"TerroristInterpolator"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"fraction_changed",
                    "@fromNode":"ColeAnimationDvdController",
                    "@toField":"set_fraction",
                    "@toNode":"LineBoatAInterpolator"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"fraction_changed",
                    "@fromNode":"ColeAnimationDvdController",
                    "@toField":"set_fraction",
                    "@toNode":"LineBoatBInterpolator"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"fraction_changed",
                    "@fromNode":"ColeAnimationDvdController",
                    "@toField":"set_fraction",
                    "@toNode":"GarbageBoatInterpolator"
                  }
                },
                {
                  "#comment":"WaypointInterpolator drives both translation and rotation"
                },
                { "ROUTE":
                  {
                    "@fromField":"position_changed",
                    "@fromNode":"ColeInterpolator",
                    "@toField":"set_translation",
                    "@toNode":"ColeTransform"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"orientation_changed",
                    "@fromNode":"ColeInterpolator",
                    "@toField":"set_rotation",
                    "@toNode":"ColeTransform"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"position_changed",
                    "@fromNode":"TerroristInterpolator",
                    "@toField":"set_translation",
                    "@toNode":"TerroristBoatTransform"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"orientation_changed",
                    "@fromNode":"TerroristInterpolator",
                    "@toField":"set_rotation",
                    "@toNode":"TerroristBoatTransform"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"position_changed",
                    "@fromNode":"LineBoatAInterpolator",
                    "@toField":"set_translation",
                    "@toNode":"LineBoatATransform"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"orientation_changed",
                    "@fromNode":"LineBoatAInterpolator",
                    "@toField":"set_rotation",
                    "@toNode":"LineBoatATransform"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"position_changed",
                    "@fromNode":"LineBoatBInterpolator",
                    "@toField":"set_translation",
                    "@toNode":"LineBoatBTransform"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"orientation_changed",
                    "@fromNode":"LineBoatBInterpolator",
                    "@toField":"set_rotation",
                    "@toNode":"LineBoatBTransform"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"position_changed",
                    "@fromNode":"GarbageBoatInterpolator",
                    "@toField":"set_translation",
                    "@toNode":"GarbageBoatTransform"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"orientation_changed",
                    "@fromNode":"GarbageBoatInterpolator",
                    "@toField":"set_rotation",
                    "@toNode":"GarbageBoatTransform"
                  }
                },
                {
                  "#comment":"Boolean Sequencer Triggers Explosion at appropriate time if user hasn't. Sends a true value to the script TimeFilter which then sends the current timestamp to the appropriate proto's in the scene to trigger the explosion."
                },
                { "BooleanSequencer":
                  {
                    "@DEF":"ExplosionBinder",
                    "@key":[0,0.9999999,1],
                    "@keyValue":[false,false,true]
                  }
                },
                { "Script":
                  {
                    "@DEF":"TimeFilter",
                    "field": [
                      {
                        "@name":"setStart",
                        "@accessType":"inputOnly",
                        "@type":"SFBool"
                      },
                      {
                        "@name":"startEventTime",
                        "@accessType":"outputOnly",
                        "@type":"SFTime"
                      }
                    ],
                    "#sourceCode":[
"",
"",
"ecmascript:",
"function setStart ( value,timeStamp ) {",
"",
"\tif (value == true)",
"\t\tstartEventTime = timeStamp;",
"\t}",
"",
""
]
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"fraction_changed",
                    "@fromNode":"ColeAnimationDvdController",
                    "@toField":"set_fraction",
                    "@toNode":"ExplosionBinder"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"value_changed",
                    "@fromNode":"ExplosionBinder",
                    "@toField":"setStart",
                    "@toNode":"TimeFilter"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"startEventTime",
                    "@fromNode":"TimeFilter",
                    "@toField":"startExplosion",
                    "@toNode":"TerroristExplosion"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"startEventTime",
                    "@fromNode":"TimeFilter",
                    "@toField":"startExplosion",
                    "@toNode":"DDG-51"
                  }
                },
                { "ROUTE":
                  {
                    "@fromField":"startEventTime",
                    "@fromNode":"TimeFilter",
                    "@toField":"startExplosion",
                    "@toNode":"Boat"
                  }
                }
              ]
            }
          }
        ]
    }
  }
}