@prefix :        <https://www.web3d.org/x3d/content/examples/Savage/Submarines/Various/Type209GlafkosDieselSubmarineAnimated.ttl#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema:  <http://schema.org/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix x3d:     <https://www.web3d.org/specifications/x3d-4.0.xsd#> .
@prefix x3do:    <https://www.web3d.org/specifications/X3dOntology4.0#> .

:X3D a owl:NamedIndividual, x3do:X3D ;
  x3do:hasHead :head ;
  x3do:hasScene :Scene ;
  x3do:profile 'Immersive' ;
  x3do:version '3.0' ;
  x3do:noNamespaceSchemaLocation 'https://www.web3d.org/specifications/x3d-3.0.xsd' .
:head a owl:NamedIndividual, x3do:head ;
  x3do:hasParent :X3D ;
  x3do:hasMeta :meta_1_1, :meta_1_2, :meta_1_3, :meta_1_4, :meta_1_5, :meta_1_6, :meta_1_7, :meta_1_8, :meta_1_9, :meta_1_10, :meta_1_11 .
:meta_1_1 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Type209GlafkosDieselSubmarineAnimated.x3d' ;
  x3do:name 'title' .
:meta_1_2 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'A Hellenic fleet submarine with animation capabilities.' ;
  x3do:name 'description' .
:meta_1_3 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Anthony Varelas' ;
  x3do:name 'creator' .
:meta_1_4 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '1 August 2002' ;
  x3do:name 'created' .
:meta_1_5 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '28 November 2019' ;
  x3do:name 'modified' .
:meta_1_6 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'ArleighBurkePropeller.wrl Mk48.Torpedo.wrl HarpoonPrototype.wrl Radar3.wrl sonar.wav MISSILE.wav' ;
  x3do:name 'reference' .
:meta_1_7 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Torpedoes and missiles need to get moved to submarine-independent coordinate system.' ;
  x3do:name 'warning' .
:meta_1_8 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'Inline Harpoon needs to get converted to Harpoon ExternPrototDeclare' ;
  x3do:name 'warning' .
:meta_1_9 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'https://www.web3d.org/x3d/content/examples/Savage/Submarines/Various/Type209GlafkosDieselSubmarineAnimated.x3d' ;
  x3do:name 'identifier' .
:meta_1_10 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content 'X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit' ;
  x3do:name 'generator' .
:meta_1_11 a owl:NamedIndividual, x3do:meta ;
  x3do:hasParent :head ;
  x3do:content '../../license.html' ;
  x3do:name 'license' .
:meta dcterms:title "Type209GlafkosDieselSubmarineAnimated.x3d" .
:meta dcterms:description "A Hellenic fleet submarine with animation capabilities." .
:meta dcterms:creator "Anthony Varelas" .
:meta dcterms:created "1 August 2002" .
:meta dcterms:modified "28 November 2019" .
:meta dcterms:reference "ArleighBurkePropeller.wrl Mk48.Torpedo.wrl HarpoonPrototype.wrl Radar3.wrl sonar.wav MISSILE.wav" .
:meta dcterms:warning "Torpedoes and missiles need to get moved to submarine-independent coordinate system." .
:meta dcterms:warning "Inline Harpoon needs to get converted to Harpoon ExternPrototDeclare" .
:meta dcterms:identifier "https://www.web3d.org/x3d/content/examples/Savage/Submarines/Various/Type209GlafkosDieselSubmarineAnimated.x3d" .
:meta dcterms:generator "X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit" .
:meta dcterms:license "../../license.html" .
:Scene a owl:NamedIndividual, x3do:Scene ;
  x3do:hasParent :X3D ;
  x3do:hasChildren :WorldInfo_2_1, :Background_2_2, :Viewpoint_2_3, :Viewpoint_2_4, :Viewpoint_2_5, :Viewpoint_2_6, :Viewpoint_2_7, :Viewpoint_2_8, :Viewpoint_2_9, :Viewpoint_2_10, :Viewpoint_2_11, :Transform_2_12 .
:WorldInfo_2_1 a owl:NamedIndividual, x3do:WorldInfo ;
  x3do:hasParent :Scene ;
  x3do:title 'Type209GlafkosDieselSubmarineAnimated.x3d' .
:Background_2_2 a owl:NamedIndividual, x3do:Background ;
  x3do:hasParent :Scene ;
  x3do:groundAngle ( 1.5708 ) ;
  x3do:groundColor ( 0 0.2 0.7 0 0.6 0.9 ) ;
  x3do:skyAngle ( 0.654 1.309 ) ;
  x3do:skyColor ( 1 1 1 0 0.5 1 0 0.5 1 ) .
:Viewpoint_2_3 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Scene ;
  x3do:description 'Far Right View' ;
  x3do:fieldOfView 1.047 ;
  x3do:position ( 1.5 -1.035 15.5 ) .
:Viewpoint_2_4 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Scene ;
  x3do:description 'Close Right View' ;
  x3do:position ( 0 -1.035 10 ) .
:Viewpoint_2_5 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Scene ;
  x3do:description 'Tower View' ;
  x3do:position ( 2.7 1.1 3 ) .
:Viewpoint_2_6 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Scene ;
  x3do:description 'Rear View' ;
  x3do:orientation ( 0 1 0 -1.57 ) ;
  x3do:position ( -10 -0.83 0 ) .
:Viewpoint_2_7 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Scene ;
  x3do:description 'Left View' ;
  x3do:fieldOfView 1.047 ;
  x3do:orientation ( 0 1 0 3.14 ) ;
  x3do:position ( 1.5 -1.035 -23.6 ) .
:Viewpoint_2_8 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Scene ;
  x3do:description 'Front View' ;
  x3do:orientation ( 0 1 0 1.57 ) ;
  x3do:position ( 11 -1.035 0 ) .
:Viewpoint_2_9 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Scene ;
  x3do:description 'Top View' ;
  x3do:fieldOfView 1.047 ;
  x3do:orientation ( 1 0 0 -1.57 ) ;
  x3do:position ( 0 25 -3.9 ) .
:Viewpoint_2_10 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Scene ;
  x3do:description 'Bottom View' ;
  x3do:fieldOfView 1.047 ;
  x3do:orientation ( 1 0 0 1.57 ) ;
  x3do:position ( 0 -27 -4 ) .
:Viewpoint_2_11 a owl:NamedIndividual, x3do:Viewpoint ;
  x3do:hasParent :Scene ;
  x3do:description 'Right Side Launch View' ;
  x3do:fieldOfView 1.047 ;
  x3do:position ( 9 -1.035 15.5 ) .
:Transform_2_12 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Scene ;
  x3do:hasChildren :Group_2_12_1 ;
  x3do:hasROUTE :ROUTE_2_12_2, :ROUTE_2_12_3, :ROUTE_2_12_4, :ROUTE_2_12_5, :ROUTE_2_12_6, :ROUTE_2_12_7 ;
  x3do:scale ( 0.8 0.8 0.8 ) ;
  x3do:translation ( 1.5 -0.846 0 ) .
:Group_2_12_1 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Transform_2_12 ;
  x3do:hasChildren :Submarine, :SubDrag, :Touch1, :Clock, :SubMove, :SubTurn, :Fog_2_12_1_7, :Sound_2_12_1_8, :Group_2_12_1_9 ;
  x3do:hasROUTE :ROUTE_2_12_1_10, :ROUTE_2_12_1_11, :ROUTE_2_12_1_12, :ROUTE_2_12_1_13, :ROUTE_2_12_1_14, :ROUTE_2_12_1_15, :ROUTE_2_12_1_16, :ROUTE_2_12_1_17, :ROUTE_2_12_1_18, :ROUTE_2_12_1_19, :ROUTE_2_12_1_20, :ROUTE_2_12_1_21, :ROUTE_2_12_1_22, :ROUTE_2_12_1_23, :ROUTE_2_12_1_24, :ROUTE_2_12_1_25, :ROUTE_2_12_1_26, :ROUTE_2_12_1_27, :ROUTE_2_12_1_28, :ROUTE_2_12_1_29, :ROUTE_2_12_1_30, :ROUTE_2_12_1_31, :ROUTE_2_12_1_32, :ROUTE_2_12_1_33, :ROUTE_2_12_1_34, :ROUTE_2_12_1_35, :ROUTE_2_12_1_36, :ROUTE_2_12_1_37, :ROUTE_2_12_1_38, :ROUTE_2_12_1_39 .
:Submarine a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:hasChildren :Hull, :Tower, :Rudders, :Stabilizers, :Propeller, :Torpedoes-Harpoons ;
  x3do:DEF 'Submarine' ;
  x3do:center ( 0 0 -5 ) .
:Hull a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Submarine ;
  x3do:hasChildren :Transform_2_12_1_1_1_1, :Transform_2_12_1_1_1_2, :Transform_2_12_1_1_1_3, :Transform_2_12_1_1_1_4 ;
  x3do:DEF 'Hull' ;
  x3do:center ( 0 0.42 0 ) ;
  x3do:scale ( 1 1.3 1 ) .
:Transform_2_12_1_1_1_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Hull ;
  x3do:hasChildren :Shape_2_12_1_1_1_1_1 ;
  x3do:rotation ( 0 0 1 1.57 ) .
:Shape_2_12_1_1_1_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_1_1 ;
  x3do:hasAppearance :Appearance_2_12_1_1_1_1_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_1_1_1_2 .
:Appearance_2_12_1_1_1_1_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_1_1_1 ;
  x3do:hasMaterial :Material_2_12_1_1_1_1_1_1_1 .
:Material_2_12_1_1_1_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_1_1_1_1 ;
  x3do:diffuseColor ( 0 0 0 ) ;
  x3do:emissiveColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Cylinder_2_12_1_1_1_1_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_1_1_1 ;
  x3do:height 12.375 ;
  x3do:radius 0.84 .
:Transform_2_12_1_1_1_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Hull ;
  x3do:hasChildren :Shape_2_12_1_1_1_2_1 ;
  x3do:rotation ( 0 0 1 1.57 ) ;
  x3do:translation ( -6.184 0 0 ) .
:Shape_2_12_1_1_1_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_1_2 ;
  x3do:hasAppearance :Appearance_2_12_1_1_1_2_1_1 ;
  x3do:hasGeometry :Extrusion_2_12_1_1_1_2_1_2 .
:Appearance_2_12_1_1_1_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_1_2_1 ;
  x3do:hasMaterial :Material_2_12_1_1_1_2_1_1_1 .
:Material_2_12_1_1_1_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_1_2_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Extrusion_2_12_1_1_1_2_1_2 a owl:NamedIndividual, x3do:Extrusion ;
  x3do:hasParent :Shape_2_12_1_1_1_2_1 ;
  x3do:beginCap false ;
  x3do:creaseAngle 1.57 ;
  x3do:crossSection ( 1 0 0.92 -0.38 0.71 -0.71 0.38 -0.92 0 -1 -0.38 -0.92 -0.71 -0.71 -0.92 -0.38 -1 0 -0.92 0.38 -0.71 0.71 -0.38 0.92 0 1 0.38 0.92 0.71 0.71 0.92 0.38 1 0 ) ;
  x3do:scale ( 0.84 0.84 0.81 0.81 0.77 0.77 0.74 0.74 0.70 0.70 0.66 0.66 0.62 0.62 0.57 0.57 0.52 0.52 0.47 0.47 0.41 0.41 0.33 0.33 0.24 0.24 0.15 0.15 0.06 0.06 ) ;
  x3do:spine ( 0 0 0 0 0.3 0 0 0.6 0 0 0.9 0 0 1.2 0 0 1.5 0 0 1.8 0 0 2.1 0 0 2.4 0 0 2.7 0 0 3 0 0 3.3 0 0 3.6 0 0 3.9 0 0 4.2 0 ) .
:Transform_2_12_1_1_1_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Hull ;
  x3do:hasChildren :Shape_2_12_1_1_1_3_1 ;
  x3do:scale ( 0.6 1 1 ) ;
  x3do:translation ( 6.1875 0 0 ) .
:Shape_2_12_1_1_1_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_1_3 ;
  x3do:hasAppearance :Appearance_2_12_1_1_1_3_1_1 ;
  x3do:hasGeometry :Sphere_2_12_1_1_1_3_1_2 .
:Appearance_2_12_1_1_1_3_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_1_3_1 ;
  x3do:hasMaterial :Material_2_12_1_1_1_3_1_1_1 .
:Material_2_12_1_1_1_3_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_1_3_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Sphere_2_12_1_1_1_3_1_2 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_12_1_1_1_3_1 ;
  x3do:radius 0.825 .
:Transform_2_12_1_1_1_4 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Hull ;
  x3do:hasChildren :Shape_2_12_1_1_1_4_1 ;
  x3do:scale ( 7.63 0.53 0.5 ) ;
  x3do:translation ( -0.04 0.61 0 ) .
:Shape_2_12_1_1_1_4_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_1_4 ;
  x3do:hasAppearance :Appearance_2_12_1_1_1_4_1_1 ;
  x3do:hasGeometry :Extrusion_2_12_1_1_1_4_1_2 .
:Appearance_2_12_1_1_1_4_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_1_4_1 ;
  x3do:hasMaterial :Material_2_12_1_1_1_4_1_1_1 .
:Material_2_12_1_1_1_4_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_1_4_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Extrusion_2_12_1_1_1_4_1_2 a owl:NamedIndividual, x3do:Extrusion ;
  x3do:hasParent :Shape_2_12_1_1_1_4_1 ;
  x3do:creaseAngle 1.57 ;
  x3do:crossSection ( 1 0 0.92 -0.38 0.71 -0.71 0.38 -0.92 0 -1 -0.38 -0.92 -0.71 -0.71 -0.92 -0.38 -1 -0 -0.92 0.38 -0.71 0.71 -0.38 0.92 0 1 0.38 0.92 0.71 0.71 0.92 0.38 1 0 ) ;
  x3do:scale ( 0.815 0.94 0.815 0.92 0.815 0.90 0.815 0.88 0.815 0.86 0.815 0.84 0.815 0.82 0.8 0.8 0.78 0.78 0.76 0.76 ) ;
  x3do:spine ( 0 0.15 0 0 0.2 0 0 0.25 0 0 0.3 0 0 0.35 0 0 0.4 0 0 0.45 0 0 0.5 0 0 0.55 0 0 0.6 0 ) .
:Tower a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Submarine ;
  x3do:hasChildren :TowerBody, :Hatch, :Radar, :Snorkelling, :Periscope1, :Periscope2, :Transform_2_12_1_1_2_7, :Transform_2_12_1_1_2_8 ;
  x3do:DEF 'Tower' .
:TowerBody a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Tower ;
  x3do:hasChildren :Shape_2_12_1_1_2_1_1 ;
  x3do:DEF 'TowerBody' ;
  x3do:scale ( 5.357 1 1 ) ;
  x3do:translation ( 0.84375 1.455 0 ) .
:Shape_2_12_1_1_2_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :TowerBody ;
  x3do:hasAppearance :Appearance_2_12_1_1_2_1_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_2_1_1_2 .
:Appearance_2_12_1_1_2_1_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_2_1_1 ;
  x3do:hasMaterial :Material_2_12_1_1_2_1_1_1_1 .
:Material_2_12_1_1_2_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_2_1_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Cylinder_2_12_1_1_2_1_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_2_1_1 ;
  x3do:height 1.5 ;
  x3do:radius 0.28 .
:Hatch a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Tower ;
  x3do:hasChildren :HatchBase, :Transform_2_12_1_1_2_2_2 ;
  x3do:DEF 'Hatch' .
:HatchBase a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Hatch ;
  x3do:hasChildren :Shape_2_12_1_1_2_2_1_1 ;
  x3do:DEF 'HatchBase' ;
  x3do:translation ( 1.34 2.244 0 ) .
:Shape_2_12_1_1_2_2_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :HatchBase ;
  x3do:hasAppearance :Appearance_2_12_1_1_2_2_1_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_2_2_1_1_2 .
:Appearance_2_12_1_1_2_2_1_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_2_2_1_1 ;
  x3do:hasMaterial :Material_2_12_1_1_2_2_1_1_1_1 .
:Material_2_12_1_1_2_2_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_2_2_1_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) .
:Cylinder_2_12_1_1_2_2_1_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_2_2_1_1 ;
  x3do:height 0.08 ;
  x3do:radius 0.17 .
:Transform_2_12_1_1_2_2_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Hatch ;
  x3do:hasChildren :HatchCover .
:HatchCover a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Transform_2_12_1_1_2_2_2 ;
  x3do:hasChildren :Transform_2_12_1_1_2_2_2_1_1, :Transform_2_12_1_1_2_2_2_1_2, :Transform_2_12_1_1_2_2_2_1_3 ;
  x3do:DEF 'HatchCover' .
:Transform_2_12_1_1_2_2_2_1_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :HatchCover ;
  x3do:hasChildren :Shape_2_12_1_1_2_2_2_1_1_1 ;
  x3do:translation ( 1.33 2.2965 0 ) .
:Shape_2_12_1_1_2_2_2_1_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_2_2_2_1_1 ;
  x3do:hasAppearance :Appearance_2_12_1_1_2_2_2_1_1_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_2_2_2_1_1_1_2 .
:Appearance_2_12_1_1_2_2_2_1_1_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_2_2_2_1_1_1 ;
  x3do:hasMaterial :Material_2_12_1_1_2_2_2_1_1_1_1_1 .
:Material_2_12_1_1_2_2_2_1_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_2_2_2_1_1_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) .
:Cylinder_2_12_1_1_2_2_2_1_1_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_2_2_2_1_1_1 ;
  x3do:height 0.0216 ;
  x3do:radius 0.189 .
:Transform_2_12_1_1_2_2_2_1_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :HatchCover ;
  x3do:hasChildren :Shape_2_12_1_1_2_2_2_1_2_1 ;
  x3do:translation ( 1.438 2.2985 0 ) .
:Shape_2_12_1_1_2_2_2_1_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_2_2_2_1_2 ;
  x3do:hasAppearance :Appearance_2_12_1_1_2_2_2_1_2_1_1 ;
  x3do:hasGeometry :Box_2_12_1_1_2_2_2_1_2_1_2 .
:Appearance_2_12_1_1_2_2_2_1_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_2_2_2_1_2_1 ;
  x3do:hasMaterial :Material_2_12_1_1_2_2_2_1_2_1_1_1 .
:Material_2_12_1_1_2_2_2_1_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_2_2_2_1_2_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) .
:Box_2_12_1_1_2_2_2_1_2_1_2 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :Shape_2_12_1_1_2_2_2_1_2_1 ;
  x3do:size ( 0.216 0.0216 0.378 ) .
:Transform_2_12_1_1_2_2_2_1_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :HatchCover ;
  x3do:hasChildren :Shape_2_12_1_1_2_2_2_1_3_1 ;
  x3do:rotation ( 1 0 0 1.57 ) ;
  x3do:translation ( 1.5415 2.2904 0 ) .
:Shape_2_12_1_1_2_2_2_1_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_2_2_2_1_3 ;
  x3do:hasAppearance :Appearance_2_12_1_1_2_2_2_1_3_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_2_2_2_1_3_1_2 .
:Appearance_2_12_1_1_2_2_2_1_3_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_2_2_2_1_3_1 ;
  x3do:hasMaterial :Material_2_12_1_1_2_2_2_1_3_1_1_1 .
:Material_2_12_1_1_2_2_2_1_3_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_2_2_2_1_3_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) .
:Cylinder_2_12_1_1_2_2_2_1_3_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_2_2_2_1_3_1 ;
  x3do:height 0.378 ;
  x3do:radius 0.027 .
:Radar a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Tower ;
  x3do:hasChildren :Transform_2_12_1_1_2_3_1, :Transform_2_12_1_1_2_3_2 ;
  x3do:DEF 'Radar' .
:Transform_2_12_1_1_2_3_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Radar ;
  x3do:hasChildren :Shape_2_12_1_1_2_3_1_1 ;
  x3do:translation ( 0.84375 3.001875 0 ) .
:Shape_2_12_1_1_2_3_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_2_3_1 ;
  x3do:hasAppearance :Appearance_2_12_1_1_2_3_1_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_2_3_1_1_2 .
:Appearance_2_12_1_1_2_3_1_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_2_3_1_1 ;
  x3do:hasMaterial :Material_2_12_1_1_2_3_1_1_1_1 .
:Material_2_12_1_1_2_3_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_2_3_1_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Cylinder_2_12_1_1_2_3_1_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_2_3_1_1 ;
  x3do:height 1.59375 ;
  x3do:radius 0.0385 .
:Transform_2_12_1_1_2_3_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Radar ;
  x3do:hasChildren :Inline_2_12_1_1_2_3_2_1 ;
  x3do:scale ( 0.1 0.1 0.1 ) ;
  x3do:translation ( 0.84375 3.9 0 ) .
:Inline_2_12_1_1_2_3_2_1 a owl:NamedIndividual, x3do:Inline ;
  x3do:hasParent :Transform_2_12_1_1_2_3_2 ;
  x3do:url '"SubmarineRadar.x3d" "https://www.web3d.org/x3d/content/examples/Savage/Submarines/Various/SubmarineRadar.x3d" "SubmarineRadar.wrl" "https://www.web3d.org/x3d/content/examples/Savage/Submarines/Various/SubmarineRadar.wrl"' .
:Snorkelling a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Tower ;
  x3do:hasChildren :SnorkellingTube, :SnorkellingCover ;
  x3do:DEF 'Snorkelling' ;
  x3do:translation ( 0.4 2.908125 0 ) .
:SnorkellingTube a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Snorkelling ;
  x3do:hasChildren :Shape_2_12_1_1_2_4_1_1 ;
  x3do:DEF 'SnorkellingTube' .
:Shape_2_12_1_1_2_4_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :SnorkellingTube ;
  x3do:hasAppearance :Appearance_2_12_1_1_2_4_1_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_2_4_1_1_2 .
:Appearance_2_12_1_1_2_4_1_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_2_4_1_1 ;
  x3do:hasMaterial :Material_2_12_1_1_2_4_1_1_1_1 .
:Material_2_12_1_1_2_4_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_2_4_1_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Cylinder_2_12_1_1_2_4_1_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_2_4_1_1 ;
  x3do:height 1.40625 ;
  x3do:radius 0.09 .
:SnorkellingCover a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Snorkelling ;
  x3do:hasChildren :HatchCover-USE-1 ;
  x3do:DEF 'SnorkellingCover' ;
  x3do:scale ( 0.49 0.65 0.49 ) ;
  x3do:translation ( -0.66 -0.79 0 ) .
:HatchCover-USE-1 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :SnorkellingCover ;
  owl:sameAs :HatchCover . # DEF matching this USE
:Periscope1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Tower ;
  x3do:hasChildren :Transform_2_12_1_1_2_5_1, :Transform_2_12_1_1_2_5_2, :Transform_2_12_1_1_2_5_3 ;
  x3do:DEF 'Periscope1' .
:Transform_2_12_1_1_2_5_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Periscope1 ;
  x3do:hasChildren :Shape_2_12_1_1_2_5_1_1 ;
  x3do:translation ( 2 2.7675 0 ) .
:Shape_2_12_1_1_2_5_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_2_5_1 ;
  x3do:hasAppearance :Appearance_2_12_1_1_2_5_1_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_2_5_1_1_2 .
:Appearance_2_12_1_1_2_5_1_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_2_5_1_1 ;
  x3do:hasMaterial :Material_2_12_1_1_2_5_1_1_1_1 .
:Material_2_12_1_1_2_5_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_2_5_1_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Cylinder_2_12_1_1_2_5_1_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_2_5_1_1 ;
  x3do:height 1.125 ;
  x3do:radius 0.025 .
:Transform_2_12_1_1_2_5_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Periscope1 ;
  x3do:hasChildren :PeriscopeTop ;
  x3do:translation ( 2 3.25 0 ) .
:PeriscopeTop a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_2_5_2 ;
  x3do:hasAppearance :Appearance_2_12_1_1_2_5_2_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_2_5_2_1_2 ;
  x3do:DEF 'PeriscopeTop' .
:Appearance_2_12_1_1_2_5_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :PeriscopeTop ;
  x3do:hasMaterial :Material_2_12_1_1_2_5_2_1_1_1 .
:Material_2_12_1_1_2_5_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_2_5_2_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Cylinder_2_12_1_1_2_5_2_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :PeriscopeTop ;
  x3do:height 0.1 ;
  x3do:radius 0.04 .
:Transform_2_12_1_1_2_5_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Periscope1 ;
  x3do:hasChildren :PeriscopeLens ;
  x3do:rotation ( 1 0 0 1.57 ) ;
  x3do:translation ( 2 3.25 0 ) .
:PeriscopeLens a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_2_5_3 ;
  x3do:hasAppearance :Appearance_2_12_1_1_2_5_3_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_2_5_3_1_2 ;
  x3do:DEF 'PeriscopeLens' .
:Appearance_2_12_1_1_2_5_3_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :PeriscopeLens ;
  x3do:hasMaterial :Material_2_12_1_1_2_5_3_1_1_1 .
:Material_2_12_1_1_2_5_3_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_2_5_3_1_1 .
:Cylinder_2_12_1_1_2_5_3_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :PeriscopeLens ;
  x3do:height 0.08 ;
  x3do:radius 0.028 .
:Periscope2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Tower ;
  x3do:hasChildren :Transform_2_12_1_1_2_6_1, :Transform_2_12_1_1_2_6_2, :Transform_2_12_1_1_2_6_3 ;
  x3do:DEF 'Periscope2' .
:Transform_2_12_1_1_2_6_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Periscope2 ;
  x3do:hasChildren :Shape_2_12_1_1_2_6_1_1 ;
  x3do:translation ( 1.7 3.001875 0 ) .
:Shape_2_12_1_1_2_6_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_2_6_1 ;
  x3do:hasAppearance :Appearance_2_12_1_1_2_6_1_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_2_6_1_1_2 .
:Appearance_2_12_1_1_2_6_1_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_2_6_1_1 ;
  x3do:hasMaterial :Material_2_12_1_1_2_6_1_1_1_1 .
:Material_2_12_1_1_2_6_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_2_6_1_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Cylinder_2_12_1_1_2_6_1_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_2_6_1_1 ;
  x3do:height 1.59375 ;
  x3do:radius 0.025 .
:Transform_2_12_1_1_2_6_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Periscope2 ;
  x3do:hasChildren :PeriscopeTop-USE-1 ;
  x3do:translation ( 1.7 3.72 0 ) .
:PeriscopeTop-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_2_6_2 ;
  owl:sameAs :PeriscopeTop . # DEF matching this USE
:Transform_2_12_1_1_2_6_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Periscope2 ;
  x3do:hasChildren :PeriscopeLens-USE-1 ;
  x3do:rotation ( 1 0 0 1.57 ) ;
  x3do:translation ( 1.7 3.72 0 ) .
:PeriscopeLens-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_2_6_3 ;
  owl:sameAs :PeriscopeLens . # DEF matching this USE
:Transform_2_12_1_1_2_7 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Tower ;
  x3do:hasChildren :Transform_2_12_1_1_2_7_1, :Transform_2_12_1_1_2_7_2 .
:Transform_2_12_1_1_2_7_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_12_1_1_2_7 ;
  x3do:hasChildren :Shape_2_12_1_1_2_7_1_1 ;
  x3do:translation ( 1.0175 2.865 0.15 ) .
:Shape_2_12_1_1_2_7_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_2_7_1 ;
  x3do:hasAppearance :Appearance_2_12_1_1_2_7_1_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_2_7_1_1_2 .
:Appearance_2_12_1_1_2_7_1_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_2_7_1_1 ;
  x3do:hasMaterial :Material_2_12_1_1_2_7_1_1_1_1 .
:Material_2_12_1_1_2_7_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_2_7_1_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Cylinder_2_12_1_1_2_7_1_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_2_7_1_1 ;
  x3do:height 1.32 ;
  x3do:radius 0.025 .
:Transform_2_12_1_1_2_7_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_12_1_1_2_7 ;
  x3do:hasChildren :Shape_2_12_1_1_2_7_2_1 ;
  x3do:translation ( 1.0175 3.55 0.15 ) .
:Shape_2_12_1_1_2_7_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_2_7_2 ;
  x3do:hasAppearance :Appearance_2_12_1_1_2_7_2_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_2_7_2_1_2 .
:Appearance_2_12_1_1_2_7_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_2_7_2_1 ;
  x3do:hasMaterial :Material_2_12_1_1_2_7_2_1_1_1 .
:Material_2_12_1_1_2_7_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_2_7_2_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Cylinder_2_12_1_1_2_7_2_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_2_7_2_1 ;
  x3do:height 0.1 ;
  x3do:radius 0.016 .
:Transform_2_12_1_1_2_8 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Tower ;
  x3do:hasChildren :Transform_2_12_1_1_2_8_1, :Transform_2_12_1_1_2_8_2 .
:Transform_2_12_1_1_2_8_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_12_1_1_2_8 ;
  x3do:hasChildren :Shape_2_12_1_1_2_8_1_1 ;
  x3do:translation ( 0.67 2.865 0.15 ) .
:Shape_2_12_1_1_2_8_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_2_8_1 ;
  x3do:hasAppearance :Appearance_2_12_1_1_2_8_1_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_2_8_1_1_2 .
:Appearance_2_12_1_1_2_8_1_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_2_8_1_1 ;
  x3do:hasMaterial :Material_2_12_1_1_2_8_1_1_1_1 .
:Material_2_12_1_1_2_8_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_2_8_1_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Cylinder_2_12_1_1_2_8_1_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_2_8_1_1 ;
  x3do:height 1.32 ;
  x3do:radius 0.025 .
:Transform_2_12_1_1_2_8_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_12_1_1_2_8 ;
  x3do:hasChildren :Shape_2_12_1_1_2_8_2_1 ;
  x3do:translation ( 0.67 3.55 0.15 ) .
:Shape_2_12_1_1_2_8_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_2_8_2 ;
  x3do:hasAppearance :Appearance_2_12_1_1_2_8_2_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_2_8_2_1_2 .
:Appearance_2_12_1_1_2_8_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_2_8_2_1 ;
  x3do:hasMaterial :Material_2_12_1_1_2_8_2_1_1_1 .
:Material_2_12_1_1_2_8_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_2_8_2_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Cylinder_2_12_1_1_2_8_2_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_2_8_2_1 ;
  x3do:height 0.1 ;
  x3do:radius 0.016 .
:Rudders a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Submarine ;
  x3do:hasChildren :Transform_2_12_1_1_3_1, :Transform_2_12_1_1_3_2, :Transform_2_12_1_1_3_3, :Transform_2_12_1_1_3_4, :Transform_2_12_1_1_3_5, :Transform_2_12_1_1_3_6 ;
  x3do:DEF 'Rudders' .
:Transform_2_12_1_1_3_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Rudders ;
  x3do:hasChildren :RightRudder ;
  x3do:rotation ( 1 0 0 1.57 ) ;
  x3do:scale ( 0.7 1 0.1 ) ;
  x3do:translation ( -9.5 0 0.57 ) .
:RightRudder a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_3_1 ;
  x3do:hasAppearance :Appearance_2_12_1_1_3_1_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_3_1_1_2 ;
  x3do:DEF 'RightRudder' .
:Appearance_2_12_1_1_3_1_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :RightRudder ;
  x3do:hasMaterial :Material_2_12_1_1_3_1_1_1_1 .
:Material_2_12_1_1_3_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_3_1_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Cylinder_2_12_1_1_3_1_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :RightRudder ;
  x3do:height 0.8 ;
  x3do:radius 0.4 .
:Transform_2_12_1_1_3_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Rudders ;
  x3do:hasChildren :RightRudderBlade ;
  x3do:translation ( -9.9 0 0.545 ) .
:RightRudderBlade a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_3_2 ;
  x3do:hasAppearance :Appearance_2_12_1_1_3_2_1_1 ;
  x3do:hasGeometry :Box_2_12_1_1_3_2_1_2 ;
  x3do:DEF 'RightRudderBlade' .
:Appearance_2_12_1_1_3_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :RightRudderBlade ;
  x3do:hasMaterial :Material_2_12_1_1_3_2_1_1_1 .
:Material_2_12_1_1_3_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_3_2_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Box_2_12_1_1_3_2_1_2 a owl:NamedIndividual, x3do:Box ;
  x3do:hasParent :RightRudderBlade ;
  x3do:size ( 0.235 0.05 0.85 ) .
:Transform_2_12_1_1_3_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Rudders ;
  x3do:hasChildren :RightRudder-USE-1 ;
  x3do:rotation ( 1 0 0 -1.57 ) ;
  x3do:scale ( 0.7 1 0.1 ) ;
  x3do:translation ( -9.5 0 -0.57 ) .
:RightRudder-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_3_3 ;
  owl:sameAs :RightRudder . # DEF matching this USE
:Transform_2_12_1_1_3_4 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Rudders ;
  x3do:hasChildren :RightRudderBlade-USE-1 ;
  x3do:translation ( -9.9 0 -0.545 ) .
:RightRudderBlade-USE-1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_3_4 ;
  owl:sameAs :RightRudderBlade . # DEF matching this USE
:Transform_2_12_1_1_3_5 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Rudders ;
  x3do:hasChildren :UpperRudder ;
  x3do:scale ( 1 1 0.133 ) ;
  x3do:translation ( -9.72 0.5 0 ) .
:UpperRudder a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_3_5 ;
  x3do:hasAppearance :Appearance_2_12_1_1_3_5_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_3_5_1_2 ;
  x3do:DEF 'UpperRudder' .
:Appearance_2_12_1_1_3_5_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :UpperRudder ;
  x3do:hasMaterial :Material_2_12_1_1_3_5_1_1_1 .
:Material_2_12_1_1_3_5_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_3_5_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Cylinder_2_12_1_1_3_5_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :UpperRudder ;
  x3do:height 0.8 ;
  x3do:radius 0.3 .
:Transform_2_12_1_1_3_6 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Rudders ;
  x3do:hasChildren :DownRudder ;
  x3do:scale ( 1 1 0.114 ) ;
  x3do:translation ( -9.67 -0.5 0 ) .
:DownRudder a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_3_6 ;
  x3do:hasAppearance :Appearance_2_12_1_1_3_6_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_3_6_1_2 ;
  x3do:DEF 'DownRudder' .
:Appearance_2_12_1_1_3_6_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :DownRudder ;
  x3do:hasMaterial :Material_2_12_1_1_3_6_1_1_1 .
:Material_2_12_1_1_3_6_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_3_6_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Cylinder_2_12_1_1_3_6_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :DownRudder ;
  x3do:height 0.6 ;
  x3do:radius 0.35 .
:Stabilizers a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Submarine ;
  x3do:hasChildren :Transform_2_12_1_1_4_1, :Transform_2_12_1_1_4_2 ;
  x3do:DEF 'Stabilizers' .
:Transform_2_12_1_1_4_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Stabilizers ;
  x3do:hasChildren :RightStabilizer ;
  x3do:scale ( 1 1 2 ) ;
  x3do:translation ( 5.2 -0.42 0.42 ) .
:RightStabilizer a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_4_1 ;
  x3do:hasAppearance :Appearance_2_12_1_1_4_1_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_4_1_1_2 ;
  x3do:DEF 'RightStabilizer' .
:Appearance_2_12_1_1_4_1_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :RightStabilizer ;
  x3do:hasMaterial :Material_2_12_1_1_4_1_1_1_1 .
:Material_2_12_1_1_4_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_4_1_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Cylinder_2_12_1_1_4_1_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :RightStabilizer ;
  x3do:height 0.05 ;
  x3do:radius 0.46875 .
:Transform_2_12_1_1_4_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Stabilizers ;
  x3do:hasChildren :LeftStabilizer ;
  x3do:scale ( 1 1 2 ) ;
  x3do:translation ( 5.2 -0.42 -0.42 ) .
:LeftStabilizer a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_4_2 ;
  x3do:hasAppearance :Appearance_2_12_1_1_4_2_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_4_2_1_2 ;
  x3do:DEF 'LeftStabilizer' .
:Appearance_2_12_1_1_4_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :LeftStabilizer ;
  x3do:hasMaterial :Material_2_12_1_1_4_2_1_1_1 .
:Material_2_12_1_1_4_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_4_2_1_1 ;
  x3do:diffuseColor ( 0.15 0.175 0.175 ) ;
  x3do:specularColor ( 0.2 0.2 0.2 ) .
:Cylinder_2_12_1_1_4_2_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :LeftStabilizer ;
  x3do:height 0.05 ;
  x3do:radius 0.46875 .
:Propeller a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Submarine ;
  x3do:hasChildren :Inline_2_12_1_1_5_1 ;
  x3do:DEF 'Propeller' ;
  x3do:rotation ( 0 1 0 -1.57 ) ;
  x3do:scale ( 0.2 0.2 0.2 ) ;
  x3do:translation ( -10.5 -0.12 0 ) .
:Inline_2_12_1_1_5_1 a owl:NamedIndividual, x3do:Inline ;
  x3do:hasParent :Propeller ;
  x3do:url '"Type209GlafkosDieselSubmarinePropeller.x3d" "https://www.web3d.org/x3d/content/examples/Savage/Submarines/Various/Type209GlafkosDieselSubmarinePropeller.x3d" "Type209GlafkosDieselSubmarinePropeller.wrl" "https://www.web3d.org/x3d/content/examples/Savage/Submarines/Various/Type209GlafkosDieselSubmarinePropeller.wrl"' .
:Torpedoes-Harpoons a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Submarine ;
  x3do:hasChildren :TorpedoSet1, :TorpedoSet2, :TorpedoSet3, :TorpedoSet4, :TorpedoSet5, :TorpedoSet6, :HarpoonSet1, :HarpoonSet2 ;
  x3do:DEF 'Torpedoes-Harpoons' .
:TorpedoSet1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Torpedoes-Harpoons ;
  x3do:hasChildren :TorpedoTube1, :Torpedo1 ;
  x3do:DEF 'TorpedoSet1' ;
  x3do:rotation ( 0 0 1 -1.57 ) ;
  x3do:translation ( 5.522 -0.2 -0.3 ) .
:TorpedoTube1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :TorpedoSet1 ;
  x3do:hasAppearance :Appearance_2_12_1_1_6_1_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_6_1_1_2 ;
  x3do:DEF 'TorpedoTube1' .
:Appearance_2_12_1_1_6_1_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :TorpedoTube1 ;
  x3do:hasMaterial :Material_2_12_1_1_6_1_1_1_1 .
:Material_2_12_1_1_6_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_6_1_1_1 ;
  x3do:diffuseColor ( 0.18 0.15 0.15 ) .
:Cylinder_2_12_1_1_6_1_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :TorpedoTube1 ;
  x3do:height 2.282 ;
  x3do:radius 0.09 .
:Torpedo1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :TorpedoSet1 ;
  x3do:hasChildren :Transform_2_12_1_1_6_1_2_1 ;
  x3do:DEF 'Torpedo1' .
:Transform_2_12_1_1_6_1_2_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Torpedo1 ;
  x3do:hasChildren :Mk48Torpedo, :Transform_2_12_1_1_6_1_2_1_2 ;
  x3do:rotation ( 0 0 1 1.57 ) ;
  x3do:scale ( 0.32 0.32 0.32 ) ;
  x3do:translation ( 0 0.18 0 ) .
:Mk48Torpedo a owl:NamedIndividual, x3do:Inline ;
  x3do:hasParent :Transform_2_12_1_1_6_1_2_1 ;
  x3do:DEF 'Mk48Torpedo' ;
  x3do:url '"../../Weapons/Torpedoes/Mk48Torpedo.x3d" "https://www.web3d.org/x3d/content/examples/Savage/Weapons/Torpedoes/Mk48Torpedo.x3d" "../../Weapons/Torpedoes/Mk48Torpedo.wrl" "https://www.web3d.org/x3d/content/examples/Savage/Weapons/Torpedoes/Mk48Torpedo.wrl"' .
:Transform_2_12_1_1_6_1_2_1_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_12_1_1_6_1_2_1 ;
  x3do:hasChildren :Shape_2_12_1_1_6_1_2_1_2_1 ;
  x3do:rotation ( 0 0 1 1.57 ) ;
  x3do:translation ( -1.872 0 0 ) .
:Shape_2_12_1_1_6_1_2_1_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_6_1_2_1_2 ;
  x3do:hasAppearance :Appearance_2_12_1_1_6_1_2_1_2_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_6_1_2_1_2_1_2 .
:Appearance_2_12_1_1_6_1_2_1_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_6_1_2_1_2_1 ;
  x3do:hasMaterial :Material_2_12_1_1_6_1_2_1_2_1_1_1 .
:Material_2_12_1_1_6_1_2_1_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_6_1_2_1_2_1_1 ;
  x3do:emissiveColor ( 0.18 0.18 0.18 ) .
:Cylinder_2_12_1_1_6_1_2_1_2_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_6_1_2_1_2_1 ;
  x3do:height 1.3 ;
  x3do:radius 0.267 .
:TorpedoSet2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Torpedoes-Harpoons ;
  x3do:hasChildren :TorpedoTube2, :Torpedo2 ;
  x3do:DEF 'TorpedoSet2' ;
  x3do:rotation ( 0 0 1 -1.57 ) ;
  x3do:translation ( 5.522 -0.2 0.3 ) .
:TorpedoTube2 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :TorpedoSet2 ;
  x3do:hasAppearance :Appearance_2_12_1_1_6_2_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_6_2_1_2 ;
  x3do:DEF 'TorpedoTube2' .
:Appearance_2_12_1_1_6_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :TorpedoTube2 ;
  x3do:hasMaterial :Material_2_12_1_1_6_2_1_1_1 .
:Material_2_12_1_1_6_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_6_2_1_1 ;
  x3do:diffuseColor ( 0.18 0.15 0.15 ) .
:Cylinder_2_12_1_1_6_2_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :TorpedoTube2 ;
  x3do:height 2.282 ;
  x3do:radius 0.09 .
:Torpedo2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :TorpedoSet2 ;
  x3do:hasChildren :Transform_2_12_1_1_6_2_2_1 ;
  x3do:DEF 'Torpedo2' .
:Transform_2_12_1_1_6_2_2_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Torpedo2 ;
  x3do:hasChildren :Mk48Torpedo-USE-1, :Transform_2_12_1_1_6_2_2_1_2 ;
  x3do:rotation ( 0 0 1 1.57 ) ;
  x3do:scale ( 0.32 0.32 0.32 ) ;
  x3do:translation ( 0 0.18 0 ) .
:Mk48Torpedo-USE-1 a owl:NamedIndividual, x3do:Inline ;
  x3do:hasParent :Transform_2_12_1_1_6_2_2_1 ;
  owl:sameAs :Mk48Torpedo . # DEF matching this USE
:Transform_2_12_1_1_6_2_2_1_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_12_1_1_6_2_2_1 ;
  x3do:hasChildren :Shape_2_12_1_1_6_2_2_1_2_1 ;
  x3do:rotation ( 0 0 1 1.57 ) ;
  x3do:translation ( -1.872 0 0 ) .
:Shape_2_12_1_1_6_2_2_1_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_6_2_2_1_2 ;
  x3do:hasAppearance :Appearance_2_12_1_1_6_2_2_1_2_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_6_2_2_1_2_1_2 .
:Appearance_2_12_1_1_6_2_2_1_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_6_2_2_1_2_1 ;
  x3do:hasMaterial :Material_2_12_1_1_6_2_2_1_2_1_1_1 .
:Material_2_12_1_1_6_2_2_1_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_6_2_2_1_2_1_1 ;
  x3do:emissiveColor ( 0.18 0.18 0.18 ) .
:Cylinder_2_12_1_1_6_2_2_1_2_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_6_2_2_1_2_1 ;
  x3do:height 1.3 ;
  x3do:radius 0.267 .
:TorpedoSet3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Torpedoes-Harpoons ;
  x3do:hasChildren :TorpedoTube3, :Torpedo3 ;
  x3do:DEF 'TorpedoSet3' ;
  x3do:rotation ( 0 0 1 -1.57 ) ;
  x3do:translation ( 5.496 -0.4 -0.35 ) .
:TorpedoTube3 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :TorpedoSet3 ;
  x3do:hasAppearance :Appearance_2_12_1_1_6_3_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_6_3_1_2 ;
  x3do:DEF 'TorpedoTube3' .
:Appearance_2_12_1_1_6_3_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :TorpedoTube3 ;
  x3do:hasMaterial :Material_2_12_1_1_6_3_1_1_1 .
:Material_2_12_1_1_6_3_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_6_3_1_1 ;
  x3do:diffuseColor ( 0.18 0.15 0.15 ) .
:Cylinder_2_12_1_1_6_3_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :TorpedoTube3 ;
  x3do:height 2.282 ;
  x3do:radius 0.09 .
:Torpedo3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :TorpedoSet3 ;
  x3do:hasChildren :Transform_2_12_1_1_6_3_2_1 ;
  x3do:DEF 'Torpedo3' .
:Transform_2_12_1_1_6_3_2_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Torpedo3 ;
  x3do:hasChildren :Mk48Torpedo-USE-2, :Transform_2_12_1_1_6_3_2_1_2 ;
  x3do:rotation ( 0 0 1 1.57 ) ;
  x3do:scale ( 0.32 0.32 0.32 ) ;
  x3do:translation ( 0 0.18 0 ) .
:Mk48Torpedo-USE-2 a owl:NamedIndividual, x3do:Inline ;
  x3do:hasParent :Transform_2_12_1_1_6_3_2_1 ;
  owl:sameAs :Mk48Torpedo . # DEF matching this USE
:Transform_2_12_1_1_6_3_2_1_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_12_1_1_6_3_2_1 ;
  x3do:hasChildren :Shape_2_12_1_1_6_3_2_1_2_1 ;
  x3do:rotation ( 0 0 1 1.57 ) ;
  x3do:translation ( -1.872 0 0 ) .
:Shape_2_12_1_1_6_3_2_1_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_6_3_2_1_2 ;
  x3do:hasAppearance :Appearance_2_12_1_1_6_3_2_1_2_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_6_3_2_1_2_1_2 .
:Appearance_2_12_1_1_6_3_2_1_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_6_3_2_1_2_1 ;
  x3do:hasMaterial :Material_2_12_1_1_6_3_2_1_2_1_1_1 .
:Material_2_12_1_1_6_3_2_1_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_6_3_2_1_2_1_1 ;
  x3do:emissiveColor ( 0.18 0.18 0.18 ) .
:Cylinder_2_12_1_1_6_3_2_1_2_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_6_3_2_1_2_1 ;
  x3do:height 1.3 ;
  x3do:radius 0.267 .
:TorpedoSet4 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Torpedoes-Harpoons ;
  x3do:hasChildren :TorpedoTube4, :Torpedo4 ;
  x3do:DEF 'TorpedoSet4' ;
  x3do:rotation ( 0 0 1 -1.57 ) ;
  x3do:translation ( 5.496 -0.4 0.35 ) .
:TorpedoTube4 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :TorpedoSet4 ;
  x3do:hasAppearance :Appearance_2_12_1_1_6_4_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_6_4_1_2 ;
  x3do:DEF 'TorpedoTube4' .
:Appearance_2_12_1_1_6_4_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :TorpedoTube4 ;
  x3do:hasMaterial :Material_2_12_1_1_6_4_1_1_1 .
:Material_2_12_1_1_6_4_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_6_4_1_1 ;
  x3do:diffuseColor ( 0.18 0.15 0.15 ) .
:Cylinder_2_12_1_1_6_4_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :TorpedoTube4 ;
  x3do:height 2.282 ;
  x3do:radius 0.09 .
:Torpedo4 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :TorpedoSet4 ;
  x3do:hasChildren :Transform_2_12_1_1_6_4_2_1 ;
  x3do:DEF 'Torpedo4' .
:Transform_2_12_1_1_6_4_2_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Torpedo4 ;
  x3do:hasChildren :Mk48Torpedo-USE-3, :Transform_2_12_1_1_6_4_2_1_2 ;
  x3do:rotation ( 0 0 1 1.57 ) ;
  x3do:scale ( 0.32 0.32 0.32 ) ;
  x3do:translation ( 0 0.18 0 ) .
:Mk48Torpedo-USE-3 a owl:NamedIndividual, x3do:Inline ;
  x3do:hasParent :Transform_2_12_1_1_6_4_2_1 ;
  owl:sameAs :Mk48Torpedo . # DEF matching this USE
:Transform_2_12_1_1_6_4_2_1_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_12_1_1_6_4_2_1 ;
  x3do:hasChildren :Shape_2_12_1_1_6_4_2_1_2_1 ;
  x3do:rotation ( 0 0 1 1.57 ) ;
  x3do:translation ( -1.872 0 0 ) .
:Shape_2_12_1_1_6_4_2_1_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_6_4_2_1_2 ;
  x3do:hasAppearance :Appearance_2_12_1_1_6_4_2_1_2_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_6_4_2_1_2_1_2 .
:Appearance_2_12_1_1_6_4_2_1_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_6_4_2_1_2_1 ;
  x3do:hasMaterial :Material_2_12_1_1_6_4_2_1_2_1_1_1 .
:Material_2_12_1_1_6_4_2_1_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_6_4_2_1_2_1_1 ;
  x3do:emissiveColor ( 0.18 0.18 0.18 ) .
:Cylinder_2_12_1_1_6_4_2_1_2_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_6_4_2_1_2_1 ;
  x3do:height 1.3 ;
  x3do:radius 0.267 .
:TorpedoSet5 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Torpedoes-Harpoons ;
  x3do:hasChildren :TorpedoTube5, :Torpedo5 ;
  x3do:DEF 'TorpedoSet5' ;
  x3do:rotation ( 0 0 1 -1.57 ) ;
  x3do:translation ( 5.528 -0.4 -0.126 ) .
:TorpedoTube5 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :TorpedoSet5 ;
  x3do:hasAppearance :Appearance_2_12_1_1_6_5_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_6_5_1_2 ;
  x3do:DEF 'TorpedoTube5' .
:Appearance_2_12_1_1_6_5_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :TorpedoTube5 ;
  x3do:hasMaterial :Material_2_12_1_1_6_5_1_1_1 .
:Material_2_12_1_1_6_5_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_6_5_1_1 ;
  x3do:diffuseColor ( 0.18 0.15 0.15 ) .
:Cylinder_2_12_1_1_6_5_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :TorpedoTube5 ;
  x3do:height 2.282 ;
  x3do:radius 0.09 .
:Torpedo5 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :TorpedoSet5 ;
  x3do:hasChildren :Transform_2_12_1_1_6_5_2_1 ;
  x3do:DEF 'Torpedo5' .
:Transform_2_12_1_1_6_5_2_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Torpedo5 ;
  x3do:hasChildren :Mk48Torpedo-USE-4, :Transform_2_12_1_1_6_5_2_1_2 ;
  x3do:rotation ( 0 0 1 1.57 ) ;
  x3do:scale ( 0.32 0.32 0.32 ) ;
  x3do:translation ( 0 0.18 0 ) .
:Mk48Torpedo-USE-4 a owl:NamedIndividual, x3do:Inline ;
  x3do:hasParent :Transform_2_12_1_1_6_5_2_1 ;
  owl:sameAs :Mk48Torpedo . # DEF matching this USE
:Transform_2_12_1_1_6_5_2_1_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_12_1_1_6_5_2_1 ;
  x3do:hasChildren :Shape_2_12_1_1_6_5_2_1_2_1 ;
  x3do:rotation ( 0 0 1 1.57 ) ;
  x3do:translation ( -1.872 0 0 ) .
:Shape_2_12_1_1_6_5_2_1_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_6_5_2_1_2 ;
  x3do:hasAppearance :Appearance_2_12_1_1_6_5_2_1_2_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_6_5_2_1_2_1_2 .
:Appearance_2_12_1_1_6_5_2_1_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_6_5_2_1_2_1 ;
  x3do:hasMaterial :Material_2_12_1_1_6_5_2_1_2_1_1_1 .
:Material_2_12_1_1_6_5_2_1_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_6_5_2_1_2_1_1 ;
  x3do:emissiveColor ( 0.18 0.18 0.18 ) .
:Cylinder_2_12_1_1_6_5_2_1_2_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_6_5_2_1_2_1 ;
  x3do:height 1.3 ;
  x3do:radius 0.267 .
:TorpedoSet6 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Torpedoes-Harpoons ;
  x3do:hasChildren :TorpedoTube6, :Torpedo6 ;
  x3do:DEF 'TorpedoSet6' ;
  x3do:rotation ( 0 0 1 -1.57 ) ;
  x3do:translation ( 5.528 -0.4 0.126 ) .
:TorpedoTube6 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :TorpedoSet6 ;
  x3do:hasAppearance :Appearance_2_12_1_1_6_6_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_6_6_1_2 ;
  x3do:DEF 'TorpedoTube6' .
:Appearance_2_12_1_1_6_6_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :TorpedoTube6 ;
  x3do:hasMaterial :Material_2_12_1_1_6_6_1_1_1 .
:Material_2_12_1_1_6_6_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_6_6_1_1 ;
  x3do:diffuseColor ( 0.18 0.15 0.15 ) .
:Cylinder_2_12_1_1_6_6_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :TorpedoTube6 ;
  x3do:height 2.282 ;
  x3do:radius 0.09 .
:Torpedo6 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :TorpedoSet6 ;
  x3do:hasChildren :Transform_2_12_1_1_6_6_2_1 ;
  x3do:DEF 'Torpedo6' .
:Transform_2_12_1_1_6_6_2_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Torpedo6 ;
  x3do:hasChildren :Mk48Torpedo-USE-5, :Transform_2_12_1_1_6_6_2_1_2 ;
  x3do:rotation ( 0 0 1 1.57 ) ;
  x3do:scale ( 0.32 0.32 0.32 ) ;
  x3do:translation ( 0 0.18 0 ) .
:Mk48Torpedo-USE-5 a owl:NamedIndividual, x3do:Inline ;
  x3do:hasParent :Transform_2_12_1_1_6_6_2_1 ;
  owl:sameAs :Mk48Torpedo . # DEF matching this USE
:Transform_2_12_1_1_6_6_2_1_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Transform_2_12_1_1_6_6_2_1 ;
  x3do:hasChildren :Shape_2_12_1_1_6_6_2_1_2_1 ;
  x3do:rotation ( 0 0 1 1.57 ) ;
  x3do:translation ( -1.872 0 0 ) .
:Shape_2_12_1_1_6_6_2_1_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_1_6_6_2_1_2 ;
  x3do:hasAppearance :Appearance_2_12_1_1_6_6_2_1_2_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_6_6_2_1_2_1_2 .
:Appearance_2_12_1_1_6_6_2_1_2_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_1_6_6_2_1_2_1 ;
  x3do:hasMaterial :Material_2_12_1_1_6_6_2_1_2_1_1_1 .
:Material_2_12_1_1_6_6_2_1_2_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_6_6_2_1_2_1_1 ;
  x3do:emissiveColor ( 0.18 0.18 0.18 ) .
:Cylinder_2_12_1_1_6_6_2_1_2_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :Shape_2_12_1_1_6_6_2_1_2_1 ;
  x3do:height 1.3 ;
  x3do:radius 0.267 .
:HarpoonSet1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Torpedoes-Harpoons ;
  x3do:hasChildren :HarpoonTube1, :Harpoon1 ;
  x3do:DEF 'HarpoonSet1' ;
  x3do:rotation ( 0 0 1 -1.57 ) ;
  x3do:translation ( 5.528 0 -0.25 ) .
:HarpoonTube1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :HarpoonSet1 ;
  x3do:hasAppearance :Appearance_2_12_1_1_6_7_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_6_7_1_2 ;
  x3do:DEF 'HarpoonTube1' .
:Appearance_2_12_1_1_6_7_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :HarpoonTube1 ;
  x3do:hasMaterial :Material_2_12_1_1_6_7_1_1_1 .
:Material_2_12_1_1_6_7_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_6_7_1_1 ;
  x3do:diffuseColor ( 0.18 0.15 0.15 ) .
:Cylinder_2_12_1_1_6_7_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :HarpoonTube1 ;
  x3do:height 2.282 ;
  x3do:radius 0.09 .
:Harpoon1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :HarpoonSet1 ;
  x3do:hasChildren :Harpoon ;
  x3do:DEF 'Harpoon1' ;
  x3do:scale ( 0.1 0.1 0.1 ) ;
  x3do:translation ( 0 1.08 0 ) .
:Harpoon a owl:NamedIndividual, x3do:Inline ;
  x3do:hasParent :Harpoon1 ;
  x3do:DEF 'Harpoon' ;
  x3do:url '"../../Weapons/Missiles/HarpoonExample.x3d" "https://www.web3d.org/x3d/content/examples/Savage/Weapons/Missiles/HarpoonExample.x3d" "../../Weapons/Missiles/HarpoonExample.wrl" "https://www.web3d.org/x3d/content/examples/Savage/Weapons/Missiles/HarpoonExample.wrl"' .
:HarpoonSet2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Torpedoes-Harpoons ;
  x3do:hasChildren :HarpoonTube2, :Harpoon2 ;
  x3do:DEF 'HarpoonSet2' ;
  x3do:rotation ( 0 0 1 -1.57 ) ;
  x3do:translation ( 5.528 0 0.25 ) .
:HarpoonTube2 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :HarpoonSet2 ;
  x3do:hasAppearance :Appearance_2_12_1_1_6_8_1_1 ;
  x3do:hasGeometry :Cylinder_2_12_1_1_6_8_1_2 ;
  x3do:DEF 'HarpoonTube2' .
:Appearance_2_12_1_1_6_8_1_1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :HarpoonTube2 ;
  x3do:hasMaterial :Material_2_12_1_1_6_8_1_1_1 .
:Material_2_12_1_1_6_8_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :Appearance_2_12_1_1_6_8_1_1 ;
  x3do:diffuseColor ( 0.18 0.15 0.15 ) .
:Cylinder_2_12_1_1_6_8_1_2 a owl:NamedIndividual, x3do:Cylinder ;
  x3do:hasParent :HarpoonTube2 ;
  x3do:height 2.282 ;
  x3do:radius 0.09 .
:Harpoon2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :HarpoonSet2 ;
  x3do:hasChildren :Harpoon-USE-1 ;
  x3do:DEF 'Harpoon2' ;
  x3do:scale ( 0.1 0.1 0.1 ) ;
  x3do:translation ( 0 1.08 0 ) .
:Harpoon-USE-1 a owl:NamedIndividual, x3do:Inline ;
  x3do:hasParent :Harpoon2 ;
  owl:sameAs :Harpoon . # DEF matching this USE
:SubDrag a owl:NamedIndividual, x3do:PlaneSensor ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:DEF 'SubDrag' ;
  x3do:description 'click and drag to move object' .
:Touch1 a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:DEF 'Touch1' ;
  x3do:description 'touch to activate' .
:Clock a owl:NamedIndividual, x3do:TimeSensor ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:DEF 'Clock' ;
  x3do:cycleInterval '50' ;
  x3do:loop true .
:SubMove a owl:NamedIndividual, x3do:Script ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:hasField :field_2_12_1_5_1, :field_2_12_1_5_2, :field_2_12_1_5_3, :field_2_12_1_5_4 ;
  x3do:DEF 'SubMove' ;
  x3do:sourceCode """
ecmascript:

function set_fraction (fraction,eventTime) 
{
 value_changed[0]=radius*Math.sin(turns*fraction*6.28);
 value_changed[1]=0;
 value_changed[2]=radius*Math.cos(turns*fraction*6.28)
}
""" .
:field_2_12_1_5_1 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :SubMove ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'set_fraction' ;
  x3do:type 'SFFloat' .
:field_2_12_1_5_2 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :SubMove ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'value_changed' ;
  x3do:type 'SFVec3f' .
:field_2_12_1_5_3 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :SubMove ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'radius' ;
  x3do:type 'SFFloat' ;
  x3do:value 10 .
:field_2_12_1_5_4 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :SubMove ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'turns' ;
  x3do:type 'SFFloat' ;
  x3do:value 1 .
:SubTurn a owl:NamedIndividual, x3do:Script ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:hasField :field_2_12_1_6_1, :field_2_12_1_6_2, :field_2_12_1_6_3, :field_2_12_1_6_4 ;
  x3do:DEF 'SubTurn' ;
  x3do:sourceCode """
ecmascript:

function set_fraction (fraction,eventTime)
{
 value_changed[0]=0;
 value_changed[1]=1;
 value_changed[2]=0;
 value_changed[3]=fraction*6.28;
}
""" .
:field_2_12_1_6_1 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :SubTurn ;
  x3do:accessType 'inputOnly' ;
  x3do:name 'set_fraction' ;
  x3do:type 'SFFloat' .
:field_2_12_1_6_2 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :SubTurn ;
  x3do:accessType 'outputOnly' ;
  x3do:name 'value_changed' ;
  x3do:type 'SFRotation' .
:field_2_12_1_6_3 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :SubTurn ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'radius' ;
  x3do:type 'SFFloat' ;
  x3do:value 1 .
:field_2_12_1_6_4 a owl:NamedIndividual, x3do:field ;
  x3do:hasParent :SubTurn ;
  x3do:accessType 'initializeOnly' ;
  x3do:name 'turns' ;
  x3do:type 'SFFloat' ;
  x3do:value 1 .
:Fog_2_12_1_7 a owl:NamedIndividual, x3do:Fog ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:color ( 0 0 1 ) ;
  x3do:fogType 'EXPONENTIAL' ;
  x3do:visibilityRange 150000 .
:Sound_2_12_1_8 a owl:NamedIndividual, x3do:Sound ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:hasSource :SonarSound ;
  x3do:intensity 0.6 ;
  x3do:maxBack 100 ;
  x3do:maxFront 100 ;
  x3do:minBack 50 ;
  x3do:minFront 50 .
:SonarSound a owl:NamedIndividual, x3do:AudioClip ;
  x3do:hasParent :Sound_2_12_1_8 ;
  x3do:DEF 'SonarSound' ;
  x3do:description 'Sonar sound' ;
  x3do:loop true ;
  x3do:url '".../.../Submarines/Various/sonar.wav" "https://www.web3d.org/x3d/content/examples/Savage/Submarines/Various/sonar.wav" "sonar.wav"' .
:Group_2_12_1_9 a owl:NamedIndividual, x3do:Group ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:hasChildren :Transform_2_12_1_9_1, :Transform_2_12_1_9_2, :Transform_2_12_1_9_3, :Transform_2_12_1_9_4, :Transform_2_12_1_9_5, :Transform_2_12_1_9_6, :Transform_2_12_1_9_7, :Transform_2_12_1_9_8, :Clock1, :Clock2, :Clock3, :Clock4, :Clock5, :Clock6, :Clock7, :Clock8, :TorpedoFire1, :TorpedoFire2, :TorpedoFire3, :TorpedoFire4, :TorpedoFire5, :TorpedoFire6, :HarpoonFire1, :HarpoonFire2, :HarpoonRot1, :HarpoonRot2 .
:Transform_2_12_1_9_1 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:hasChildren :Shape_2_12_1_9_1_1, :TorpedoLaunch1 ;
  x3do:translation ( 1.5 -5.2 7 ) .
:Shape_2_12_1_9_1_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_9_1 ;
  x3do:hasAppearance :TorpedoButton ;
  x3do:hasGeometry :Sphere_2_12_1_9_1_1_2 .
:TorpedoButton a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_9_1_1 ;
  x3do:hasMaterial :Material_2_12_1_9_1_1_1_1 ;
  x3do:DEF 'TorpedoButton' .
:Material_2_12_1_9_1_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :TorpedoButton ;
  x3do:diffuseColor ( 0.25 0 0.75 ) .
:Sphere_2_12_1_9_1_1_2 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_12_1_9_1_1 ;
  x3do:radius 0.2 .
:TorpedoLaunch1 a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :Transform_2_12_1_9_1 ;
  x3do:DEF 'TorpedoLaunch1' ;
  x3do:description 'touch to activate' .
:Transform_2_12_1_9_2 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:hasChildren :Shape_2_12_1_9_2_1, :TorpedoLaunch2 ;
  x3do:translation ( 2.5 -5.2 7 ) .
:Shape_2_12_1_9_2_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_9_2 ;
  x3do:hasAppearance :TorpedoButton-USE-1 ;
  x3do:hasGeometry :Sphere_2_12_1_9_2_1_2 .
:TorpedoButton-USE-1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_9_2_1 ;
  owl:sameAs :TorpedoButton . # DEF matching this USE
:Sphere_2_12_1_9_2_1_2 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_12_1_9_2_1 ;
  x3do:radius 0.2 .
:TorpedoLaunch2 a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :Transform_2_12_1_9_2 ;
  x3do:DEF 'TorpedoLaunch2' ;
  x3do:description 'touch to activate' .
:Transform_2_12_1_9_3 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:hasChildren :Shape_2_12_1_9_3_1, :TorpedoLaunch3 ;
  x3do:translation ( 3.5 -5.2 7 ) .
:Shape_2_12_1_9_3_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_9_3 ;
  x3do:hasAppearance :TorpedoButton-USE-2 ;
  x3do:hasGeometry :Sphere_2_12_1_9_3_1_2 .
:TorpedoButton-USE-2 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_9_3_1 ;
  owl:sameAs :TorpedoButton . # DEF matching this USE
:Sphere_2_12_1_9_3_1_2 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_12_1_9_3_1 ;
  x3do:radius 0.2 .
:TorpedoLaunch3 a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :Transform_2_12_1_9_3 ;
  x3do:DEF 'TorpedoLaunch3' ;
  x3do:description 'touch to activate' .
:Transform_2_12_1_9_4 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:hasChildren :Shape_2_12_1_9_4_1, :TorpedoLaunch4 ;
  x3do:translation ( 4.5 -5.2 7 ) .
:Shape_2_12_1_9_4_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_9_4 ;
  x3do:hasAppearance :TorpedoButton-USE-3 ;
  x3do:hasGeometry :Sphere_2_12_1_9_4_1_2 .
:TorpedoButton-USE-3 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_9_4_1 ;
  owl:sameAs :TorpedoButton . # DEF matching this USE
:Sphere_2_12_1_9_4_1_2 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_12_1_9_4_1 ;
  x3do:radius 0.2 .
:TorpedoLaunch4 a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :Transform_2_12_1_9_4 ;
  x3do:DEF 'TorpedoLaunch4' ;
  x3do:description 'touch to activate' .
:Transform_2_12_1_9_5 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:hasChildren :Shape_2_12_1_9_5_1, :TorpedoLaunch5 ;
  x3do:translation ( 5.5 -5.2 7 ) .
:Shape_2_12_1_9_5_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_9_5 ;
  x3do:hasAppearance :TorpedoButton-USE-4 ;
  x3do:hasGeometry :Sphere_2_12_1_9_5_1_2 .
:TorpedoButton-USE-4 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_9_5_1 ;
  owl:sameAs :TorpedoButton . # DEF matching this USE
:Sphere_2_12_1_9_5_1_2 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_12_1_9_5_1 ;
  x3do:radius 0.2 .
:TorpedoLaunch5 a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :Transform_2_12_1_9_5 ;
  x3do:DEF 'TorpedoLaunch5' ;
  x3do:description 'touch to activate' .
:Transform_2_12_1_9_6 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:hasChildren :Shape_2_12_1_9_6_1, :TorpedoLaunch6 ;
  x3do:translation ( 6.5 -5.2 7 ) .
:Shape_2_12_1_9_6_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_9_6 ;
  x3do:hasAppearance :TorpedoButton-USE-5 ;
  x3do:hasGeometry :Sphere_2_12_1_9_6_1_2 .
:TorpedoButton-USE-5 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_9_6_1 ;
  owl:sameAs :TorpedoButton . # DEF matching this USE
:Sphere_2_12_1_9_6_1_2 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_12_1_9_6_1 ;
  x3do:radius 0.2 .
:TorpedoLaunch6 a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :Transform_2_12_1_9_6 ;
  x3do:DEF 'TorpedoLaunch6' ;
  x3do:description 'touch to activate' .
:Transform_2_12_1_9_7 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:hasChildren :Shape_2_12_1_9_7_1, :HarpoonLaunch1, :Sound_2_12_1_9_7_3 ;
  x3do:translation ( 7.5 -5.2 7 ) .
:Shape_2_12_1_9_7_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_9_7 ;
  x3do:hasAppearance :HarpoonButton ;
  x3do:hasGeometry :Sphere_2_12_1_9_7_1_2 .
:HarpoonButton a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_9_7_1 ;
  x3do:hasMaterial :Material_2_12_1_9_7_1_1_1 ;
  x3do:DEF 'HarpoonButton' .
:Material_2_12_1_9_7_1_1_1 a owl:NamedIndividual, x3do:Material ;
  x3do:hasParent :HarpoonButton ;
  x3do:diffuseColor ( 0.9 0.9 0.9 ) .
:Sphere_2_12_1_9_7_1_2 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_12_1_9_7_1 ;
  x3do:radius 0.2 .
:HarpoonLaunch1 a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :Transform_2_12_1_9_7 ;
  x3do:DEF 'HarpoonLaunch1' ;
  x3do:description 'touch to activate' .
:Sound_2_12_1_9_7_3 a owl:NamedIndividual, x3do:Sound ;
  x3do:hasParent :Transform_2_12_1_9_7 ;
  x3do:hasSource :MissileSound1 ;
  x3do:intensity 0.7 ;
  x3do:maxBack 100 ;
  x3do:maxFront 100 ;
  x3do:minBack 50 ;
  x3do:minFront 50 .
:MissileSound1 a owl:NamedIndividual, x3do:AudioClip ;
  x3do:hasParent :Sound_2_12_1_9_7_3 ;
  x3do:DEF 'MissileSound1' ;
  x3do:description 'Missile sound' ;
  x3do:url '"../../Weapons/Missiles/MISSILE1.wav" "https://www.web3d.org/x3d/content/examples/Savage/Weapons/Missiles/MISSILE1.wav" "MISSILE1.wav"' .
:Transform_2_12_1_9_8 a owl:NamedIndividual, x3do:Transform ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:hasChildren :Shape_2_12_1_9_8_1, :HarpoonLaunch2 ;
  x3do:translation ( 8.5 -5.2 7 ) .
:Shape_2_12_1_9_8_1 a owl:NamedIndividual, x3do:Shape ;
  x3do:hasParent :Transform_2_12_1_9_8 ;
  x3do:hasAppearance :HarpoonButton-USE-1 ;
  x3do:hasGeometry :Sphere_2_12_1_9_8_1_2 .
:HarpoonButton-USE-1 a owl:NamedIndividual, x3do:Appearance ;
  x3do:hasParent :Shape_2_12_1_9_8_1 ;
  owl:sameAs :HarpoonButton . # DEF matching this USE
:Sphere_2_12_1_9_8_1_2 a owl:NamedIndividual, x3do:Sphere ;
  x3do:hasParent :Shape_2_12_1_9_8_1 ;
  x3do:radius 0.2 .
:HarpoonLaunch2 a owl:NamedIndividual, x3do:TouchSensor ;
  x3do:hasParent :Transform_2_12_1_9_8 ;
  x3do:DEF 'HarpoonLaunch2' ;
  x3do:description 'touch to activate' .
:Clock1 a owl:NamedIndividual, x3do:TimeSensor ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'Clock1' ;
  x3do:cycleInterval '12' ;
  x3do:enabled false ;
  x3do:loop true .
:Clock2 a owl:NamedIndividual, x3do:TimeSensor ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'Clock2' ;
  x3do:cycleInterval '12' ;
  x3do:enabled false ;
  x3do:loop true .
:Clock3 a owl:NamedIndividual, x3do:TimeSensor ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'Clock3' ;
  x3do:cycleInterval '12' ;
  x3do:enabled false ;
  x3do:loop true .
:Clock4 a owl:NamedIndividual, x3do:TimeSensor ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'Clock4' ;
  x3do:cycleInterval '12' ;
  x3do:enabled false ;
  x3do:loop true .
:Clock5 a owl:NamedIndividual, x3do:TimeSensor ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'Clock5' ;
  x3do:cycleInterval '12' ;
  x3do:enabled false ;
  x3do:loop true .
:Clock6 a owl:NamedIndividual, x3do:TimeSensor ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'Clock6' ;
  x3do:cycleInterval '12' ;
  x3do:enabled false ;
  x3do:loop true .
:Clock7 a owl:NamedIndividual, x3do:TimeSensor ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'Clock7' ;
  x3do:cycleInterval '8' ;
  x3do:enabled false ;
  x3do:loop true .
:Clock8 a owl:NamedIndividual, x3do:TimeSensor ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'Clock8' ;
  x3do:cycleInterval '8' ;
  x3do:enabled false ;
  x3do:loop true .
:TorpedoFire1 a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'TorpedoFire1' ;
  x3do:key ( 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 ) ;
  x3do:keyValue ( 0 0 0 0 4 0 0 8 0 0 12 0 0 16 0 0 20 0 0 24 0 0 28 0 0 32 0 0 36 0 0 40 0 ) .
:TorpedoFire2 a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'TorpedoFire2' ;
  x3do:key ( 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 ) ;
  x3do:keyValue ( 0 0 0 0 4 0 0 8 0 0 12 0 0 16 0 0 20 0 0 24 0 0 28 0 0 32 0 0 36 0 0 40 0 ) .
:TorpedoFire3 a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'TorpedoFire3' ;
  x3do:key ( 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 ) ;
  x3do:keyValue ( 0 0 0 0 4 0 0 8 0 0 12 0 0 16 0 0 20 0 0 24 0 0 28 0 0 32 0 0 36 0 0 40 0 ) .
:TorpedoFire4 a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'TorpedoFire4' ;
  x3do:key ( 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 ) ;
  x3do:keyValue ( 0 0 0 0 4 0 0 8 0 0 12 0 0 16 0 0 20 0 0 24 0 0 28 0 0 32 0 0 36 0 0 40 0 ) .
:TorpedoFire5 a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'TorpedoFire5' ;
  x3do:key ( 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 ) ;
  x3do:keyValue ( 0 0 0 0 4 0 0 8 0 0 12 0 0 16 0 0 20 0 0 24 0 0 28 0 0 32 0 0 36 0 0 40 0 ) .
:TorpedoFire6 a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'TorpedoFire6' ;
  x3do:key ( 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 ) ;
  x3do:keyValue ( 0 0 0 0 4 0 0 8 0 0 12 0 0 16 0 0 20 0 0 24 0 0 28 0 0 32 0 0 36 0 0 40 0 ) .
:HarpoonFire1 a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'HarpoonFire1' ;
  x3do:key ( 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 ) ;
  x3do:keyValue ( 0 0 0 0 4 0 0 8 0 0 12 0 -1 16 0 -3 20 0 -6 24 0 -10 28 0 -15 32 0 -21 36 0 -28 40 0 ) .
:HarpoonFire2 a owl:NamedIndividual, x3do:PositionInterpolator ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'HarpoonFire2' ;
  x3do:key ( 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 ) ;
  x3do:keyValue ( 0 0 0 0 4 0 0 8 0 0 12 0 -1 16 0 -3 20 0 -6 24 0 -10 28 0 -15 32 0 -21 36 0 -28 40 0 ) .
:HarpoonRot1 a owl:NamedIndividual, x3do:OrientationInterpolator ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'HarpoonRot1' ;
  x3do:key ( 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 ) ;
  x3do:keyValue ( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0.112 0 0 1 0.224 0 0 1 0.449 0 0 1 0.673 0 0 1 0.897 0 0 1 1.121 0 0 1 1.346 0 0 1 1.57 ) .
:HarpoonRot2 a owl:NamedIndividual, x3do:OrientationInterpolator ;
  x3do:hasParent :Group_2_12_1_9 ;
  x3do:DEF 'HarpoonRot2' ;
  x3do:key ( 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 ) ;
  x3do:keyValue ( 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0.112 0 0 1 0.224 0 0 1 0.449 0 0 1 0.673 0 0 1 0.897 0 0 1 1.121 0 0 1 1.346 0 0 1 1.57 ) .
:ROUTE_2_12_1_10 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'touchTime' ;
  x3do:fromNode 'HarpoonLaunch1' ;
  x3do:toField 'set_startTime' ;
  x3do:toNode 'MissileSound1' .
:ROUTE_2_12_1_11 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'touchTime' ;
  x3do:fromNode 'HarpoonLaunch2' ;
  x3do:toField 'set_startTime' ;
  x3do:toNode 'MissileSound1' .
:ROUTE_2_12_1_12 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'isOver' ;
  x3do:fromNode 'TorpedoLaunch1' ;
  x3do:toField 'set_enabled' ;
  x3do:toNode 'Clock1' .
:ROUTE_2_12_1_13 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'Clock1' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'TorpedoFire1' .
:ROUTE_2_12_1_14 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'TorpedoFire1' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'Torpedo1' .
:ROUTE_2_12_1_15 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'isOver' ;
  x3do:fromNode 'TorpedoLaunch2' ;
  x3do:toField 'set_enabled' ;
  x3do:toNode 'Clock2' .
:ROUTE_2_12_1_16 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'Clock2' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'TorpedoFire2' .
:ROUTE_2_12_1_17 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'TorpedoFire2' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'Torpedo2' .
:ROUTE_2_12_1_18 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'isOver' ;
  x3do:fromNode 'TorpedoLaunch3' ;
  x3do:toField 'set_enabled' ;
  x3do:toNode 'Clock3' .
:ROUTE_2_12_1_19 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'Clock3' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'TorpedoFire3' .
:ROUTE_2_12_1_20 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'TorpedoFire3' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'Torpedo3' .
:ROUTE_2_12_1_21 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'isOver' ;
  x3do:fromNode 'TorpedoLaunch4' ;
  x3do:toField 'set_enabled' ;
  x3do:toNode 'Clock4' .
:ROUTE_2_12_1_22 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'Clock4' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'TorpedoFire4' .
:ROUTE_2_12_1_23 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'TorpedoFire4' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'Torpedo4' .
:ROUTE_2_12_1_24 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'isOver' ;
  x3do:fromNode 'TorpedoLaunch5' ;
  x3do:toField 'set_enabled' ;
  x3do:toNode 'Clock5' .
:ROUTE_2_12_1_25 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'Clock5' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'TorpedoFire5' .
:ROUTE_2_12_1_26 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'TorpedoFire5' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'Torpedo5' .
:ROUTE_2_12_1_27 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'isOver' ;
  x3do:fromNode 'TorpedoLaunch6' ;
  x3do:toField 'set_enabled' ;
  x3do:toNode 'Clock6' .
:ROUTE_2_12_1_28 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'Clock6' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'TorpedoFire6' .
:ROUTE_2_12_1_29 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'TorpedoFire6' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'Torpedo6' .
:ROUTE_2_12_1_30 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'isOver' ;
  x3do:fromNode 'HarpoonLaunch1' ;
  x3do:toField 'set_enabled' ;
  x3do:toNode 'Clock7' .
:ROUTE_2_12_1_31 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'Clock7' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'HarpoonFire1' .
:ROUTE_2_12_1_32 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'HarpoonFire1' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'Harpoon1' .
:ROUTE_2_12_1_33 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'Clock7' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'HarpoonRot1' .
:ROUTE_2_12_1_34 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'HarpoonRot1' ;
  x3do:toField 'set_rotation' ;
  x3do:toNode 'Harpoon1' .
:ROUTE_2_12_1_35 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'isOver' ;
  x3do:fromNode 'HarpoonLaunch2' ;
  x3do:toField 'set_enabled' ;
  x3do:toNode 'Clock8' .
:ROUTE_2_12_1_36 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'Clock8' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'HarpoonFire2' .
:ROUTE_2_12_1_37 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'HarpoonFire2' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'Harpoon2' .
:ROUTE_2_12_1_38 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'Clock8' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'HarpoonRot2' .
:ROUTE_2_12_1_39 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Group_2_12_1 ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'HarpoonRot2' ;
  x3do:toField 'set_rotation' ;
  x3do:toNode 'Harpoon2' .
:ROUTE_2_12_2 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Transform_2_12 ;
  x3do:fromField 'translation_changed' ;
  x3do:fromNode 'SubDrag' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'Submarine' .
:ROUTE_2_12_3 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Transform_2_12 ;
  x3do:fromField 'touchTime' ;
  x3do:fromNode 'Touch1' ;
  x3do:toField 'set_startTime' ;
  x3do:toNode 'Clock' .
:ROUTE_2_12_4 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Transform_2_12 ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'Clock' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'SubMove' .
:ROUTE_2_12_5 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Transform_2_12 ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'SubMove' ;
  x3do:toField 'set_translation' ;
  x3do:toNode 'Submarine' .
:ROUTE_2_12_6 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Transform_2_12 ;
  x3do:fromField 'fraction_changed' ;
  x3do:fromNode 'Clock' ;
  x3do:toField 'set_fraction' ;
  x3do:toNode 'SubTurn' .
:ROUTE_2_12_7 a owl:NamedIndividual, x3do:ROUTE ;
  x3do:hasParent :Transform_2_12 ;
  x3do:fromField 'value_changed' ;
  x3do:fromNode 'SubTurn' ;
  x3do:toField 'set_rotation' ;
  x3do:toNode 'Submarine' .
