Carriers: Added Admiral Kuznetsov and Liaoning
3d Models by Uxmanm (found by Domokos Jüttner) Daniel Overbeck did added the AI scenarios and models. Richard Harrison optimised the textures and 3d models, added the dialogs to control the carrires and made the Jet Blast Deflectors animate smoothly
This commit is contained in:
parent
ed89e16bda
commit
000a484e8d
9 changed files with 27117 additions and 0 deletions
51
AI/kuznetsov_demo.xml
Normal file
51
AI/kuznetsov_demo.xml
Normal file
|
@ -0,0 +1,51 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<PropertyList>
|
||||
<scenario>
|
||||
<name>Carrier: Admiral Kuznetsov</name>
|
||||
<description>This scenario spawns the Admiral Kuznetsov aircraft carrier in the Barents Sea off Murmansk.</description>
|
||||
<author>Daniel Overbeck, Richard Harrison, Uxman (3d)</author>
|
||||
<!-- 3d model from: https://sketchfab.com/3d-models/kuznetsov-aircraft-carrier-460d73a91efb49298c86ee347fae397c -->
|
||||
<entry>
|
||||
<type>carrier</type>
|
||||
<name>Kuznetsov</name>
|
||||
<pennant-number>063</pennant-number>
|
||||
<TACAN-channel-ID>026Y</TACAN-channel-ID>
|
||||
<description>Russian aircraft carrier Admiral Kuznetsov in the Barents Sea off Murmansk.</description>
|
||||
<model>Models/Geometry/Kuznetsov/Kuznetsov.xml</model>
|
||||
<latitude>69.4</latitude>
|
||||
<longitude>33.7</longitude>
|
||||
<deck-altitude>50</deck-altitude>
|
||||
<speed>10</speed>
|
||||
<heading>0</heading>
|
||||
<rudder>0</rudder>
|
||||
<turn-radius-ft>5000</turn-radius-ft>
|
||||
<flols-pos>
|
||||
<x-offset-m>65</x-offset-m>
|
||||
<y-offset-m>-37</y-offset-m>
|
||||
<z-offset-m>17</z-offset-m>
|
||||
<heading-offset-deg>20</heading-offset-deg>
|
||||
</flols-pos>
|
||||
<parking-pos>
|
||||
<name>cat-1</name>
|
||||
<heading-offset-deg>5</heading-offset-deg>
|
||||
<x-offset-m>96</x-offset-m>
|
||||
<y-offset-m>-19</y-offset-m>
|
||||
<z-offset-m>15</z-offset-m>
|
||||
</parking-pos>
|
||||
<parking-pos>
|
||||
<name>cat-2</name>
|
||||
<heading-offset-deg>5</heading-offset-deg>
|
||||
<x-offset-m>0</x-offset-m>
|
||||
<y-offset-m>-9.5</y-offset-m>
|
||||
<z-offset-m>15</z-offset-m>
|
||||
</parking-pos>
|
||||
<parking-pos>
|
||||
<name>cat-3</name>
|
||||
<heading-offset-deg>-5</heading-offset-deg>
|
||||
<x-offset-m>0</x-offset-m>
|
||||
<y-offset-m>11</y-offset-m>
|
||||
<z-offset-m>15</z-offset-m>
|
||||
</parking-pos>
|
||||
</entry>
|
||||
</scenario>
|
||||
</PropertyList>
|
51
AI/liaoning_demo.xml
Normal file
51
AI/liaoning_demo.xml
Normal file
|
@ -0,0 +1,51 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<PropertyList>
|
||||
<scenario>
|
||||
<name>Carrier: Liaoning</name>
|
||||
<description>This scenario spawns the Liaoning aircraft carrier in the East China Sea off Wenzhou.</description>
|
||||
<author>Daniel Overbeck, Richard Harrison, Uxman (3d)</author>
|
||||
<!-- 3d model from: https://sketchfab.com/3d-models/kuznetsov-aircraft-carrier-460d73a91efb49298c86ee347fae397c -->
|
||||
<entry>
|
||||
<type>carrier</type>
|
||||
<name>Liaoning</name>
|
||||
<pennant-number>16</pennant-number>
|
||||
<TACAN-channel-ID>026Y</TACAN-channel-ID>
|
||||
<description>Chinese aircraft carrier Liaoning in the East China Sea off Wenzhou.</description>
|
||||
<model>Models/Geometry/Kuznetsov/Liaoning.xml</model>
|
||||
<latitude>27</latitude>
|
||||
<longitude>123</longitude>
|
||||
<deck-altitude>50</deck-altitude>
|
||||
<speed>10</speed>
|
||||
<heading>0</heading>
|
||||
<rudder>0</rudder>
|
||||
<turn-radius-ft>5000</turn-radius-ft>
|
||||
<flols-pos>
|
||||
<x-offset-m>65</x-offset-m>
|
||||
<y-offset-m>-37</y-offset-m>
|
||||
<z-offset-m>17</z-offset-m>
|
||||
<heading-offset-deg>20</heading-offset-deg>
|
||||
</flols-pos>
|
||||
<parking-pos>
|
||||
<name>cat-1</name>
|
||||
<heading-offset-deg>5</heading-offset-deg>
|
||||
<x-offset-m>96</x-offset-m>
|
||||
<y-offset-m>-19</y-offset-m>
|
||||
<z-offset-m>15</z-offset-m>
|
||||
</parking-pos>
|
||||
<parking-pos>
|
||||
<name>cat-2</name>
|
||||
<heading-offset-deg>5</heading-offset-deg>
|
||||
<x-offset-m>0</x-offset-m>
|
||||
<y-offset-m>-9.5</y-offset-m>
|
||||
<z-offset-m>15</z-offset-m>
|
||||
</parking-pos>
|
||||
<parking-pos>
|
||||
<name>cat-3</name>
|
||||
<heading-offset-deg>-5</heading-offset-deg>
|
||||
<x-offset-m>0</x-offset-m>
|
||||
<y-offset-m>11</y-offset-m>
|
||||
<z-offset-m>15</z-offset-m>
|
||||
</parking-pos>
|
||||
</entry>
|
||||
</scenario>
|
||||
</PropertyList>
|
26048
Models/Geometry/Kuznetsov/Kuznetsov.ac
Normal file
26048
Models/Geometry/Kuznetsov/Kuznetsov.ac
Normal file
File diff suppressed because it is too large
Load diff
BIN
Models/Geometry/Kuznetsov/Kuznetsov.jpg
Normal file
BIN
Models/Geometry/Kuznetsov/Kuznetsov.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 594 KiB |
246
Models/Geometry/Kuznetsov/Kuznetsov.xml
Normal file
246
Models/Geometry/Kuznetsov/Kuznetsov.xml
Normal file
|
@ -0,0 +1,246 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<PropertyList>
|
||||
<description>Admiral Kuznetsov</description>
|
||||
<author>Daniel Overbeck, Richard Harrison, Uxman (3d)</author>
|
||||
<!-- 3d model from: https://sketchfab.com/3d-models/kuznetsov-aircraft-carrier-460d73a91efb49298c86ee347fae397c -->
|
||||
<status>early-production</status>
|
||||
<path>Kuznetsov.ac</path>
|
||||
<nasal>
|
||||
<load>
|
||||
<![CDATA[
|
||||
var self = cmdarg();
|
||||
print("Model load Admiral Kuznetsov ", self.getPath());
|
||||
var pathc = self.getPath();
|
||||
|
||||
# register the dialog
|
||||
|
||||
setprop(pathc~"/dlg-name", "Kuznetsov");
|
||||
|
||||
|
||||
|
||||
################
|
||||
# jet blast deflectors
|
||||
var jbd_transit_time = 5.0;
|
||||
setprop("/controls/kuznetsov/jbd[0]/state", 0);
|
||||
setprop("/controls/kuznetsov/jbd[1]/state", 0);
|
||||
setprop("/controls/kuznetsov/jbd[2]/state", 0);
|
||||
|
||||
var jbd0 = aircraft.door.new(pathc~"/surface-positions/jbd[0]", jbd_transit_time, 0);
|
||||
var jbd1 = aircraft.door.new(pathc~"/surface-positions/jbd[1]", jbd_transit_time, 0);
|
||||
var jbd2 = aircraft.door.new(pathc~"/surface-positions/jbd[2]", jbd_transit_time, 0);
|
||||
|
||||
var jbd_array = [jbd0, jbd1, jbd2];
|
||||
var jbd_operate = func (i) {
|
||||
var tgt = getprop("/controls/kuznetsov/jbd["~i~"]/state");
|
||||
if (tgt == 1) {
|
||||
print ("JBD ", i+1, " up.");
|
||||
jbd_array[i].open();
|
||||
} else {
|
||||
print ("JBD ", i+1, " down.");
|
||||
jbd_array[i].close();
|
||||
}
|
||||
}
|
||||
var l_jbd0 = setlistener("/controls/kuznetsov/jbd[0]/state", func {jbd_operate(0);},0,0);
|
||||
var l_jbd1 = setlistener("/controls/kuznetsov/jbd[1]/state", func {jbd_operate(1);},0,0);
|
||||
var l_jbd2 = setlistener("/controls/kuznetsov/jbd[2]/state", func {jbd_operate(2);},0,0);
|
||||
|
||||
|
||||
setprop("/controls/kuznetsov/turn-to-launch-hdg", 0);
|
||||
setprop("/controls/kuznetsov/turn-to-recovery-hdg", 0);
|
||||
setprop("/controls/kuznetsov/turn-to-base-course", 1);
|
||||
]]>
|
||||
</load>
|
||||
</nasal>
|
||||
<unload>
|
||||
<![CDATA[
|
||||
# clean up listeners
|
||||
removelistener(l_jbd_0);
|
||||
removelistener(l_jbd_1);
|
||||
removelistener(l_jbd_2);
|
||||
]]>
|
||||
</unload>
|
||||
<model>
|
||||
<name>flols</name>
|
||||
<path>Models/Geometry/Nimitz/Models/flols.xml</path>
|
||||
<offsets>
|
||||
<x-m>65</x-m>
|
||||
<y-m>-37</y-m>
|
||||
<z-m>17</z-m>
|
||||
<heading-deg>20</heading-deg>
|
||||
</offsets>
|
||||
</model>
|
||||
<animation>
|
||||
<type>range</type>
|
||||
<min-m>0</min-m>
|
||||
<max-m>30000</max-m>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>Radar</object-name>
|
||||
<property>/sim/time/elapsed-sec</property>
|
||||
<factor>35</factor>
|
||||
<center>
|
||||
<x-m>81.8</x-m>
|
||||
<y-m>25.1</y-m>
|
||||
</center>
|
||||
<axis>
|
||||
<z>1</z>
|
||||
</axis>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>JetBlastDeflector-1</object-name>
|
||||
<property>surface-positions/jbd[0]/position-norm</property>
|
||||
<interpolation>
|
||||
<entry><ind>0.0000</ind><dep>0</dep></entry>
|
||||
<entry><ind>0.0833</ind><dep>12.2</dep></entry>
|
||||
<entry><ind>0.1666</ind><dep>20.4</dep></entry>
|
||||
<entry><ind>0.2500</ind><dep>28.2</dep></entry>
|
||||
<entry><ind>0.3333</ind><dep>34.6</dep></entry>
|
||||
<entry><ind>0.4166</ind><dep>40.6</dep></entry>
|
||||
<entry><ind>0.5000</ind><dep>45</dep></entry>
|
||||
<entry><ind>0.5833</ind><dep>49</dep></entry>
|
||||
<entry><ind>0.6666</ind><dep>51.6</dep></entry>
|
||||
<entry><ind>0.7500</ind><dep>54</dep></entry>
|
||||
<entry><ind>0.8333</ind><dep>55</dep></entry>
|
||||
<entry><ind>0.9166</ind><dep>56.2</dep></entry>
|
||||
<entry><ind>1.0000</ind><dep>56.2</dep></entry>
|
||||
</interpolation>
|
||||
<center>
|
||||
<x-m>15.8</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>15.17</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<y>-1</y>
|
||||
</axis>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>JetBlastDeflector-2</object-name>
|
||||
<property>surface-positions/jbd[1]/position-norm</property>
|
||||
<interpolation>
|
||||
<entry><ind>0.0000</ind><dep>0</dep></entry>
|
||||
<entry><ind>0.0833</ind><dep>12.2</dep></entry>
|
||||
<entry><ind>0.1666</ind><dep>20.4</dep></entry>
|
||||
<entry><ind>0.2500</ind><dep>28.2</dep></entry>
|
||||
<entry><ind>0.3333</ind><dep>34.6</dep></entry>
|
||||
<entry><ind>0.4166</ind><dep>40.6</dep></entry>
|
||||
<entry><ind>0.5000</ind><dep>45</dep></entry>
|
||||
<entry><ind>0.5833</ind><dep>49</dep></entry>
|
||||
<entry><ind>0.6666</ind><dep>51.6</dep></entry>
|
||||
<entry><ind>0.7500</ind><dep>54</dep></entry>
|
||||
<entry><ind>0.8333</ind><dep>55</dep></entry>
|
||||
<entry><ind>0.9166</ind><dep>56.2</dep></entry>
|
||||
<entry><ind>1.0000</ind><dep>56.2</dep></entry>
|
||||
</interpolation>
|
||||
<center>
|
||||
<x-m>15.8</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>15.17</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<y>-1</y>
|
||||
</axis>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>JetBlastDeflector-3</object-name>
|
||||
<property>surface-positions/jbd[2]/position-norm</property>
|
||||
<interpolation>
|
||||
<entry><ind>0.0000</ind><dep>0</dep></entry>
|
||||
<entry><ind>0.0833</ind><dep>12.2</dep></entry>
|
||||
<entry><ind>0.1666</ind><dep>20.4</dep></entry>
|
||||
<entry><ind>0.2500</ind><dep>28.2</dep></entry>
|
||||
<entry><ind>0.3333</ind><dep>34.6</dep></entry>
|
||||
<entry><ind>0.4166</ind><dep>40.6</dep></entry>
|
||||
<entry><ind>0.5000</ind><dep>45</dep></entry>
|
||||
<entry><ind>0.5833</ind><dep>49</dep></entry>
|
||||
<entry><ind>0.6666</ind><dep>51.6</dep></entry>
|
||||
<entry><ind>0.7500</ind><dep>54</dep></entry>
|
||||
<entry><ind>0.8333</ind><dep>55</dep></entry>
|
||||
<entry><ind>0.9166</ind><dep>56.2</dep></entry>
|
||||
<entry><ind>1.0000</ind><dep>56.2</dep></entry>
|
||||
</interpolation>
|
||||
<center>
|
||||
<x-m>107.9</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>15.17</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<y>-1</y>
|
||||
</axis>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>JetBlastDeflector-1</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/controls/kuznetsov/jbd[0]/state</property>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>JetBlastDeflector-2</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/controls/kuznetsov/jbd[1]/state</property>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>JetBlastDeflector-3</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/controls/kuznetsov/jbd[2]/state</property>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>interaction</type>
|
||||
<object-name>wire-1</object-name>
|
||||
<object-name>wire-2</object-name>
|
||||
<object-name>wire-3</object-name>
|
||||
<object-name>wire-4</object-name>
|
||||
<interaction-type>carrier-wire</interaction-type>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>Bow-Wave</object-name>
|
||||
<object-name>Stern-Wake</object-name>
|
||||
<object-name>Wake</object-name>
|
||||
<property>orientation/roll-deg</property>
|
||||
<factor>1</factor>
|
||||
<center><y-m>0.00</y-m><z-m>0.0473</z-m></center>
|
||||
<axis><x>1</x></axis>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>Wake</object-name>
|
||||
<property>surface-positions/rudder-pos-deg</property>
|
||||
<factor>-0.334</factor>
|
||||
<x-m>-88.6176</x-m>
|
||||
<y-m>0.00</y-m>
|
||||
<axis><z>-1</z></axis>
|
||||
<enable-hot type="bool">false</enable-hot>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>noshadow</type>
|
||||
<object-name>wire-1</object-name>
|
||||
<object-name>wire-2</object-name>
|
||||
<object-name>wire-3</object-name>
|
||||
<object-name>wire-4</object-name>
|
||||
<object-name>Wake</object-name>
|
||||
</animation>
|
||||
</PropertyList>
|
246
Models/Geometry/Kuznetsov/Liaoning.xml
Normal file
246
Models/Geometry/Kuznetsov/Liaoning.xml
Normal file
|
@ -0,0 +1,246 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<PropertyList>
|
||||
<description>Liaoning</description>
|
||||
<author>Daniel Overbeck, Richard Harrison, Uxman (3d)</author>
|
||||
<!-- 3d model from: https://sketchfab.com/3d-models/kuznetsov-aircraft-carrier-460d73a91efb49298c86ee347fae397c -->
|
||||
<status>early-production</status>
|
||||
<path>Kuznetsov.ac</path>
|
||||
<nasal>
|
||||
<load>
|
||||
<![CDATA[
|
||||
var self = cmdarg();
|
||||
print("Model load Liaoning ", self.getPath());
|
||||
var pathc = self.getPath();
|
||||
|
||||
# register the dialog
|
||||
|
||||
setprop(pathc~"/dlg-name", "Liaoning");
|
||||
|
||||
|
||||
|
||||
################
|
||||
# jet blast deflectors
|
||||
var jbd_transit_time = 5.0;
|
||||
setprop("/controls/liaoning/jbd[0]/state", 0);
|
||||
setprop("/controls/liaoning/jbd[1]/state", 0);
|
||||
setprop("/controls/liaoning/jbd[2]/state", 0);
|
||||
|
||||
var jbd0 = aircraft.door.new(pathc~"/surface-positions/jbd[0]", jbd_transit_time, 0);
|
||||
var jbd1 = aircraft.door.new(pathc~"/surface-positions/jbd[1]", jbd_transit_time, 0);
|
||||
var jbd2 = aircraft.door.new(pathc~"/surface-positions/jbd[2]", jbd_transit_time, 0);
|
||||
|
||||
var jbd_array = [jbd0, jbd1, jbd2];
|
||||
var jbd_operate = func (i) {
|
||||
var tgt = getprop("/controls/liaoning/jbd["~i~"]/state");
|
||||
if (tgt == 1) {
|
||||
print ("JBD ", i+1, " up.");
|
||||
jbd_array[i].open();
|
||||
} else {
|
||||
print ("JBD ", i+1, " down.");
|
||||
jbd_array[i].close();
|
||||
}
|
||||
}
|
||||
var l_jbd0 = setlistener("/controls/liaoning/jbd[0]/state", func {jbd_operate(0);},0,0);
|
||||
var l_jbd1 = setlistener("/controls/liaoning/jbd[1]/state", func {jbd_operate(1);},0,0);
|
||||
var l_jbd2 = setlistener("/controls/liaoning/jbd[2]/state", func {jbd_operate(2);},0,0);
|
||||
|
||||
|
||||
setprop("/controls/liaoning/turn-to-launch-hdg", 0);
|
||||
setprop("/controls/liaoning/turn-to-recovery-hdg", 0);
|
||||
setprop("/controls/liaoning/turn-to-base-course", 1);
|
||||
]]>
|
||||
</load>
|
||||
</nasal>
|
||||
<unload>
|
||||
<![CDATA[
|
||||
# clean up listeners
|
||||
removelistener(l_jbd_0);
|
||||
removelistener(l_jbd_1);
|
||||
removelistener(l_jbd_2);
|
||||
]]>
|
||||
</unload>
|
||||
<model>
|
||||
<name>flols</name>
|
||||
<path>Models/Geometry/Nimitz/Models/flols.xml</path>
|
||||
<offsets>
|
||||
<x-m>65</x-m>
|
||||
<y-m>-37</y-m>
|
||||
<z-m>17</z-m>
|
||||
<heading-deg>20</heading-deg>
|
||||
</offsets>
|
||||
</model>
|
||||
<animation>
|
||||
<type>range</type>
|
||||
<min-m>0</min-m>
|
||||
<max-m>30000</max-m>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>Radar</object-name>
|
||||
<property>/sim/time/elapsed-sec</property>
|
||||
<factor>35</factor>
|
||||
<center>
|
||||
<x-m>81.8</x-m>
|
||||
<y-m>25.1</y-m>
|
||||
</center>
|
||||
<axis>
|
||||
<z>1</z>
|
||||
</axis>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>JetBlastDeflector-1</object-name>
|
||||
<property>surface-positions/jbd[0]/position-norm</property>
|
||||
<interpolation>
|
||||
<entry><ind>0.0000</ind><dep>0</dep></entry>
|
||||
<entry><ind>0.0833</ind><dep>12.2</dep></entry>
|
||||
<entry><ind>0.1666</ind><dep>20.4</dep></entry>
|
||||
<entry><ind>0.2500</ind><dep>28.2</dep></entry>
|
||||
<entry><ind>0.3333</ind><dep>34.6</dep></entry>
|
||||
<entry><ind>0.4166</ind><dep>40.6</dep></entry>
|
||||
<entry><ind>0.5000</ind><dep>45</dep></entry>
|
||||
<entry><ind>0.5833</ind><dep>49</dep></entry>
|
||||
<entry><ind>0.6666</ind><dep>51.6</dep></entry>
|
||||
<entry><ind>0.7500</ind><dep>54</dep></entry>
|
||||
<entry><ind>0.8333</ind><dep>55</dep></entry>
|
||||
<entry><ind>0.9166</ind><dep>56.2</dep></entry>
|
||||
<entry><ind>1.0000</ind><dep>56.2</dep></entry>
|
||||
</interpolation>
|
||||
<center>
|
||||
<x-m>15.8</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>15.17</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<y>-1</y>
|
||||
</axis>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>JetBlastDeflector-2</object-name>
|
||||
<property>surface-positions/jbd[1]/position-norm</property>
|
||||
<interpolation>
|
||||
<entry><ind>0.0000</ind><dep>0</dep></entry>
|
||||
<entry><ind>0.0833</ind><dep>12.2</dep></entry>
|
||||
<entry><ind>0.1666</ind><dep>20.4</dep></entry>
|
||||
<entry><ind>0.2500</ind><dep>28.2</dep></entry>
|
||||
<entry><ind>0.3333</ind><dep>34.6</dep></entry>
|
||||
<entry><ind>0.4166</ind><dep>40.6</dep></entry>
|
||||
<entry><ind>0.5000</ind><dep>45</dep></entry>
|
||||
<entry><ind>0.5833</ind><dep>49</dep></entry>
|
||||
<entry><ind>0.6666</ind><dep>51.6</dep></entry>
|
||||
<entry><ind>0.7500</ind><dep>54</dep></entry>
|
||||
<entry><ind>0.8333</ind><dep>55</dep></entry>
|
||||
<entry><ind>0.9166</ind><dep>56.2</dep></entry>
|
||||
<entry><ind>1.0000</ind><dep>56.2</dep></entry>
|
||||
</interpolation>
|
||||
<center>
|
||||
<x-m>15.8</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>15.17</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<y>-1</y>
|
||||
</axis>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>JetBlastDeflector-3</object-name>
|
||||
<property>surface-positions/jbd[2]/position-norm</property>
|
||||
<interpolation>
|
||||
<entry><ind>0.0000</ind><dep>0</dep></entry>
|
||||
<entry><ind>0.0833</ind><dep>12.2</dep></entry>
|
||||
<entry><ind>0.1666</ind><dep>20.4</dep></entry>
|
||||
<entry><ind>0.2500</ind><dep>28.2</dep></entry>
|
||||
<entry><ind>0.3333</ind><dep>34.6</dep></entry>
|
||||
<entry><ind>0.4166</ind><dep>40.6</dep></entry>
|
||||
<entry><ind>0.5000</ind><dep>45</dep></entry>
|
||||
<entry><ind>0.5833</ind><dep>49</dep></entry>
|
||||
<entry><ind>0.6666</ind><dep>51.6</dep></entry>
|
||||
<entry><ind>0.7500</ind><dep>54</dep></entry>
|
||||
<entry><ind>0.8333</ind><dep>55</dep></entry>
|
||||
<entry><ind>0.9166</ind><dep>56.2</dep></entry>
|
||||
<entry><ind>1.0000</ind><dep>56.2</dep></entry>
|
||||
</interpolation>
|
||||
<center>
|
||||
<x-m>107.9</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>15.17</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<y>-1</y>
|
||||
</axis>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>JetBlastDeflector-1</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/controls/liaoning/jbd[0]/state</property>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>JetBlastDeflector-2</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/controls/liaoning/jbd[1]/state</property>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>JetBlastDeflector-3</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/controls/liaoning/jbd[2]/state</property>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>interaction</type>
|
||||
<object-name>wire-1</object-name>
|
||||
<object-name>wire-2</object-name>
|
||||
<object-name>wire-3</object-name>
|
||||
<object-name>wire-4</object-name>
|
||||
<interaction-type>carrier-wire</interaction-type>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>Bow-Wave</object-name>
|
||||
<object-name>Stern-Wake</object-name>
|
||||
<object-name>Wake</object-name>
|
||||
<property>orientation/roll-deg</property>
|
||||
<factor>1</factor>
|
||||
<center><y-m>0.00</y-m><z-m>0.0473</z-m></center>
|
||||
<axis><x>1</x></axis>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>Wake</object-name>
|
||||
<property>surface-positions/rudder-pos-deg</property>
|
||||
<factor>-0.334</factor>
|
||||
<x-m>-88.6176</x-m>
|
||||
<y-m>0.00</y-m>
|
||||
<axis><z>-1</z></axis>
|
||||
<enable-hot type="bool">false</enable-hot>
|
||||
</animation>
|
||||
<animation>
|
||||
<type>noshadow</type>
|
||||
<object-name>wire-1</object-name>
|
||||
<object-name>wire-2</object-name>
|
||||
<object-name>wire-3</object-name>
|
||||
<object-name>wire-4</object-name>
|
||||
<object-name>Wake</object-name>
|
||||
</animation>
|
||||
</PropertyList>
|
BIN
Models/Geometry/Kuznetsov/wake.png
Normal file
BIN
Models/Geometry/Kuznetsov/wake.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 56 KiB |
240
gui/dialogs/kuznetsov.xml
Normal file
240
gui/dialogs/kuznetsov.xml
Normal file
|
@ -0,0 +1,240 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<PropertyList>
|
||||
<name>Kuznetsov</name>
|
||||
<modal>false</modal>
|
||||
<layout>vbox</layout>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
|
||||
<empty>
|
||||
<stretch>1</stretch>
|
||||
</empty>
|
||||
|
||||
<text>
|
||||
<label>Admiral Kuznetsov Controls</label>
|
||||
</text>
|
||||
|
||||
<empty>
|
||||
<stretch>1</stretch>
|
||||
</empty>
|
||||
|
||||
<button>
|
||||
<pref-width>16</pref-width>
|
||||
<pref-height>16</pref-height>
|
||||
<legend></legend>
|
||||
<keynum>27</keynum>
|
||||
<border>2</border>
|
||||
<binding>
|
||||
<command>dialog-close</command>
|
||||
</binding>
|
||||
</button>
|
||||
</group>
|
||||
|
||||
<hrule/>
|
||||
|
||||
<group>
|
||||
<layout>table</layout>
|
||||
|
||||
<text>
|
||||
<label>Course</label>
|
||||
<row>0</row>
|
||||
<col>0</col>
|
||||
</text>
|
||||
|
||||
<radio>
|
||||
<row>1</row>
|
||||
<col>0</col>
|
||||
<halign>left</halign>
|
||||
<label>Turn to launch course</label>
|
||||
<property>/controls/kuznetsov/turn-to-launch-hdg</property>
|
||||
<live>true</live>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
var v = getprop("/controls/kuznetsov/turn-to-launch-hdg");
|
||||
foreach (var c; props.globals.getNode("/ai/models").getChildren("carrier")){
|
||||
|
||||
if (c.getNode("name").getValue() != nil and c.getNode("name").getValue() == "Kuznetsov")
|
||||
{
|
||||
c.getNode("controls/turn-to-launch-hdg").setBoolValue(v);
|
||||
c.getNode("controls/turn-to-recovery-hdg").setBoolValue(0);
|
||||
c.getNode("controls/turn-to-base-course").setBoolValue(0);
|
||||
}
|
||||
}
|
||||
|
||||
setprop("/controls/kuznetsov/turn-to-base-course", 0);
|
||||
setprop("/controls/kuznetsov/turn-to-recovery-hdg", 0);
|
||||
</script>
|
||||
</binding>
|
||||
</radio>
|
||||
|
||||
<radio>
|
||||
<row>2</row>
|
||||
<col>0</col>
|
||||
<halign>left</halign>
|
||||
<label>Turn to recovery course</label>
|
||||
<property>/controls/kuznetsov/turn-to-recovery-hdg</property>
|
||||
<live>true</live>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
var v = getprop("/controls/kuznetsov/turn-to-recovery-hdg");
|
||||
foreach (var c; props.globals.getNode("/ai/models").getChildren("carrier")){
|
||||
|
||||
if (c.getNode("name").getValue() != nil and c.getNode("name").getValue() == "Kuznetsov")
|
||||
{
|
||||
c.getNode("controls/turn-to-recovery-hdg").setBoolValue(v);
|
||||
c.getNode("controls/turn-to-launch-hdg").setBoolValue(0);
|
||||
c.getNode("controls/turn-to-base-course").setBoolValue(0);
|
||||
}
|
||||
}
|
||||
|
||||
setprop("/controls/kuznetsov/turn-to-base-course", 0);
|
||||
setprop("/controls/kuznetsov/turn-to-launch-hdg", 0);
|
||||
</script>
|
||||
</binding>
|
||||
</radio>
|
||||
|
||||
<radio>
|
||||
<row>3</row>
|
||||
<col>0</col>
|
||||
<halign>left</halign>
|
||||
<label>Turn to base course</label>
|
||||
<property>/controls/kuznetsov/turn-to-base-course</property>
|
||||
<live>true</live>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
var v = getprop("/controls/kuznetsov/turn-to-base-course");
|
||||
foreach (var c; props.globals.getNode("/ai/models").getChildren("carrier")){
|
||||
|
||||
if (c.getNode("name").getValue() != nil and c.getNode("name").getValue() == "Kuznetsov")
|
||||
{
|
||||
c.getNode("controls/turn-to-base-course").setBoolValue(v);
|
||||
c.getNode("controls/turn-to-recovery-hdg").setBoolValue(0);
|
||||
c.getNode("controls/turn-to-launch-hdg").setBoolValue(0);
|
||||
}
|
||||
}
|
||||
|
||||
setprop("/controls/kuznetsov/turn-to-launch-hdg", 0);
|
||||
setprop("/controls/kuznetsov/turn-to-recovery-hdg", 0);
|
||||
</script>
|
||||
</binding>
|
||||
</radio>
|
||||
</group>
|
||||
|
||||
<hrule/>
|
||||
|
||||
<group>
|
||||
<layout>table</layout>
|
||||
|
||||
<text>
|
||||
<label>Equipment</label>
|
||||
<row>0</row>
|
||||
<col>0</col>
|
||||
</text>
|
||||
|
||||
<checkbox>
|
||||
<halign>left</halign>
|
||||
<row>3</row>
|
||||
<col>0</col>
|
||||
<label>JBD 1</label>
|
||||
<property>/controls/kuznetsov/jbd[0]/state</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<halign>left</halign>
|
||||
<row>3</row>
|
||||
<col>1</col>
|
||||
<label>JBD 2</label>
|
||||
<property>/controls/kuznetsov/jbd[1]/state</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<halign>left</halign>
|
||||
<row>3</row>
|
||||
<col>2</col>
|
||||
<label>JBD 3</label>
|
||||
<property>/controls/kuznetsov/jbd[2]/state</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</checkbox>
|
||||
|
||||
</group>
|
||||
|
||||
<hrule/>
|
||||
|
||||
<empty>
|
||||
<stretch>1</stretch>
|
||||
</empty>
|
||||
|
||||
<hrule/>
|
||||
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<default-padding>6</default-padding>
|
||||
<empty>
|
||||
<stretch>true</stretch>
|
||||
</empty>
|
||||
|
||||
<button>
|
||||
<legend>OK</legend>
|
||||
<default>true</default>
|
||||
<equal>true</equal>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-close</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<button>
|
||||
<legend>Apply</legend>
|
||||
<equal>true</equal>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<button>
|
||||
<legend>Reset</legend>
|
||||
<equal>true</equal>
|
||||
<binding>
|
||||
<command>dialog-update</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<button>
|
||||
<legend>Cancel</legend>
|
||||
<equal>true</equal>
|
||||
<key>Esc</key>
|
||||
<binding>
|
||||
<command>dialog-close</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<empty>
|
||||
<stretch>true</stretch>
|
||||
</empty>
|
||||
</group>
|
||||
</PropertyList>
|
235
gui/dialogs/liaoning.xml
Normal file
235
gui/dialogs/liaoning.xml
Normal file
|
@ -0,0 +1,235 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<PropertyList>
|
||||
<name>Liaoning</name>
|
||||
<modal>false</modal>
|
||||
<layout>vbox</layout>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
|
||||
<empty>
|
||||
<stretch>1</stretch>
|
||||
</empty>
|
||||
|
||||
<text>
|
||||
<label>Liaoning Controls</label>
|
||||
</text>
|
||||
|
||||
<empty>
|
||||
<stretch>1</stretch>
|
||||
</empty>
|
||||
|
||||
<button>
|
||||
<pref-width>16</pref-width>
|
||||
<pref-height>16</pref-height>
|
||||
<legend></legend>
|
||||
<keynum>27</keynum>
|
||||
<border>2</border>
|
||||
<binding>
|
||||
<command>dialog-close</command>
|
||||
</binding>
|
||||
</button>
|
||||
</group>
|
||||
|
||||
<hrule/>
|
||||
|
||||
<group>
|
||||
<layout>table</layout>
|
||||
|
||||
<text>
|
||||
<label>Course</label>
|
||||
<row>0</row>
|
||||
<col>0</col>
|
||||
</text>
|
||||
|
||||
<radio>
|
||||
<row>1</row>
|
||||
<col>0</col>
|
||||
<halign>left</halign>
|
||||
<label>Turn to launch course</label>
|
||||
<property>/controls/liaoning/turn-to-launch-hdg</property>
|
||||
<live>true</live>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
var v = getprop("/controls/liaoning/turn-to-launch-hdg");
|
||||
foreach (var c; props.globals.getNode("/ai/models").getChildren("carrier")){
|
||||
|
||||
if (c.getNode("name").getValue() != nil and c.getNode("name").getValue() == "Liaoning")
|
||||
{
|
||||
c.getNode("controls/turn-to-launch-hdg").setBoolValue(v);
|
||||
c.getNode("controls/turn-to-recovery-hdg").setBoolValue(0);
|
||||
c.getNode("controls/turn-to-base-course").setBoolValue(0);
|
||||
}
|
||||
}
|
||||
|
||||
setprop("/controls/liaoning/turn-to-base-course", 0);
|
||||
setprop("/controls/liaoning/turn-to-recovery-hdg", 0);
|
||||
</script>
|
||||
</binding>
|
||||
</radio>
|
||||
|
||||
<radio>
|
||||
<row>2</row>
|
||||
<col>0</col>
|
||||
<halign>left</halign>
|
||||
<label>Turn to recovery course</label>
|
||||
<property>/controls/liaoning/turn-to-recovery-hdg</property>
|
||||
<live>true</live>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
var v = getprop("/controls/liaoning/turn-to-recovery-hdg");
|
||||
foreach (var c; props.globals.getNode("/ai/models").getChildren("carrier")){
|
||||
|
||||
if (c.getNode("name").getValue() != nil and c.getNode("name").getValue() == "Liaoning"){
|
||||
c.getNode("controls/turn-to-recovery-hdg").setBoolValue(v);
|
||||
c.getNode("controls/turn-to-launch-hdg").setBoolValue(0);
|
||||
c.getNode("controls/turn-to-base-course").setBoolValue(0);
|
||||
}
|
||||
}
|
||||
|
||||
setprop("/controls/liaoning/turn-to-base-course", 0);
|
||||
setprop("/controls/liaoning/turn-to-launch-hdg", 0);
|
||||
</script>
|
||||
</binding>
|
||||
</radio>
|
||||
|
||||
<radio>
|
||||
<row>3</row>
|
||||
<col>0</col>
|
||||
<halign>left</halign>
|
||||
<label>Turn to base course</label>
|
||||
<property>/controls/liaoning/turn-to-base-course</property>
|
||||
<live>true</live>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
var v = getprop("/controls/liaoning/turn-to-base-course");
|
||||
foreach (var c; props.globals.getNode("/ai/models").getChildren("carrier")){
|
||||
|
||||
if (c.getNode("name").getValue() != nil and c.getNode("name").getValue() == "Liaoning")
|
||||
{
|
||||
c.getNode("controls/turn-to-base-course").setBoolValue(v);
|
||||
c.getNode("controls/turn-to-recovery-hdg").setBoolValue(0);
|
||||
c.getNode("controls/turn-to-launch-hdg").setBoolValue(0);
|
||||
}
|
||||
}
|
||||
|
||||
setprop("/controls/liaoning/turn-to-launch-hdg", 0);
|
||||
setprop("/controls/liaoning/turn-to-recovery-hdg", 0);
|
||||
</script>
|
||||
</binding>
|
||||
</radio>
|
||||
</group>
|
||||
|
||||
<hrule/>
|
||||
|
||||
<group>
|
||||
<layout>table</layout>
|
||||
|
||||
<text>
|
||||
<label>Equipment</label>
|
||||
<row>0</row>
|
||||
<col>0</col>
|
||||
</text>
|
||||
|
||||
<checkbox>
|
||||
<halign>left</halign>
|
||||
<row>3</row>
|
||||
<col>0</col>
|
||||
<label>JBD 1</label>
|
||||
<property>/controls/liaoning/jbd[0]/state</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<halign>left</halign>
|
||||
<row>3</row>
|
||||
<col>1</col>
|
||||
<label>JBD 2</label>
|
||||
<property>/controls/liaoning/jbd[1]/state</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<halign>left</halign>
|
||||
<row>3</row>
|
||||
<col>2</col>
|
||||
<label>JBD 3</label>
|
||||
<property>/controls/liaoning/jbd[2]/state</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</checkbox>
|
||||
|
||||
</group>
|
||||
|
||||
<empty>
|
||||
<stretch>1</stretch>
|
||||
</empty>
|
||||
<hrule/>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<default-padding>6</default-padding>
|
||||
<empty>
|
||||
<stretch>true</stretch>
|
||||
</empty>
|
||||
|
||||
<button>
|
||||
<legend>OK</legend>
|
||||
<default>true</default>
|
||||
<equal>true</equal>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-close</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<button>
|
||||
<legend>Apply</legend>
|
||||
<equal>true</equal>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<button>
|
||||
<legend>Reset</legend>
|
||||
<equal>true</equal>
|
||||
<binding>
|
||||
<command>dialog-update</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<button>
|
||||
<legend>Cancel</legend>
|
||||
<equal>true</equal>
|
||||
<key>Esc</key>
|
||||
<binding>
|
||||
<command>dialog-close</command>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<empty>
|
||||
<stretch>true</stretch>
|
||||
</empty>
|
||||
</group>
|
||||
</PropertyList>
|
Loading…
Add table
Reference in a new issue