Merge branch 'next' into canvas-livery
9
AI/Aircraft/220/223-Delta.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="223-main.xml">
|
||||
|
||||
<texture-path>Textures/Delta</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 53 KiB |
BIN
AI/Aircraft/220/Textures/Delta/223-tex.png
Normal file
After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 43 KiB |
9
AI/Aircraft/717/717-Delta.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<PropertyList include="717-main.xml">
|
||||
|
||||
<texture-path>Textures/Delta</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
BIN
AI/Aircraft/717/Textures/Delta/717-2-map.png
Normal file
After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 370 KiB After Width: | Height: | Size: 87 KiB |
9
AI/Aircraft/739/739-CopaAirlines.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="73J-main.xml">
|
||||
|
||||
<texture-path>Textures/CopaAirlines</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
9
AI/Aircraft/739/739-Delta.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="73J-main.xml">
|
||||
|
||||
<texture-path>Textures/Delta</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
9
AI/Aircraft/739/739-UnitedAirlines.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="73J-main.xml">
|
||||
|
||||
<texture-path>Textures/UnitedAirlines</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
BIN
AI/Aircraft/739/Textures/CopaAirlines/73J-tex.png
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
AI/Aircraft/739/Textures/Delta/73J-tex.png
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
AI/Aircraft/739/Textures/UnitedAirlines/73J-tex.png
Normal file
After Width: | Height: | Size: 71 KiB |
9
AI/Aircraft/777/77F-AirBridgeCargo.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="77F-main.xml">
|
||||
|
||||
<texture-path>Textures/AirBridgeCargo</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
9
AI/Aircraft/777/77L-UnitedAirlines.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="77L-main.xml">
|
||||
|
||||
<texture-path>Textures/UnitedAirlines</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
BIN
AI/Aircraft/777/Textures/AirBridgeCargo/77F-tex.png
Normal file
After Width: | Height: | Size: 53 KiB |
BIN
AI/Aircraft/777/Textures/UnitedAirlines/77L-tex.png
Normal file
After Width: | Height: | Size: 53 KiB |
9
AI/Aircraft/A321/A321-Delta.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<PropertyList include="A321-main.xml">
|
||||
|
||||
<texture-path>Textures/Delta</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
9
AI/Aircraft/A321/A321-EasyJet.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<PropertyList include="A321-main.xml">
|
||||
|
||||
<texture-path>Textures/EasyJet</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
BIN
AI/Aircraft/A321/Textures/Delta/A321-tex.png
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
AI/Aircraft/A321/Textures/EasyJet/A321-tex.png
Normal file
After Width: | Height: | Size: 72 KiB |
9
AI/Aircraft/A350/359-Delta.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0"?>
|
||||
<PropertyList include="359-main.xml">
|
||||
|
||||
<texture-path>Textures/Delta</texture-path>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
BIN
AI/Aircraft/A350/Textures/Delta/359-tex.png
Normal file
After Width: | Height: | Size: 47 KiB |
|
@ -28,6 +28,7 @@
|
|||
551-600 Military large aircraft (tankers, transports)
|
||||
601-700 Helicopters
|
||||
701-800 Other
|
||||
801-900 Maritime
|
||||
-->
|
||||
<PropertyList>
|
||||
|
||||
|
@ -181,4 +182,14 @@ AI model. We also want to load it in preference to the default glider because i
|
|||
then be invisible to other MP players who are not in a UFO themselves. -->
|
||||
<model n="712" type="string">Aircraft/ufo/Models/ufo.xml</model>
|
||||
|
||||
<model n="801" type="string">AI/Maritime/MP-Carriers/mp-nimitz-0.xml</model>
|
||||
<model n="802" type="string">AI/Maritime/MP-Carriers/mp-vinson-0.xml</model>
|
||||
<model n="803" type="string">AI/Maritime/MP-Carriers/mp-eisenhower-0.xml</model>
|
||||
<model n="804" type="string">AI/Maritime/MP-Carriers/mp-truman-0.xml</model>
|
||||
<model n="805" type="string">AI/Maritime/MP-Carriers/mp-clemenceau-0.xml</model>
|
||||
<model n="806" type="string">AI/Maritime/MP-Carriers/mp-foch-0.xml</model>
|
||||
<model n="807" type="string">AI/Maritime/MP-Carriers/mp-kuznetsov-0.xml</model>
|
||||
<model n="808" type="string">AI/Maritime/MP-Carriers/mp-liaoning-0.xml</model>
|
||||
<model n="809" type="string">AI/Maritime/MP-Carriers/mp-sanantonio-0.xml</model>
|
||||
|
||||
</PropertyList>
|
||||
|
|
|
@ -219,6 +219,8 @@
|
|||
<alias>
|
||||
<match>73</match>
|
||||
<match>Boeing_737</match>
|
||||
<match>7M8</match>
|
||||
<match>7M9</match>
|
||||
<alias>737</alias>
|
||||
</alias>
|
||||
<!-- Boeing 717 all versions -->
|
||||
|
|
60
AI/Maritime/MP-Carriers/mp-clemenceau-0.xml
Normal file
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Multiplayer carrier Clemenceau fallback model. ID# 806
|
||||
|
||||
This will connect the MP carrier to the AI carrier when the low detail model is loaded.
|
||||
Later on if the high detail model is also loaded it will be still be good
|
||||
because the logic is resilient enough not to trample over itself.
|
||||
|
||||
Copyright (C) 2021 : Richard Harrison rjh@zaretto.com
|
||||
Copyright (C) 2007 - 2016 Anders Gidenstam (anders(at)gidenstam.org)
|
||||
|
||||
This file is released under the GPL license version 2 or later.
|
||||
-->
|
||||
<PropertyList>
|
||||
|
||||
<nasal>
|
||||
<load>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
# This logic connects the carrier to the AI carrier
|
||||
|
||||
var rplayer = cmdarg();
|
||||
print("MP Clemenceau(Fallback): LOAD " ~ rplayer.getPath());
|
||||
|
||||
# Load the main MPCarriers Nasal module if needed.
|
||||
if (!contains(globals, "MPCarriers")) {
|
||||
var base = "Aircraft/Generic/MPCarriers.nas";
|
||||
io.load_nasal(resolvepath(base), "MPCarriers");
|
||||
}
|
||||
|
||||
# Create manager class.
|
||||
var manager = nil;
|
||||
var accept_callsign = "/sim/mp-carriers/clemenceau-callsign";
|
||||
|
||||
var init = func {
|
||||
# Initialize the callsign property if not done already.
|
||||
props.globals.initNode(accept_callsign, "", "STRING");
|
||||
|
||||
manager = MPCarriers.Manager.new(rplayer,
|
||||
"Clemenceau",
|
||||
props.globals.getNode(accept_callsign));
|
||||
print("MP Clemenceau(Fallback): " ~ rplayer.getPath() ~ " done.");
|
||||
}
|
||||
|
||||
settimer(init, 3); # 3 second delay should be sufficient
|
||||
print("MP Clemenceau(Fallback): " ~ rplayer.getPath() ~ " waiting.");
|
||||
##############################################################################
|
||||
]]>
|
||||
</load>
|
||||
<unload>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
print("MP Clemenceau(Fallback): unload", cmdarg().getPath());
|
||||
if (manager != nil) manager.die();
|
||||
##############################################################################
|
||||
]]>
|
||||
</unload>
|
||||
</nasal>
|
||||
|
||||
</PropertyList>
|
60
AI/Maritime/MP-Carriers/mp-eisenhower-0.xml
Normal file
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Multiplayer carrier Eisenhower fallback model. ID# 803
|
||||
|
||||
This will connect the MP carrier to the AI carrier when the low detail model is loaded.
|
||||
Later on if the high detail model is also loaded it will be still be good
|
||||
because the logic is resilient enough not to trample over itself.
|
||||
|
||||
Copyright (C) 2021 : Richard Harrison rjh@zaretto.com
|
||||
Copyright (C) 2007 - 2016 Anders Gidenstam (anders(at)gidenstam.org)
|
||||
|
||||
This file is released under the GPL license version 2 or later.
|
||||
-->
|
||||
<PropertyList>
|
||||
|
||||
<nasal>
|
||||
<load>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
# This logic connects the carrier to the AI carrier
|
||||
|
||||
var rplayer = cmdarg();
|
||||
print("MP Eisenhower(Fallback): LOAD " ~ rplayer.getPath());
|
||||
|
||||
# Load the main MPCarriers Nasal module if needed.
|
||||
if (!contains(globals, "MPCarriers")) {
|
||||
var base = "Aircraft/Generic/MPCarriers.nas";
|
||||
io.load_nasal(resolvepath(base), "MPCarriers");
|
||||
}
|
||||
|
||||
# Create manager class.
|
||||
var manager = nil;
|
||||
var accept_callsign = "/sim/mp-carriers/eisenhower-callsign";
|
||||
|
||||
var init = func {
|
||||
# Initialize the callsign property if not done already.
|
||||
props.globals.initNode(accept_callsign, "", "STRING");
|
||||
|
||||
manager = MPCarriers.Manager.new(rplayer,
|
||||
"Eisenhower",
|
||||
props.globals.getNode(accept_callsign));
|
||||
print("MP Eisenhower(Fallback): " ~ rplayer.getPath() ~ " done.");
|
||||
}
|
||||
|
||||
settimer(init, 3); # 3 second delay should be sufficient
|
||||
print("MP Eisenhower(Fallback): " ~ rplayer.getPath() ~ " waiting.");
|
||||
##############################################################################
|
||||
]]>
|
||||
</load>
|
||||
<unload>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
print("MP Eisenhower(Fallback): unload", cmdarg().getPath());
|
||||
if (manager != nil) manager.die();
|
||||
##############################################################################
|
||||
]]>
|
||||
</unload>
|
||||
</nasal>
|
||||
|
||||
</PropertyList>
|
60
AI/Maritime/MP-Carriers/mp-foch-0.xml
Normal file
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Multiplayer carrier Foch fallback model. ID# 807
|
||||
|
||||
This will connect the MP carrier to the AI carrier when the low detail model is loaded.
|
||||
Later on if the high detail model is also loaded it will be still be good
|
||||
because the logic is resilient enough not to trample over itself.
|
||||
|
||||
Copyright (C) 2021 : Richard Harrison rjh@zaretto.com
|
||||
Copyright (C) 2007 - 2016 Anders Gidenstam (anders(at)gidenstam.org)
|
||||
|
||||
This file is released under the GPL license version 2 or later.
|
||||
-->
|
||||
<PropertyList>
|
||||
|
||||
<nasal>
|
||||
<load>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
# This logic connects the carrier to the AI carrier
|
||||
|
||||
var rplayer = cmdarg();
|
||||
print("MP Foch(Fallback): LOAD " ~ rplayer.getPath());
|
||||
|
||||
# Load the main MPCarriers Nasal module if needed.
|
||||
if (!contains(globals, "MPCarriers")) {
|
||||
var base = "Aircraft/Generic/MPCarriers.nas";
|
||||
io.load_nasal(resolvepath(base), "MPCarriers");
|
||||
}
|
||||
|
||||
# Create manager class.
|
||||
var manager = nil;
|
||||
var accept_callsign = "/sim/mp-carriers/foch-callsign";
|
||||
|
||||
var init = func {
|
||||
# Initialize the callsign property if not done already.
|
||||
props.globals.initNode(accept_callsign, "", "STRING");
|
||||
|
||||
manager = MPCarriers.Manager.new(rplayer,
|
||||
"Foch",
|
||||
props.globals.getNode(accept_callsign));
|
||||
print("MP Foch(Fallback): " ~ rplayer.getPath() ~ " done.");
|
||||
}
|
||||
|
||||
settimer(init, 3); # 3 second delay should be sufficient
|
||||
print("MP Foch(Fallback): " ~ rplayer.getPath() ~ " waiting.");
|
||||
##############################################################################
|
||||
]]>
|
||||
</load>
|
||||
<unload>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
print("MP Foch(Fallback): unload", cmdarg().getPath());
|
||||
if (manager != nil) manager.die();
|
||||
##############################################################################
|
||||
]]>
|
||||
</unload>
|
||||
</nasal>
|
||||
|
||||
</PropertyList>
|
60
AI/Maritime/MP-Carriers/mp-kuznetsov-0.xml
Normal file
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Multiplayer carrier Kuznetsov fallback model. ID# 808
|
||||
|
||||
This will connect the MP carrier to the AI carrier when the low detail model is loaded.
|
||||
Later on if the high detail model is also loaded it will be still be good
|
||||
because the logic is resilient enough not to trample over itself.
|
||||
|
||||
Copyright (C) 2021 : Richard Harrison rjh@zaretto.com
|
||||
Copyright (C) 2007 - 2016 Anders Gidenstam (anders(at)gidenstam.org)
|
||||
|
||||
This file is released under the GPL license version 2 or later.
|
||||
-->
|
||||
<PropertyList>
|
||||
|
||||
<nasal>
|
||||
<load>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
# This logic connects the carrier to the AI carrier
|
||||
|
||||
var rplayer = cmdarg();
|
||||
print("MP Kuznetsov(Fallback): LOAD " ~ rplayer.getPath());
|
||||
|
||||
# Load the main MPCarriers Nasal module if needed.
|
||||
if (!contains(globals, "MPCarriers")) {
|
||||
var base = "Aircraft/Generic/MPCarriers.nas";
|
||||
io.load_nasal(resolvepath(base), "MPCarriers");
|
||||
}
|
||||
|
||||
# Create manager class.
|
||||
var manager = nil;
|
||||
var accept_callsign = "/sim/mp-carriers/kuznetsov-callsign";
|
||||
|
||||
var init = func {
|
||||
# Initialize the callsign property if not done already.
|
||||
props.globals.initNode(accept_callsign, "", "STRING");
|
||||
|
||||
manager = MPCarriers.Manager.new(rplayer,
|
||||
"Kuznetsov",
|
||||
props.globals.getNode(accept_callsign));
|
||||
print("MP Kuznetsov(Fallback): " ~ rplayer.getPath() ~ " done.");
|
||||
}
|
||||
|
||||
settimer(init, 3); # 3 second delay should be sufficient
|
||||
print("MP Kuznetsov(Fallback): " ~ rplayer.getPath() ~ " waiting.");
|
||||
##############################################################################
|
||||
]]>
|
||||
</load>
|
||||
<unload>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
print("MP Kuznetsov(Fallback): unload", cmdarg().getPath());
|
||||
if (manager != nil) manager.die();
|
||||
##############################################################################
|
||||
]]>
|
||||
</unload>
|
||||
</nasal>
|
||||
|
||||
</PropertyList>
|
60
AI/Maritime/MP-Carriers/mp-liaoning-0.xml
Normal file
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Multiplayer carrier Liaoning fallback model. ID# 809
|
||||
|
||||
This will connect the MP carrier to the AI carrier when the low detail model is loaded.
|
||||
Later on if the high detail model is also loaded it will be still be good
|
||||
because the logic is resilient enough not to trample over itself.
|
||||
|
||||
Copyright (C) 2021 : Richard Harrison rjh@zaretto.com
|
||||
Copyright (C) 2007 - 2016 Anders Gidenstam (anders(at)gidenstam.org)
|
||||
|
||||
This file is released under the GPL license version 2 or later.
|
||||
-->
|
||||
<PropertyList>
|
||||
|
||||
<nasal>
|
||||
<load>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
# This logic connects the carrier to the AI carrier
|
||||
|
||||
var rplayer = cmdarg();
|
||||
print("MP Liaoning(Fallback): LOAD " ~ rplayer.getPath());
|
||||
|
||||
# Load the main MPCarriers Nasal module if needed.
|
||||
if (!contains(globals, "MPCarriers")) {
|
||||
var base = "Aircraft/Generic/MPCarriers.nas";
|
||||
io.load_nasal(resolvepath(base), "MPCarriers");
|
||||
}
|
||||
|
||||
# Create manager class.
|
||||
var manager = nil;
|
||||
var accept_callsign = "/sim/mp-carriers/liaoning-callsign";
|
||||
|
||||
var init = func {
|
||||
# Initialize the callsign property if not done already.
|
||||
props.globals.initNode(accept_callsign, "", "STRING");
|
||||
|
||||
manager = MPCarriers.Manager.new(rplayer,
|
||||
"Liaoning",
|
||||
props.globals.getNode(accept_callsign));
|
||||
print("MP Liaoning(Fallback): " ~ rplayer.getPath() ~ " done.");
|
||||
}
|
||||
|
||||
settimer(init, 3); # 3 second delay should be sufficient
|
||||
print("MP Liaoning(Fallback): " ~ rplayer.getPath() ~ " waiting.");
|
||||
##############################################################################
|
||||
]]>
|
||||
</load>
|
||||
<unload>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
print("MP Liaoning(Fallback): unload", cmdarg().getPath());
|
||||
if (manager != nil) manager.die();
|
||||
##############################################################################
|
||||
]]>
|
||||
</unload>
|
||||
</nasal>
|
||||
|
||||
</PropertyList>
|
60
AI/Maritime/MP-Carriers/mp-nimitz-0.xml
Normal file
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Multiplayer carrier Nimitz fallback model. ID# 801
|
||||
|
||||
This will connect the MP carrier to the AI carrier when the low detail model is loaded.
|
||||
Later on if the high detail model is also loaded it will be still be good
|
||||
because the logic is resilient enough not to trample over itself.
|
||||
|
||||
Copyright (C) 2021 : Richard Harrison rjh@zaretto.com
|
||||
Copyright (C) 2007 - 2016 Anders Gidenstam (anders(at)gidenstam.org)
|
||||
|
||||
This file is released under the GPL license version 2 or later.
|
||||
-->
|
||||
<PropertyList>
|
||||
|
||||
<nasal>
|
||||
<load>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
# This logic connects the carrier to the AI carrier
|
||||
|
||||
var rplayer = cmdarg();
|
||||
print("MP Nimitz(Fallback): LOAD " ~ rplayer.getPath());
|
||||
|
||||
# Load the main MPCarriers Nasal module if needed.
|
||||
if (!contains(globals, "MPCarriers")) {
|
||||
var base = "Aircraft/Generic/MPCarriers.nas";
|
||||
io.load_nasal(resolvepath(base), "MPCarriers");
|
||||
}
|
||||
|
||||
# Create manager class.
|
||||
var manager = nil;
|
||||
var accept_callsign = "/sim/mp-carriers/nimitz-callsign";
|
||||
|
||||
var init = func {
|
||||
# Initialize the callsign property if not done already.
|
||||
props.globals.initNode(accept_callsign, "", "STRING");
|
||||
|
||||
manager = MPCarriers.Manager.new(rplayer,
|
||||
"Nimitz",
|
||||
props.globals.getNode(accept_callsign));
|
||||
print("MP Nimitz(Fallback): " ~ rplayer.getPath() ~ " done.");
|
||||
}
|
||||
|
||||
settimer(init, 15); # delay to prevent recursion.
|
||||
print("MP Nimitz(Fallback): " ~ rplayer.getPath() ~ " waiting.");
|
||||
##############################################################################
|
||||
]]>
|
||||
</load>
|
||||
<unload>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
print("MP Nimitz(Fallback): unload", cmdarg().getPath());
|
||||
if (manager != nil) manager.die();
|
||||
##############################################################################
|
||||
]]>
|
||||
</unload>
|
||||
</nasal>
|
||||
|
||||
</PropertyList>
|
60
AI/Maritime/MP-Carriers/mp-sanantonio-0.xml
Normal file
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Multiplayer carrier Sanantonio fallback model. ID# 810
|
||||
|
||||
This will connect the MP carrier to the AI carrier when the low detail model is loaded.
|
||||
Later on if the high detail model is also loaded it will be still be good
|
||||
because the logic is resilient enough not to trample over itself.
|
||||
|
||||
Copyright (C) 2021 : Richard Harrison rjh@zaretto.com
|
||||
Copyright (C) 2007 - 2016 Anders Gidenstam (anders(at)gidenstam.org)
|
||||
|
||||
This file is released under the GPL license version 2 or later.
|
||||
-->
|
||||
<PropertyList>
|
||||
|
||||
<nasal>
|
||||
<load>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
# This logic connects the carrier to the AI carrier
|
||||
|
||||
var rplayer = cmdarg();
|
||||
print("MP Sanantonio(Fallback): LOAD " ~ rplayer.getPath());
|
||||
|
||||
# Load the main MPCarriers Nasal module if needed.
|
||||
if (!contains(globals, "MPCarriers")) {
|
||||
var base = "Aircraft/Generic/MPCarriers.nas";
|
||||
io.load_nasal(resolvepath(base), "MPCarriers");
|
||||
}
|
||||
|
||||
# Create manager class.
|
||||
var manager = nil;
|
||||
var accept_callsign = "/sim/mp-carriers/sanantonio-callsign";
|
||||
|
||||
var init = func {
|
||||
# Initialize the callsign property if not done already.
|
||||
props.globals.initNode(accept_callsign, "", "STRING");
|
||||
|
||||
manager = MPCarriers.Manager.new(rplayer,
|
||||
"Sanantonio",
|
||||
props.globals.getNode(accept_callsign));
|
||||
print("MP Sanantonio(Fallback): " ~ rplayer.getPath() ~ " done.");
|
||||
}
|
||||
|
||||
settimer(init, 3); # 3 second delay should be sufficient
|
||||
print("MP Sanantonio(Fallback): " ~ rplayer.getPath() ~ " waiting.");
|
||||
##############################################################################
|
||||
]]>
|
||||
</load>
|
||||
<unload>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
print("MP Sanantonio(Fallback): unload", cmdarg().getPath());
|
||||
if (manager != nil) manager.die();
|
||||
##############################################################################
|
||||
]]>
|
||||
</unload>
|
||||
</nasal>
|
||||
|
||||
</PropertyList>
|
60
AI/Maritime/MP-Carriers/mp-truman-0.xml
Normal file
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Multiplayer carrier Truman fallback model. ID# 804
|
||||
|
||||
This will connect the MP carrier to the AI carrier when the low detail model is loaded.
|
||||
Later on if the high detail model is also loaded it will be still be good
|
||||
because the logic is resilient enough not to trample over itself.
|
||||
|
||||
Copyright (C) 2021 : Richard Harrison rjh@zaretto.com
|
||||
Copyright (C) 2007 - 2016 Anders Gidenstam (anders(at)gidenstam.org)
|
||||
|
||||
This file is released under the GPL license version 2 or later.
|
||||
-->
|
||||
<PropertyList>
|
||||
|
||||
<nasal>
|
||||
<load>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
# This logic connects the carrier to the AI carrier
|
||||
|
||||
var rplayer = cmdarg();
|
||||
print("MP Truman(Fallback): LOAD " ~ rplayer.getPath());
|
||||
|
||||
# Load the main MPCarriers Nasal module if needed.
|
||||
if (!contains(globals, "MPCarriers")) {
|
||||
var base = "Aircraft/Generic/MPCarriers.nas";
|
||||
io.load_nasal(resolvepath(base), "MPCarriers");
|
||||
}
|
||||
|
||||
# Create manager class.
|
||||
var manager = nil;
|
||||
var accept_callsign = "/sim/mp-carriers/truman-callsign";
|
||||
|
||||
var init = func {
|
||||
# Initialize the callsign property if not done already.
|
||||
props.globals.initNode(accept_callsign, "", "STRING");
|
||||
|
||||
manager = MPCarriers.Manager.new(rplayer,
|
||||
"Truman",
|
||||
props.globals.getNode(accept_callsign));
|
||||
print("MP Truman(Fallback): " ~ rplayer.getPath() ~ " done.");
|
||||
}
|
||||
|
||||
settimer(init, 3); # 3 second delay should be sufficient
|
||||
print("MP Truman(Fallback): " ~ rplayer.getPath() ~ " waiting.");
|
||||
##############################################################################
|
||||
]]>
|
||||
</load>
|
||||
<unload>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
print("MP Truman(Fallback): unload", cmdarg().getPath());
|
||||
if (manager != nil) manager.die();
|
||||
##############################################################################
|
||||
]]>
|
||||
</unload>
|
||||
</nasal>
|
||||
|
||||
</PropertyList>
|
60
AI/Maritime/MP-Carriers/mp-vinson-0.xml
Normal file
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Multiplayer carrier Vinson fallback model. ID# 805
|
||||
|
||||
This will connect the MP carrier to the AI carrier when the low detail model is loaded.
|
||||
Later on if the high detail model is also loaded it will be still be good
|
||||
because the logic is resilient enough not to trample over itself.
|
||||
|
||||
Copyright (C) 2021 : Richard Harrison rjh@zaretto.com
|
||||
Copyright (C) 2007 - 2016 Anders Gidenstam (anders(at)gidenstam.org)
|
||||
|
||||
This file is released under the GPL license version 2 or later.
|
||||
-->
|
||||
<PropertyList>
|
||||
|
||||
<nasal>
|
||||
<load>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
# This logic connects the carrier to the AI carrier
|
||||
|
||||
var rplayer = cmdarg();
|
||||
print("MP Vinson(Fallback): LOAD " ~ rplayer.getPath());
|
||||
|
||||
# Load the main MPCarriers Nasal module if needed.
|
||||
if (!contains(globals, "MPCarriers")) {
|
||||
var base = "Aircraft/Generic/MPCarriers.nas";
|
||||
io.load_nasal(resolvepath(base), "MPCarriers");
|
||||
}
|
||||
|
||||
# Create manager class.
|
||||
var manager = nil;
|
||||
var accept_callsign = "/sim/mp-carriers/vinson-callsign";
|
||||
|
||||
var init = func {
|
||||
# Initialize the callsign property if not done already.
|
||||
props.globals.initNode(accept_callsign, "", "STRING");
|
||||
|
||||
manager = MPCarriers.Manager.new(rplayer,
|
||||
"Vinson",
|
||||
props.globals.getNode(accept_callsign));
|
||||
print("MP Vinson(Fallback): " ~ rplayer.getPath() ~ " done.");
|
||||
}
|
||||
|
||||
settimer(init, 3); # 3 second delay should be sufficient
|
||||
print("MP Vinson(Fallback): " ~ rplayer.getPath() ~ " waiting.");
|
||||
##############################################################################
|
||||
]]>
|
||||
</load>
|
||||
<unload>
|
||||
<![CDATA[
|
||||
##############################################################################
|
||||
print("MP Vinson(Fallback): unload", cmdarg().getPath());
|
||||
if (manager != nil) manager.die();
|
||||
##############################################################################
|
||||
]]>
|
||||
</unload>
|
||||
</nasal>
|
||||
|
||||
</PropertyList>
|
8742
AI/Traffic/A/ABW.xml
29973
AI/Traffic/A/AFL.xml
15449
AI/Traffic/C/CFG.xml
22884
AI/Traffic/C/CMP.xml
689110
AI/Traffic/D/DAL.xml
11637
AI/Traffic/E/EJU.xml
Normal file
|
@ -1263,21 +1263,7 @@
|
|||
<registration>N476MC</registration>
|
||||
<heavy>true</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/747/74Y-Etihad.xml</model>
|
||||
<livery>ETD</livery>
|
||||
<airline>ETD</airline>
|
||||
<home-port>OMAA</home-port>
|
||||
<required-aircraft>ETD-74F</required-aircraft>
|
||||
<actype>74F</actype>
|
||||
<offset>0</offset>
|
||||
<radius>32</radius>
|
||||
<flighttype>cargo</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>N855GT</registration>
|
||||
<heavy>true</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/777/77F-Etihad.xml</model>
|
||||
<livery>ETD</livery>
|
||||
<airline>ETD</airline>
|
||||
|
|
|
@ -308,20 +308,6 @@
|
|||
<registration>G-GDFY</registration>
|
||||
<heavy>false</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/738/738-Jet2.xml</model>
|
||||
<livery>EXS</livery>
|
||||
<airline>EXS</airline>
|
||||
<home-port>EGNM</home-port>
|
||||
<required-aircraft>EXS-738</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>G-JZHA</registration>
|
||||
<heavy>false</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/738/738-Jet2.xml</model>
|
||||
<livery>EXS</livery>
|
||||
|
|
4498
AI/Traffic/E/EZS.xml
23394
AI/Traffic/E/EZY.xml
|
@ -82,24 +82,10 @@
|
|||
<radius>30</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>YI-AGR</registration>
|
||||
<registration>YI-AQY</registration>
|
||||
<heavy>false</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/738/738-IraqiAirways.xml</model>
|
||||
<livery>IAW</livery>
|
||||
<airline>IAW</airline>
|
||||
<home-port>ORBI</home-port>
|
||||
<required-aircraft>IAW-737</required-aircraft>
|
||||
<actype>737</actype>
|
||||
<offset>0</offset>
|
||||
<radius>17</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>YI-AQA</registration>
|
||||
<heavy>false</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
<aircraft>
|
||||
<model>Aircraft/738/738-IraqiAirways.xml</model>
|
||||
<livery>IAW</livery>
|
||||
<airline>IAW</airline>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<radius>17</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>TS-INA</registration>
|
||||
<registration>TS-INC</registration>
|
||||
<heavy>false</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
|
@ -26,7 +26,7 @@
|
|||
<radius>17</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>TS-INB</registration>
|
||||
<registration>TS-IND</registration>
|
||||
<heavy>false</heavy>
|
||||
</aircraft>
|
||||
<aircraft>
|
||||
|
@ -96,7 +96,7 @@
|
|||
<radius>17</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>TS-INA</registration>
|
||||
<registration>TS-INR</registration>
|
||||
<heavy>false</heavy>
|
||||
</aircraft>
|
||||
<flight>
|
||||
|
|
|
@ -124,7 +124,7 @@
|
|||
<radius>17</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>LZ-FBC</registration>
|
||||
<registration>LZ-FBE</registration>
|
||||
<heavy>false</heavy>
|
||||
</aircraft>
|
||||
<flight>
|
||||
|
|
16958
AI/Traffic/O/OMA.xml
28746
AI/Traffic/R/RXA.xml
139369
AI/Traffic/S/SAS.xml
27564
AI/Traffic/S/SDM.xml
28662
AI/Traffic/S/SVR.xml
|
@ -11,7 +11,7 @@
|
|||
<required-aircraft>737-TRA</required-aircraft>
|
||||
<actype>737</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-XRA</registration>
|
||||
|
@ -25,7 +25,7 @@
|
|||
<required-aircraft>737-TRA</required-aircraft>
|
||||
<actype>737</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-XRB</registration>
|
||||
|
@ -39,7 +39,7 @@
|
|||
<required-aircraft>737-TRA</required-aircraft>
|
||||
<actype>737</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-XRC</registration>
|
||||
|
@ -53,7 +53,7 @@
|
|||
<required-aircraft>737-TRA</required-aircraft>
|
||||
<actype>737</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-XRD</registration>
|
||||
|
@ -67,7 +67,7 @@
|
|||
<required-aircraft>737-TRA</required-aircraft>
|
||||
<actype>737</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-XRV</registration>
|
||||
|
@ -81,7 +81,7 @@
|
|||
<required-aircraft>737-TRA</required-aircraft>
|
||||
<actype>737</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-XRX</registration>
|
||||
|
@ -95,7 +95,7 @@
|
|||
<required-aircraft>737-TRA</required-aircraft>
|
||||
<actype>737</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-XRY</registration>
|
||||
|
@ -109,7 +109,7 @@
|
|||
<required-aircraft>737-TRA</required-aircraft>
|
||||
<actype>737</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-XRZ</registration>
|
||||
|
@ -123,7 +123,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHA</registration>
|
||||
|
@ -137,7 +137,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHB</registration>
|
||||
|
@ -151,7 +151,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHC</registration>
|
||||
|
@ -165,7 +165,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHD</registration>
|
||||
|
@ -179,7 +179,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHE</registration>
|
||||
|
@ -193,7 +193,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHF</registration>
|
||||
|
@ -207,7 +207,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHI</registration>
|
||||
|
@ -221,7 +221,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHJ</registration>
|
||||
|
@ -235,7 +235,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHK</registration>
|
||||
|
@ -249,7 +249,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHL</registration>
|
||||
|
@ -263,7 +263,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHM</registration>
|
||||
|
@ -277,7 +277,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHN</registration>
|
||||
|
@ -291,7 +291,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHO</registration>
|
||||
|
@ -305,7 +305,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHP</registration>
|
||||
|
@ -319,7 +319,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHQ</registration>
|
||||
|
@ -333,7 +333,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHR</registration>
|
||||
|
@ -347,7 +347,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHS</registration>
|
||||
|
@ -361,7 +361,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHT</registration>
|
||||
|
@ -375,7 +375,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHU</registration>
|
||||
|
@ -389,7 +389,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHV</registration>
|
||||
|
@ -403,7 +403,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHX</registration>
|
||||
|
@ -417,7 +417,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-GZHY</registration>
|
||||
|
@ -431,7 +431,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-HTVA</registration>
|
||||
|
@ -445,7 +445,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-HTVB</registration>
|
||||
|
@ -459,7 +459,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-HTVC</registration>
|
||||
|
@ -473,7 +473,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-HTVD</registration>
|
||||
|
@ -487,7 +487,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-HTVE</registration>
|
||||
|
@ -501,7 +501,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-HTVF</registration>
|
||||
|
@ -515,7 +515,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>F-HTVG</registration>
|
||||
|
@ -529,7 +529,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HSB</registration>
|
||||
|
@ -543,7 +543,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HSC</registration>
|
||||
|
@ -557,7 +557,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HSF</registration>
|
||||
|
@ -571,7 +571,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HSG</registration>
|
||||
|
@ -585,7 +585,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HSI</registration>
|
||||
|
@ -599,7 +599,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HSJ</registration>
|
||||
|
@ -613,7 +613,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HSM</registration>
|
||||
|
@ -627,7 +627,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HSW</registration>
|
||||
|
@ -641,7 +641,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HXA</registration>
|
||||
|
@ -655,7 +655,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HXB</registration>
|
||||
|
@ -669,7 +669,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HXC</registration>
|
||||
|
@ -683,7 +683,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HXD</registration>
|
||||
|
@ -697,7 +697,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HXE</registration>
|
||||
|
@ -711,7 +711,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HXF</registration>
|
||||
|
@ -725,7 +725,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HXG</registration>
|
||||
|
@ -739,7 +739,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HXI</registration>
|
||||
|
@ -753,7 +753,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HXJ</registration>
|
||||
|
@ -767,7 +767,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HXK</registration>
|
||||
|
@ -781,7 +781,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HZD</registration>
|
||||
|
@ -795,7 +795,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HZE</registration>
|
||||
|
@ -809,7 +809,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HZG</registration>
|
||||
|
@ -823,7 +823,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HZI</registration>
|
||||
|
@ -837,7 +837,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HZJ</registration>
|
||||
|
@ -851,7 +851,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HZL</registration>
|
||||
|
@ -865,7 +865,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HZN</registration>
|
||||
|
@ -879,7 +879,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HZO</registration>
|
||||
|
@ -893,7 +893,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HZV</registration>
|
||||
|
@ -907,7 +907,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HZW</registration>
|
||||
|
@ -921,7 +921,7 @@
|
|||
<required-aircraft>738-TRA</required-aircraft>
|
||||
<actype>738</actype>
|
||||
<offset>0</offset>
|
||||
<radius>14</radius>
|
||||
<radius>18</radius>
|
||||
<flighttype>gate</flighttype>
|
||||
<performance-class>jet_transport</performance-class>
|
||||
<registration>PH-HZX</registration>
|
||||
|
|
648946
AI/Traffic/U/UAL.xml
15665
AI/Traffic/V/VLG.xml
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
|
@ -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>
|
618
Aircraft/Generic/MPCarriers.nas
Normal file
|
@ -0,0 +1,618 @@
|
|||
###############################################################################
|
||||
##
|
||||
## Nasal module for connecting a local AI carrier to a MP player.
|
||||
##
|
||||
## Copyright (C) 2007 - 2012 Anders Gidenstam (anders(at)gidenstam.org)
|
||||
## Copyright (C) 2009 Vivian Meazza
|
||||
## This file is licensed under the GPL license version 2 or later.
|
||||
##
|
||||
###############################################################################
|
||||
|
||||
# NOTE:
|
||||
# This module is intended to be loaded under the name MPCarriers.
|
||||
|
||||
# To see what is happening with multiplayer/ai carriers, look in
|
||||
# /ai/models/carrier[]/mp-control/.
|
||||
#
|
||||
|
||||
# If this is true, we auto-enable ai scenarios and auto-attach ai carriers to
|
||||
# mp carriers.
|
||||
#
|
||||
var g_auto_attach = props.globals.getNode("/sim/mp-carriers/auto-attach", 1);
|
||||
printf("g_auto_attach.getValue()=%s", g_auto_attach.getValue());
|
||||
|
||||
# Constants
|
||||
var lat = "position/latitude-deg";
|
||||
var lon = "position/longitude-deg";
|
||||
var alt = "position/altitude-ft";
|
||||
var c_heading = "orientation/true-heading-deg";
|
||||
var c_pitch = "orientation/pitch-deg";
|
||||
var c_roll = "orientation/roll-deg";
|
||||
var c_speed = "velocities/speed-kts";
|
||||
var x = "position/global-x";
|
||||
var y = "position/global-y";
|
||||
var z = "position/global-z";
|
||||
|
||||
#var c_control_speed = "controls/base-speed-kts";
|
||||
#var c_control_course = "controls/base-course-deg";
|
||||
var c_control_speed = "controls/tgt-speed-kts";
|
||||
var c_control_course = "controls/tgt-heading-degs";
|
||||
var c_wave_off_lights = "controls/flols/wave-off-lights";
|
||||
|
||||
|
||||
var c_control_mp_ctrl = "controls/mp-control";
|
||||
|
||||
var c_deck_elev = "controls/elevators";
|
||||
var c_deck_lights = "controls/lighting/deck-lights";
|
||||
var c_flood_lights = "controls/lighting/flood-lights-red-norm";
|
||||
var c_turn_to_launch_hdg = "controls/turn-to-launch-hdg";
|
||||
var c_turn_to_recvry_hdg = "controls/turn-to-recovery-hdg";
|
||||
var c_turn_to_base_co = "controls/turn-to-base-course";
|
||||
|
||||
|
||||
var mp_heading = "orientation/true-heading-deg";
|
||||
var mp_pitch = "orientation/pitch-deg";
|
||||
var mp_roll = "orientation/roll-deg";
|
||||
|
||||
# MP transmitted controls
|
||||
var mp_speed = "surface-positions/flap-pos-norm";
|
||||
var mp_rudder = "surface-positions/rudder-pos-norm";
|
||||
var mp_network = "sim/multiplay/generic/string[0]";
|
||||
var mp_message = "sim/multiplay/generic/string[2]";
|
||||
var mp_tgt_hdg = "sim/multiplay/generic/float[0]";
|
||||
var mp_tgt_spd = "sim/multiplay/generic/float[1]";
|
||||
var mp_turn_radius = "sim/multiplay/generic/float[2]";
|
||||
|
||||
# Controller parameters.
|
||||
var cross_course_gain = 0.2;
|
||||
var cross_course_fadeout = 100.0;
|
||||
var cross_course_limit = 20.0;
|
||||
|
||||
###############################################################################
|
||||
# Manager class for one model instance.
|
||||
var Manager = {};
|
||||
##################################################
|
||||
Manager.new = func (player = nil, carrier_name = nil, callsign = nil) {
|
||||
# e.g. carrier_name = 'Clemenceau'.
|
||||
printf("Manager.new(): player=%s carrier_name=%s callsign=%s",
|
||||
player, carrier_name, callsign);
|
||||
|
||||
if (g_auto_attach.getValue()) {
|
||||
# Look for matching ai scenario and enable it. We don't care if it is
|
||||
# already enabled - FGAIManager::loadScenarioCommand() will know to do
|
||||
# nothing.
|
||||
printf("Checking ai scenarios...");
|
||||
foreach (var n; props.globals.getNode("sim/ai/scenarios", 1).getChildren("scenario")) {
|
||||
var n_carrier_name = n.getValue("carrier/name");
|
||||
var n_scenario_id = n.getValue("id"); # e.g. clemenceau_demo.
|
||||
if (n_carrier_name != nil) {
|
||||
if (0) {
|
||||
printf(" %s: id=%s n_carrier_name=%s",
|
||||
n.getPath(),
|
||||
n_scenario_id,
|
||||
n_carrier_name
|
||||
);
|
||||
}
|
||||
if (n_carrier_name == carrier_name) {
|
||||
printf("calling load-scenario with id=%s", n_scenario_id);
|
||||
var args = props.Node.new( { name: n_scenario_id});
|
||||
var e = fgcommand("load-scenario", args);
|
||||
printf("fgcommand('load-scenario') returned e=%s", e);
|
||||
if (e) {
|
||||
# We have loaded scenario.
|
||||
gui.popupTip(sprintf("Have loaded AI senario: %s", n_scenario_id));
|
||||
}
|
||||
else {
|
||||
# Error, or scenario was already loaded.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("Enabled scenarios are:");
|
||||
foreach (var n; props.globals.getNode("sim/ai", 1).getChildren("scenario")) {
|
||||
printf(" %s", n.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
var obj = { parents : [Manager],
|
||||
rplayer : player,
|
||||
carrier_name : carrier_name,
|
||||
carrier : nil,
|
||||
accept_callsign : callsign,
|
||||
callsign_listener : nil,
|
||||
FREEZE_DIST : 400.0,
|
||||
comms : nil,
|
||||
message : nil,
|
||||
loopid : 0 };
|
||||
|
||||
var carriers = props.globals.getNode("/ai/models").getChildren("carrier");
|
||||
|
||||
foreach(var c; carriers) {
|
||||
if (c.getNode("name").getValue() == carrier_name) {
|
||||
|
||||
obj.carrier = c;
|
||||
printf("Initializing carrier_name=%s player.getPath()=%s",
|
||||
carrier_name, player.getPath());
|
||||
obj.callsign_listener =
|
||||
setlistener(callsign,
|
||||
func { print("Callsign update");
|
||||
obj.start(); });
|
||||
MPCarriersNW.Manager_instances[player.getIndex()] = obj;
|
||||
obj.start();
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
printf("Failed to find carrier_name=%s. The relevant carrier AI scenario must be active", carrier_name);
|
||||
|
||||
return nil;
|
||||
}
|
||||
##################################################
|
||||
Manager.is_valid = func {
|
||||
return ((me.rplayer.getNode("valid") != nil) and
|
||||
me.rplayer.getNode("valid").getValue() and
|
||||
(me.rplayer.getNode("callsign") != nil));
|
||||
}
|
||||
##################################################
|
||||
Manager.is_active = func {
|
||||
var a = me.is_valid();
|
||||
var b = (me.rplayer.getNode("callsign") != nil);
|
||||
# FIXME: Sometimes the cmp() call here gets an invalid argument.
|
||||
var c = (cmp(me.rplayer.getNode("callsign").getValue(), me.accept_callsign.getValue()) == 0);
|
||||
if (g_auto_attach.getValue()) {
|
||||
# Always attach, regardless of callsign.
|
||||
c = 1;
|
||||
}
|
||||
return (a and b and c);
|
||||
}
|
||||
##################################################
|
||||
Manager.set_property = func (path, value) {
|
||||
if (!me.is_valid() or !me.is_active()) return;
|
||||
me.carrier.getNode(path).setValue(value);
|
||||
}
|
||||
##################################################
|
||||
Manager.update = func {
|
||||
var aircraft_pos = geo.aircraft_position();
|
||||
var carrier_pos = geo.Coord.new(aircraft_pos);
|
||||
|
||||
if (!me.is_valid()) {
|
||||
# This carrier player is not valid anymore.
|
||||
if (0) printf("calling me.die() because !me.is_valid()");
|
||||
me.die();
|
||||
return;
|
||||
}
|
||||
if (!me.is_active()) {
|
||||
# This carrier player is not the chosen one. Go idle.
|
||||
if (0) printf("calling me.stop(). me.is_valid()=%s me.rplayer.getNode('callsign').getValue()=%s me.accept_callsign.getValue()=%s",
|
||||
me.is_valid(),
|
||||
me.rplayer.getNode('callsign').getValue(),
|
||||
me.accept_callsign.getValue()
|
||||
);
|
||||
me.stop();
|
||||
return;
|
||||
}
|
||||
|
||||
# LSO comms
|
||||
var message = me.rplayer.getNode(mp_message).getValue();
|
||||
if (message != ""){
|
||||
|
||||
if (message != me.message){
|
||||
setprop("/sim/messages/approach", message);
|
||||
}
|
||||
|
||||
me.message = message;
|
||||
}
|
||||
|
||||
# carrier_pos.set_latlon(me.carrier.getNode(lat).getValue(),
|
||||
# me.carrier.getNode(lon).getValue(),
|
||||
# me.carrier.getNode(alt).getValue());
|
||||
|
||||
carrier_pos.set_xyz(me.carrier.getNode(x).getValue(),
|
||||
me.carrier.getNode(y).getValue(),
|
||||
me.carrier.getNode(z).getValue());
|
||||
|
||||
# Compute the position and orientation error.
|
||||
var rplayer_pos = geo.Coord.new(carrier_pos);
|
||||
# rplayer_pos.set_latlon(me.rplayer.getNode(lat).getValue(),
|
||||
# me.rplayer.getNode(lon).getValue(),
|
||||
# me.rplayer.getNode(alt).getValue());
|
||||
|
||||
rplayer_pos.set_xyz(me.rplayer.getNode(x).getValue(),
|
||||
me.rplayer.getNode(y).getValue(),
|
||||
me.rplayer.getNode(z).getValue());
|
||||
|
||||
var master_course = normalize_course(me.rplayer.getNode(mp_heading).getValue());
|
||||
var master_speed = me.rplayer.getNode(mp_speed).getValue();
|
||||
var bearing_to_master = normalize_course(carrier_pos.course_to(rplayer_pos));
|
||||
var distance_to_master = carrier_pos.direct_distance_to(rplayer_pos);
|
||||
var v = D2R * normalize_course(bearing_to_master - master_course);
|
||||
var cross_track_error = distance_to_master * math.sin(v);
|
||||
var along_track_error = distance_to_master * math.cos(v);
|
||||
var master_tgt_hdg = as_num(me.rplayer.getNode(mp_tgt_hdg).getValue(),
|
||||
me.rplayer.getNode(mp_heading).getValue());
|
||||
var master_tgt_spd = as_num(me.rplayer.getNode(mp_tgt_spd).getValue(),
|
||||
me.rplayer.getNode(mp_speed).getValue());
|
||||
var master_turn_radius = as_num(me.rplayer.getNode(mp_turn_radius).getValue());
|
||||
|
||||
var diff = master_course - master_tgt_hdg;
|
||||
|
||||
if (diff > 180)
|
||||
diff -= 360;
|
||||
elsif (diff < -180)
|
||||
diff += 360;
|
||||
|
||||
me.carrier.getNode("mp-control/ai-mp-course-delta", 1).setValue(diff);
|
||||
|
||||
if ( diff < -1.0 or diff > 1.0){
|
||||
me.carrier.getNode("mp-control/ai-mp-course-delta-type", 1).setValue("major");
|
||||
# major course alteration - we'll just use target heading from
|
||||
# master until it's nearly complete
|
||||
# print("major turn" , diff);
|
||||
var set_course = master_tgt_hdg ;
|
||||
var correction = 0;
|
||||
|
||||
if (diff < 0){
|
||||
correction = -cross_track_error * M2FT;
|
||||
# print("stbd turn ", correction);
|
||||
} elsif (diff > 0){
|
||||
correction = cross_track_error * M2FT;
|
||||
# print("port turn ", correction);
|
||||
} else {
|
||||
correction = 0;
|
||||
# print("no turn ", correction);
|
||||
}
|
||||
|
||||
me.carrier.getNode("controls/turn-radius-ft", 1).setValue(master_turn_radius + correction);
|
||||
|
||||
} else {
|
||||
# Use Controller.
|
||||
me.carrier.getNode("mp-control/ai-mp-course-delta-type", 1).setValue("minor");
|
||||
me.carrier.getNode("controls/turn-radius-ft", 1).setValue(master_turn_radius);
|
||||
var set_course =
|
||||
normalize_course(180.0/math.pi *
|
||||
(math.abs(cross_track_error) < cross_course_fadeout ?
|
||||
math.pow
|
||||
(math.abs(cross_track_error/cross_course_fadeout),2) :
|
||||
1.0) *
|
||||
math.atan2(cross_course_gain * cross_track_error,
|
||||
along_track_error) +
|
||||
master_course);
|
||||
# Limit the course to +/-cross_course_limit degrees off the master's course.
|
||||
if (set_course - master_course > cross_course_limit) {
|
||||
set_course = normalize_course(master_course + cross_course_limit);
|
||||
} else if (set_course - master_course < -cross_course_limit) {
|
||||
set_course = normalize_course(master_course - cross_course_limit);
|
||||
}
|
||||
|
||||
}
|
||||
var spd_diff = master_speed - master_tgt_spd;
|
||||
|
||||
me.carrier.getNode("mp-control/ai-mp-speed-delta", 1).setValue(spd_diff);
|
||||
if ( spd_diff < -1 or spd_diff > 1){
|
||||
# major speed alteration - we'll just use target speed from
|
||||
# master until it's nearly complete
|
||||
me.carrier.getNode("mp-control/ai-mp-speed-delta-type", 1).setValue("major");
|
||||
var set_speed = master_tgt_spd +
|
||||
0.01 * along_track_error;
|
||||
if (set_speed > master_tgt_spd + 5.0) set_speed = master_tgt_spd + 5.0;
|
||||
if (set_speed < master_tgt_spd - 5.0) set_speed = master_tgt_spd - 5.0;
|
||||
} else {
|
||||
me.carrier.getNode("mp-control/ai-mp-speed-delta-type", 1).setValue("minor");
|
||||
var set_speed = master_speed +
|
||||
0.01 * along_track_error;
|
||||
if (set_speed > master_speed + 5.0) set_speed = master_speed + 5.0;
|
||||
if (set_speed < master_speed - 5.0) set_speed = master_speed - 5.0;
|
||||
}
|
||||
|
||||
# publish controller settings to /ai/models/carrier[]/mp-control/.
|
||||
#
|
||||
me.carrier.getNode("mp-control/bearing-to-master-rel-deg", 1).setValue(v);
|
||||
me.carrier.getNode("mp-control/bearing-to-master-deg", 1).setValue(bearing_to_master);
|
||||
me.carrier.getNode("mp-control/distance-to-master-m", 1).setValue(distance_to_master);
|
||||
me.carrier.getNode("mp-control/cross-track-error-m", 1).setValue(cross_track_error);
|
||||
me.carrier.getNode("mp-control/along-track-error-m", 1).setValue(along_track_error);
|
||||
me.carrier.getNode("mp-control/freeze-distance", 1).setValue(me.FREEZE_DIST);
|
||||
|
||||
me.carrier.getNode("mp-control/master-speed-kts", 1).setValue(master_speed);
|
||||
me.carrier.getNode("mp-control/master-course-deg", 1).setValue(master_course);
|
||||
|
||||
me.carrier.getNode("mp-control/set-speed-kts", 1).setValue(set_speed);
|
||||
me.carrier.getNode("mp-control/set-course-deg", 1).setValue(set_course);
|
||||
me.carrier.getNode("mp-control/tgt-hdg-deg", 1).setValue(sprintf ( "%03.1d", master_tgt_hdg));
|
||||
me.carrier.getNode("mp-control/tgt-spd-kts", 1).setValue(master_tgt_spd);
|
||||
me.carrier.getNode("mp-control/turn-radius-ft", 1).setValue(master_turn_radius);
|
||||
|
||||
# We latch ai and mp carrier positions if user aircraft is more than
|
||||
# me.FREEZE_DIST away from ai carrier, or if we are in replay mode.
|
||||
#
|
||||
var distance_aircraft_carrier = aircraft_pos.direct_distance_to(carrier_pos);
|
||||
var in_replay = props.globals.getValue("/sim/replay/replay-state");
|
||||
var do_latch = (distance_aircraft_carrier > me.FREEZE_DIST or in_replay);
|
||||
var distance_ai_to_mpcarrier = rplayer_pos.direct_distance_to(carrier_pos);
|
||||
|
||||
me.carrier.getNode("mp-control/aircraft-ai-distance", 1).setValue(distance_aircraft_carrier);
|
||||
me.carrier.getNode("mp-control/ai-mp-latched", do_latch);
|
||||
|
||||
if (do_latch) {
|
||||
# Latch the local AI carrier to the remote player's
|
||||
# location only when the local player is far enough away not
|
||||
# to suffer side effects.
|
||||
me.carrier.getNode(lat).setValue(me.rplayer.getNode(lat).getValue());
|
||||
me.carrier.getNode(lon).setValue(me.rplayer.getNode(lon).getValue());
|
||||
me.carrier.getNode(alt).setValue(me.rplayer.getNode(alt).getValue());
|
||||
|
||||
me.carrier.getNode(c_heading).
|
||||
setValue(master_course);
|
||||
me.carrier.getNode(c_pitch).
|
||||
setValue(me.rplayer.getNode(mp_pitch).getValue());
|
||||
me.carrier.getNode(c_roll).
|
||||
setValue(me.rplayer.getNode(mp_roll).getValue());
|
||||
|
||||
# Accelerate the AI carrier to the right speed.
|
||||
me.carrier.getNode(c_control_speed).
|
||||
setValue(master_speed);
|
||||
} else {
|
||||
# Player on deck. Use the speed controller.
|
||||
me.carrier.getNode(c_control_speed).
|
||||
setValue(set_speed);
|
||||
}
|
||||
|
||||
# Always set these commands.
|
||||
me.carrier.getNode(c_control_course).
|
||||
setValue(set_course);
|
||||
|
||||
# Switch off AI control for the carrier if available.
|
||||
if (me.carrier.getNode(c_control_mp_ctrl) != nil)
|
||||
me.carrier.getNode(c_control_mp_ctrl).setBoolValue(1);
|
||||
}
|
||||
##################################################
|
||||
Manager.stop = func {
|
||||
me.loopid += 1;
|
||||
printf("Manager.stop() me.carrier_name=%s me.rplayer.getPath()=%s",
|
||||
me.carrier_name, me.rplayer.getPath());
|
||||
# Reenable AI control.
|
||||
if (me.carrier.getNode(c_control_mp_ctrl) != nil)
|
||||
me.carrier.getNode(c_control_mp_ctrl).setBoolValue(0);
|
||||
}
|
||||
##################################################
|
||||
Manager.die = func {
|
||||
if (me.callsign_listener == nil) return;
|
||||
|
||||
delete(MPCarriersNW.Manager_instances, me.rplayer.getIndex());
|
||||
me.loopid += 1;
|
||||
|
||||
# Delay the reactivation of AI control.
|
||||
settimer(func {
|
||||
if (me.carrier.getNode(c_control_mp_ctrl) != nil)
|
||||
me.carrier.getNode(c_control_mp_ctrl).setBoolValue(0);
|
||||
}, 5.0);
|
||||
|
||||
removelistener(me.callsign_listener);
|
||||
me.callsign_listener = nil;
|
||||
printf("Manager.die(): me.carrier_name=%s me.rplayer.getPath()=%s",
|
||||
me.carrier_name, me.rplayer.getPath());
|
||||
}
|
||||
##################################################
|
||||
Manager.start = func {
|
||||
me.loopid += 1;
|
||||
printf("Manager.start(): me.carrier_name=%s me.rplayer.getPath()=%s",
|
||||
me.carrier_name, me.rplayer.getPath());
|
||||
me._loop_(me.loopid);
|
||||
}
|
||||
##################################################
|
||||
Manager._loop_ = func(id) {
|
||||
id == me.loopid or return;
|
||||
me.update();
|
||||
settimer(func { me._loop_(id); }, 0);
|
||||
}
|
||||
###############################################################################
|
||||
|
||||
###############################################################################
|
||||
|
||||
#################################################################
|
||||
var normalize_course = func(c) {
|
||||
while (c < 0) c += 360;
|
||||
while (c >= 360) c -= 360;
|
||||
return c;
|
||||
}
|
||||
|
||||
#################################################################
|
||||
# Return a hash containing all nearby carrier players
|
||||
# indexed on MP-carrier type
|
||||
var find_carrier_players = func {
|
||||
var res = {};
|
||||
foreach (var c; keys(MPCarriersNW.Manager_instances)) {
|
||||
if (MPCarriersNW.Manager_instances[c].is_valid()) {
|
||||
var type = MPCarriersNW.Manager_instances[c].carrier_name;
|
||||
var pilot = MPCarriersNW.Manager_instances[c].rplayer;
|
||||
|
||||
if (!contains(res, type)) {
|
||||
res[type] = [pilot.getNode("callsign").getValue()];
|
||||
} else {
|
||||
append(res[type], pilot.getNode("callsign").getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
# debug.dump(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# MPCarrier selection dialog.
|
||||
var CARRIER_DLG = 0;
|
||||
var carrier_dialog = {};
|
||||
############################################################
|
||||
carrier_dialog.init = func (x = nil, y = nil) {
|
||||
me.x = x;
|
||||
me.y = y;
|
||||
me.bg = [0, 0, 0, 0.3]; # background color
|
||||
me.fg = [[1.0, 1.0, 1.0, 1.0]];
|
||||
#
|
||||
# "private"
|
||||
me.title = "MPCarrier";
|
||||
me.basenode = props.globals.getNode("/sim/mp-carriers", 1);
|
||||
me.dialog = nil;
|
||||
me.namenode = props.Node.new({"dialog-name" : me.title });
|
||||
me.listeners = [];
|
||||
me.players = {};
|
||||
me.carriers = { "Nimitz" : "nimitz-callsign",
|
||||
"Eisenhower" : "eisenhower-callsign",
|
||||
"Truman" : "truman-callsign",
|
||||
"Foch" : "foch-callsign",
|
||||
"Clemenceau" : "clemenceau-callsign",
|
||||
"Vinson" : "vinson-callsign"
|
||||
"Kuznetsov" : "kuznetsov-callsign",
|
||||
"Liaoning" : "liaoning-callsign",
|
||||
"Sanantonio" : "sanantonio-callsign"};
|
||||
}
|
||||
############################################################
|
||||
carrier_dialog.create = func {
|
||||
if (me.dialog != nil)
|
||||
me.close();
|
||||
|
||||
me.dialog = gui.Widget.new();
|
||||
gui.dialog[me.title] = me.dialog;
|
||||
me.dialog.set("name", me.title);
|
||||
if (me.x != nil)
|
||||
me.dialog.set("x", me.x);
|
||||
if (me.y != nil)
|
||||
me.dialog.set("y", me.y);
|
||||
|
||||
me.dialog.set("layout", "vbox");
|
||||
me.dialog.set("default-padding", 0);
|
||||
var titlebar = me.dialog.addChild("group");
|
||||
titlebar.set("layout", "hbox");
|
||||
titlebar.addChild("empty").set("stretch", 1);
|
||||
titlebar.addChild("text").set("label", "MPCarriers online");
|
||||
var w = titlebar.addChild("button");
|
||||
w.set("pref-width", 16);
|
||||
w.set("pref-height", 16);
|
||||
w.set("legend", "");
|
||||
w.set("default", 0);
|
||||
w.set("key", "esc");
|
||||
w.setBinding("nasal", "MPCarriers.carrier_dialog.destroy(); ");
|
||||
w.setBinding("dialog-close");
|
||||
me.dialog.addChild("hrule");
|
||||
|
||||
var content = me.dialog.addChild("group");
|
||||
content.set("layout", "vbox");
|
||||
content.set("halign", "center");
|
||||
content.set("default-padding", 5);
|
||||
|
||||
# Generate the dialog contents.
|
||||
var players_old = me.players;
|
||||
me.players = find_carrier_players();
|
||||
foreach (var type; keys(me.carriers)) {
|
||||
var selected = me.basenode.getNode(me.carriers[type], 1).getValue();
|
||||
var tmpbase = me.basenode.getNode(type, 1);
|
||||
|
||||
if (contains(me.players, type)) {
|
||||
var i = 0;
|
||||
foreach (var p; me.players[type]) {
|
||||
var tmp = tmpbase.getNode("b[" ~ i ~ "]", 1);
|
||||
tmp.setBoolValue(streq(selected, p));
|
||||
var w = content.addChild("checkbox");
|
||||
w.node.setValues({"label" : p ~ " (" ~ type ~ ")",
|
||||
"halign" : "left",
|
||||
"property" : tmp.getPath()});
|
||||
w.setBinding
|
||||
("nasal",
|
||||
"MPCarriers.carrier_dialog.select_action(" ~
|
||||
"\"" ~ type ~ "\", " ~ i ~ ");");
|
||||
i = i + 1;
|
||||
}
|
||||
if (size(me.players[type]) == 1
|
||||
and (
|
||||
!contains(players_old, type)
|
||||
or size(players_old[type]) == 0
|
||||
or g_auto_attach.getValue()
|
||||
)) {
|
||||
# Carrier has just appeared, and there is no other carrier of
|
||||
# the same type, so attach our AI carrier to it.
|
||||
printf("carrier_dialog.create(): auto-selecting type=%s", type);
|
||||
me.select_action(type, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
me.dialog.addChild("hrule");
|
||||
|
||||
# Display the dialog.
|
||||
fgcommand("dialog-new", me.dialog.prop());
|
||||
fgcommand("dialog-show", me.namenode);
|
||||
}
|
||||
############################################################
|
||||
carrier_dialog.close = func {
|
||||
if (me.dialog != nil) {
|
||||
me.x = me.dialog.prop().getNode("x", 1).getValue();
|
||||
me.y = me.dialog.prop().getNode("y", 1).getValue();
|
||||
}
|
||||
fgcommand("dialog-close", me.namenode);
|
||||
}
|
||||
############################################################
|
||||
carrier_dialog.destroy = func {
|
||||
CARRIER_DLG = 0;
|
||||
me.close();
|
||||
foreach(var l; me.listeners)
|
||||
removelistener(l);
|
||||
delete(gui.dialog, "\"" ~ me.title ~ "\"");
|
||||
}
|
||||
############################################################
|
||||
carrier_dialog.show = func {
|
||||
# print("Showing MPCarriers dialog!");
|
||||
if (!CARRIER_DLG) {
|
||||
CARRIER_DLG = int(getprop("/sim/time/elapsed-sec"));
|
||||
me.init();
|
||||
me.create();
|
||||
me._update_(CARRIER_DLG);
|
||||
}
|
||||
}
|
||||
############################################################
|
||||
carrier_dialog._redraw_ = func {
|
||||
if (me.dialog != nil) {
|
||||
me.close();
|
||||
me.create();
|
||||
}
|
||||
}
|
||||
############################################################
|
||||
carrier_dialog._update_ = func (id) {
|
||||
if (CARRIER_DLG != id) return;
|
||||
me._redraw_();
|
||||
settimer(func { me._update_(id); }, 4.1);
|
||||
}
|
||||
############################################################
|
||||
carrier_dialog.select_action = func (type, n) {
|
||||
var base = me.basenode.getNode(type);
|
||||
var selected = me.basenode.getNode(me.carriers[type]).getValue();
|
||||
var bs = base.getChildren();
|
||||
# Assumption: There are two true b:s or none. The one not matching selected
|
||||
# is the new selection.
|
||||
var i = 0;
|
||||
me.basenode.getNode(me.carriers[type], 1).setValue("");
|
||||
foreach (var b; bs) {
|
||||
if (!b.getValue() and (i == n)) {
|
||||
b.setValue(1);
|
||||
me.basenode.getNode(me.carriers[type]).setValue
|
||||
(me.players[type][i]);
|
||||
} else {
|
||||
b.setValue(0);
|
||||
}
|
||||
i = i + 1;
|
||||
}
|
||||
me._redraw_();
|
||||
}
|
||||
###############################################################################
|
||||
|
||||
var as_num = func (val, default=0.0) {
|
||||
return (typeof(val) == "scalar") ? val : default;
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Overall initialization. Should only take place when the MPCarrier module is
|
||||
# being loaded.
|
||||
|
||||
# Load the MPCarrier MP network.
|
||||
if (!contains(globals, "MPCarriersNW")) {
|
||||
var base = "Aircraft/MPCarrier/Systems/mp-network.nas";
|
||||
io.load_nasal(resolvepath(base), "MPCarriersNW");
|
||||
MPCarriersNW.mp_network_init(0);
|
||||
|
||||
}
|
1008
Aircraft/Instruments-3d/FG1000/Architecture.svg
Normal file
After Width: | Height: | Size: 47 KiB |
|
@ -15,7 +15,7 @@
|
|||
viewBox="0 0 744.09448819 1052.3622047"
|
||||
id="svg4136"
|
||||
version="1.1"
|
||||
inkscape:version="0.91 r13725"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="EIS-C182T.svg">
|
||||
<defs
|
||||
id="defs4138">
|
||||
|
@ -39,16 +39,16 @@
|
|||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7031078"
|
||||
inkscape:cx="111.80088"
|
||||
inkscape:cy="968.64828"
|
||||
inkscape:zoom="3.3515539"
|
||||
inkscape:cx="24.554255"
|
||||
inkscape:cy="351.5442"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="EISGroup"
|
||||
inkscape:current-layer="g5014"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2495"
|
||||
inkscape:window-height="1416"
|
||||
inkscape:window-x="65"
|
||||
inkscape:window-y="24"
|
||||
inkscape:window-width="2488"
|
||||
inkscape:window-height="1376"
|
||||
inkscape:window-x="72"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
showguides="false"
|
||||
inkscape:snap-object-midpoints="false"
|
||||
|
@ -82,51 +82,50 @@
|
|||
style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.51325756;stroke-opacity:1"
|
||||
ry="0" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4717"
|
||||
y="305.3992"
|
||||
x="13.168611"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:FreeMono;-inkscape-font-specification:FreeMono;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeMono;-inkscape-font-specification:FreeMono;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="305.3992"
|
||||
x="13.168611"
|
||||
id="tspan4719"
|
||||
sodipodi:role="line">0</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:FreeMono;-inkscape-font-specification:FreeMono;text-align:start;letter-spacing:-3px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeMono;-inkscape-font-specification:FreeMono;text-align:start;letter-spacing:-3px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="112.65208"
|
||||
y="305.96732"
|
||||
id="text4725"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
id="text4725"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4727"
|
||||
x="112.65208"
|
||||
y="305.96732">2700</tspan></text>
|
||||
y="305.96732"
|
||||
style="font-size:15px;line-height:1.25">2700</tspan></text>
|
||||
<text
|
||||
inkscape:label="#text4729"
|
||||
sodipodi:linespacing="125%"
|
||||
id="EISRPMDisplay"
|
||||
y="310.77417"
|
||||
x="50.675224"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:125%;font-family:FreeMono;-inkscape-font-specification:FreeMono;text-align:start;letter-spacing:-3px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeMono;-inkscape-font-specification:FreeMono;text-align:start;letter-spacing:-3px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:25px;font-family:FreeSans;-inkscape-font-specification:FreeSans"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:25px;line-height:1.25;font-family:FreeSans;-inkscape-font-specification:FreeSans"
|
||||
y="310.77417"
|
||||
x="50.675224"
|
||||
id="tspan4731"
|
||||
sodipodi:role="line">2200</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4733"
|
||||
y="281.35699"
|
||||
x="57.474468"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.08005524px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="281.35699"
|
||||
x="57.474468"
|
||||
id="tspan4735"
|
||||
sodipodi:role="line">RPM</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15.08005524px;line-height:1.25">RPM</tspan></text>
|
||||
<g
|
||||
transform="translate(-0.54554609,-200.06553)"
|
||||
id="g4866">
|
||||
|
@ -150,102 +149,104 @@
|
|||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4799"
|
||||
d="m 20.948572,531.22649 0,-11.60383"
|
||||
d="M 20.948572,531.22649 V 519.62266"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 45.19784,531.30108 0,-11.60383"
|
||||
d="M 45.19784,531.30108 V 519.69725"
|
||||
id="path4813"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4815"
|
||||
d="m 33.073207,531.30108 0,-11.60383"
|
||||
d="M 33.073207,531.30108 V 519.69725"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 57.322475,531.30108 0,-11.60383"
|
||||
d="M 57.322475,531.30108 V 519.69725"
|
||||
id="path4819"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4821"
|
||||
d="m 69.447103,531.30108 0,-11.60383"
|
||||
d="M 69.447103,531.30108 V 519.69725"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 81.571737,531.30108 0,-11.60383"
|
||||
d="M 81.571737,531.30108 V 519.69725"
|
||||
id="path4823"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4825"
|
||||
d="m 93.696375,531.52486 0,-11.60383"
|
||||
d="M 93.696375,531.52486 V 519.92103"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 105.82101,531.22649 0,-11.60383"
|
||||
d="M 105.82101,531.22649 V 519.62266"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4829"
|
||||
d="m 130.07028,531.30108 0,-11.60383"
|
||||
d="M 130.07028,531.30108 V 519.69725"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6041"
|
||||
d="m 117.94564,531.30108 0,-11.60383"
|
||||
d="M 117.94564,531.30108 V 519.69725"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6043"
|
||||
d="m 142.19491,531.30108 0,-13.92964"
|
||||
d="M 142.19491,531.30108 V 517.37144"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.09564364px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.09564364px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 8.8239383,531.30108 0,-13.92964"
|
||||
d="M 8.8239383,531.30108 V 517.37144"
|
||||
id="path6045"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 4.5714659,539.5634 0.043695,9.19243 3.48115,3.34929 3.5075231,-3.37566 0,-9.18946 z"
|
||||
d="m 4.5714659,539.5634 0.043695,9.19243 3.48115,3.34929 3.5075231,-3.37566 V 539.54 Z"
|
||||
id="EISFuelFlowPointer"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccc"
|
||||
inkscape:label="#path4864" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="30.433645"
|
||||
y="528.42615"
|
||||
id="text4846"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
id="text4846"><tspan
|
||||
sodipodi:role="line"
|
||||
x="30.433645"
|
||||
y="528.42615"
|
||||
id="tspan4850">FFLOW GPH</tspan></text>
|
||||
id="tspan4850"
|
||||
style="font-size:15px;line-height:1.25">FFLOW GPH</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="3.5804288"
|
||||
y="569.60107"
|
||||
id="text4854"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4856"
|
||||
x="3.5804288"
|
||||
y="569.60107">0</tspan></text>
|
||||
y="569.60107"
|
||||
style="font-size:15px;line-height:1.25">0</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="130.08891"
|
||||
y="569.60101"
|
||||
id="text4858"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4860"
|
||||
x="130.08891"
|
||||
y="569.60101">22</tspan></text>
|
||||
y="569.60101"
|
||||
style="font-size:15px;line-height:1.25">22</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(-0.54554609,-131.14227)"
|
||||
|
@ -270,22 +271,22 @@
|
|||
id="g4892">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 8.0559648,519.47505 0,12.23313 134.8260452,0.0746 -0.0746,-12.03652"
|
||||
d="m 8.0559648,519.47505 v 12.23313 l 134.8260452,0.0746 -0.0746,-12.03652"
|
||||
id="path4894"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
</g>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4916"
|
||||
y="528.42615"
|
||||
x="41.193565"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4918"
|
||||
y="528.42615"
|
||||
x="41.193565"
|
||||
sodipodi:role="line">OIL PRES</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">OIL PRES</tspan></text>
|
||||
<rect
|
||||
style="opacity:1;fill:#aa0000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4932"
|
||||
|
@ -298,7 +299,7 @@
|
|||
sodipodi:nodetypes="cccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="EISOilPressurePointer"
|
||||
d="m 4.5714659,539.5634 0.043695,9.19243 3.48115,3.34929 3.5075231,-3.37566 0,-9.18946 z"
|
||||
d="m 4.5714659,539.5634 0.043695,9.19243 3.48115,3.34929 3.5075231,-3.37566 V 539.54 Z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
|
@ -326,30 +327,30 @@
|
|||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4942"
|
||||
d="m 8.0559648,519.47505 0,12.23313 134.8260452,0.0746 -0.0746,-12.03652"
|
||||
d="m 8.0559648,519.47505 v 12.23313 l 134.8260452,0.0746 -0.0746,-12.03652"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="41.193565"
|
||||
y="528.42615"
|
||||
id="text4944"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
id="text4944"><tspan
|
||||
sodipodi:role="line"
|
||||
x="41.193565"
|
||||
y="528.42615"
|
||||
id="tspan4946">OIL TEMP</tspan></text>
|
||||
id="tspan4946"
|
||||
style="font-size:15px;line-height:1.25">OIL TEMP</tspan></text>
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 4.5714659,539.5634 0.043695,9.19243 3.48115,3.34929 3.5075231,-3.37566 0,-9.18946 z"
|
||||
d="m 4.5714659,539.5634 0.043695,9.19243 3.48115,3.34929 3.5075231,-3.37566 V 539.54 Z"
|
||||
id="EISOilTempPointer"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccc"
|
||||
inkscape:label="#path4864" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(-0.54554609,-35.067436)"
|
||||
transform="translate(-0.54554609,-4.8575682)"
|
||||
id="g4952">
|
||||
<g
|
||||
transform="translate(0,21.780942)"
|
||||
|
@ -357,93 +358,94 @@
|
|||
id="g4956">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 8.0559648,519.47505 0,12.23313 134.8260452,0.0746 -0.0746,-12.03652"
|
||||
d="m 8.0559648,519.47505 v 12.23313 l 134.8260452,0.0746 -0.0746,-12.03652"
|
||||
id="path4958"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 20.684108,531.22649 0,-11.60383"
|
||||
d="M 20.684108,531.22649 V 519.62266"
|
||||
id="path4960"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4962"
|
||||
d="m 34.931231,531.30108 0,-11.60383"
|
||||
d="M 34.931231,531.30108 V 519.69725"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 34.931231,531.30108 0,-11.60383"
|
||||
d="M 34.931231,531.30108 V 519.69725"
|
||||
id="path4964"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4966"
|
||||
d="m 48.656208,531.30108 0,-11.60383"
|
||||
d="M 48.656208,531.30108 V 519.69725"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 62.082816,531.30108 0,-11.60383"
|
||||
d="M 62.082816,531.30108 V 519.69725"
|
||||
id="path4968"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4970"
|
||||
d="m 75.509424,531.30108 0,-11.60383"
|
||||
d="M 75.509424,531.30108 V 519.69725"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 89.681955,531.52486 0,-11.60383"
|
||||
d="M 89.681955,531.52486 V 519.92103"
|
||||
id="path4972"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4974"
|
||||
d="m 102.95938,531.22649 0,-11.60383"
|
||||
d="M 102.95938,531.22649 V 519.62266"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 116.53517,531.30108 0,-11.60383"
|
||||
d="M 116.53517,531.30108 V 519.69725"
|
||||
id="path4976"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4978"
|
||||
d="m 129.66341,531.30108 0,-11.60383"
|
||||
d="M 129.66341,531.30108 V 519.69725"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4980"
|
||||
y="528.42615"
|
||||
x="62.060768"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4982"
|
||||
y="528.42615"
|
||||
x="62.060768"
|
||||
sodipodi:role="line">EGT</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">EGT</tspan></text>
|
||||
<path
|
||||
inkscape:label="#path4864"
|
||||
sodipodi:nodetypes="cccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="EISEGTPointer"
|
||||
d="m 4.5714659,539.5634 0.043695,9.19243 3.48115,3.34929 3.5075231,-3.37566 0,-9.18946 z"
|
||||
d="m 4.5714659,539.5634 0.043695,9.19243 3.48115,3.34929 3.5075231,-3.37566 V 539.54 Z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<text
|
||||
inkscape:label="#text4994"
|
||||
id="EISEGTCylinder"
|
||||
y="550.22003"
|
||||
x="3.9031074"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="550.22003"
|
||||
x="3.9031074"
|
||||
id="tspan4996"
|
||||
sodipodi:role="line">1</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">1</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
transform="translate(0,271.9634)"
|
||||
transform="translate(0,298.25717)"
|
||||
id="g5014">
|
||||
<g
|
||||
transform="translate(-0.54554609,-237.36166)"
|
||||
|
@ -451,34 +453,34 @@
|
|||
id="g5018">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 8.0559648,519.47505 0,12.23313 134.8260452,0.0746 -0.0746,-12.03652"
|
||||
d="m 8.0559648,519.47505 v 12.23313 l 134.8260452,0.0746 -0.0746,-12.03652"
|
||||
id="path5020"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5028"
|
||||
d="m 41.859206,542.01976 0,-22.4943"
|
||||
d="m 41.859206,542.01976 v -22.4943"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.39230883px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.37371683px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 75.518097,541.88715 0,-21.89756"
|
||||
d="M 75.518097,541.88715 V 519.98959"
|
||||
id="path5034"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.39230883px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 8.2003174,542.28497 0,-22.4943"
|
||||
d="m 8.2003174,542.28497 v -22.4943"
|
||||
id="path5056"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5058"
|
||||
d="m 142.83588,542.15236 0,-21.89756"
|
||||
d="M 142.83588,542.15236 V 520.2548"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.37371683px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6033"
|
||||
d="m 109.17699,541.88715 0,-21.89756"
|
||||
d="M 109.17699,541.88715 V 519.98959"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.37371683px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<rect
|
||||
|
@ -489,23 +491,23 @@
|
|||
id="rect5016"
|
||||
style="opacity:1;fill:#00af00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text5042"
|
||||
y="269.13437"
|
||||
x="22.578058"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan5044"
|
||||
y="269.13437"
|
||||
x="22.578058"
|
||||
sodipodi:role="line">FUEL QTY GAL</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">FUEL QTY GAL</tspan></text>
|
||||
<text
|
||||
id="text5046"
|
||||
y="320.65424"
|
||||
x="3.034883"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-size:15px"
|
||||
style="font-size:15px;line-height:1.25"
|
||||
y="320.65424"
|
||||
x="3.034883"
|
||||
id="tspan5048"
|
||||
|
@ -514,9 +516,9 @@
|
|||
id="text5050"
|
||||
y="320.97668"
|
||||
x="136.70422"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-size:15px"
|
||||
style="font-size:15px;line-height:1.25"
|
||||
y="320.97668"
|
||||
x="136.70422"
|
||||
id="tspan5052"
|
||||
|
@ -544,11 +546,11 @@
|
|||
sodipodi:nodetypes="cccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="RightFuelTriangle"
|
||||
d="m 4.0259199,259.63213 -2.9100082,0 6.4348532,-12.49326 7.3051411,12.49326 -3.797618,0 z"
|
||||
d="M 4.0259199,259.63213 H 1.1159117 l 6.4348532,-12.49326 7.3051411,12.49326 h -3.797618 z"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="3.8553977"
|
||||
y="259.8103"
|
||||
id="RightFuelLabel"
|
||||
|
@ -556,15 +558,16 @@
|
|||
sodipodi:role="line"
|
||||
id="tspan5078"
|
||||
x="3.8553977"
|
||||
y="259.8103">R</tspan></text>
|
||||
y="259.8103"
|
||||
style="font-size:10px;line-height:1.25">R</tspan></text>
|
||||
</g>
|
||||
<text
|
||||
id="text5066"
|
||||
y="320.65424"
|
||||
x="32.020535"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeSans;-inkscape-font-specification:FreeSans"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:1.25;font-family:FreeSans;-inkscape-font-specification:FreeSans"
|
||||
y="320.65424"
|
||||
x="32.020535"
|
||||
id="tspan5068"
|
||||
|
@ -573,19 +576,20 @@
|
|||
id="text5070"
|
||||
y="320.65424"
|
||||
x="99.73645"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="320.65424"
|
||||
x="99.73645"
|
||||
id="tspan5072"
|
||||
sodipodi:role="line">30</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">30</tspan></text>
|
||||
<g
|
||||
inkscape:label="#g4277"
|
||||
id="EISLeftFuelPointer"
|
||||
transform="translate(0,48.037419)">
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 4.0259199,232.43184 -2.9100082,0 6.4348532,12.49326 7.3051411,-12.49326 -3.797618,0 z"
|
||||
d="M 4.0259199,232.43184 H 1.1159117 l 6.4348532,12.49326 7.3051411,-12.49326 h -3.797618 z"
|
||||
id="LeftFuelTriangle"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccc"
|
||||
|
@ -595,66 +599,72 @@
|
|||
id="LeftFuelLabel"
|
||||
y="239.81961"
|
||||
x="3.8553977"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="239.81961"
|
||||
x="3.8553977"
|
||||
id="tspan5082"
|
||||
sodipodi:role="line">L</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:10px;line-height:1.25">L</tspan></text>
|
||||
</g>
|
||||
<text
|
||||
id="text5100"
|
||||
y="341.14606"
|
||||
x="26.265755"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="341.14606"
|
||||
x="26.265755"
|
||||
id="tspan5102"
|
||||
sodipodi:role="line">ELECTRICAL</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">ELECTRICAL</tspan></text>
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5108"
|
||||
d="m 120.34531,335.65557 16.45634,0.21098"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
d="m 120.34531,335.76106 h 16.45634"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 7.8936094,335.65557 24.34995,335.86655"
|
||||
d="M 7.8936094,335.83098 H 24.34995"
|
||||
id="path5110"
|
||||
inkscape:connector-curvature="0" />
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
sodipodi:linespacing="0%"
|
||||
id="text5112"
|
||||
y="359.64337"
|
||||
x="13.590033"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="359.64337"
|
||||
x="13.590033"
|
||||
id="tspan5114"
|
||||
sodipodi:role="line">M</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:0">M</tspan></text>
|
||||
<text
|
||||
id="text5116"
|
||||
y="359.56085"
|
||||
x="56.530724"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="359.56085"
|
||||
x="56.530724"
|
||||
id="tspan5118"
|
||||
sodipodi:role="line">BUS</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">BUS</tspan></text>
|
||||
<text
|
||||
id="text5120"
|
||||
y="359.64337"
|
||||
x="119.29041"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="359.64337"
|
||||
x="119.29041"
|
||||
id="tspan5122"
|
||||
sodipodi:role="line">E</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">E</tspan></text>
|
||||
<flowRoot
|
||||
style="fill-opacity:1;font-size:15px;opacity:1;fill-rule:nonzero;fill:#ffffff;stroke:#ffffff;stroke-opacity:1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;-inkscape-font-specification:FreeSans;font-family:FreeSans;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="flowRoot5124"
|
||||
xml:space="preserve"><flowRegion
|
||||
id="flowRegion5126"><rect
|
||||
|
@ -663,110 +673,121 @@
|
|||
height="44.305546"
|
||||
width="250.43182"
|
||||
id="rect5128" /></flowRegion><flowPara
|
||||
id="flowPara5130" /></flowRoot> <text
|
||||
id="flowPara5130"
|
||||
style="font-size:15px;line-height:1.25"> </flowPara></flowRoot> <text
|
||||
inkscape:label="#text5132"
|
||||
id="EISMBusVolts"
|
||||
y="382.3924"
|
||||
x="9.3704567"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="382.3924"
|
||||
x="9.3704567"
|
||||
id="tspan5134"
|
||||
sodipodi:role="line">32.0</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">32.0</tspan></text>
|
||||
<text
|
||||
id="text5136"
|
||||
y="382.84338"
|
||||
x="50.673546"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="382.84338"
|
||||
x="50.673546"
|
||||
id="tspan5138"
|
||||
sodipodi:role="line">VOLTS</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">VOLTS</tspan></text>
|
||||
<text
|
||||
inkscape:label="#text5140"
|
||||
id="EISEBusVolts"
|
||||
y="381.33752"
|
||||
x="112.32812"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="381.33752"
|
||||
x="112.32812"
|
||||
id="tspan5142"
|
||||
sodipodi:role="line">32.0</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">32.0</tspan></text>
|
||||
<text
|
||||
id="text5144"
|
||||
y="425.23657"
|
||||
y="406.21555"
|
||||
x="15.066884"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="425.23657"
|
||||
y="406.21555"
|
||||
x="15.066884"
|
||||
id="tspan5146"
|
||||
sodipodi:role="line">M</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">M</tspan></text>
|
||||
<text
|
||||
id="text5148"
|
||||
y="425.23657"
|
||||
y="406.21555"
|
||||
x="55.660442"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="425.23657"
|
||||
y="406.21555"
|
||||
x="55.660442"
|
||||
id="tspan5150"
|
||||
sodipodi:role="line">BATT</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">BATT</tspan></text>
|
||||
<text
|
||||
id="text5152"
|
||||
y="425.15405"
|
||||
y="406.13303"
|
||||
x="124.56488"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="425.15405"
|
||||
y="406.13303"
|
||||
x="124.56488"
|
||||
id="tspan5154"
|
||||
sodipodi:role="line">S</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">S</tspan></text>
|
||||
<text
|
||||
inkscape:label="#text5156"
|
||||
id="EISMBattAmps"
|
||||
y="450.11658"
|
||||
y="431.09555"
|
||||
x="5.1508813"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="450.11658"
|
||||
y="431.09555"
|
||||
x="5.1508813"
|
||||
id="tspan5158"
|
||||
sodipodi:role="line">+110</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">+110</tspan></text>
|
||||
<text
|
||||
id="text5160"
|
||||
y="450.35657"
|
||||
y="431.33554"
|
||||
x="53.034382"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="450.35657"
|
||||
y="431.33554"
|
||||
x="53.034382"
|
||||
id="tspan5162"
|
||||
sodipodi:role="line">AMPS</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">AMPS</tspan></text>
|
||||
<text
|
||||
inkscape:label="#text5164"
|
||||
id="EISSBattAmps"
|
||||
y="450.11658"
|
||||
y="431.09555"
|
||||
x="109.16343"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="450.11658"
|
||||
y="431.09555"
|
||||
x="109.16343"
|
||||
id="tspan5166"
|
||||
sodipodi:role="line">+110</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">+110</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:FreeSans;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
x="66.133492"
|
||||
y="320.65424"
|
||||
id="text6035"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan6037"
|
||||
x="66.133492"
|
||||
y="320.65424">20</tspan></text>
|
||||
y="320.65424"
|
||||
style="font-size:15px;line-height:1.25">20</tspan></text>
|
||||
</g>
|
||||
<line
|
||||
style="stroke:#ffffff;stroke-width:1.34776199"
|
||||
|
@ -779,8 +800,8 @@
|
|||
transform="matrix(-0.5520104,0.3865218,-0.3865218,-0.5520104,75.44881,255.68121)"
|
||||
id="g9546">
|
||||
<path
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m -33.689453,-92.560547 c -34.51463,12.562298 -59.17291,43.287972 -63.966797,79.703125 -4.79388,36.415126 11.073002,72.475717 41.160156,93.542969 C -26.408939,101.7528 12.903002,104.33058 45.482422,87.371094 78.061867,70.411598 98.5,36.729702 98.5,0 l -1,0 C 97.5,36.358763 77.271893,69.694208 45.021484,86.482422 12.7711,103.27062 -26.138558,100.71974 -55.921875,79.865234 -85.705192,59.010731 -101.41148,23.320788 -96.666016,-12.726562 c 4.745471,-36.047379 29.152298,-66.457149 63.31836,-78.892579 l -0.341797,-0.941406 z"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m -33.689453,-92.560547 c -34.51463,12.562298 -59.17291,43.287972 -63.966797,79.703125 -4.79388,36.415126 11.073002,72.475717 41.160156,93.542969 C -26.408939,101.7528 12.903002,104.33058 45.482422,87.371094 78.061867,70.411598 98.5,36.729702 98.5,0 h -1 C 97.5,36.358763 77.271893,69.694208 45.021484,86.482422 12.7711,103.27062 -26.138558,100.71974 -55.921875,79.865234 -85.705192,59.010731 -101.41148,23.320788 -96.666016,-12.726562 c 4.745471,-36.047379 29.152298,-66.457149 63.31836,-78.892579 z"
|
||||
id="path9548"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
|
@ -788,8 +809,8 @@
|
|||
transform="matrix(-0.5520104,0.3865218,-0.3865218,-0.5520104,75.44881,255.68121)"
|
||||
id="g9550">
|
||||
<path
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="M -90.392578,-29.224609 C -108.32482,26.239503 -72.372731,84.764977 -14.792969,93.841797 42.786793,102.91862 95,58.290934 95,0 L 87,0 C 87,53.526654 39.326733,94.274399 -13.546875,85.939453 -66.420483,77.604507 -99.247837,24.167204 -82.78125,-26.763672 l -7.611328,-2.460937 z"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="M -90.392578,-29.224609 C -108.32482,26.239503 -72.372731,84.764977 -14.792969,93.841797 42.786793,102.91862 95,58.290934 95,0 H 87 C 87,53.526654 39.326733,94.274399 -13.546875,85.939453 -66.420483,77.604507 -99.247837,24.167204 -82.78125,-26.763672 Z"
|
||||
id="path9552"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
|
@ -797,8 +818,8 @@
|
|||
transform="matrix(0.64414767,-0.19796064,0.19796064,0.64414767,75.44881,255.68121)"
|
||||
id="g9554">
|
||||
<path
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#00ff00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 87,0 c 0,15.916056 -4.366223,31.525987 -12.623047,45.132812 l 6.839844,4.150391 C 90.232598,34.425622 95,17.379079 95,0 l -8,0 z"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#00ff00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 87,0 c 0,15.916056 -4.366223,31.525987 -12.623047,45.132812 l 6.839844,4.150391 C 90.232598,34.425622 95,17.379079 95,0 Z"
|
||||
id="path9556"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
|
@ -806,8 +827,8 @@
|
|||
transform="matrix(0.65338613,0.16492772,-0.16492772,0.65338613,75.44881,255.68121)"
|
||||
id="g9558">
|
||||
<path
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 87,0 c 0,10.573871 -1.926895,21.058866 -5.6875,30.941406 l 7.476562,2.845703 C 92.895446,22.995894 95,11.546112 95,0 l -8,0 z"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 87,0 c 0,10.573871 -1.926895,21.058866 -5.6875,30.941406 l 7.476562,2.845703 C 92.895446,22.995894 95,11.546112 95,0 Z"
|
||||
id="path9560"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
|
@ -836,8 +857,8 @@
|
|||
transform="matrix(-0.5520091,0.38652094,-0.38652094,-0.5520091,74.994764,128.88211)"
|
||||
id="g4918">
|
||||
<path
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m -33.689453,-92.560547 c -34.51463,12.562298 -59.17291,43.287972 -63.966797,79.703125 -4.79388,36.415126 11.073002,72.475717 41.160156,93.542969 C -26.408939,101.7528 12.903002,104.33058 45.482422,87.371094 78.061867,70.411598 98.5,36.729702 98.5,0 l -1,0 C 97.5,36.358763 77.271893,69.694208 45.021484,86.482422 12.7711,103.27062 -26.138558,100.71974 -55.921875,79.865234 -85.705192,59.010731 -101.41148,23.320788 -96.666016,-12.726562 c 4.745471,-36.047379 29.152298,-66.457149 63.31836,-78.892579 l -0.341797,-0.941406 z"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m -33.689453,-92.560547 c -34.51463,12.562298 -59.17291,43.287972 -63.966797,79.703125 -4.79388,36.415126 11.073002,72.475717 41.160156,93.542969 C -26.408939,101.7528 12.903002,104.33058 45.482422,87.371094 78.061867,70.411598 98.5,36.729702 98.5,0 h -1 C 97.5,36.358763 77.271893,69.694208 45.021484,86.482422 12.7711,103.27062 -26.138558,100.71974 -55.921875,79.865234 -85.705192,59.010731 -101.41148,23.320788 -96.666016,-12.726562 c 4.745471,-36.047379 29.152298,-66.457149 63.31836,-78.892579 z"
|
||||
id="path4920"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
|
@ -845,8 +866,8 @@
|
|||
transform="matrix(-0.5520091,0.38652094,-0.38652094,-0.5520091,74.994764,128.88211)"
|
||||
id="g4922">
|
||||
<path
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m -32.492188,-89.271484 c -33.281739,12.113562 -57.072661,41.756677 -61.695312,76.871093 -4.622648,35.114393 10.686864,69.904081 39.699219,90.21875 29.012355,20.31467 66.939771,22.800961 98.355469,6.447266 C 75.282906,67.911916 95,35.417687 95,0 L 87,0 C 87,32.450174 68.955306,62.186472 40.171875,77.169922 11.388468,92.153359 -23.318737,89.878299 -49.900391,71.265625 -76.482045,52.652951 -90.49118,20.816723 -86.255859,-11.355469 c 4.235324,-32.172219 26.006811,-59.299824 56.5,-70.398437 l -2.736329,-7.517578 z"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m -32.492188,-89.271484 c -33.281739,12.113562 -57.072661,41.756677 -61.695312,76.871093 -4.622648,35.114393 10.686864,69.904081 39.699219,90.21875 29.012355,20.31467 66.939771,22.800961 98.355469,6.447266 C 75.282906,67.911916 95,35.417687 95,0 H 87 C 87,32.450174 68.955306,62.186472 40.171875,77.169922 11.388468,92.153359 -23.318737,89.878299 -49.900391,71.265625 -76.482045,52.652951 -90.49118,20.816723 -86.255859,-11.355469 c 4.235324,-32.172219 26.006811,-59.299824 56.5,-70.398437 z"
|
||||
id="path4924"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
|
@ -854,7 +875,7 @@
|
|||
transform="matrix(-0.66186887,-0.12665736,0.12665736,-0.66186887,74.994764,128.88211)"
|
||||
id="g4926">
|
||||
<path
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#00ff00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#00ff00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="M 95,-0.06445312 87,0.06445312 C 87.649007,40.605232 56.3618,78.451234 16.414062,85.4375 l 1.378907,7.880859 C 61.833648,85.616299 95.715523,44.63136 95,-0.06445312 Z"
|
||||
id="path4928"
|
||||
inkscape:connector-curvature="0" />
|
||||
|
@ -870,22 +891,21 @@
|
|||
sodipodi:nodetypes="cccccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.07999992px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:'FreeSans, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:'FreeSans, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="71.796181"
|
||||
y="153.18427"
|
||||
id="text4979"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
id="text4979"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4981"
|
||||
x="71.796181"
|
||||
y="153.18427">MAN IN</tspan></text>
|
||||
y="153.18427"
|
||||
style="font-size:15.07999992px;line-height:1.25">MAN IN</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:25px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:'FreeSans, Normal';text-align:center;letter-spacing:-3px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeSans;-inkscape-font-specification:'FreeSans, Normal';text-align:center;letter-spacing:-3px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="71.825653"
|
||||
y="177.99994"
|
||||
id="EISManDisplay"
|
||||
sodipodi:linespacing="125%"
|
||||
inkscape:label="#text4729"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4985"
|
||||
|
@ -893,27 +913,27 @@
|
|||
y="177.99994"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:25px;line-height:125%;font-family:FreeSans;-inkscape-font-specification:'FreeSans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle">20.7</tspan></text>
|
||||
<text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4991"
|
||||
y="179.7572"
|
||||
x="119.81293"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:FreeMono;-inkscape-font-specification:FreeMono;text-align:start;letter-spacing:-3px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeMono;-inkscape-font-specification:FreeMono;text-align:start;letter-spacing:-3px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="179.7572"
|
||||
x="119.81293"
|
||||
id="tspan4993"
|
||||
sodipodi:role="line">35</tspan></text>
|
||||
sodipodi:role="line"
|
||||
style="font-size:15px;line-height:1.25">35</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:FreeMono;-inkscape-font-specification:FreeMono;text-align:start;letter-spacing:-3px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:FreeMono;-inkscape-font-specification:FreeMono;text-align:start;letter-spacing:-3px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="15.085393"
|
||||
y="179.7572"
|
||||
id="text4995"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
id="text4995"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4997"
|
||||
x="15.085393"
|
||||
y="179.7572">10</tspan></text>
|
||||
y="179.7572"
|
||||
style="font-size:15px;line-height:1.25">10</tspan></text>
|
||||
<path
|
||||
sodipodi:nodetypes="cccccc"
|
||||
inkscape:transform-center-y="14.830678"
|
||||
|
@ -923,6 +943,57 @@
|
|||
id="EISRPMPointer"
|
||||
d="m 72.880804,254.60657 -45.643775,34.24255 5.097352,-7.68732 3.560667,1.23288 0.81527,4.41027 -9.283436,1.89708"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.85921997px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<g
|
||||
id="g4934-4"
|
||||
transform="translate(-1.7743485,-42.731428)">
|
||||
<rect
|
||||
style="opacity:1;fill:#00af00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4936-3"
|
||||
width="92.411247"
|
||||
height="6.9623003"
|
||||
x="49.91132"
|
||||
y="544.22382" />
|
||||
<g
|
||||
id="g4940-3"
|
||||
inkscape:label="#g4833"
|
||||
transform="translate(0,21.780942)">
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4942-8"
|
||||
d="m 8.0559648,519.47505 v 12.23313 l 134.8260452,0.0746 -0.0746,-12.03652"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:0%;font-family:FreeSans;-inkscape-font-specification:'FreeSans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="63.148544"
|
||||
y="528.42615"
|
||||
id="text4944-6"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1018"
|
||||
x="63.148544"
|
||||
y="528.42615">CHT</tspan></text>
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 4.5714659,539.5634 0.043695,9.19243 3.48115,3.34929 3.5075231,-3.37566 V 539.54 Z"
|
||||
id="EISCHTPointer"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccc"
|
||||
inkscape:label="#path4864" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:150%;font-family:FreeSans;-inkscape-font-specification:'FreeSans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="4.2751164"
|
||||
y="550.25"
|
||||
id="EISCHTCylinder"
|
||||
inkscape:label="#text1022"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1020"
|
||||
x="4.2751164"
|
||||
y="550.25"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:FreeSans;-inkscape-font-specification:'FreeSans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.9375px">1</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 59 KiB |
|
@ -28,13 +28,15 @@ var EIS =
|
|||
|
||||
obj.setController(fg1000.EISController.new(obj, svg));
|
||||
|
||||
obj.addTextElements(["ManDisplay", "RPMDisplay", "MBusVolts", "EBusVolts"]);
|
||||
obj.addTextElements(["ManDisplay", "RPMDisplay", "MBusVolts", "EBusVolts", "MBattAmps", "SBattAmps"]);
|
||||
|
||||
obj._fuelFlowPointer = PFD.PointerElement.new(obj.pageName, svg, "FuelFlowPointer", 0.0, 22.0, 135);
|
||||
obj._oilPressurePointer = PFD.PointerElement.new(obj.pageName, svg, "OilPressurePointer", 0.0, 115.0, 135);
|
||||
obj._oilTempPointer = PFD.PointerElement.new(obj.pageName, svg, "OilTempPointer", 0.0, 245.0, 135);
|
||||
obj._EGTPointer = PFD.PointerElement.new(obj.pageName, svg, "EGTPointer", 0.0, 1.0, 135);
|
||||
obj._EGTCylinder = PFD.PointerElement.new(obj.pageName, svg, "EGTCylinder", 0.0, 1.0, 135);
|
||||
obj._CHTPointer = PFD.PointerElement.new(obj.pageName, svg, "CHTPointer", 0.0, 400, 135);
|
||||
obj._CHTCylinder = PFD.PointerElement.new(obj.pageName, svg, "CHTCylinder", 0.0, 400, 135);
|
||||
obj._leftFuelPointer = PFD.PointerElement.new(obj.pageName, svg, "LeftFuelPointer", 0.0, 40.0, 135);
|
||||
obj._rightFuelPointer = PFD.PointerElement.new(obj.pageName, svg, "RightFuelPointer", 0.0, 40.0, 135);
|
||||
|
||||
|
@ -49,12 +51,16 @@ var EIS =
|
|||
me.setTextElement("ManDisplay", sprintf("%.1f", engineData.Man));
|
||||
me.setTextElement("MBusVolts", sprintf("%.01f", engineData.MBusVolts));
|
||||
me.setTextElement("EBusVolts", sprintf("%.01f", engineData.MBusVolts)); # TODO: Include Emergency Bus
|
||||
me.setTextElement("MBattAmps", sprintf("%+.01f", engineData.MBattAmps));
|
||||
me.setTextElement("SBattAmps", sprintf("%+.01f", engineData.MBattAmps)); # TODO: Include Emergency Bus
|
||||
|
||||
me._fuelFlowPointer.setValue(engineData.FuelFlowGPH);
|
||||
me._oilPressurePointer.setValue(engineData.OilPressurePSI);
|
||||
me._oilTempPointer.setValue(engineData.OilTemperatureF);
|
||||
me._EGTPointer.setValue(engineData.EGTNorm);
|
||||
me._EGTCylinder.setValue(engineData.EGTNorm);
|
||||
me._CHTPointer.setValue(engineData.CHTDegF);
|
||||
me._CHTCylinder.setValue(engineData.CHTDegF);
|
||||
|
||||
me._RPMPointer.setValue(engineData.RPM);
|
||||
me._ManPointer.setValue(engineData.Man);
|
||||
|
|
|
@ -41,11 +41,13 @@ var EISController =
|
|||
"RPM",
|
||||
"Man",
|
||||
"MBusVolts",
|
||||
"MBattAmps",
|
||||
"EngineHours",
|
||||
"FuelFlowGPH",
|
||||
"OilPressurePSI",
|
||||
"OilTemperatureF",
|
||||
"EGTNorm",
|
||||
"CHTDegF",
|
||||
"VacuumSuctionInHG"];
|
||||
|
||||
foreach (var val; elements) {
|
||||
|
|
|
@ -76,6 +76,7 @@
|
|||
|
||||
<pass n="10" include="common-scene.xml">
|
||||
<name>far</name>
|
||||
<clear-mask>color depth</clear-mask>
|
||||
<z-near>100.0</z-near>
|
||||
</pass>
|
||||
<pass n="11" include="common-scene.xml">
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
|
||||
<PropertyList>
|
||||
<type>csm</type>
|
||||
<implicit-attachment-mask/>
|
||||
<effect-scheme>classic-shadow</effect-scheme>
|
||||
<clear-mask>depth</clear-mask>
|
||||
<!-- Only render objects with the CAST_SHADOW bit flag -->
|
||||
<cull-mask>0x000004</cull-mask>
|
||||
<render-at-night>false</render-at-night>
|
||||
|
|
10
Compositor/HDR/bloom-buffer.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<PropertyList>
|
||||
<type>2d</type>
|
||||
<width>screen</width>
|
||||
<height>screen</height>
|
||||
<format>rgb16f</format>
|
||||
<min-filter>linear</min-filter>
|
||||
<mag-filter>linear</mag-filter>
|
||||
</PropertyList>
|
6
Compositor/HDR/bloom-copy-pass.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<PropertyList>
|
||||
<type>quad</type>
|
||||
<effect>Effects/HDR/trivial</effect>
|
||||
</PropertyList>
|
6
Compositor/HDR/bloom-horizontal-blur-pass.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<PropertyList>
|
||||
<type>quad</type>
|
||||
<effect>Effects/HDR/horizontal-blur</effect>
|
||||
</PropertyList>
|
6
Compositor/HDR/bloom-vertical-blur-pass.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<PropertyList>
|
||||
<type>quad</type>
|
||||
<effect>Effects/HDR/vertical-blur</effect>
|
||||
</PropertyList>
|
15
Compositor/HDR/csm-pass.xml
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<PropertyList>
|
||||
<type>csm</type>
|
||||
<implicit-attachment-mask/>
|
||||
<effect-scheme>hdr-shadow</effect-scheme>
|
||||
<clear-mask>depth</clear-mask>
|
||||
<!-- Only render objects with the CAST_SHADOW bit flag -->
|
||||
<cull-mask>0x4</cull-mask>
|
||||
<render-at-night>false</render-at-night>
|
||||
<attachment>
|
||||
<buffer>sun-shadowmap-atlas</buffer>
|
||||
<component>depth</component>
|
||||
</attachment>
|
||||
</PropertyList>
|
13
Compositor/HDR/env-capture-pass.xml
Normal file
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<PropertyList>
|
||||
<type>scene</type>
|
||||
<effect-scheme>hdr-envmap</effect-scheme>
|
||||
<!-- Only render the skydome and terrain -->
|
||||
<!-- TODO: Explicitly select the LOD level -->
|
||||
<cull-mask>0x800</cull-mask>
|
||||
<binding>
|
||||
<unit>11</unit>
|
||||
<buffer>sky-view</buffer>
|
||||
</binding>
|
||||
</PropertyList>
|
9
Compositor/HDR/env-prefilter-pass.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<PropertyList>
|
||||
<type>quad</type>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>envmap</buffer>
|
||||
</binding>
|
||||
</PropertyList>
|
989
Compositor/HDR/hdr.xml
Normal file
|
@ -0,0 +1,989 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<PropertyList>
|
||||
<name>HDR</name>
|
||||
<!-- XXX: These won't be necessary once we go core profile only -->
|
||||
<use-osg-uniforms>true</use-osg-uniforms>
|
||||
<use-vertex-attribute-aliasing>true</use-vertex-attribute-aliasing>
|
||||
|
||||
<!--
|
||||
G-Buffer
|
||||
.........................................................
|
||||
: Buffer : Red : Green : Blue : Alpha :
|
||||
:........:...........:...........:..........:...........:
|
||||
: RT0 : albedo.r : albedo.g : albedo.b : AO/Cavity :
|
||||
: RT1 : normal.x : normal.y :
|
||||
: RT2 : Metalness : Roughness : Clearcoat :
|
||||
: RT3 : Depth :
|
||||
:........:...........:...........:..........:...........:
|
||||
-->
|
||||
<buffer>
|
||||
<name>gbuffer0</name>
|
||||
<type>2d</type>
|
||||
<width>screen</width>
|
||||
<height>screen</height>
|
||||
<format>rgba8</format>
|
||||
</buffer>
|
||||
<buffer>
|
||||
<name>gbuffer1</name>
|
||||
<type>2d</type>
|
||||
<width>screen</width>
|
||||
<height>screen</height>
|
||||
<format>rg16f</format>
|
||||
</buffer>
|
||||
<buffer>
|
||||
<name>gbuffer2</name>
|
||||
<type>2d</type>
|
||||
<width>screen</width>
|
||||
<height>screen</height>
|
||||
<format>rgba8</format>
|
||||
</buffer>
|
||||
<buffer>
|
||||
<name>depth</name>
|
||||
<type>2d</type>
|
||||
<width>screen</width>
|
||||
<height>screen</height>
|
||||
<format>depth32f</format>
|
||||
</buffer>
|
||||
|
||||
<!-- HDR lighting result -->
|
||||
<buffer>
|
||||
<name>hdr-result</name>
|
||||
<type>2d</type>
|
||||
<width>screen</width>
|
||||
<height>screen</height>
|
||||
<format>rgb16f</format>
|
||||
</buffer>
|
||||
|
||||
<!-- Final LDR buffer -->
|
||||
<buffer>
|
||||
<name>final</name>
|
||||
<type>2d</type>
|
||||
<width>screen</width>
|
||||
<height>screen</height>
|
||||
<format>rgb8</format>
|
||||
</buffer>
|
||||
|
||||
<!-- Atmosphere LUTs -->
|
||||
<buffer>
|
||||
<name>sky-view</name>
|
||||
<type>2d</type>
|
||||
<width>256</width>
|
||||
<height>128</height>
|
||||
<format>rgb16f</format>
|
||||
<min-filter>linear</min-filter>
|
||||
<mag-filter>linear</mag-filter>
|
||||
<wrap-s>repeat</wrap-s>
|
||||
<wrap-t>clamp-to-edge</wrap-t>
|
||||
</buffer>
|
||||
<buffer>
|
||||
<name>aerial-inscatter</name>
|
||||
<type>2d</type>
|
||||
<width>512</width>
|
||||
<height>32</height>
|
||||
<format>rgba16f</format>
|
||||
<min-filter>linear</min-filter>
|
||||
<mag-filter>linear</mag-filter>
|
||||
<wrap-s>clamp-to-edge</wrap-s>
|
||||
<wrap-t>clamp-to-edge</wrap-t>
|
||||
</buffer>
|
||||
<buffer>
|
||||
<name>aerial-transmittance</name>
|
||||
<type>2d</type>
|
||||
<width>512</width>
|
||||
<height>32</height>
|
||||
<format>rgba16f</format>
|
||||
<min-filter>linear</min-filter>
|
||||
<mag-filter>linear</mag-filter>
|
||||
<wrap-s>clamp-to-edge</wrap-s>
|
||||
<wrap-t>clamp-to-edge</wrap-t>
|
||||
</buffer>
|
||||
|
||||
<!-- Environment cubemap -->
|
||||
<buffer>
|
||||
<name>envmap</name>
|
||||
<type>cubemap</type>
|
||||
<width>128</width>
|
||||
<height>128</height>
|
||||
<format>rgb16f</format>
|
||||
<min-filter>linear-mipmap-linear</min-filter>
|
||||
<mag-filter>linear</mag-filter>
|
||||
<wrap-s>clamp-to-edge</wrap-s>
|
||||
<wrap-t>clamp-to-edge</wrap-t>
|
||||
<mipmap-levels>5</mipmap-levels>
|
||||
</buffer>
|
||||
|
||||
<!-- Shadow map atlas -->
|
||||
<buffer>
|
||||
<name>sun-shadowmap-atlas</name>
|
||||
<type>2d</type>
|
||||
<width>8192</width>
|
||||
<height>8192</height>
|
||||
<format>depth16</format>
|
||||
<wrap-s>clamp-to-border</wrap-s>
|
||||
<wrap-t>clamp-to-border</wrap-t>
|
||||
<min-filter>linear</min-filter>
|
||||
<mag-filter>linear</mag-filter>
|
||||
<border-color type="vec4d">1.0 1.0 1.0 1.0</border-color>
|
||||
<shadow-comparison>true</shadow-comparison>
|
||||
</buffer>
|
||||
|
||||
<!-- Average luminance -->
|
||||
<buffer>
|
||||
<name>luminance</name>
|
||||
<type>2d</type>
|
||||
<width>1024</width>
|
||||
<height>1024</height>
|
||||
<format>r16f</format>
|
||||
<min-filter>linear-mipmap-nearest</min-filter>
|
||||
<mag-filter>nearest</mag-filter>
|
||||
<mipmap-levels>10</mipmap-levels>
|
||||
</buffer>
|
||||
<buffer>
|
||||
<name>prev-luminance</name>
|
||||
<type>2d</type>
|
||||
<width>1</width>
|
||||
<height>1</height>
|
||||
<format>r16f</format>
|
||||
<min-filter>nearest</min-filter>
|
||||
<mag-filter>nearest</mag-filter>
|
||||
</buffer>
|
||||
<buffer>
|
||||
<name>adapted-luminance</name>
|
||||
<type>2d</type>
|
||||
<width>1</width>
|
||||
<height>1</height>
|
||||
<format>r16f</format>
|
||||
<min-filter>nearest</min-filter>
|
||||
<mag-filter>nearest</mag-filter>
|
||||
</buffer>
|
||||
|
||||
<!-- SSAO -->
|
||||
<buffer>
|
||||
<name>ao0</name>
|
||||
<type>2d</type>
|
||||
<width>screen</width>
|
||||
<height>screen</height>
|
||||
<screen-width-scale>0.5</screen-width-scale>
|
||||
<screen-height-scale>0.5</screen-height-scale>
|
||||
<format>r8</format>
|
||||
</buffer>
|
||||
|
||||
<!-- Bloom buffers -->
|
||||
<buffer include="bloom-buffer.xml">
|
||||
<name>bloom0</name>
|
||||
<screen-width-scale>0.5</screen-width-scale>
|
||||
<screen-height-scale>0.5</screen-height-scale>
|
||||
</buffer>
|
||||
<buffer include="bloom-buffer.xml">
|
||||
<name>bloom1</name>
|
||||
<screen-width-scale>0.25</screen-width-scale>
|
||||
<screen-height-scale>0.25</screen-height-scale>
|
||||
</buffer>
|
||||
<buffer include="bloom-buffer.xml">
|
||||
<name>bloom2</name>
|
||||
<screen-width-scale>0.125</screen-width-scale>
|
||||
<screen-height-scale>0.125</screen-height-scale>
|
||||
</buffer>
|
||||
<buffer include="bloom-buffer.xml">
|
||||
<name>bloom3</name>
|
||||
<screen-width-scale>0.0625</screen-width-scale>
|
||||
<screen-height-scale>0.0625</screen-height-scale>
|
||||
</buffer>
|
||||
<buffer include="bloom-buffer.xml">
|
||||
<name>bloom0-tmp</name>
|
||||
<screen-width-scale>0.5</screen-width-scale>
|
||||
<screen-height-scale>0.5</screen-height-scale>
|
||||
</buffer>
|
||||
<buffer include="bloom-buffer.xml">
|
||||
<name>bloom1-tmp</name>
|
||||
<screen-width-scale>0.25</screen-width-scale>
|
||||
<screen-height-scale>0.25</screen-height-scale>
|
||||
</buffer>
|
||||
<buffer include="bloom-buffer.xml">
|
||||
<name>bloom2-tmp</name>
|
||||
<screen-width-scale>0.125</screen-width-scale>
|
||||
<screen-height-scale>0.125</screen-height-scale>
|
||||
</buffer>
|
||||
<buffer include="bloom-buffer.xml">
|
||||
<name>bloom3-tmp</name>
|
||||
<screen-width-scale>0.0625</screen-width-scale>
|
||||
<screen-height-scale>0.0625</screen-height-scale>
|
||||
</buffer>
|
||||
|
||||
<!--=======================================================================-->
|
||||
|
||||
<!-- Sky-View -->
|
||||
<pass>
|
||||
<name>atmos-sky-view</name>
|
||||
<type>quad</type>
|
||||
<effect>Effects/HDR/atmos-sky-view</effect>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>sky-view</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
<!-- Aerial Perspective -->
|
||||
<pass>
|
||||
<name>atmos-aerial-perspective</name>
|
||||
<type>quad</type>
|
||||
<effect>Effects/HDR/atmos-aerial-perspective</effect>
|
||||
<attachment>
|
||||
<component>color0</component>
|
||||
<buffer>aerial-inscatter</buffer>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color1</component>
|
||||
<buffer>aerial-transmittance</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<!--
|
||||
Environment capture passes
|
||||
Render to a cubemap using forward rendering. Only render the skydome and
|
||||
very bare terrain since we want to make as little draw calls as possible.
|
||||
We also want to avoid doing an OSG cull traversal on many nodes as our
|
||||
scene graph structure isn't too well optimized.
|
||||
-->
|
||||
<pass include="env-capture-pass.xml">
|
||||
<name>env-capture0</name>
|
||||
<cubemap-face>0</cubemap-face>
|
||||
<attachment>
|
||||
<component>color0</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>0</face>
|
||||
<level>0</level>
|
||||
</attachment>
|
||||
</pass>
|
||||
<pass include="env-capture-pass.xml">
|
||||
<name>env-capture1</name>
|
||||
<cubemap-face>1</cubemap-face>
|
||||
<attachment>
|
||||
<component>color0</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>1</face>
|
||||
<level>0</level>
|
||||
</attachment>
|
||||
</pass>
|
||||
<pass include="env-capture-pass.xml">
|
||||
<name>env-capture2</name>
|
||||
<cubemap-face>2</cubemap-face>
|
||||
<attachment>
|
||||
<component>color0</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>2</face>
|
||||
<level>0</level>
|
||||
</attachment>
|
||||
</pass>
|
||||
<pass include="env-capture-pass.xml">
|
||||
<name>env-capture3</name>
|
||||
<cubemap-face>3</cubemap-face>
|
||||
<attachment>
|
||||
<component>color0</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>3</face>
|
||||
<level>0</level>
|
||||
</attachment>
|
||||
</pass>
|
||||
<pass include="env-capture-pass.xml">
|
||||
<name>env-capture4</name>
|
||||
<cubemap-face>4</cubemap-face>
|
||||
<attachment>
|
||||
<component>color0</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>4</face>
|
||||
<level>0</level>
|
||||
</attachment>
|
||||
</pass>
|
||||
<pass include="env-capture-pass.xml">
|
||||
<name>env-capture5</name>
|
||||
<cubemap-face>5</cubemap-face>
|
||||
<attachment>
|
||||
<component>color0</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>5</face>
|
||||
<level>0</level>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<!--
|
||||
Pre-filter the environment map
|
||||
We convolve the cubemap for five roughness values and store the results
|
||||
on the mipmap levels of the cubemap. Later passes will choose which mipmap
|
||||
level to use for reflections based on the roughness of the surface that's
|
||||
being lighted/rendered.
|
||||
Diffuse lighting is approximated by using the highest mipmap level
|
||||
(roughness=1).
|
||||
-->
|
||||
<pass include="env-prefilter-pass.xml">
|
||||
<name>env-prefilter1</name>
|
||||
<effect>Effects/HDR/envmap-prefilter1</effect>
|
||||
<attachment>
|
||||
<component>color0</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>0</face>
|
||||
<level>1</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color1</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>1</face>
|
||||
<level>1</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color2</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>2</face>
|
||||
<level>1</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color3</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>3</face>
|
||||
<level>1</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color4</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>4</face>
|
||||
<level>1</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color5</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>5</face>
|
||||
<level>1</level>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<pass include="env-prefilter-pass.xml">
|
||||
<name>env-prefilter2</name>
|
||||
<effect>Effects/HDR/envmap-prefilter2</effect>
|
||||
<attachment>
|
||||
<component>color0</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>0</face>
|
||||
<level>2</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color1</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>1</face>
|
||||
<level>2</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color2</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>2</face>
|
||||
<level>2</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color3</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>3</face>
|
||||
<level>2</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color4</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>4</face>
|
||||
<level>2</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color5</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>5</face>
|
||||
<level>2</level>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<pass include="env-prefilter-pass.xml">
|
||||
<name>env-prefilter3</name>
|
||||
<effect>Effects/HDR/envmap-prefilter3</effect>
|
||||
<attachment>
|
||||
<component>color0</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>0</face>
|
||||
<level>3</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color1</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>1</face>
|
||||
<level>3</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color2</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>2</face>
|
||||
<level>3</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color3</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>3</face>
|
||||
<level>3</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color4</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>4</face>
|
||||
<level>3</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color5</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>5</face>
|
||||
<level>3</level>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<pass include="env-prefilter-pass.xml">
|
||||
<name>env-prefilter4</name>
|
||||
<effect>Effects/HDR/envmap-prefilter4</effect>
|
||||
<attachment>
|
||||
<component>color0</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>0</face>
|
||||
<level>4</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color1</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>1</face>
|
||||
<level>4</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color2</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>2</face>
|
||||
<level>4</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color3</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>3</face>
|
||||
<level>4</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color4</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>4</face>
|
||||
<level>4</level>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color5</component>
|
||||
<buffer>envmap</buffer>
|
||||
<face>5</face>
|
||||
<level>4</level>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<!--
|
||||
G-Buffer pass
|
||||
This is the main forward pass. Here we skip the rendering of transparent
|
||||
objects and other geometry that should be forward rendered later (like the
|
||||
skydome, clouds, etc.)
|
||||
-->
|
||||
<pass>
|
||||
<name>geometry</name>
|
||||
<type>scene</type>
|
||||
<effect-scheme>hdr-geometry</effect-scheme>
|
||||
<clear-mask>depth</clear-mask>
|
||||
<cull-mask>0xfffff7ff</cull-mask>
|
||||
<attachment>
|
||||
<component>color0</component>
|
||||
<buffer>gbuffer0</buffer>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color1</component>
|
||||
<buffer>gbuffer1</buffer>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>color2</component>
|
||||
<buffer>gbuffer2</buffer>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>depth</component>
|
||||
<buffer>depth</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<!-- Shadow mapping pre-passes -->
|
||||
<pass include="csm-pass.xml">
|
||||
<name>csm0</name>
|
||||
<near-m>0.1</near-m>
|
||||
<far-m>3.0</far-m>
|
||||
<viewport>
|
||||
<x>0.0</x>
|
||||
<y>0.0</y>
|
||||
<width>0.5</width>
|
||||
<height>0.5</height>
|
||||
</viewport>
|
||||
</pass>
|
||||
<pass include="csm-pass.xml">
|
||||
<name>csm1</name>
|
||||
<near-m>3.0</near-m>
|
||||
<far-m>70.0</far-m>
|
||||
<viewport>
|
||||
<x>0.5</x>
|
||||
<y>0.0</y>
|
||||
<width>0.5</width>
|
||||
<height>0.5</height>
|
||||
</viewport>
|
||||
</pass>
|
||||
<pass include="csm-pass.xml">
|
||||
<name>csm2</name>
|
||||
<near-m>70.0</near-m>
|
||||
<far-m>300.0</far-m>
|
||||
<viewport>
|
||||
<x>0.0</x>
|
||||
<y>0.5</y>
|
||||
<width>0.5</width>
|
||||
<height>0.5</height>
|
||||
</viewport>
|
||||
</pass>
|
||||
<pass include="csm-pass.xml">
|
||||
<name>csm3</name>
|
||||
<near-m>300.0</near-m>
|
||||
<far-m>1000.0</far-m>
|
||||
<viewport>
|
||||
<x>0.5</x>
|
||||
<y>0.5</y>
|
||||
<width>0.5</width>
|
||||
<height>0.5</height>
|
||||
</viewport>
|
||||
</pass>
|
||||
|
||||
<!-- SSAO (Screen Space Ambient Occlusion) -->
|
||||
<pass>
|
||||
<name>ao</name>
|
||||
<type>quad</type>
|
||||
<effect>Effects/HDR/ao</effect>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>depth</buffer>
|
||||
</binding>
|
||||
<binding>
|
||||
<unit>1</unit>
|
||||
<buffer>gbuffer1</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color0</component>
|
||||
<buffer>ao0</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<!--
|
||||
Main lighting pass
|
||||
Combine the G-Buffer and other buffers to compute the final shading value
|
||||
of the pixel in HDR.
|
||||
-->
|
||||
<pass>
|
||||
<name>lighting</name>
|
||||
<type>quad</type>
|
||||
<effect>Effects/HDR/lighting</effect>
|
||||
<use-shadow-pass>csm0</use-shadow-pass>
|
||||
<use-shadow-pass>csm1</use-shadow-pass>
|
||||
<use-shadow-pass>csm2</use-shadow-pass>
|
||||
<use-shadow-pass>csm3</use-shadow-pass>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>gbuffer0</buffer>
|
||||
</binding>
|
||||
<binding>
|
||||
<unit>1</unit>
|
||||
<buffer>gbuffer1</buffer>
|
||||
</binding>
|
||||
<binding>
|
||||
<unit>2</unit>
|
||||
<buffer>gbuffer2</buffer>
|
||||
</binding>
|
||||
<binding>
|
||||
<unit>3</unit>
|
||||
<buffer>depth</buffer>
|
||||
</binding>
|
||||
<binding>
|
||||
<unit>8</unit>
|
||||
<buffer>ao0</buffer>
|
||||
</binding>
|
||||
<binding>
|
||||
<unit>9</unit>
|
||||
<buffer>envmap</buffer>
|
||||
</binding>
|
||||
<binding>
|
||||
<unit>10</unit>
|
||||
<buffer>sun-shadowmap-atlas</buffer>
|
||||
</binding>
|
||||
<binding>
|
||||
<unit>11</unit>
|
||||
<buffer>aerial-inscatter</buffer>
|
||||
</binding>
|
||||
<binding>
|
||||
<unit>12</unit>
|
||||
<buffer>aerial-transmittance</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color0</component>
|
||||
<buffer>hdr-result</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<!--
|
||||
Forward pass
|
||||
Render all objects that couldn't be rendered on the G-Buffer, mainly
|
||||
transparent objects. This is also done in HDR.
|
||||
We reuse the depth buffer from the G-Buffer stage so we can take advantage
|
||||
of early depth testing.
|
||||
-->
|
||||
<pass>
|
||||
<name>forward</name>
|
||||
<type>scene</type>
|
||||
<effect-scheme>hdr-forward</effect-scheme>
|
||||
<binding>
|
||||
<unit>9</unit>
|
||||
<buffer>envmap</buffer>
|
||||
</binding>
|
||||
<binding>
|
||||
<unit>11</unit>
|
||||
<buffer>sky-view</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>hdr-result</buffer>
|
||||
</attachment>
|
||||
<attachment>
|
||||
<component>depth</component>
|
||||
<buffer>depth</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<!--
|
||||
Average luminance calculation
|
||||
1. Convert the RGB values to luminance values and store them on a fixed
|
||||
size texture.
|
||||
2. Generate mipmaps for this texture until we are left with a 1x1 texture
|
||||
at the highest mipmap level. This downsampling process effectively
|
||||
calculates the geometric mean of luminance.
|
||||
3. Simulate eye adaptation by smoothing out the transition between
|
||||
different exposures.
|
||||
4. Update the previous frame average luminance value for next frame.
|
||||
-->
|
||||
<pass>
|
||||
<name>luminance</name>
|
||||
<type>quad</type>
|
||||
<effect>Effects/HDR/luminance</effect>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>hdr-result</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>luminance</buffer>
|
||||
<mipmap-generation>true</mipmap-generation>
|
||||
</attachment>
|
||||
</pass>
|
||||
<pass>
|
||||
<name>adapt-luminance</name>
|
||||
<type>quad</type>
|
||||
<effect>Effects/HDR/adapt-luminance</effect>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>prev-luminance</buffer>
|
||||
</binding>
|
||||
<binding>
|
||||
<unit>1</unit>
|
||||
<buffer>luminance</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>adapted-luminance</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
<pass>
|
||||
<name>copy-prev-luminance</name>
|
||||
<type>quad</type>
|
||||
<effect>Effects/HDR/copy-prev-luminance</effect>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>adapted-luminance</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>prev-luminance</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<!--
|
||||
Generate a threshold texture for bloom
|
||||
The HDR lighting buffer is filtered so we are left with an image that only
|
||||
contains the brightest spots. This image is then progressively
|
||||
downscaled, blurred and upscaled until we are left with the final bloom
|
||||
to be applied.
|
||||
-->
|
||||
<pass>
|
||||
<name>bloom-threshold</name>
|
||||
<type>quad</type>
|
||||
<effect>Effects/HDR/bloom-threshold</effect>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>hdr-result</buffer>
|
||||
</binding>
|
||||
<binding>
|
||||
<unit>1</unit>
|
||||
<buffer>adapted-luminance</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>bloom0</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<pass include="bloom-copy-pass.xml">
|
||||
<name>bloom-copy1</name>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>bloom0</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>bloom1</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
<pass include="bloom-copy-pass.xml">
|
||||
<name>bloom-copy2</name>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>bloom1</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>bloom2</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
<pass include="bloom-copy-pass.xml">
|
||||
<name>bloom-copy3</name>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>bloom2</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>bloom3</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<pass include="bloom-horizontal-blur-pass.xml">
|
||||
<name>bloom-hblur3</name>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>bloom3</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>bloom3-tmp</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
<pass include="bloom-vertical-blur-pass.xml">
|
||||
<name>bloom-vblur3</name>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>bloom3-tmp</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>bloom3</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<pass include="bloom-horizontal-blur-pass.xml">
|
||||
<name>bloom-hblur2</name>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>bloom2</buffer>
|
||||
</binding>
|
||||
<binding>
|
||||
<unit>1</unit>
|
||||
<buffer>bloom3</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>bloom2-tmp</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
<pass include="bloom-vertical-blur-pass.xml">
|
||||
<name>bloom-vblur2</name>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>bloom2-tmp</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>bloom2</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<pass include="bloom-horizontal-blur-pass.xml">
|
||||
<name>bloom-hblur1</name>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>bloom1</buffer>
|
||||
</binding>
|
||||
<binding>
|
||||
<unit>1</unit>
|
||||
<buffer>bloom2</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>bloom1-tmp</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
<pass include="bloom-vertical-blur-pass.xml">
|
||||
<name>bloom-vblur1</name>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>bloom1-tmp</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>bloom1</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<pass include="bloom-horizontal-blur-pass.xml">
|
||||
<name>bloom-hblur0</name>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>bloom0</buffer>
|
||||
</binding>
|
||||
<binding>
|
||||
<unit>1</unit>
|
||||
<buffer>bloom1</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>bloom0-tmp</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
<pass include="bloom-vertical-blur-pass.xml">
|
||||
<name>bloom-vblur0</name>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>bloom0-tmp</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>bloom0</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<!--
|
||||
Post-processing
|
||||
Perform miscellaneous post-processing operations, namely tonemapping
|
||||
and exposure compensation. This process converts the HDR buffer into an
|
||||
LDR texture ready to be displayed on a screen.
|
||||
-->
|
||||
<pass>
|
||||
<name>post</name>
|
||||
<type>quad</type>
|
||||
<effect>Effects/HDR/postprocess</effect>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>hdr-result</buffer>
|
||||
</binding>
|
||||
<binding>
|
||||
<unit>1</unit>
|
||||
<buffer>adapted-luminance</buffer>
|
||||
</binding>
|
||||
<binding>
|
||||
<unit>4</unit>
|
||||
<buffer>bloom0</buffer>
|
||||
</binding>
|
||||
<attachment>
|
||||
<component>color</component>
|
||||
<buffer>final</buffer>
|
||||
</attachment>
|
||||
</pass>
|
||||
|
||||
<!--
|
||||
Final display pass
|
||||
Perform any post-processing that has to be done in LDR space.
|
||||
-->
|
||||
<pass>
|
||||
<name>display</name>
|
||||
<type>quad</type>
|
||||
<effect>Effects/HDR/display</effect>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>final</buffer>
|
||||
</binding>
|
||||
</pass>
|
||||
|
||||
<!-- DEBUG PASSES -->
|
||||
<!--
|
||||
<pass>
|
||||
<name>debug-albedo</name>
|
||||
<type>quad</type>
|
||||
<effect>Effects/HDR/trivial</effect>
|
||||
<clear-mask>depth</clear-mask>
|
||||
<geometry>
|
||||
<left>0.0</left>
|
||||
<bottom>0.0</bottom>
|
||||
<width>0.2</width>
|
||||
<height>0.2</height>
|
||||
</geometry>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>gbuffer0</buffer>
|
||||
</binding>
|
||||
</pass>
|
||||
<pass>
|
||||
<name>debug-normals</name>
|
||||
<type>quad</type>
|
||||
<effect>Effects/HDR/trivial</effect>
|
||||
<clear-mask>depth</clear-mask>
|
||||
<geometry>
|
||||
<left>0.8</left>
|
||||
<bottom>0.0</bottom>
|
||||
<width>0.2</width>
|
||||
<height>0.2</height>
|
||||
</geometry>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>gbuffer1</buffer>
|
||||
</binding>
|
||||
</pass>
|
||||
<pass>
|
||||
<name>debug-materials</name>
|
||||
<type>quad</type>
|
||||
<effect>Effects/HDR/trivial</effect>
|
||||
<clear-mask>depth</clear-mask>
|
||||
<geometry>
|
||||
<left>0.0</left>
|
||||
<bottom>0.8</bottom>
|
||||
<width>0.2</width>
|
||||
<height>0.2</height>
|
||||
</geometry>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>gbuffer2</buffer>
|
||||
</binding>
|
||||
</pass>
|
||||
<pass>
|
||||
<name>debug-depth</name>
|
||||
<type>quad</type>
|
||||
<effect>Effects/HDR/trivial</effect>
|
||||
<clear-mask>depth</clear-mask>
|
||||
<geometry>
|
||||
<left>0.8</left>
|
||||
<bottom>0.8</bottom>
|
||||
<width>0.2</width>
|
||||
<height>0.2</height>
|
||||
</geometry>
|
||||
<binding>
|
||||
<unit>0</unit>
|
||||
<buffer>depth</buffer>
|
||||
</binding>
|
||||
</pass>
|
||||
-->
|
||||
</PropertyList>
|
28
Effects/Fallback/hdr-geometry.eff
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/Fallback/hdr-geometry</name>
|
||||
<technique n="110">
|
||||
<scheme>hdr-geometry</scheme>
|
||||
<pass>
|
||||
<texture-unit>
|
||||
<unit>0</unit>
|
||||
<type><use>texture[0]/type</use></type>
|
||||
<image><use>texture[0]/image</use></image>
|
||||
<filter><use>texture[0]/filter</use></filter>
|
||||
<wrap-s><use>texture[0]/wrap-s</use></wrap-s>
|
||||
<wrap-t><use>texture[0]/wrap-t</use></wrap-t>
|
||||
</texture-unit>
|
||||
<cull-face>back</cull-face>
|
||||
<program>
|
||||
<vertex-shader>Shaders/HDR/geometry.vert</vertex-shader>
|
||||
<fragment-shader>Shaders/HDR/geometry.frag</fragment-shader>
|
||||
<fragment-shader>Shaders/HDR/gbuffer-include.frag</fragment-shader>
|
||||
</program>
|
||||
<uniform>
|
||||
<name>color_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">0</value>
|
||||
</uniform>
|
||||
</pass>
|
||||
</technique>
|
||||
</PropertyList>
|
31
Effects/Fallback/hdr-shadow.eff
Normal file
|
@ -0,0 +1,31 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/Fallback/hdr-shadow</name>
|
||||
<technique n="120">
|
||||
<scheme>hdr-shadow</scheme>
|
||||
<pass>
|
||||
<texture-unit>
|
||||
<unit>0</unit>
|
||||
<type><use>texture[0]/type</use></type>
|
||||
<image><use>texture[0]/image</use></image>
|
||||
<filter><use>texture[0]/filter</use></filter>
|
||||
<wrap-s><use>texture[0]/wrap-s</use></wrap-s>
|
||||
<wrap-t><use>texture[0]/wrap-t</use></wrap-t>
|
||||
</texture-unit>
|
||||
<color-mask type="vec4d">0 0 0 0</color-mask>
|
||||
<cull-face>back</cull-face>
|
||||
<blend>
|
||||
<active>false</active>
|
||||
</blend>
|
||||
<program>
|
||||
<vertex-shader>Shaders/HDR/geometry-shadow.vert</vertex-shader>
|
||||
<fragment-shader>Shaders/HDR/geometry-shadow.frag</fragment-shader>
|
||||
</program>
|
||||
<uniform>
|
||||
<name>color_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">0</value>
|
||||
</uniform>
|
||||
</pass>
|
||||
</technique>
|
||||
</PropertyList>
|
22
Effects/HDR/adapt-luminance.eff
Normal file
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/adapt-luminance</name>
|
||||
<technique n="1">
|
||||
<pass>
|
||||
<program>
|
||||
<vertex-shader>Shaders/HDR/adapt-luminance.vert</vertex-shader>
|
||||
<fragment-shader>Shaders/HDR/adapt-luminance.frag</fragment-shader>
|
||||
</program>
|
||||
<uniform>
|
||||
<name>prev_lum_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">0</value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>current_lum_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">1</value>
|
||||
</uniform>
|
||||
</pass>
|
||||
</technique>
|
||||
</PropertyList>
|
23
Effects/HDR/ao.eff
Normal file
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/ao</name>
|
||||
<technique n="1">
|
||||
<pass>
|
||||
<program>
|
||||
<vertex-shader>Shaders/HDR/trivial.vert</vertex-shader>
|
||||
<fragment-shader>Shaders/HDR/ao.frag</fragment-shader>
|
||||
<fragment-shader>Shaders/HDR/gbuffer-include.frag</fragment-shader>
|
||||
</program>
|
||||
<uniform>
|
||||
<name>depth_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">0</value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>normal_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">1</value>
|
||||
</uniform>
|
||||
</pass>
|
||||
</technique>
|
||||
</PropertyList>
|
14
Effects/HDR/atmos-aerial-perspective.eff
Normal file
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/atmos-aerial-perspective</name>
|
||||
<technique n="1">
|
||||
<pass>
|
||||
<program>
|
||||
<vertex-shader>Shaders/HDR/trivial.vert</vertex-shader>
|
||||
<fragment-shader>Shaders/HDR/atmos-aerial-perspective.frag</fragment-shader>
|
||||
<fragment-shader>Shaders/HDR/atmosphere-include.frag</fragment-shader>
|
||||
<fragment-shader>Shaders/HDR/gbuffer-include.frag</fragment-shader>
|
||||
</program>
|
||||
</pass>
|
||||
</technique>
|
||||
</PropertyList>
|
13
Effects/HDR/atmos-sky-view.eff
Normal file
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/atmos-sky-view</name>
|
||||
<technique n="1">
|
||||
<pass>
|
||||
<program>
|
||||
<vertex-shader>Shaders/HDR/trivial.vert</vertex-shader>
|
||||
<fragment-shader>Shaders/HDR/atmos-sky-view.frag</fragment-shader>
|
||||
<fragment-shader>Shaders/HDR/atmosphere-include.frag</fragment-shader>
|
||||
</program>
|
||||
</pass>
|
||||
</technique>
|
||||
</PropertyList>
|
22
Effects/HDR/bloom-threshold.eff
Normal file
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/bloom-threshold</name>
|
||||
<technique n="1">
|
||||
<pass>
|
||||
<program>
|
||||
<vertex-shader>Shaders/HDR/trivial.vert</vertex-shader>
|
||||
<fragment-shader>Shaders/HDR/bloom-threshold.frag</fragment-shader>
|
||||
</program>
|
||||
<uniform>
|
||||
<name>hdr_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">0</value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>lum_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">1</value>
|
||||
</uniform>
|
||||
</pass>
|
||||
</technique>
|
||||
</PropertyList>
|
30
Effects/HDR/blur.eff
Normal file
|
@ -0,0 +1,30 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/blur</name>
|
||||
<parameters>
|
||||
<is-vertical>false</is-vertical>
|
||||
</parameters>
|
||||
<technique n="1">
|
||||
<pass>
|
||||
<program>
|
||||
<vertex-shader>Shaders/HDR/trivial.vert</vertex-shader>
|
||||
<fragment-shader>Shaders/HDR/blur.frag</fragment-shader>
|
||||
</program>
|
||||
<uniform>
|
||||
<name>tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">0</value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>prev_pass_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">1</value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>vertical</name>
|
||||
<type>bool</type>
|
||||
<value type="bool"><use>is-vertical</use></value>
|
||||
</uniform>
|
||||
</pass>
|
||||
</technique>
|
||||
</PropertyList>
|
17
Effects/HDR/copy-prev-luminance.eff
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/copy-prev-luminance</name>
|
||||
<technique n="1">
|
||||
<pass>
|
||||
<program>
|
||||
<vertex-shader>Shaders/HDR/adapt-luminance.vert</vertex-shader>
|
||||
<fragment-shader>Shaders/HDR/copy-prev-luminance.frag</fragment-shader>
|
||||
</program>
|
||||
<uniform>
|
||||
<name>lum_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">0</value>
|
||||
</uniform>
|
||||
</pass>
|
||||
</technique>
|
||||
</PropertyList>
|
17
Effects/HDR/display.eff
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/display</name>
|
||||
<technique n="1">
|
||||
<pass>
|
||||
<program>
|
||||
<vertex-shader>Shaders/HDR/display.vert</vertex-shader>
|
||||
<fragment-shader>Shaders/HDR/display.frag</fragment-shader>
|
||||
</program>
|
||||
<uniform>
|
||||
<name>tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">0</value>
|
||||
</uniform>
|
||||
</pass>
|
||||
</technique>
|
||||
</PropertyList>
|
25
Effects/HDR/envmap-prefilter.eff
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/envmap-prefilter</name>
|
||||
<parameters>
|
||||
<roughness type="float">0.0</roughness>
|
||||
</parameters>
|
||||
<technique n="1">
|
||||
<pass>
|
||||
<program>
|
||||
<vertex-shader>Shaders/HDR/envmap-prefilter.vert</vertex-shader>
|
||||
<fragment-shader>Shaders/HDR/envmap-prefilter.frag</fragment-shader>
|
||||
</program>
|
||||
<uniform>
|
||||
<name>envmap</name>
|
||||
<type>sampler-cube</type>
|
||||
<value type="int">0</value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>roughness</name>
|
||||
<type>float</type>
|
||||
<value><use>roughness</use></value>
|
||||
</uniform>
|
||||
</pass>
|
||||
</technique>
|
||||
</PropertyList>
|
8
Effects/HDR/envmap-prefilter1.eff
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/envmap-prefilter1</name>
|
||||
<inherits-from>Effects/HDR/envmap-prefilter</inherits-from>
|
||||
<parameters>
|
||||
<roughness type="float">0.25</roughness>
|
||||
</parameters>
|
||||
</PropertyList>
|
8
Effects/HDR/envmap-prefilter2.eff
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/envmap-prefilter2</name>
|
||||
<inherits-from>Effects/HDR/envmap-prefilter</inherits-from>
|
||||
<parameters>
|
||||
<roughness type="float">0.5</roughness>
|
||||
</parameters>
|
||||
</PropertyList>
|
8
Effects/HDR/envmap-prefilter3.eff
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/envmap-prefilter3</name>
|
||||
<inherits-from>Effects/HDR/envmap-prefilter</inherits-from>
|
||||
<parameters>
|
||||
<roughness type="float">0.75</roughness>
|
||||
</parameters>
|
||||
</PropertyList>
|
8
Effects/HDR/envmap-prefilter4.eff
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/envmap-prefilter4</name>
|
||||
<inherits-from>Effects/HDR/envmap-prefilter</inherits-from>
|
||||
<parameters>
|
||||
<roughness type="float">1.0</roughness>
|
||||
</parameters>
|
||||
</PropertyList>
|
8
Effects/HDR/horizontal-blur.eff
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/horizontal-blur</name>
|
||||
<inherits-from>Effects/HDR/blur</inherits-from>
|
||||
<parameters>
|
||||
<is-vertical>false</is-vertical>
|
||||
</parameters>
|
||||
</PropertyList>
|
82
Effects/HDR/lighting.eff
Normal file
|
@ -0,0 +1,82 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/lighting</name>
|
||||
<parameters>
|
||||
<texture n="7">
|
||||
<image>Textures/PBR/dfg_lut.png</image>
|
||||
<type>2d</type>
|
||||
<filter>linear</filter>
|
||||
<wrap-s>clamp-to-border</wrap-s>
|
||||
<wrap-t>clamp-to-border</wrap-t>
|
||||
<internal-format>normalized</internal-format>
|
||||
</texture>
|
||||
</parameters>
|
||||
<technique n="1">
|
||||
<pass>
|
||||
<texture-unit>
|
||||
<unit>7</unit>
|
||||
<image><use>texture[7]/image</use></image>
|
||||
<type><use>texture[7]/type</use></type>
|
||||
<filter><use>texture[7]/filter</use></filter>
|
||||
<wrap-s><use>texture[7]/wrap-s</use></wrap-s>
|
||||
<wrap-t><use>texture[7]/wrap-t</use></wrap-t>
|
||||
<internal-format><use>texture[7]/internal-format</use></internal-format>
|
||||
</texture-unit>
|
||||
<program>
|
||||
<vertex-shader>Shaders/HDR/trivial.vert</vertex-shader>
|
||||
<fragment-shader>Shaders/HDR/lighting.frag</fragment-shader>
|
||||
<fragment-shader>Shaders/HDR/gbuffer-include.frag</fragment-shader>
|
||||
</program>
|
||||
<uniform>
|
||||
<name>gbuffer0_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">0</value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>gbuffer1_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">1</value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>gbuffer2_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">2</value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>depth_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">3</value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>dfg_lut</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">7</value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>ao_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">8</value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>prefiltered_envmap</name>
|
||||
<type>sampler-cube</type>
|
||||
<value type="int">9</value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>shadow_tex</name>
|
||||
<type>sampler-2d-shadow</type>
|
||||
<value type="int">10</value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>aerial_inscatter_lut</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">11</value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>aerial_transmittance_lut</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">12</value>
|
||||
</uniform>
|
||||
</pass>
|
||||
</technique>
|
||||
</PropertyList>
|
17
Effects/HDR/luminance.eff
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/luminance</name>
|
||||
<technique n="1">
|
||||
<pass>
|
||||
<program>
|
||||
<vertex-shader>Shaders/HDR/trivial.vert</vertex-shader>
|
||||
<fragment-shader>Shaders/HDR/luminance.frag</fragment-shader>
|
||||
</program>
|
||||
<uniform>
|
||||
<name>hdr_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">0</value>
|
||||
</uniform>
|
||||
</pass>
|
||||
</technique>
|
||||
</PropertyList>
|
27
Effects/HDR/postprocess.eff
Normal file
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/postprocess</name>
|
||||
<technique n="1">
|
||||
<pass>
|
||||
<program>
|
||||
<vertex-shader>Shaders/HDR/trivial.vert</vertex-shader>
|
||||
<fragment-shader>Shaders/HDR/postprocess.frag</fragment-shader>
|
||||
</program>
|
||||
<uniform>
|
||||
<name>hdr_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">0</value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>lum_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">1</value>
|
||||
</uniform>
|
||||
<uniform>
|
||||
<name>bloom_tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">4</value>
|
||||
</uniform>
|
||||
</pass>
|
||||
</technique>
|
||||
</PropertyList>
|
17
Effects/HDR/trivial.eff
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/trivial</name>
|
||||
<technique n="1">
|
||||
<pass>
|
||||
<program>
|
||||
<vertex-shader>Shaders/HDR/trivial.vert</vertex-shader>
|
||||
<fragment-shader>Shaders/HDR/trivial.frag</fragment-shader>
|
||||
</program>
|
||||
<uniform>
|
||||
<name>tex</name>
|
||||
<type>sampler-2d</type>
|
||||
<value type="int">0</value>
|
||||
</uniform>
|
||||
</pass>
|
||||
</technique>
|
||||
</PropertyList>
|
8
Effects/HDR/vertical-blur.eff
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/HDR/vertical-blur</name>
|
||||
<inherits-from>Effects/HDR/blur</inherits-from>
|
||||
<parameters>
|
||||
<is-vertical>true</is-vertical>
|
||||
</parameters>
|
||||
</PropertyList>
|
|
@ -514,7 +514,15 @@
|
|||
</pass>
|
||||
</technique>
|
||||
|
||||
|
||||
<!-- Don't use the usual scheme because model-combined requires technique
|
||||
number 7. We need to place this technique before it. -->
|
||||
<technique n="1">
|
||||
<scheme>hdr-geometry</scheme>
|
||||
</technique>
|
||||
<!-- TODO: Actually implement a glass shader instead of just hiding it -->
|
||||
<technique n="2">
|
||||
<scheme>hdr-forward</scheme>
|
||||
</technique>
|
||||
</PropertyList>
|
||||
|
||||
|
||||
|
|
|
@ -6,4 +6,11 @@ and fallback to plain transparency when the model shader is disabled.
|
|||
<PropertyList>
|
||||
<name>Effects/model-combined-transparent</name>
|
||||
<inherits-from>Effects/model-combined</inherits-from>
|
||||
|
||||
<technique n="1">
|
||||
<scheme>hdr-geometry</scheme>
|
||||
</technique>
|
||||
<technique n="2">
|
||||
<scheme>hdr-forward</scheme>
|
||||
</technique>
|
||||
</PropertyList>
|
||||
|
|