<?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>
    <component level='1' name='DIS'/>
    <meta content='LimitedObjectiveExperimentPortHuenemeDIS.x3d' name='title'/>
    <meta content='Scenario created prior to C3F sponsored AT/FP exercise in Port Hueneme. Provides a spatial represenetation of the scenario to examine potential interactions and weaknesses.' name='description'/>
    <meta content='James Harney' name='creator'/>
    <meta content='4 February 2002' name='created'/>
    <meta content='2 January 2025' name='modified'/>
    <meta content='US NIMA Chart 18725' name='reference'/>
    <meta content='http://www.mapquest.com' name='reference'/>
    <meta content='https://www.web3d.org/x3d/content/examples/Savage/Scenarios/LimitedObjectiveExperimentPortHueneme/LimitedObjectiveExperimentPortHuenemeDIS.x3d' name='identifier'/>
    <meta content='X3D-Edit 4.0, https://www.web3d.org/x3d/tools/X3D-Edit' name='generator'/>
    <meta content='../../license.html' name='license'/>
  </head>
  <Scene>
    <WorldInfo title='LimitedObjectiveExperimentPortHuenemeDIS.x3d'/>
    <ExternProtoDeclare appinfo='ViewPositionOrientation provides provides console output of local position and orientation as user navigates' name='ViewPositionOrientation' url='"../../Tools/Authoring/ViewPositionOrientationPrototype.x3d#ViewPositionOrientation" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/ViewPositionOrientationPrototype.x3d#ViewPositionOrientation" "../../Tools/Authoring/ViewPositionOrientationPrototype.wrl#ViewPositionOrientation" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/ViewPositionOrientationPrototype.wrl#ViewPositionOrientation"'>
      <field accessType='inputOutput' appinfo='Whether or not ViewPositionOrientation sends output to console.' name='enabled' type='SFBool'/>
      <field accessType='initializeOnly' appinfo='Output internal trace messages for debugging this node - developer use only can be ignored.' name='traceEnabled' type='SFBool'/>
      <field accessType='inputOnly' appinfo='Ability to turn output tracing on/off at runtime.' name='set_traceEnabled' type='SFBool'/>
      <field accessType='outputOnly' appinfo='Output local position.' name='position_changed' type='SFVec3f'/>
      <field accessType='outputOnly' appinfo='Output local orientation.' name='orientation_changed' type='SFRotation'/>
      <field accessType='outputOnly' appinfo='MFString value of new Viewpoint' name='outputViewpointString' type='MFString'/>
    </ExternProtoDeclare>
    <ExternProtoDeclare 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.' name='CameraCompass12' 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 accessType='inputOutput' name='enabled' type='SFBool'/>
      <field accessType='inputOutput' name='positionOffsetFromCamera' type='SFVec3f'/>
      <field accessType='inputOutput' name='markerColor' type='SFColor'/>
      <field accessType='inputOutput' name='labelColor' type='SFColor'/>
    </ExternProtoDeclare>
    <ExternProtoDeclare appinfo='Rigid Hull Inflatable Boat' name='RHIB' url='"../../Scenarios/UssColeTerroristAttack/RHIBPrototype.x3d#RHIB" "https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/RHIBPrototype.x3d#RHIB" "../../Scenarios/UssColeTerroristAttack/RHIBPrototype.wrl#RHIB" "https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/RHIBPrototype.wrl#RHIB"'>
      <field accessType='inputOnly' name='startExplosion' type='SFTime'/>
    </ExternProtoDeclare>
    <ExternProtoDeclare appinfo='Sense-Decide-Act Engagement Range' name='SenseDecideActEngagePrototype' url='"EngagementRangePrototype.x3d#SenseDecideActEngagePrototype" "https://www.web3d.org/x3d/content/examples/Savage/Scenarios/LimitedObjectiveExperimentPortHueneme/EngagementRangePrototype.x3d#SenseDecideActEngagePrototype" "EngagementRangePrototype.wrl#SenseDecideActEngagePrototype" "https://www.web3d.org/x3d/content/examples/Savage/Scenarios/LimitedObjectiveExperimentPortHueneme/EngagementRangePrototype.wrl#SenseDecideActEngagePrototype"'>
      <field accessType='inputOutput' name='engagementPosition' type='SFVec3f'/>
      <field accessType='inputOutput' name='engagementTextPosition' type='SFVec3f'/>
    </ExternProtoDeclare>
    <ExternProtoDeclare appinfo='Arleigh Burke class destroyer' name='ArleighBurke' 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 accessType='inputOnly' name='startExplosion' type='SFTime'/>
    </ExternProtoDeclare>
    <ExternProtoDeclare name='TerroristBoat' url='"../UssColeTerroristAttack/TerroristBoatBoxManOnboardPrototype.x3d#TerroristBoat" "https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/TerroristBoatBoxManOnboardPrototype.x3d#TerroristBoat" "../UssColeTerroristAttack/TerroristBoatBoxManOnboardPrototype.wrl#TerroristBoat" "https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/TerroristBoatBoxManOnboardPrototype.wrl#TerroristBoat"'>
      <field accessType='inputOnly' name='startExplosion' type='SFTime'/>
    </ExternProtoDeclare>
    <ExternProtoDeclare name='NetLauncher' url='"../../Weapons/Guns/NonLethalNetLauncherPrototype.x3d#NetLauncher" "https://www.web3d.org/x3d/content/examples/Savage/Weapons/Guns/NonLethalNetLauncherPrototype.x3d#NetLauncher" "../../Weapons/Guns/NonLethalNetLauncherPrototype.wrl#NetLauncher" "https://www.web3d.org/x3d/content/examples/Savage/Weapons/Guns/NonLethalNetLauncherPrototype.wrl#NetLauncher"'>
      <field accessType='inputOnly' name='startLaunchToStbd' type='SFTime'/>
      <field accessType='inputOnly' name='startLaunchToPort' type='SFTime'/>
      <field accessType='outputOnly' name='netTranslation' type='SFVec3f'/>
      <field accessType='outputOnly' name='netScale' type='SFVec3f'/>
      <field accessType='outputOnly' name='netOrientation' type='SFRotation'/>
      <field accessType='outputOnly' name='nettingScale' type='SFVec3f'/>
    </ExternProtoDeclare>
    <ExternProtoDeclare appinfo='Physics-based explosion model' name='TNTBasedExplosion' url='"../UssColeTerroristAttack/PhysicsBasedExplosionPrototype.x3d#TNTBasedExplosion" "https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/PhysicsBasedExplosionPrototype.x3d#TNTBasedExplosion" "../UssColeTerroristAttack/PhysicsBasedExplosionPrototype.wrl#TNTBasedExplosion" "https://www.web3d.org/x3d/content/examples/Savage/Scenarios/UssColeTerroristAttack/PhysicsBasedExplosionPrototype.wrl#TNTBasedExplosion"'>
      <field accessType='inputOnly' name='startExplosion' type='SFTime'/>
    </ExternProtoDeclare>
    <NavigationInfo speed='10' type='"EXAMINE" "FLY" "ANY"' visibilityLimit='30000'/>
    <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'/>
    <Viewpoint description='Port Hueneme Satellite View' position='0 3 5.2'/>
    <Viewpoint description='Main Scene Entry Point' orientation='-.983 -.117 .141 .3313' position='6143.9 910 8685.6'/>
    <ProtoInstance DEF='ConsoleOutputViewPositionOrientation' name='ViewPositionOrientation'>
      <fieldValue name='enabled' value='true'/>
    </ProtoInstance>
    <!-- ****Geography, Pier, and other objects go here*** -->
    <Transform translation='0 3 0'>
      <Inline url='"../../Locations/PortHuenemeCalifornia/PortHuenemeHarbor.x3d" "https://www.web3d.org/x3d/content/examples/Savage/Locations/PortHuenemeCalifornia/PortHuenemeHarbor.x3d" "../../Locations/PortHuenemeCalifornia/PortHuenemeHarbor.wrl" "https://www.web3d.org/x3d/content/examples/Savage/Locations/PortHuenemeCalifornia/PortHuenemeHarbor.wrl"'/>
    </Transform>
    <Transform translation='-2.5 3 2'>
      <Anchor description='Click Text To Begin Simulation' url='"Start.bat" "https://www.web3d.org/x3d/content/examples/Savage/Scenarios/LimitedObjectiveExperimentPortHueneme/Start.bat"'>
        <Shape>
          <Text string='"CLICK HERE TO BEGIN"'>
            <FontStyle size='.5' style='BOLD'/>
          </Text>
          <Appearance>
            <Material diffuseColor='0 0 1'/>
          </Appearance>
        </Shape>
      </Anchor>
    </Transform>
    <Transform rotation='0 1 0 1.57' translation='5551 0 6602'>
      <Inline url='"../../Locations/PortHuenemeCalifornia/PortHuenemePiers.x3d" "https://www.web3d.org/x3d/content/examples/Savage/Locations/PortHuenemeCalifornia/PortHuenemePiers.x3d" "../../Locations/PortHuenemeCalifornia/PortHuenemePiers.wrl" "https://www.web3d.org/x3d/content/examples/Savage/Locations/PortHuenemeCalifornia/PortHuenemePiers.wrl"'/>
    </Transform>
    <!-- ****Scene Compass **** -->
    <Transform DEF='Compass' rotation='0 1 0 1.57'>
      <ProtoInstance name='CameraCompass12'>
        <fieldValue name='enabled' value='true'/>
        <fieldValue name='positionOffsetFromCamera' value='0 5 0'/>
        <fieldValue name='markerColor' value='0.3 0.3 0.8'/>
        <fieldValue name='labelColor' value='1 1 1'/>
      </ProtoInstance>
    </Transform>
    <!-- ****ArleighBurke Class entity here***** -->
    <EspduTransform DEF='Cole' address='224.2.181.145' marking='DDG67' port='62040' rotation='0 1 0 6.245' siteID='67' translation='5991.755 0 5894.995'>
      <!-- traceColor="0 0 1" traceOffset="0 3 0" -->
      <Transform DEF='ColeTransform' rotation='0 1 0 1.57' translation='0 9 0'>
        <Transform DEF='ShockTransform'>
          <ProtoInstance DEF='DDG-51' name='ArleighBurke'/>
          <Transform rotation='0 1 0 3.0' translation='0 -4.55 0'>
            <Inline DEF='NancyStandShootRifleM24' url='"../../../HumanoidAnimation/Legacy/NancyStandShootRifleM24.x3d" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/NancyStandShootRifleM24.x3d" "../../../HumanoidAnimation/Legacy/NancyStandShootRifleM24.wrl" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/NancyStandShootRifleM24.wrl"'/>
            <Transform translation='0 1.5 0'>
              <ProtoInstance DEF='myRanges' name='SenseDecideActEngagePrototype'>
                <fieldValue name='engagementPosition' value='400 400 400'/>
                <fieldValue name='engagementTextPosition' value='0 400 0'/>
              </ProtoInstance>
            </Transform>
          </Transform>
        </Transform>
      </Transform>
    </EspduTransform>
    <Script DEF='ColeTimeFilter'>
      <field accessType='inputOnly' name='setStart' type='SFBool'/>
      <field accessType='outputOnly' name='startEventTime' type='SFTime'/>
      <![CDATA[
ecmascript:


function setStart ( value, timeStamp) {

	startEventTime = timeStamp;

}
]]>
    </Script>
    <ROUTE fromField='isCollided' fromNode='Cole' toField='setStart' toNode='ColeTimeFilter'/>
    <ROUTE fromField='startEventTime' fromNode='ColeTimeFilter' toField='startExplosion' toNode='DDG-51'/>
    <!-- ****Terrorist Boat Entity Here**** -->
    <EspduTransform DEF='RedBoat' address='224.2.181.145' marking='Terror' port='62040' rotation='0 1 0 .3' siteID='65' translation='5889.9 0 6220'>
      <!-- traceColor="1 0 0" traceOffset="0 3 0" -->
      <Transform DEF='TerroristBoatTransform' rotation='0 1 0 1.57' translation='0 .5 0'>
        <ProtoInstance DEF='Boat' name='TerroristBoat'/>
        <!-- ********************Explosion Code***************** -->
        <Transform DEF='TNTtransform' translation='9 0 0'>
          <ProtoInstance DEF='TerroristExplosion' name='TNTBasedExplosion'/>
        </Transform>
      </Transform>
    </EspduTransform>
    <Script DEF='TimeFilter'>
      <field accessType='inputOnly' name='setStart' type='SFBool'/>
      <field accessType='outputOnly' name='startEventTime' type='SFTime'/>
      <![CDATA[
ecmascript:


function setStart ( value, timeStamp) {

	startEventTime = timeStamp;

}
]]>
    </Script>
    <ROUTE fromField='isCollided' fromNode='RedBoat' toField='setStart' toNode='TimeFilter'/>
    <ROUTE fromField='startEventTime' fromNode='TimeFilter' toField='startExplosion' toNode='TerroristExplosion'/>
    <ROUTE fromField='startEventTime' fromNode='TimeFilter' toField='startExplosion' toNode='Boat'/>
    <!-- ***RHIB Non lethal weapon here. We have to separate from Parent transforms so it will stay where shot in the water. *** -->
    <!-- *******Rhib boat here********* -->
    <EspduTransform DEF='ColeRHIB' address='224.2.181.145' marking='ColeRHIB' port='62040' siteID='66' translation='5866.4 0 5908.3'>
      <!-- traceColor="1 0 0" traceOffset="0 3 0" -->
      <Transform rotation='0 1 0 1.57' translation='0 .9 0'>
        <Transform DEF='RhibTranslation'>
          <ProtoInstance DEF='ColeRhib1' name='RHIB'/>
          <Transform translation='1 -.5 0'>
            <Inline USE='NancyStandShootRifleM24'/>
            <Transform translation='0 1.5 0'>
              <ProtoInstance USE='myRanges' name='SenseDecideActEngagePrototype'/>
            </Transform>
          </Transform>
          <Transform translation='6 .3 0'>
            <ProtoInstance DEF='myLauncher' name='NetLauncher'/>
          </Transform>
          <Transform DEF='InitNetPosit'>
            <Transform rotation='1 0 0 .78' translation='6 0 0'>
              <Transform DEF='FinalNetTransform' scale='.01 .01 .01'>
                <Shape>
                  <Appearance>
                    <Material diffuseColor='1 0 0' shininess='1'/>
                  </Appearance>
                  <Cylinder height='1.4' radius='.12'/>
                </Shape>
                <Transform DEF='FinalNettingTransform' rotation='0 1 0 1.57' scale='.01 .01 .01' translation='0 0 1'>
                  <Shape DEF='FinalNETTING'>
                    <Appearance>
                      <Material/>
                      <ImageTexture url='"grill.png" "../../Weapons/Guns/grill.png" "../../../Weapons/Guns/grill.png" "https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter18-TextureMapping/grill.png"'/>
                      <TextureTransform center='0.5 0.5' scale='32 8'/>
                    </Appearance>
                    <IndexedFaceSet DEF='FinalScreen' coordIndex='0 1 2 3' solid='false' texCoordIndex='0 1 2 3'>
                      <Coordinate point='-1 -.4 0.1 1 -.4 0.1 1 .4 .1 -1 .4 .1'/>
                      <TextureCoordinate point='0 0 1 0 1 1 0 1'/>
                    </IndexedFaceSet>
                  </Shape>
                </Transform>
                <Viewpoint description='Net Viewpoint'/>
              </Transform>
            </Transform>
          </Transform>
          <ROUTE fromField='netTranslation' fromNode='myLauncher' toField='set_translation' toNode='FinalNetTransform'/>
          <ROUTE fromField='netScale' fromNode='myLauncher' toField='set_scale' toNode='FinalNetTransform'/>
          <ROUTE fromField='nettingScale' fromNode='myLauncher' toField='set_scale' toNode='FinalNettingTransform'/>
          <ROUTE fromField='netOrientation' fromNode='myLauncher' toField='set_rotation' toNode='FinalNetTransform'/>
        </Transform>
      </Transform>
    </EspduTransform>
    <Script DEF='RhibTimeFilter'>
      <field accessType='inputOnly' name='setStart' type='SFBool'/>
      <field accessType='outputOnly' name='startEventTime' type='SFTime'/>
      <![CDATA[
ecmascript:


function setStart ( value, timeStamp) {

	startEventTime = timeStamp;

}
]]>
    </Script>
    <ROUTE fromField='isCollided' fromNode='ColeRHIB' toField='setStart' toNode='RhibTimeFilter'/>
    <ROUTE fromField='startEventTime' fromNode='RhibTimeFilter' toField='startLaunchToStbd' toNode='myLauncher'/>
  </Scene>
</X3D>