1
0
Fork 0

Merge branch 'dev' into FMGC

This commit is contained in:
legoboyvdlp R 2020-03-19 17:41:47 +00:00
commit 3f4e818466
97 changed files with 9078 additions and 6869 deletions

View file

@ -160,7 +160,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
</tank>
</propulsion>
<system file="glass-effect1"/>
<system file="glass-effect"/>
<system file="a320-fcs"/>
<system file="a320-fuel"/>
<system file="a320-fwc"/>

View file

@ -159,7 +159,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
</tank>
</propulsion>
<system file="glass-effect1"/>
<system file="glass-effect"/>
<system file="a320-fcs"/>
<system file="a320-adr"/>
<system file="a320-fuel"/>

View file

@ -159,7 +159,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
</tank>
</propulsion>
<system file="glass-effect1"/>
<system file="glass-effect"/>
<system file="a320-fcs"/>
<system file="a320-fuel"/>
<system file="a320-fwc"/>

View file

@ -2,7 +2,7 @@
<!-- Copyright (c) 2019 Joshua Davidson (Octal450) -->
<PropertyList>
<PropertyList include="Aircraft/Generic/Human/Include/walker-include.xml">
<sim>
<author>Joshua Davidson (Octal450), Jonathan Redpath (legoboyvdlp), Thorsten Herrmann (TH-555), Based on IDG-A32X</author>
@ -45,13 +45,14 @@
<ice-inches>0.0</ice-inches>
<salvage-control>/controls/deice/windowprobeheat</salvage-control>
<sensitivity type="double">0.5</sensitivity>
<!-- not relevant for fdm, ignore output-property -->
<output-property>/environment/aircraft-effects/frost-inch</output-property>
</iceable>
<iceable>
<name>Fuselage</name>
<ice-inches>0.0</ice-inches>
<!-- no salvage control, no deicing of the fuselage -->
<!-- salvage control: de-icing truck -->
<sensitivity type="double">0.3</sensitivity>
<salvage-control>services/deicing_truck/deicing/position-norm</salvage-control>
<output-property>/fdm/jsbsim/ice/fuselage</output-property>
</iceable>
<iceable>
@ -459,6 +460,12 @@
</fuel>
</consumables>
<environment>
<aircraft-effects>
<frost-inch type="double">0</frost-inch>
</aircraft-effects>
</environment>
<fdm>
<jsbsim>
<external_reactions>
@ -1676,6 +1683,33 @@
<script>libraries.resetView();</script>
</binding>
</key>
<key n="105">
<name>i</name>
<desc>Change view to lights</desc>
<repeatable type="bool">true</repeatable>
<binding>
<command>nasal</command>
<script>libraries.lightsView();</script>
</binding>
</key>
<key n="111">
<name>o</name>
<desc>Change view to overhead</desc>
<repeatable type="bool">true</repeatable>
<binding>
<command>nasal</command>
<script>libraries.overheadView();</script>
</binding>
</key>
<key n="117">
<name>u</name>
<desc>Change view to pedestal</desc>
<repeatable type="bool">true</repeatable>
<binding>
<command>nasal</command>
<script>libraries.pedestalView();</script>
</binding>
</key>
<key n="120">
<name>x</name>
<desc>Decrease field of view</desc>
@ -1685,6 +1719,15 @@
<script>libraries.fovZoom(-1);</script>
</binding>
</key>
<key n="121">
<name>y</name>
<desc>Change view to autopilot</desc>
<repeatable type="bool">true</repeatable>
<binding>
<command>nasal</command>
<script>libraries.autopilotView();</script>
</binding>
</key>
<key n="127">
<name>DEL</name>
<desc>Simple Engage/Disengage reversers</desc>
@ -1800,6 +1843,12 @@
<value>0</value>
<value>1</value>
</binding>
<binding>
<command>property-cycle</command>
<property>sim/rendering/als-secondary-lights/use-searchlight</property>
<value>0</value>
<value>1</value>
</binding>
</key>
</keyboard>
</input>
@ -1870,6 +1919,7 @@
<file>Aircraft/A320-family/Nasal/MCDU/MCDU.nas</file>
<file>Aircraft/A320-family/Nasal/MCDU/INITA.nas</file>
<file>Aircraft/A320-family/Nasal/MCDU/INITB.nas</file>
<file>Aircraft/A320-family/Nasal/MCDU/PERFAPPR.nas</file>
<file>Aircraft/A320-family/Nasal/MCDU/PERFCLB.nas</file>
<file>Aircraft/A320-family/Nasal/MCDU/PERFCRZ.nas</file>
<file>Aircraft/A320-family/Nasal/MCDU/PERFDES.nas</file>
@ -1931,6 +1981,9 @@
<file>Aircraft/A320-family/gui/dialogs/refuel.nas</file>
<file>Aircraft/A320-family/gui/dialogs/rmp.nas</file>
</Dialogs>
<save>
<file>Aircraft/A320-family/Nasal/Systems/save.nas</file>
</save>
</nasal>
</PropertyList>

View file

@ -159,7 +159,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
</tank>
</propulsion>
<system file="glass-effect1"/>
<system file="glass-effect"/>
<system file="a320-fcs"/>
<system file="a320-fuel"/>
<system file="a320-fwc"/>

View file

@ -159,7 +159,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
</tank>
</propulsion>
<system file="glass-effect1"/>
<system file="glass-effect"/>
<system file="a320-fcs"/>
<system file="a320-fuel"/>
<system file="a320-fwc"/>

View file

@ -96,6 +96,7 @@ setprop("systems/acconfig/options/weight-kgs", 0);
setprop("systems/acconfig/options/adirs-skip", 0);
setprop("systems/acconfig/options/welcome-skip", 0);
setprop("systems/acconfig/options/no-rendering-warn", 0);
setprop("systems/acconfig/options/save-state", 0);
setprop("systems/acconfig/options/pfd-rate", 1);
setprop("systems/acconfig/options/nd-rate", 1);
setprop("systems/acconfig/options/uecam-rate", 1);
@ -187,9 +188,17 @@ setlistener("/sim/signals/fdm-initialized", func {
}
setprop("systems/acconfig/options/revision", current_revision);
writeSettings();
if (getprop("options/system/save-state") == 1)
{
save.restore(save.default, getprop("sim/fg-home") ~ "/Export/" ~ getprop("sim/aircraft") ~ "-save.xml");
}
spinning.stop();
});
setlistener("/sim/signals/exit", func {
save.save(save.default, getprop("sim/fg-home") ~ "/Export/" ~ getprop("sim/aircraft") ~ "-save.xml");
});
var renderingSettings = {
check: func() {
var rembrandt = getprop("sim/rendering/rembrandt/enabled");
@ -223,6 +232,7 @@ var readSettings = func {
io.read_properties(getprop("sim/fg-home") ~ "/Export/A320-family-config.xml", "/systems/acconfig/options");
setprop("options/system/keyboard-mode", getprop("systems/acconfig/options/keyboard-mode"));
setprop("options/system/weight-kgs", getprop("systems/acconfig/options/weight-kgs"));
setprop("options/system/save-state", getprop("systems/acconfig/options/save-state"));
setprop("controls/adirs/skip", getprop("systems/acconfig/options/adirs-skip"));
setprop("sim/model/autopush/route/show", getprop("systems/acconfig/options/autopush/show-route"));
setprop("sim/model/autopush/route/show-wingtip", getprop("systems/acconfig/options/autopush/show-wingtip"));
@ -232,6 +242,7 @@ var readSettings = func {
var writeSettings = func {
setprop("systems/acconfig/options/keyboard-mode", getprop("options/system/keyboard-mode"));
setprop("systems/acconfig/options/weight-kgs", getprop("options/system/weight-kgs"));
setprop("systems/acconfig/options/save-state", getprop("options/system/save-state"));
setprop("systems/acconfig/options/adirs-skip", getprop("controls/adirs/skip"));
setprop("systems/acconfig/options/autopush/show-route", getprop("sim/model/autopush/route/show"));
setprop("systems/acconfig/options/autopush/show-wingtip", getprop("sim/model/autopush/route/show-wingtip"));

View file

@ -427,6 +427,27 @@
<live>true</live>
</checkbox>
<checkbox>
<!-- TODO there might be a better way to formulate this. -->
<label>Save states between sessions</label>
<halign>left</halign>
<property>/systems/acconfig/options/save-state</property>
<binding>
<command>property-toggle</command>
<property>/options/system/save-state</property>
</binding>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
acconfig.writeSettings();
</script>
</binding>
<live>true</live>
</checkbox>
<group>
<layout>hbox</layout>

View file

@ -386,6 +386,16 @@
</offsets>
</model>
<!-- wing condensation effect -->
<model>
<path>Aircraft/A320-family/Models/Effects/wing-condensation-L.xml</path>
<name>wing-condensation</name>
</model>
<model>
<path>Aircraft/A320-family/Models/Effects/wing-condensation-R.xml</path>
<name>wing-condensation</name>
</model>
<!-- Other non-aircraft models -->
<model>
<name>Pushback</name>

View file

@ -416,6 +416,16 @@
</offsets>
</model>
<!-- wing condensation effect -->
<model>
<path>Aircraft/A320-family/Models/Effects/wing-condensation-L.xml</path>
<name>wing-condensation</name>
</model>
<model>
<path>Aircraft/A320-family/Models/Effects/wing-condensation-R.xml</path>
<name>wing-condensation</name>
</model>
<!-- Other non-aircraft models -->
<model>
<name>Pushback</name>

View file

@ -416,6 +416,16 @@
</offsets>
</model>
<!-- wing condensation effect -->
<model>
<path>Aircraft/A320-family/Models/Effects/wing-condensation-L.xml</path>
<name>wing-condensation</name>
</model>
<model>
<path>Aircraft/A320-family/Models/Effects/wing-condensation-R.xml</path>
<name>wing-condensation</name>
</model>
<!-- Other non-aircraft models -->
<model>
<name>Pushback</name>

View file

@ -395,6 +395,16 @@
</offsets>
</model>
<!-- wing condensation effect -->
<model>
<path>Aircraft/A320-family/Models/Effects/wing-condensation-L.xml</path>
<name>wing-condensation</name>
</model>
<model>
<path>Aircraft/A320-family/Models/Effects/wing-condensation-R.xml</path>
<name>wing-condensation</name>
</model>
<!-- Other non-aircraft models -->
<model>
<name>Pushback</name>

View file

@ -395,6 +395,16 @@
</offsets>
</model>
<!-- wing condensation effect -->
<model>
<path>Aircraft/A320-family/Models/Effects/wing-condensation-L.xml</path>
<name>wing-condensation</name>
</model>
<model>
<path>Aircraft/A320-family/Models/Effects/wing-condensation-R.xml</path>
<name>wing-condensation</name>
</model>
<!-- Other non-aircraft models -->
<model>
<name>Pushback</name>

View file

@ -0,0 +1,146 @@
<?xml version="1.0"?>
<PropertyList>
<particlesystem>
<!-- <type>trail</type>-->
<name>moisture</name>
<texture>res/smoke.png</texture>
<emissive>false</emissive>
<lighting>false</lighting>
<offsets>
<x-m>0.3</x-m>
<y-m>0</y-m>
<z-m>-1.3</z-m>
<pitch-deg>0</pitch-deg>
</offsets>
<attach>local</attach>
<placer>
<type>point</type>
</placer>
<shooter>
<theta-min-deg>0</theta-min-deg>
<theta-max-deg>0</theta-max-deg>
<phi-min-deg>0</phi-min-deg>
<phi-max-deg>0</phi-max-deg>
<speed>
<value>0</value>
<spread>0</spread>
</speed>
<rotation-speed>
<x-min-deg-sec>180</x-min-deg-sec>
<y-min-deg-sec>180</y-min-deg-sec>
<z-min-deg-sec>180</z-min-deg-sec>
<x-max-deg-sec>-180</x-max-deg-sec>
<y-max-deg-sec>-180</y-max-deg-sec>
<z-max-deg-sec>-180</z-max-deg-sec>
</rotation-speed>
</shooter>
<counter>
<particles-per-sec>
<value>50</value>
<spread>0</spread>
</particles-per-sec>
</counter>
<align>billboard</align>
<particle>
<start>
<color>
<red>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</red>
<green>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</green>
<blue>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</blue>
<alpha>
<expression>
<product>
<value>0.002</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</alpha>
</color>
<size>
<value>1.3</value>
</size>
</start>
<end>
<color>
<red>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</red>
<green>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</green>
<blue>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</blue>
<alpha>
<expression>
<product>
<value>0.0008</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</alpha>
</color>
<size>
<value>1.6</value>
</size>
</end>
<life-sec><value>0.0001</value></life-sec>
<mass-kg>0.4</mass-kg>
<radius-m>0.1</radius-m>
</particle>
<program>
<fluid>air</fluid>
<gravity type="bool">false</gravity>
<wind type="bool">false</wind>
</program>
</particlesystem>
</PropertyList>

View file

@ -8,10 +8,10 @@
<emissive>false</emissive>
<lighting>false</lighting>
<offsets>
<x-m>3</x-m>
<x-m>0.3</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
<pitch-deg>-90</pitch-deg>
<z-m>-1</z-m>
<pitch-deg>0</pitch-deg>
</offsets>
<attach>local</attach>
@ -30,18 +30,18 @@
<spread>0</spread>
</speed>
<rotation-speed>
<x-min-deg-sec>0</x-min-deg-sec>
<y-min-deg-sec>0</y-min-deg-sec>
<z-min-deg-sec>0</z-min-deg-sec>
<x-max-deg-sec>0</x-max-deg-sec>
<y-max-deg-sec>0</y-max-deg-sec>
<z-max-deg-sec>0</z-max-deg-sec>
<x-min-deg-sec>180</x-min-deg-sec>
<y-min-deg-sec>180</y-min-deg-sec>
<z-min-deg-sec>180</z-min-deg-sec>
<x-max-deg-sec>-180</x-max-deg-sec>
<y-max-deg-sec>-180</y-max-deg-sec>
<z-max-deg-sec>-180</z-max-deg-sec>
</rotation-speed>
</shooter>
<counter>
<particles-per-sec>
<value>150</value>
<value>50</value>
<spread>0</spread>
</particles-per-sec>
</counter>
@ -54,33 +54,38 @@
<red>
<expression>
<product>
<value>1.0</value>
<property>rendering/scene/diffuse/red</property>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</red>
<green>
<expression>
<product>
<value>1.0</value>
<property>rendering/scene/diffuse/red</property>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</green>
<blue>
<expression>
<product>
<value>1.0</value>
<property>rendering/scene/diffuse/red</property>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</blue>
<alpha>
<value>0.00000001</value>
<expression>
<product>
<value>0.003</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</alpha>
</color>
<size>
<value>1</value>
<value>1.0</value>
</size>
</start>
@ -89,44 +94,49 @@
<red>
<expression>
<product>
<value>0.7</value>
<property>rendering/scene/diffuse/red</property>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</red>
<green>
<expression>
<product>
<value>0.7</value>
<property>rendering/scene/diffuse/red</property>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</green>
<blue>
<expression>
<product>
<value>0.7</value>
<property>rendering/scene/diffuse/red</property>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</blue>
<alpha>
<value>0.3</value>
<expression>
<product>
<value>0.0009</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</alpha>
</color>
<size>
<value>2</value>
<value>1.4</value>
</size>
</end>
<life-sec><value>0.4</value></life-sec>
<life-sec><value>0.0001</value></life-sec>
<mass-kg>0.4</mass-kg>
<radius-m>0.1</radius-m>
</particle>
<program>
<fluid>air</fluid>
<gravity type="bool">true</gravity>
<gravity type="bool">false</gravity>
<wind type="bool">false</wind>
</program>

View file

@ -5,43 +5,52 @@
<particlesystem>
<name>engine-spray-reverse</name>
<texture>res/smoke.png</texture>
<emissive type="bool">false</emissive>
<lighting type="bool">false</lighting>
<offsets>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
<pitch-deg>180</pitch-deg>
</offsets>
<emissive>false</emissive>
<lighting>false</lighting>
<attach>world</attach>
<placer>
<type>point</type>
<type>segments</type>
<vertex>
<x-m>1</x-m>
<y-m>3</y-m>
<z-m>-1</z-m>
</vertex>
<vertex>
<x-m>1</x-m>
<y-m>-3</y-m>
<z-m>-1</z-m>
</vertex>
</placer>
<shooter>
<theta-min-deg>-1.5</theta-min-deg>
<theta-max-deg>1.5</theta-max-deg>
<phi-min-deg>-1.5</phi-min-deg>
<phi-max-deg>1.5</phi-max-deg>
<theta-min-deg>0</theta-min-deg>
<theta-max-deg>0</theta-max-deg>
<phi-min-deg>0</phi-min-deg>
<phi-max-deg>0</phi-max-deg>
<speed-mps>
<value>0</value>
<spread>0</spread>
<value>10</value>
<spread>1</spread>
</speed-mps>
<rotation-speed>
<x-min-deg-sec>0</x-min-deg-sec>
<y-min-deg-sec>0</y-min-deg-sec>
<z-min-deg-sec>0</z-min-deg-sec>
<x-max-deg-sec>0</x-max-deg-sec>
<y-max-deg-sec>0</y-max-deg-sec>
<z-max-deg-sec>0</z-max-deg-sec>
<x-max-deg-sec>180</x-max-deg-sec>
<x-min-deg-sec>-180</x-min-deg-sec>
<y-max-deg-sec>180</y-max-deg-sec>
<y-min-deg-sec>-180</y-min-deg-sec>
<z-max-deg-sec>180</z-max-deg-sec>
<z-min-deg-sec>-180</z-min-deg-sec>
</rotation-speed>
</shooter>
<counter>
<particles-per-sec>
<expression>
<product>
<property>environment/surface/wetness</property>
<value>50</value>
</product>
</expression>
<spread>0</spread>
</particles-per-sec>
</counter>
@ -54,83 +63,90 @@
<red>
<expression>
<product>
<value>0.7</value>
<property>rendering/scene/diffuse/red</property>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</red>
<green>
<expression>
<product>
<value>0.7</value>
<property>rendering/scene/diffuse/red</property>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</green>
<blue>
<expression>
<product>
<value>0.7</value>
<property>rendering/scene/diffuse/red</property>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</blue>
<alpha>
<value>0.3</value>
<expression>
<product>
<value>0.2</value>
<property>environment/surface/wetness</property>
</product>
</expression>
</alpha>
</color>
<size>
<value>2</value>
<value>5</value>
</size>
</start>
<end>
<color>
<red>
<expression>
<product>
<value>1.0</value>
<property>rendering/scene/diffuse/red</property>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</red>
<green>
<expression>
<product>
<value>1.0</value>
<property>rendering/scene/diffuse/red</property>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</green>
<blue>
<expression>
<product>
<value>1.0</value>
<property>rendering/scene/diffuse/red</property>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</blue>
<alpha>
<value>0.00000001</value>
<expression>
<product>
<value>0.1</value>
<property>environment/surface/wetness</property>
</product>
</expression>
</alpha>
</color>
<size>
<value>3</value>
<value>10</value>
</size>
</end>
<life-sec>
<value>0.4</value>
<value>0.5</value>
</life-sec>
<mass-kg>0.5</mass-kg>
<radius-m>0.1</radius-m>
<mass-kg>0.025</mass-kg>
<radius-m>0.175</radius-m>
</particle>
<program>
<fluid>air</fluid>
<gravity type="bool">true</gravity>
<wind typ="bool">true</wind>
<gravity>true</gravity>
<wind>true</wind>
</program>
</particlesystem>

View file

@ -25,27 +25,32 @@
</placer>
<shooter>
<theta-min-deg>15</theta-min-deg>
<theta-max-deg>60</theta-max-deg>
<phi-min-deg>-5</phi-min-deg>
<phi-max-deg>5</phi-max-deg>
<theta-min-deg>0</theta-min-deg>
<theta-max-deg>0</theta-max-deg>
<phi-min-deg>0</phi-min-deg>
<phi-max-deg>0</phi-max-deg>
<speed-mps>
<value>250</value>
<spread>15</spread>
</speed-mps>
<rotation-speed>
<x-max-deg-sec>15</x-max-deg-sec>
<x-min-deg-sec>-15</x-min-deg-sec>
<y-max-deg-sec>15</y-max-deg-sec>
<y-min-deg-sec>-15</y-min-deg-sec>
<z-max-deg-sec>15</z-max-deg-sec>
<z-min-deg-sec>-15</z-min-deg-sec>
<x-max-deg-sec>180</x-max-deg-sec>
<x-min-deg-sec>-180</x-min-deg-sec>
<y-max-deg-sec>180</y-max-deg-sec>
<y-min-deg-sec>-180</y-min-deg-sec>
<z-max-deg-sec>180</z-max-deg-sec>
<z-min-deg-sec>-180</z-min-deg-sec>
</rotation-speed>
</shooter>
<counter>
<particles-per-sec>
<expression>
<product>
<property>environment/surface/wetness</property>
<value>100</value>
</product>
</expression>
<spread>10</spread>
</particles-per-sec>
</counter>
@ -55,21 +60,77 @@
<particle>
<start>
<color>
<red><value>0.9</value></red>
<green><value>0.9</value></green>
<blue><value>0.9</value></blue>
<alpha><value>0.04</value></alpha>
<red>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</red>
<green>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</green>
<blue>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</blue>
<alpha>
<expression>
<product>
<property>environment/surface/wetness</property>
<value>0.05</value>
</product>
</expression>
</alpha>
</color>
<size>
<value>0.5</value>
<value>5</value>
</size>
</start>
<end>
<color>
<red><value>1</value></red>
<green><value>1</value></green>
<blue><value>1</value></blue>
<alpha><value>0.02</value></alpha>
<red>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</red>
<green>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</green>
<blue>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</blue>
<alpha>
<expression>
<product>
<property>environment/surface/wetness</property>
<value>0.02</value>
</product>
</expression>
</alpha>
</color>
<size>
<value>10</value>

View file

@ -0,0 +1,261 @@
<?xml version="1.0" encoding="UTF-8" ?>
<PropertyList>
<particlesystem>
<name>wing-condensation</name>
<texture>res/smoke.png</texture>
<emissive>false</emissive>
<lighting>false</lighting>
<type>normal</type>
<attach>local</attach>
<condition>
<and>
<or>
<greater-than-equals>
<expression>
<sum>
<product>
<property>environment/relative-humidity</property>
<value>0.1</value>
</product>
<property>systems/navigation/adr/output/aoa-1</property>
</sum>
</expression>
<value>13.5</value>
</greater-than-equals>
<greater-than-equals>
<expression>
<sum>
<product>
<property>environment/relative-humidity</property>
<value>0.1</value>
</product>
<property>systems/navigation/adr/output/aoa-2</property>
</sum>
</expression>
<value>13.5</value>
</greater-than-equals>
<greater-than-equals>
<expression>
<sum>
<product>
<property>environment/relative-humidity</property>
<value>0.1</value>
</product>
<property>systems/navigation/adr/output/aoa-3</property>
</sum>
</expression>
<value>13.5</value>
</greater-than-equals>
</or>
<greater-than>
<property>velocities/groundspeed-kt</property>
<value>100</value>
</greater-than>
<less-than>
<property>velocities/groundspeed-kt</property>
<value>210</value>
</less-than>
<greater-than>
<property>environment/relative-humidity</property>
<value>50</value>
</greater-than>
<less-than-equals>
<property>environment/temperature-degc</property>
<value>28</value>
</less-than-equals>
<greater-than>
<property>position/altitude-agl-ft</property>
<value>0</value>
</greater-than>
<less-than>
<property>position/altitude-agl-ft</property>
<value>8000</value>
</less-than>
<or>
<greater-than>
<property>systems/navigation/adr/output/aoa-1</property>
<value>0</value>
</greater-than>
<greater-than>
<property>systems/navigation/adr/output/aoa-2</property>
<value>0</value>
</greater-than>
<greater-than>
<property>systems/navigation/adr/output/aoa-3</property>
<value>0</value>
</greater-than>
</or>
</and>
</condition>
<placer>
<type>segments</type>
<vertex>
<x-m>15</x-m>
<y-m>-2.3</y-m>
<z-m>0</z-m>
</vertex>
<vertex>
<x-m>22</x-m>
<y-m>-16</y-m>
<z-m>0.7</z-m>
</vertex>
<vertex>
<x-m>19</x-m>
<y-m>-2.3</y-m>
<z-m>-1</z-m>
</vertex>
</placer>
<shooter>
<theta-min-deg>
<!-- <expression>
<sum>
<value>70</value>
<property>systems/navigation/adr/output/aoa-1</property>
</sum>
</expression> -->
<value>90</value>
</theta-min-deg>
<theta-max-deg>
<!-- <expression>
<sum>
<value>110</value>
<property>systems/navigation/adr/output/aoa-1</property>
</sum>
</expression> -->
<value>90</value>
</theta-max-deg>
<phi-min-deg>90</phi-min-deg>
<phi-max-deg>90</phi-max-deg>
<speed-mps>
<!-- <expression>
<product>
<property>velocities/groundspeed-kt</property>
<value>-1</value>
</product>
</expression> -->
<value>0</value>
<spread>0</spread>
</speed-mps>
<rotation-speed>
<x-max-deg-sec>180</x-max-deg-sec>
<x-min-deg-sec>180</x-min-deg-sec>
<y-max-deg-sec>180</y-max-deg-sec>
<y-min-deg-sec>-180</y-min-deg-sec>
<z-max-deg-sec>-180</z-max-deg-sec>
<z-min-deg-sec>-180</z-min-deg-sec>
</rotation-speed>
</shooter>
<counter>
<particles-per-sec>
<expression>
<product>
<value>4</value>
<property>environment/relative-humidity</property>
</product>
</expression>
<spread>10</spread>
</particles-per-sec>
</counter>
<align>billboard</align>
<particle>
<start>
<color>
<red>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</red>
<green>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</green>
<blue>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</blue>
<alpha>
<expression>
<product>
<value>0.0007</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</alpha>
</color>
<size>
<value>1.5</value>
</size>
</start>
<end>
<color>
<red>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</red>
<green>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</green>
<blue>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</blue>
<alpha>
<expression>
<product>
<value>0.00001</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</alpha>
</color>
<size>
<value>2</value>
</size>
</end>
<life-sec>
<value>0.00001</value>
</life-sec>
<mass-kg>0.025</mass-kg>
<radius-m>0.175</radius-m>
</particle>
<program>
<fluid>air</fluid>
<gravity>true</gravity>
<wind>true</wind>
</program>
</particlesystem>
</PropertyList>

View file

@ -0,0 +1,261 @@
<?xml version="1.0" encoding="UTF-8" ?>
<PropertyList>
<particlesystem>
<name>wing-condensation</name>
<texture>res/smoke.png</texture>
<emissive>false</emissive>
<lighting>false</lighting>
<type>normal</type>
<attach>local</attach>
<condition>
<and>
<or>
<greater-than-equals>
<expression>
<sum>
<product>
<property>environment/relative-humidity</property>
<value>0.1</value>
</product>
<property>systems/navigation/adr/output/aoa-1</property>
</sum>
</expression>
<value>13.5</value>
</greater-than-equals>
<greater-than-equals>
<expression>
<sum>
<product>
<property>environment/relative-humidity</property>
<value>0.1</value>
</product>
<property>systems/navigation/adr/output/aoa-2</property>
</sum>
</expression>
<value>13.5</value>
</greater-than-equals>
<greater-than-equals>
<expression>
<sum>
<product>
<property>environment/relative-humidity</property>
<value>0.1</value>
</product>
<property>systems/navigation/adr/output/aoa-3</property>
</sum>
</expression>
<value>13.5</value>
</greater-than-equals>
</or>
<greater-than>
<property>velocities/groundspeed-kt</property>
<value>100</value>
</greater-than>
<less-than>
<property>velocities/groundspeed-kt</property>
<value>210</value>
</less-than>
<greater-than>
<property>environment/relative-humidity</property>
<value>50</value>
</greater-than>
<less-than-equals>
<property>environment/temperature-degc</property>
<value>28</value>
</less-than-equals>
<greater-than>
<property>position/altitude-agl-ft</property>
<value>0</value>
</greater-than>
<less-than>
<property>position/altitude-agl-ft</property>
<value>8000</value>
</less-than>
<or>
<greater-than>
<property>systems/navigation/adr/output/aoa-1</property>
<value>0</value>
</greater-than>
<greater-than>
<property>systems/navigation/adr/output/aoa-2</property>
<value>0</value>
</greater-than>
<greater-than>
<property>systems/navigation/adr/output/aoa-3</property>
<value>0</value>
</greater-than>
</or>
</and>
</condition>
<placer>
<type>segments</type>
<vertex>
<x-m>15</x-m>
<y-m>2.3</y-m>
<z-m>0</z-m>
</vertex>
<vertex>
<x-m>22</x-m>
<y-m>16</y-m>
<z-m>0.7</z-m>
</vertex>
<vertex>
<x-m>19</x-m>
<y-m>2.3</y-m>
<z-m>-1</z-m>
</vertex>
</placer>
<shooter>
<theta-min-deg>
<!-- <expression>
<sum>
<value>70</value>
<property>systems/navigation/adr/output/aoa-1</property>
</sum>
</expression> -->
<value>90</value>
</theta-min-deg>
<theta-max-deg>
<!-- <expression>
<sum>
<value>110</value>
<property>systems/navigation/adr/output/aoa-1</property>
</sum>
</expression> -->
<value>90</value>
</theta-max-deg>
<phi-min-deg>90</phi-min-deg>
<phi-max-deg>90</phi-max-deg>
<speed-mps>
<!-- <expression>
<product>
<property>velocities/groundspeed-kt</property>
<value>-1</value>
</product>
</expression> -->
<value>0</value>
<spread>0</spread>
</speed-mps>
<rotation-speed>
<x-max-deg-sec>180</x-max-deg-sec>
<x-min-deg-sec>180</x-min-deg-sec>
<y-max-deg-sec>180</y-max-deg-sec>
<y-min-deg-sec>-180</y-min-deg-sec>
<z-max-deg-sec>-180</z-max-deg-sec>
<z-min-deg-sec>-180</z-min-deg-sec>
</rotation-speed>
</shooter>
<counter>
<particles-per-sec>
<expression>
<product>
<value>4</value>
<property>environment/relative-humidity</property>
</product>
</expression>
<spread>10</spread>
</particles-per-sec>
</counter>
<align>billboard</align>
<particle>
<start>
<color>
<red>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</red>
<green>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</green>
<blue>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</blue>
<alpha>
<expression>
<product>
<value>0.0007</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</alpha>
</color>
<size>
<value>1.5</value>
</size>
</start>
<end>
<color>
<red>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</red>
<green>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</green>
<blue>
<expression>
<product>
<value>0.01</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</blue>
<alpha>
<expression>
<product>
<value>0.00001</value>
<property>environment/relative-humidity</property>
</product>
</expression>
</alpha>
</color>
<size>
<value>2</value>
</size>
</end>
<life-sec>
<value>0.00001</value>
</life-sec>
<mass-kg>0.025</mass-kg>
<radius-m>0.175</radius-m>
</particle>
<program>
<fluid>air</fluid>
<gravity>true</gravity>
<wind>true</wind>
</program>
</particlesystem>
</PropertyList>

View file

@ -51,24 +51,7 @@
<path>Aircraft/A320-family/Models/Effects/contrail.xml</path>
<name>contrail</name>
<condition>
<and>
<greater-than>
<property>engines/engine[0]/n2-actual</property>
<value>50</value>
</greater-than>
<greater-than>
<property>position/altitude-ft</property>
<value>19000</value>
</greater-than>
<less-than>
<property>environment/temperature-degc</property>
<value>-30</value>
</less-than>
<equals>
<property>engines/engine[0]/state</property>
<value>3</value>
</equals>
</and>
<property>environment/contrail</property>
</condition>
<overlay>
<params>
@ -84,7 +67,7 @@
<!-- Takeoff/Landing Engine Moisture -->
<model>
<path>Aircraft/A320-family/Models/Effects/Moisture.xml</path>
<path>Aircraft/A320-family/Models/Effects/Moisture-neo.xml</path>
<name>moisture</name>
<condition>
<and>
@ -111,9 +94,9 @@
</and>
</condition>
<offsets>
<x-m>-0.5</x-m>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
<z-m>0.4</z-m>
<pitch-deg>0</pitch-deg>
</offsets>
</model>
@ -186,9 +169,9 @@
</and>
</condition>
<offsets>
<x-m>0.875</x-m>
<x-m>-1.0</x-m>
<y-m>0</y-m>
<z-m>-2.5</z-m>
<z-m>0</z-m>
</offsets>
</model>

View file

@ -51,24 +51,7 @@
<path>Aircraft/A320-family/Models/Effects/contrail.xml</path>
<name>contrail</name>
<condition>
<and>
<greater-than>
<property>engines/engine[1]/n2-actual</property>
<value>50</value>
</greater-than>
<greater-than>
<property>position/altitude-ft</property>
<value>19000</value>
</greater-than>
<less-than>
<property>environment/temperature-degc</property>
<value>-30</value>
</less-than>
<equals>
<property>engines/engine[1]/state</property>
<value>3</value>
</equals>
</and>
<property>environment/contrail</property>
</condition>
<overlay>
<params>
@ -84,7 +67,7 @@
<!-- Takeoff/Landing Engine Moisture -->
<model>
<path>Aircraft/A320-family/Models/Effects/Moisture.xml</path>
<path>Aircraft/A320-family/Models/Effects/Moisture-neo.xml</path>
<name>moisture</name>
<condition>
<and>
@ -114,9 +97,9 @@
</and>
</condition>
<offsets>
<x-m>-0.5</x-m>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
<z-m>0.4</z-m>
<pitch-deg>0</pitch-deg>
</offsets>
</model>
@ -189,9 +172,9 @@
</and>
</condition>
<offsets>
<x-m>0.875</x-m>
<x-m>-1.0</x-m>
<y-m>0</y-m>
<z-m>-2.5</z-m>
<z-m>0</z-m>
</offsets>
</model>

View file

@ -38,24 +38,7 @@
<path>Aircraft/A320-family/Models/Effects/contrail.xml</path>
<name>contrail</name>
<condition>
<and>
<greater-than>
<property>engines/engine[0]/n2-actual</property>
<value>50</value>
</greater-than>
<greater-than>
<property>position/altitude-ft</property>
<value>19000</value>
</greater-than>
<less-than>
<property>environment/temperature-degc</property>
<value>-30</value>
</less-than>
<equals>
<property>engines/engine[0]/state</property>
<value>3</value>
</equals>
</and>
<property>environment/contrail</property>
</condition>
<overlay>
<params>
@ -71,7 +54,7 @@
<!-- Takeoff/Landing Engine Moisture -->
<model>
<path>Aircraft/A320-family/Models/Effects/Moisture.xml</path>
<path>Aircraft/A320-family/Models/Effects/Moisture-neo.xml</path>
<name>moisture</name>
<condition>
<and>
@ -98,7 +81,7 @@
</and>
</condition>
<offsets>
<x-m>-0.5</x-m>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
<pitch-deg>0</pitch-deg>
@ -173,9 +156,9 @@
</and>
</condition>
<offsets>
<x-m>1.5</x-m>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>-1</z-m>
<z-m>0</z-m>
</offsets>
</model>

View file

@ -38,24 +38,7 @@
<path>Aircraft/A320-family/Models/Effects/contrail.xml</path>
<name>contrail</name>
<condition>
<and>
<greater-than>
<property>engines/engine[1]/n2-actual</property>
<value>50</value>
</greater-than>
<greater-than>
<property>position/altitude-ft</property>
<value>19000</value>
</greater-than>
<less-than>
<property>environment/temperature-degc</property>
<value>-30</value>
</less-than>
<equals>
<property>engines/engine[1]/state</property>
<value>3</value>
</equals>
</and>
<property>environment/contrail</property>
</condition>
<overlay>
<params>
@ -71,7 +54,7 @@
<!-- Takeoff/Landing Engine Moisture -->
<model>
<path>Aircraft/A320-family/Models/Effects/Moisture.xml</path>
<path>Aircraft/A320-family/Models/Effects/Moisture-neo.xml</path>
<name>moisture</name>
<condition>
<and>
@ -98,7 +81,7 @@
</and>
</condition>
<offsets>
<x-m>-0.5</x-m>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
<pitch-deg>0</pitch-deg>
@ -173,9 +156,9 @@
</and>
</condition>
<offsets>
<x-m>1.5</x-m>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>-1</z-m>
<z-m>0</z-m>
</offsets>
</model>

View file

@ -40,24 +40,7 @@
<path>Aircraft/A320-family/Models/Effects/contrail.xml</path>
<name>contrail</name>
<condition>
<and>
<greater-than>
<property>engines/engine[0]/n2-actual</property>
<value>50</value>
</greater-than>
<greater-than>
<property>position/altitude-ft</property>
<value>19000</value>
</greater-than>
<less-than>
<property>environment/temperature-degc</property>
<value>-30</value>
</less-than>
<equals>
<property>engines/engine[0]/state</property>
<value>3</value>
</equals>
</and>
<property>environment/contrail</property>
</condition>
<overlay>
<params>
@ -100,9 +83,9 @@
</and>
</condition>
<offsets>
<x-m>-0.5</x-m>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
<z-m>0.3</z-m>
<pitch-deg>0</pitch-deg>
</offsets>
</model>
@ -175,9 +158,9 @@
</and>
</condition>
<offsets>
<x-m>0.875</x-m>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>-2.5</z-m>
<z-m>0</z-m>
</offsets>
</model>

View file

@ -40,24 +40,7 @@
<name>contrail</name>
<path>Aircraft/A320-family/Models/Effects/contrail.xml</path>
<condition>
<and>
<greater-than>
<property>engines/engine[1]/n2-actual</property>
<value>50</value>
</greater-than>
<greater-than>
<property>position/altitude-ft</property>
<value>19000</value>
</greater-than>
<less-than>
<property>environment/temperature-degc</property>
<value>-30</value>
</less-than>
<equals>
<property>engines/engine[1]/state</property>
<value>3</value>
</equals>
</and>
<property>environment/contrail</property>
</condition>
<overlay>
<params>
@ -100,9 +83,9 @@
</and>
</condition>
<offsets>
<x-m>-0.5</x-m>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
<z-m>0.3</z-m>
<pitch-deg>0</pitch-deg>
</offsets>
</model>
@ -175,9 +158,9 @@
</and>
</condition>
<offsets>
<x-m>0.875</x-m>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>-2.5</z-m>
<z-m>0</z-m>
</offsets>
</model>

View file

@ -37,24 +37,7 @@
<path>Aircraft/A320-family/Models/Effects/contrail.xml</path>
<name>contrail</name>
<condition>
<and>
<greater-than>
<property>engines/engine[0]/n2-actual</property>
<value>50</value>
</greater-than>
<greater-than>
<property>position/altitude-ft</property>
<value>19000</value>
</greater-than>
<less-than>
<property>environment/temperature-degc</property>
<value>-30</value>
</less-than>
<equals>
<property>engines/engine[0]/state</property>
<value>3</value>
</equals>
</and>
<property>environment/contrail</property>
</condition>
<overlay>
<params>
@ -97,9 +80,9 @@
</and>
</condition>
<offsets>
<x-m>-0.5</x-m>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
<z-m>0.5</z-m>
<pitch-deg>0</pitch-deg>
</offsets>
</model>
@ -172,9 +155,9 @@
</and>
</condition>
<offsets>
<x-m>0.875</x-m>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>-2.5</z-m>
<z-m>0</z-m>
</offsets>
</model>

View file

@ -37,24 +37,7 @@
<path>Aircraft/A320-family/Models/Effects/contrail.xml</path>
<name>contrail</name>
<condition>
<and>
<greater-than>
<property>engines/engine[1]/n2-actual</property>
<value>50</value>
</greater-than>
<greater-than>
<property>position/altitude-ft</property>
<value>19000</value>
</greater-than>
<less-than>
<property>environment/temperature-degc</property>
<value>-30</value>
</less-than>
<equals>
<property>engines/engine[1]/state</property>
<value>3</value>
</equals>
</and>
<property>environment/contrail</property>
</condition>
<overlay>
<params>
@ -97,9 +80,9 @@
</and>
</condition>
<offsets>
<x-m>-0.5</x-m>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
<z-m>0.5</z-m>
<pitch-deg>0</pitch-deg>
</offsets>
</model>
@ -172,9 +155,9 @@
</and>
</condition>
<offsets>
<x-m>0.875</x-m>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>-2.5</z-m>
<z-m>0</z-m>
</offsets>
</model>

View file

@ -5307,6 +5307,10 @@
</condition>
<command>nasal</command>
<script>
if (getprop("sim/sound/warnings/cchord")) {
setprop("sim/sound/warnings/cchord-inhibit", 1);
}
if (getprop("it-autoflight/output/ap-warning") == 1) {
setprop("it-autoflight/output/ap-warning", 0);
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

View file

@ -14,7 +14,7 @@
<effect>
<inherits-from>Effects/glass</inherits-from>
<object-name>Windshield</object-name>
<object-name>Windsheild</object-name>
<object-name>Windows</object-name>
<object-name>glass</object-name>
<object-name>glass1</object-name>

View file

@ -14,7 +14,7 @@
<effect>
<inherits-from>Effects/glass</inherits-from>
<object-name>Windshield</object-name>
<object-name>Windsheild</object-name>
<object-name>Windows</object-name>
<object-name>glass</object-name>
<object-name>glass1</object-name>

View file

@ -14,7 +14,7 @@
<effect>
<inherits-from>Effects/glass</inherits-from>
<object-name>Windshield</object-name>
<object-name>Windsheild</object-name>
<object-name>Windows</object-name>
<object-name>glass</object-name>
<object-name>glass1</object-name>

View file

@ -168,6 +168,13 @@ var canvas_MCDU_base = {
me["PERFTO_SE"].setColor(0.8078,0.8039,0.8078);
me["PERFTO_OE"].setColor(0.8078,0.8039,0.8078);
me["PERFAPPR_FE"].setFont(symbol);
me["PERFAPPR_SE"].setFont(symbol);
me["PERFAPPR_OE"].setFont(symbol);
me["PERFAPPR_FE"].setColor(0.8078,0.8039,0.8078);
me["PERFAPPR_SE"].setColor(0.8078,0.8039,0.8078);
me["PERFAPPR_OE"].setColor(0.8078,0.8039,0.8078);
me.page = canvas_group;
return me;
@ -180,8 +187,8 @@ var canvas_MCDU_base = {
"Simple_R5_Arrow","Simple_R6_Arrow","Simple_C1","Simple_C2","Simple_C3","Simple_C4","Simple_C5","Simple_C6","Simple_C1S","Simple_C2S","Simple_C3S",
"Simple_C4S","Simple_C5S","Simple_C6S","INITA","INITA_CoRoute","INITA_FltNbr","INITA_CostIndex","INITA_CruiseFLTemp","INITA_FromTo",
"INITA_InitRequest","INITA_AlignIRS","INITB","INITB_ZFWCG","INITB_ZFW","INITB_ZFW_S","INITB_Block","PERFTO","PERFTO_V1","PERFTO_VR","PERFTO_V2",
"PERFTO_FE","PERFTO_SE","PERFTO_OE","FPLN","FPLN_From","FPLN_TMPY_group","FPLN_Callsign","departureTMPY", "arrowsDepArr","arrow1L","arrow2L","arrow3L"
,"arrow4L","arrow5L","arrow1R","arrow2R","arrow3R","arrow4R","arrow5R"];
"PERFTO_FE","PERFTO_SE","PERFTO_OE","PERFAPPR","PERFAPPR_FE","PERFAPPR_SE","PERFAPPR_OE","FPLN","FPLN_From","FPLN_TMPY_group","FPLN_Callsign",
"departureTMPY", "arrowsDepArr","arrow1L","arrow2L","arrow3L","arrow4L","arrow5L","arrow1R","arrow2R","arrow3R","arrow4R","arrow5R"];
},
update: func() {
if (systems.ELEC.Bus.ac1.getValue() >= 110 and mcdu1_lgt.getValue() > 0.01) {
@ -522,6 +529,7 @@ var canvas_MCDU_base = {
me["INITB"].hide();
me["PERFTO"].hide();
me["arrowsDepArr"].hide();
me["PERFAPPR"].hide();
me["Simple_Title"].setText("MCDU MENU");
me["Simple_PageNum"].setText("X/X");
me["Simple_PageNum"].hide();
@ -533,6 +541,7 @@ var canvas_MCDU_base = {
me["Simple_L4"].show();
me["Simple_L5"].hide();
me["Simple_L6"].hide();
me["Simple_L0S"].hide();
me["Simple_L1S"].hide();
me["Simple_L2S"].hide();
me["Simple_L3S"].hide();
@ -605,6 +614,7 @@ var canvas_MCDU_base = {
me["INITB"].hide();
me["PERFTO"].hide();
me["arrowsDepArr"].hide();
me["PERFAPPR"].hide();
me["Simple_Title"].setText(sprintf("%s", " " ~ acType.getValue()));
me["Simple_PageNum"].setText("X/X");
me["Simple_PageNum"].hide();
@ -617,6 +627,7 @@ var canvas_MCDU_base = {
me["Simple_L4"].hide();
me["Simple_L5"].show();
me["Simple_L6"].show();
me["Simple_L0S"].hide();
me["Simple_L1S"].show();
me["Simple_L2S"].show();
me["Simple_L3S"].show();
@ -688,6 +699,7 @@ var canvas_MCDU_base = {
me["INITB"].hide();
me["PERFTO"].hide();
me["arrowsDepArr"].hide();
me["PERFAPPR"].hide();
me["Simple_Title"].setText("DATA INDEX");
me["Simple_PageNum"].setText("1/2");
me["Simple_PageNum"].show();
@ -700,6 +712,7 @@ var canvas_MCDU_base = {
me["Simple_L4"].show();
me["Simple_L5"].hide();
me["Simple_L6"].hide();
me["Simple_L0S"].hide();
me["Simple_L1S"].show();
me["Simple_L2S"].show();
me["Simple_L3S"].show();
@ -769,6 +782,7 @@ var canvas_MCDU_base = {
me["INITB"].hide();
me["PERFTO"].hide();
me["arrowsDepArr"].hide();
me["PERFAPPR"].hide();
me["Simple_Title"].setText("DATA INDEX");
me["Simple_PageNum"].setText("2/2");
me["Simple_PageNum"].show();
@ -781,6 +795,7 @@ var canvas_MCDU_base = {
me["Simple_L4"].show();
me["Simple_L5"].show();
me["Simple_L6"].show();
me["Simple_L0S"].hide();
me["Simple_L1S"].hide();
me["Simple_L2S"].hide();
me["Simple_L3S"].hide();
@ -855,6 +870,7 @@ var canvas_MCDU_base = {
me["INITB"].hide();
me["PERFTO"].hide();
me["arrowsDepArr"].hide();
me["PERFAPPR"].hide();
me["Simple_Title"].setText("POSITION MONITOR");
me["Simple_PageNum"].setText("X/X");
me["Simple_PageNum"].hide();
@ -867,6 +883,7 @@ var canvas_MCDU_base = {
me["Simple_L4"].show();
me["Simple_L5"].show();
me["Simple_L6"].show();
me["Simple_L0S"].hide();
me["Simple_L1S"].hide();
me["Simple_L2S"].hide();
me["Simple_L3S"].hide();
@ -953,6 +970,7 @@ var canvas_MCDU_base = {
me["INITB"].hide();
me["PERFTO"].hide();
me["arrowsDepArr"].hide();
me["PERFAPPR"].hide();
me["Simple_Title"].setText("RADIO NAV");
me["Simple_PageNum"].setText("X/X");
me["Simple_PageNum"].hide();
@ -965,6 +983,7 @@ var canvas_MCDU_base = {
me["Simple_L4"].show();
me["Simple_L5"].show();
me["Simple_L6"].hide();
me["Simple_L0S"].hide();
me["Simple_L1S"].show();
me["Simple_L2S"].show();
me["Simple_L3S"].show();
@ -1093,6 +1112,7 @@ var canvas_MCDU_base = {
me["INITB"].hide();
me["PERFTO"].hide();
me["arrowsDepArr"].hide();
me["PERFAPPR"].hide();
me["Simple_Title"].setText("INIT");
me["Simple_PageNum"].setText("X/X");
me["Simple_PageNum"].hide();
@ -1100,6 +1120,7 @@ var canvas_MCDU_base = {
me["Simple_L2"].show();
me["Simple_L4"].show();
me["Simple_L6"].show();
me["Simple_L0S"].hide();
me["Simple_L1S"].show();
me["Simple_L2S"].show();
me["Simple_L3S"].show();
@ -1249,6 +1270,7 @@ var canvas_MCDU_base = {
me["INITB"].show();
me["PERFTO"].hide();
me["arrowsDepArr"].hide();
me["PERFAPPR"].hide();
me["Simple_Title"].setText("INIT");
me["Simple_PageNum"].setText("X/X");
me["Simple_PageNum"].hide();
@ -1261,6 +1283,7 @@ var canvas_MCDU_base = {
me["Simple_L4"].show();
me["Simple_L5"].show();
me["Simple_L6"].show();
me["Simple_L0S"].hide();
me["Simple_L1S"].show();
me["Simple_L2S"].show();
me["Simple_L3S"].show();
@ -1380,6 +1403,7 @@ var canvas_MCDU_base = {
me["INITB"].hide();
me["PERFTO"].hide();
me["arrowsDepArr"].hide();
me["PERFAPPR"].hide();
me["Simple_Title"].setText("FUEL PRED");
me["Simple_PageNum"].setText("X/X");
me["Simple_PageNum"].hide();
@ -1392,6 +1416,7 @@ var canvas_MCDU_base = {
me["Simple_L4"].show();
me["Simple_L5"].show();
me["Simple_L6"].show();
me["Simple_L0S"].hide();
me["Simple_L1S"].show();
me["Simple_L2S"].hide();
me["Simple_L3S"].show();
@ -1493,6 +1518,7 @@ var canvas_MCDU_base = {
me["INITB"].hide();
me["PERFTO"].show();
me["arrowsDepArr"].hide();
me["PERFAPPR"].hide();
me["Simple_Title"].setText("TAKE OFF");
me["Simple_PageNum"].setText("X/X");
me["Simple_PageNum"].hide();
@ -1505,6 +1531,7 @@ var canvas_MCDU_base = {
me["Simple_L4"].show();
me["Simple_L5"].show();
me["Simple_L6"].show();
me["Simple_L0S"].hide();
me["Simple_L1S"].show();
me["Simple_L2S"].show();
me["Simple_L3S"].show();
@ -1535,9 +1562,9 @@ var canvas_MCDU_base = {
me["Simple_R4_Arrow"].hide();
me["Simple_R5_Arrow"].hide();
me["Simple_R6_Arrow"].show();
me["Simple_C1"].hide();
me["Simple_C2"].hide();
me["Simple_C3"].hide();
me["Simple_C1"].show();
me["Simple_C2"].show();
me["Simple_C3"].show();
me["Simple_C4"].hide();
me["Simple_C5"].hide();
me["Simple_C6"].hide();
@ -1640,9 +1667,126 @@ var canvas_MCDU_base = {
me["Simple_R4S"].setText("FLEX TO TEMP");
me["Simple_R5S"].setText("ENG OUT ACC");
me["Simple_R6S"].setText("NEXT ");
me["Simple_C1"].setText(" ---");
me["Simple_C2"].setText(" ---");
me["Simple_C3"].setText(" ---");
me["Simple_C1S"].setText("FLP RETR");
me["Simple_C2S"].setText("SLT RETR");
me["Simple_C3S"].setText("CLEAN ");
} else if (page == "APPR") {
if (!pageSwitch[i].getBoolValue()) {
me["Simple"].show();
me["Simple_Center"].show();
me["INITA"].hide();
me["INITB"].hide();
me["PERFTO"].hide();
me["PERFAPPR"].show();
me["Simple_Title"].setText("APPR");
me["Simple_PageNum"].setText("X/X");
me["Simple_PageNum"].hide();
me["ArrowLeft"].hide();
me["ArrowRight"].hide();
me["Simple_L1"].show();
me["Simple_L2"].show();
me["Simple_L3"].show();
me["Simple_L4"].show();
me["Simple_L5"].show();
me["Simple_L6"].show();
me["Simple_L0S"].show();
me["Simple_L1S"].show();
me["Simple_L2S"].show();
me["Simple_L3S"].show();
me["Simple_L4S"].show();
me["Simple_L5S"].show();
me["Simple_L6S"].show();
me["Simple_L1_Arrow"].hide();
me["Simple_L2_Arrow"].hide();
me["Simple_L3_Arrow"].hide();
me["Simple_L4_Arrow"].hide();
me["Simple_L5_Arrow"].hide();
me["Simple_L6_Arrow"].show();
me["Simple_R1"].show();
me["Simple_R2"].show();
me["Simple_R3"].show();
me["Simple_R4"].show();
me["Simple_R5"].hide();
me["Simple_R6"].show();
me["Simple_R1S"].show();
me["Simple_R2S"].show();
me["Simple_R3S"].show();
me["Simple_R4S"].show();
me["Simple_R5S"].hide();
me["Simple_R6S"].show();
me["Simple_R1_Arrow"].hide();
me["Simple_R2_Arrow"].hide();
me["Simple_R3_Arrow"].hide();
me["Simple_R4_Arrow"].hide();
me["Simple_R5_Arrow"].hide();
me["Simple_R6_Arrow"].show();
me["Simple_C1"].show();
me["Simple_C2"].show();
me["Simple_C3"].show();
me["Simple_C4"].hide();
me["Simple_C5"].show();
me["Simple_C6"].hide();
me["Simple_C1S"].show();
me["Simple_C2S"].show();
me["Simple_C3S"].show();
me["Simple_C4S"].hide();
me["Simple_C5S"].show();
me["Simple_C6S"].hide();
me.fontLeft(symbol, default, default, default, symbol, default);
me.fontLeftS(default, default, default, default, default, default);
me.fontRight(default, symbol, symbol, symbol, default, default);
me.fontRightS(default, default, default, default, default, default);
me.fontSizeLeft(small, small, small, small, small, normal);
me.fontSizeRight(small, small, small, small, 0, normal);
me.fontSizeCenter(small, small, small, 0, small, 0);
me.colorLeft("blu", "blu", "blu", "blu", "blu", "wht");
me.colorLeftS("wht", "wht", "wht", "wht", "wht", "wht");
me.colorLeftArrow("wht", "wht", "wht", "wht", "wht", "wht");
me.colorRight("wht", "blu", "blu", "blu", "blu", "wht");
me.colorRightS("wht", "wht", "wht", "wht", "wht", "wht");
me.colorRightArrow("wht", "wht", "wht", "wht", "wht", "wht");
me.colorCenter("grn", "grn", "grn", "wht", "grn", "wht");
me.colorCenterS("wht", "wht", "wht", "wht", "wht", "wht");
pageSwitch[i].setBoolValue(1);
}
me["Simple_L1"].setText("[ ] ");
me["Simple_L2"].setText("---g ");
me["Simple_L3"].setText("---g/---");
me["Simple_L4"].setText(sprintf("%3.0f", transAlt.getValue()));
me["Simple_L5"].setText("[ ] ");
me["Simple_L6"].setText(" PHASE");
me["Simple_L0S"].setText("DEST");
me["Simple_L1S"].setText("QNH");
me["Simple_L2S"].setText("TEMP");
me["Simple_L3S"].setText("MAG WIND");
me["Simple_L4S"].setText("TRANS ALT");
me["Simple_L5S"].setText(" VAPP");
me["Simple_L6S"].setText(" PREV");
me["Simple_R1"].setText("-----");
me["Simple_R2"].setText(" [ ]");
me["Simple_R3"].setText(" [ ]");
me["Simple_R4"].setText(" [ ]");
me["Simple_R1S"].setText("FINAL");
me["Simple_R2S"].setText("MDA");
me["Simple_R3S"].setText("DH");
me["Simple_R4S"].setText("LDG CONF");
me["Simple_C1"].setText(" ---");
me["Simple_C2"].setText(" ---");
me["Simple_C3"].setText(" ---");
me["Simple_C5"].setText(" ---");
me["Simple_C1S"].setText("FLP RETR");
me["Simple_C2S"].setText("SLT RETR");
me["Simple_C3S"].setText("CLEAN ");
me["Simple_C5S"].setText("VLS ");
} else if (page == "CLB" or page == "CRZ" or page == "DES") {
if (!pageSwitch[i].getBoolValue()) {
me["Simple"].show();
@ -1652,6 +1796,7 @@ var canvas_MCDU_base = {
me["INITB"].hide();
me["PERFTO"].hide();
me["arrowsDepArr"].hide();
me["PERFAPPR"].hide();
me["Simple_Title"].setText(sprintf("%s", page));
me["Simple_PageNum"].setText("X/X");
me["Simple_PageNum"].hide();
@ -1664,6 +1809,7 @@ var canvas_MCDU_base = {
me["Simple_L4"].hide();
me["Simple_L5"].hide();
me["Simple_L6"].show();
me["Simple_L0S"].hide();
me["Simple_L1S"].show();
me["Simple_L2S"].show();
me["Simple_L3S"].show();
@ -1696,6 +1842,7 @@ var canvas_MCDU_base = {
me["Simple_C2"].hide();
me["Simple_C3"].hide();
me["Simple_C4"].hide();
me["Simple_C5"].hide();
me["Simple_C6"].hide();
me["Simple_C1S"].show();
me["Simple_C2S"].hide();
@ -3248,6 +3395,7 @@ var canvas_MCDU_base = {
me["INITA"].hide();
me["INITB"].hide();
me["PERFTO"].hide();
me["PERFAPPR"].hide();
me["ArrowLeft"].hide();
me["ArrowRight"].hide();

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 105 KiB

After

Width:  |  Height:  |  Size: 113 KiB

View file

@ -1,101 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="50"
height="50"
id="svg3076"
version="1.1"
inkscape:version="0.48.2 r9819"
sodipodi:docname="airbus-vor.svg">
<metadata
id="metadata3092">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3090" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1248"
inkscape:window-height="703"
id="namedview3088"
showgrid="false"
inkscape:zoom="1.6619718"
inkscape:cx="-33.09322"
inkscape:cy="71"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg3076" />
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<g
id="g3078"
inkscape:groupmode="layer"
transform="matrix(0.34013605,0,0,0.33783784,0.84746249,0.78240397)">
<title
id="title3080">Layer 1</title>
<g
id="svg_7">
<line
id="svg_3"
y2="71"
x2="142"
y1="71"
x1="112"
style="fill:none;stroke:#b00064;stroke-width:5" />
<circle
id="svg_2"
r="39.115215"
cy="71.5"
cx="71"
sodipodi:cx="71"
sodipodi:cy="71.5"
sodipodi:rx="39.115215"
sodipodi:ry="39.115215"
style="fill:none;stroke:#b00064;stroke-width:5"
d="m 110.11522,71.5 c 0,21.602737 -17.512483,39.11522 -39.11522,39.11522 -21.602737,0 -39.115215,-17.512483 -39.115215,-39.11522 0,-21.602737 17.512478,-39.115215 39.115215,-39.115215 21.602737,0 39.11522,17.512478 39.11522,39.115215 z" />
<line
id="svg_4"
y2="71"
x2="30"
y1="71"
x1="0"
style="fill:none;stroke:#b00064;stroke-width:5" />
<line
transform="matrix(0,1,-1,0,198,58)"
id="svg_5"
y2="128"
x2="85"
y1="128"
x1="55"
style="fill:none;stroke:#b00064;stroke-width:5" />
<line
id="svg_6"
transform="matrix(0,1,-1,0,85,-55)"
y2="15"
x2="85"
y1="15"
x1="55"
style="fill:none;stroke:#b00064;stroke-width:5" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 629 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

View file

@ -66,10 +66,13 @@ var alt_std_mode = props.globals.getNode("modes/altimeter/std", 1);
var alt_inhg_mode = props.globals.getNode("modes/altimeter/inhg", 1);
var alt_hpa = props.globals.getNode("instrumentation/altimeter/setting-hpa", 1);
var alt_inhg = props.globals.getNode("instrumentation/altimeter/setting-inhg", 1);
var target_altitude = props.globals.getNode("autopilot/settings/target-altitude-ft", 1);
var altitude = props.globals.getNode("instrumentation/altimeter/indicated-altitude-ft", 1);
var altitude_pfd = props.globals.getNode("instrumentation/altimeter/indicated-altitude-ft-pfd", 1);
var trans_alt = props.globals.getNode("FMGC/internal/trans-alt", 1);
var alt_diff = props.globals.getNode("instrumentation/pfd/alt-diff", 1);
var ap_alt = props.globals.getNode("it-autoflight/internal/alt", 1);
var alt_agl = props.globals.getNode("position/altitude-agl-ft", 1);
var vs_needle = props.globals.getNode("instrumentation/pfd/vs-needle", 1);
var vs_digit = props.globals.getNode("instrumentation/pfd/vs-digit-trans", 1);
var ap_vs_pfd = props.globals.getNode("it-autoflight/internal/vert-speed-fpm-pfd", 1);
@ -85,6 +88,7 @@ var fd_pitch = props.globals.getNode("it-autoflight/fd/pitch-bar", 1);
var decision = props.globals.getNode("instrumentation/mk-viii/inputs/arinc429/decision-height", 1);
var slip_skid = props.globals.getNode("instrumentation/pfd/slip-skid", 1);
var FMGCphase = props.globals.getNode("FMGC/status/phase", 1);
var tostate = props.globals.getNode("FMGC/status/to-state", 1);
var loc = props.globals.getNode("instrumentation/nav[0]/heading-needle-deflection-norm", 1);
var gs = props.globals.getNode("instrumentation/nav[0]/gs-needle-deflection-norm", 1);
var show_hdg = props.globals.getNode("it-autoflight/custom/show-hdg", 1);
@ -112,6 +116,7 @@ var att_switch = props.globals.getNode("controls/switching/ATTHDG", 1);
var air_switch = props.globals.getNode("controls/switching/AIRDATA", 1);
var appr_enabled = props.globals.getNode("it-autoflight/output/appr-armed/", 1);
var loc_enabled = props.globals.getNode("it-autoflight/output/loc-armed/", 1);
var vert_gs = props.globals.getNode("it-autoflight/output/vert/", 1);
var vert_state = props.globals.getNode("it-autoflight/output/vert/", 1);
var ils_data1 = props.globals.getNode("FMGC/internal/ils1-mcdu/", 1);
# Independent MCDU ILS not implemented yet, use MCDU1 in the meantime
@ -124,6 +129,15 @@ var arrival_airport = props.globals.getNode("FMGC/internal/arr-arpt", 1);
var outer_marker = props.globals.getNode("instrumentation/marker-beacon/outer", 1);
var middle_marker = props.globals.getNode("instrumentation/marker-beacon/middle", 1);
var inner_marker = props.globals.getNode("instrumentation/marker-beacon/inner", 1);
var v1 = props.globals.getNode("FMGC/internal/v1", 1);
var v1_set = props.globals.getNode("FMGC/internal/v1-set", 1);
var vr = props.globals.getNode("FMGC/internal/vr", 1);
var vr_set = props.globals.getNode("FMGC/internal/vr-set", 1);
var v2 = props.globals.getNode("FMGC/internal/v2", 1);
var v2_set = props.globals.getNode("FMGC/internal/v2-set", 1);
var flap_config = props.globals.getNode("controls/flight/flap-lever", 1);
var min_speed = props.globals.getNode("FMGC/internal/minspeed", 1);
var weight_lbs = props.globals.getNode("fdm/jsbsim/inertia/weight-lbs", 1);
# Create Nodes:
var vs_needle = props.globals.initNode("/instrumentation/pfd/vs-needle", 0.0, "DOUBLE");
@ -150,6 +164,13 @@ var du6_test = props.globals.initNode("/instrumentation/du/du6-test", 0, "BOOL")
var du6_test_time = props.globals.initNode("/instrumentation/du/du6-test-time", 0.0, "DOUBLE");
var du6_test_amount = props.globals.initNode("/instrumentation/du/du6-test-amount", 0.0, "DOUBLE");
var du6_offtime = props.globals.initNode("/instrumentation/du/du6-off-time", 0.0, "DOUBLE");
var ilsFlash1 = props.globals.initNode("/instrumentation/pfd/flash-indicators/ils-flash-1", 0, "BOOL");
var ilsFlash2 = props.globals.initNode("/instrumentation/pfd/flash-indicators/ils-flash-2", 0, "BOOL");
var qnhFlash = props.globals.initNode("/instrumentation/pfd/flash-indicators/qnh-flash", 0, "BOOL");
var altFlash1 = props.globals.initNode("/instrumentation/pfd/flash-indicators/alt-flash-1", 0, "BOOL");
var altFlash2 = props.globals.initNode("/instrumentation/pfd/flash-indicators/alt-flash-2", 0, "BOOL");
var amberFlash1 = props.globals.initNode("/instrumentation/pfd/flash-indicators/amber-flash-1", 0, "BOOL");
var amberFlash2 = props.globals.initNode("/instrumentation/pfd/flash-indicators/amber-flash-2", 0, "BOOL");
var canvas_PFD_base = {
init: func(canvas_group, file) {
@ -198,10 +219,10 @@ var canvas_PFD_base = {
return ["FMA_man","FMA_manmode","FMA_flxtemp","FMA_thrust","FMA_lvrclb","FMA_pitch","FMA_pitcharm","FMA_pitcharm2","FMA_roll","FMA_rollarm","FMA_combined","FMA_ctr_msg","FMA_catmode","FMA_cattype","FMA_nodh","FMA_dh","FMA_dhn","FMA_ap","FMA_fd","FMA_athr",
"FMA_man_box","FMA_flx_box","FMA_thrust_box","FMA_pitch_box","FMA_pitcharm_box","FMA_roll_box","FMA_rollarm_box","FMA_combined_box","FMA_catmode_box","FMA_cattype_box","FMA_cat_box","FMA_dh_box","FMA_ap_box","FMA_fd_box","FMA_athr_box","FMA_Middle1",
"FMA_Middle2","ASI_max","ASI_scale","ASI_target","ASI_mach","ASI_mach_decimal","ASI_trend_up","ASI_trend_down","ASI_digit_UP","ASI_digit_DN","ASI_decimal_UP","ASI_decimal_DN","ASI_index","ASI_error","ASI_group","ASI_frame","AI_center","AI_bank",
"AI_bank_lim","AI_bank_lim_X","AI_pitch_lim","AI_pitch_lim_X","AI_slipskid","AI_horizon","AI_horizon_ground","AI_horizon_sky","AI_stick","AI_stick_pos","AI_heading","AI_agl_g","AI_agl","AI_error","AI_group","FD_roll","FD_pitch","ALT_scale","ALT_target",
"ALT_target_digit","ALT_one","ALT_two","ALT_three","ALT_four","ALT_five","ALT_digits","ALT_tens","ALT_digit_UP","ALT_digit_DN","ALT_error","ALT_group","ALT_group2","ALT_frame","VS_pointer","VS_box","VS_digit","VS_error","VS_group","QNH","QNH_setting",
"AI_bank_lim","AI_bank_lim_X","AI_pitch_lim","AI_pitch_lim_X","AI_slipskid","AI_horizon","AI_horizon_ground","AI_horizon_sky","AI_stick","AI_stick_pos","AI_heading","AI_agl_g","AI_agl","AI_error","AI_group","FD_roll","FD_pitch","ALT_box_flash","ALT_box","ALT_box_amber",
"ALT_scale","ALT_target","ALT_target_digit","ALT_one","ALT_two","ALT_three","ALT_four","ALT_five","ALT_digits","ALT_tens","ALT_digit_UP","ALT_digit_DN","ALT_error","ALT_group","ALT_group2","ALT_frame","VS_pointer","VS_box","VS_digit","VS_error","VS_group","QNH","QNH_setting",
"QNH_std","QNH_box","LOC_pointer","LOC_scale","GS_scale","GS_pointer","CRS_pointer","HDG_target","HDG_scale","HDG_one","HDG_two","HDG_three","HDG_four","HDG_five","HDG_six","HDG_seven","HDG_digit_L","HDG_digit_R","HDG_error","HDG_group","HDG_frame",
"TRK_pointer","machError","ilsError","ils_code","ils_freq","dme_dist","dme_dist_legend", "ILS_HDG_R", "ILS_HDG_L", "ILS_right", "ILS_left", "outerMarker", "middleMarker", "innerMarker"];
"TRK_pointer","machError","ilsError","ils_code","ils_freq","dme_dist","dme_dist_legend","ILS_HDG_R","ILS_HDG_L","ILS_right","ILS_left","outerMarker","middleMarker","innerMarker","v1_group","v1_text","vr_speed","F_target","S_target","flap_max","clean_speed"];
},
updateDu1: func() {
var elapsedtime_act = elapsedtime.getValue();
@ -605,23 +626,87 @@ var canvas_PFD_base = {
# QNH
if (alt_std_mode.getValue() == 1) {
me["QNH"].hide();
me["QNH_setting"].hide();
if (altitude.getValue() < trans_alt.getValue() and FMGCphase.getValue() == '4') {
if (qnh_going == 0) {
qnh_going = 1;
}
if (qnh_going == 1) {
qnhTimer.start();
if (qnhFlash.getValue() == 1) {
me["QNH_std"].show();
me["QNH_box"].show();
} else if (alt_inhg_mode.getValue() == 0) {
me["QNH_setting"].setText(sprintf("%4.0f", alt_hpa.getValue()));
me["QNH"].show();
me["QNH_setting"].show();
me["QNH_std"].hide();
me["QNH_box"].hide();
} else if (alt_inhg_mode.getValue() == 1) {
me["QNH_setting"].setText(sprintf("%2.2f", alt_inhg.getValue()));
me["QNH"].show();
me["QNH_setting"].show();
} else {
me["QNH_std"].hide();
me["QNH_box"].hide();
}
}
} else {
qnhTimer.stop();
qnh_going = 0;
me["QNH_std"].show();
me["QNH_box"].show();
}
} else if (alt_inhg_mode.getValue() == 0) {
me["QNH_std"].hide();
me["QNH_box"].hide();
if (altitude.getValue() >= trans_alt.getValue() and FMGCphase.getValue() == '2') {
if (qnh_going == 0) {
qnh_going = 1;
}
if (qnh_going == 1) {
qnhTimer.start();
if (qnhFlash.getValue() == 1) {
me["QNH_setting"].setText(sprintf("%4.0f", alt_hpa.getValue()));
me["QNH"].show();
me["QNH_setting"].show();
} else {
me["QNH"].hide();
me["QNH_setting"].hide();
}
}
} else {
qnhTimer.stop();
qnh_going = 0;
me["QNH_setting"].setText(sprintf("%4.0f", alt_hpa.getValue()));
me["QNH"].show();
me["QNH_setting"].show();
}
} else if (alt_inhg_mode.getValue() == 1) {
if (altitude.getValue() >= trans_alt.getValue() and FMGCphase.getValue() == '2') {
if (qnh_going == 0) {
qnh_going = 1;
}
if (qnh_going == 1) {
qnhTimer.start();
if (qnhFlash.getValue() == 1) {
me["QNH_setting"].setText(sprintf("%2.2f", alt_inhg.getValue()));
me["QNH"].show();
me["QNH_setting"].show();
} else {
me["QNH"].hide();
me["QNH_setting"].hide();
}
}
} else {
qnhTimer.stop();
qnh_going = 0;
me["QNH_setting"].setText(sprintf("%2.2f", alt_inhg.getValue()));
me["QNH"].show();
me["QNH_setting"].show();
}
me["QNH_std"].hide();
me["QNH_box"].hide();
}
},
updateCommonFast: func() {
# Attitude Indicator
@ -837,6 +922,20 @@ var canvas_PFD_1 = {
ASItrend: 0,
ASItrgt: 0,
ASItrgtdiff: 0,
V1trgt: 0,
VRtrgt: 0,
V2trgt: 0,
Strgt: 0,
Ftrgt: 0,
flaptrgt: 0,
cleantrgt: 0,
SPDv1trgtdiff: 0,
SPDvrtrgtdiff: 0,
SPDv2trgtdiff: 0,
SPDstrgtdiff: 0,
SPDftrgtdiff: 0,
SPDflaptrgtdiff: 0,
SPDcleantrgtdiff: 0,
FMGC_max: 0,
new: func(canvas_group, file) {
var m = {parents: [canvas_PFD_1, canvas_PFD_base]};
@ -930,11 +1029,11 @@ var canvas_PFD_1 = {
me["outerMarker"].show();
me["middleMarker"].hide();
me["innerMarker"].hide();
} else if (middle_marker.getValue() == 1) {
} else if (middle_marker.getValue()) {
me["middleMarker"].show();
me["outerMarker"].hide();
me["innerMarker"].hide();
} else if (inner_marker.getValue() == 1) {
} else if (inner_marker.getValue()) {
me["innerMarker"].show();
me["outerMarker"].hide();
me["middleMarker"].hide();
@ -955,11 +1054,23 @@ var canvas_PFD_1 = {
me["GS_pointer"].hide();
}
if (ap_ils_mode.getValue() == 0 and (appr_enabled.getValue() == 1 or loc_enabled.getValue() == 1)) {
if (ap_ils_mode.getValue() == 0 and (appr_enabled.getValue() == 1 or loc_enabled.getValue() == 1 or vert_gs.getValue() == 2)) {
if (ils_going1 == 0) {
ils_going1 = 1;
}
if (ils_going1 == 1) {
ilsTimer1.start();
if (ilsFlash1.getValue() == 1) {
me["ilsError"].show();
} else {
me["ilsError"].hide();
}
}
} else {
ilsTimer1.stop();
ils_going1 = 0;
me["ilsError"].hide();
}
me.updateCommon();
},
@ -1054,6 +1165,225 @@ var canvas_PFD_1 = {
me["ASI_target"].hide();
}
if (v1_set.getValue() == '1') {
tgt_v1 = v1.getValue();
if (tgt_v1 <= 30) {
me.V1trgt = 0 - me.ASI;
} else if (tgt_v1 >= 420) {
me.V1trgt = 390 - me.ASI;
} else {
me.V1trgt = tgt_v1 - 30 - me.ASI;
}
me.SPDv1trgtdiff = tgt_v1 - ind_spd;
if (tostate.getValue() == '1' and me.SPDv1trgtdiff >= -42 and me.SPDv1trgtdiff <= 42) {
me["v1_group"].show();
me["v1_text"].hide();
me["v1_group"].setTranslation(0, me.V1trgt * -6.6);
} else if (tostate.getValue() == '1') {
me["v1_group"].hide();
me["v1_text"].show();
me["v1_text"].setText(sprintf("%3.0f", v1.getValue()));
} else {
me["v1_group"].hide();
me["v1_text"].hide();
}
} else {
me["v1_group"].hide();
me["v1_text"].hide();
}
if (vr_set.getValue() == '1') {
tgt_vr = vr.getValue();
if (tgt_vr <= 30) {
me.VRtrgt = 0 - me.ASI;
} else if (tgt_vr >= 420) {
me.VRtrgt = 390 - me.ASI;
} else {
me.VRtrgt = tgt_vr - 30 - me.ASI;
}
me.SPDvrtrgtdiff = tgt_vr - ind_spd;
if (tostate.getValue() == '1' and me.SPDvrtrgtdiff >= -42 and me.SPDvrtrgtdiff <= 42) {
me["vr_speed"].show();
me["vr_speed"].setTranslation(0, me.VRtrgt * -6.6);
} else {
me["vr_speed"].hide();
}
} else {
me["vr_speed"].hide();
}
if (v2_set.getValue() == '1') {
tgt_v2 = v2.getValue();
if (tgt_v2 <= 30) {
me.V2trgt = 0 - me.ASI;
} else if (tgt_v2 >= 420) {
me.V2trgt = 390 - me.ASI;
} else {
me.V2trgt = tgt_v2 - 30 - me.ASI;
}
me.SPDv2trgtdiff = tgt_v2 - ind_spd;
if (tostate.getValue() == '1' and me.SPDv2trgtdiff >= -42 and me.SPDv2trgtdiff <= 42) {
me["ASI_target"].show();
me["ASI_target"].setTranslation(0, me.V2trgt * -6.6);
me["ASI_digit_UP"].setText(sprintf("%3.0f", v2.getValue()));
} else if (tostate.getValue() == '1') {
me["ASI_target"].hide();
me["ASI_digit_UP"].setText(sprintf("%3.0f", v2.getValue()));
}
}
if (flap_config.getValue() == '1') {
me["F_target"].hide();
me["clean_speed"].hide();
lbs1000 = weight_lbs.getValue() / 1000;
tgt_S = ((0.0024 * lbs1000 * lbs1000) + (0.124 * lbs1000) + 88.942) * 1.23;
if (tgt_S <= 30) {
me.Strgt = 0 - me.ASI;
} else if (tgt_S >= 420) {
me.Strgt = 390 - me.ASI;
} else {
me.Strgt = tgt_S - 30 - me.ASI;
}
me.SPDstrgtdiff = tgt_S - ind_spd;
if (me.SPDstrgtdiff >= -42 and me.SPDstrgtdiff <= 42) {
me["S_target"].show();
me["S_target"].setTranslation(0, me.Strgt * -6.6);
} else {
me["S_target"].hide();
}
tgt_flap = 200;
me.flaptrgt = tgt_flap - 30 - me.ASI;
me.SPDflaptrgtdiff = tgt_flap - ind_spd;
if (me.SPDflaptrgtdiff >= -42 and me.SPDflaptrgtdiff <= 42) {
me["flap_max"].show();
me["flap_max"].setTranslation(0, me.flaptrgt * -6.6);
} else {
me["flap_max"].hide();
}
} else if (flap_config.getValue() == '2') {
me["S_target"].hide();
me["clean_speed"].hide();
lbs1000 = weight_lbs.getValue() / 1000;
tgt_F = ((0.4352 * lbs1000) + 51.006) * 1.47;
if (tgt_F <= 30) {
me.Ftrgt = 0 - me.ASI;
} else if (tgt_F >= 420) {
me.Ftrgt = 390 - me.ASI;
} else {
me.Ftrgt = tgt_F - 30 - me.ASI;
}
me.SPDftrgtdiff = tgt_F - ind_spd;
if (me.SPDftrgtdiff >= -42 and me.SPDftrgtdiff <= 42) {
me["F_target"].show();
me["F_target"].setTranslation(0, me.Ftrgt * -6.6);
} else {
me["F_target"].hide();
}
tgt_flap = 185;
me.flaptrgt = tgt_flap - 30 - me.ASI;
me.SPDflaptrgtdiff = tgt_flap - ind_spd;
if (me.SPDflaptrgtdiff >= -42 and me.SPDflaptrgtdiff <= 42) {
me["flap_max"].show();
me["flap_max"].setTranslation(0, me.flaptrgt * -6.6);
} else {
me["flap_max"].hide();
}
} else if (flap_config.getValue() == '3') {
me["S_target"].hide();
me["clean_speed"].hide();
lbs1000 = weight_lbs.getValue() / 1000;
tgt_F = ((0.4352 * lbs1000) + 50.006) * 1.36;
if (tgt_F <= 30) {
me.Ftrgt = 0 - me.ASI;
} else if (tgt_F >= 420) {
me.Ftrgt = 390 - me.ASI;
} else {
me.Ftrgt = tgt_F - 30 - me.ASI;
}
me.SPDftrgtdiff = tgt_F - ind_spd;
if (me.SPDftrgtdiff >= -42 and me.SPDftrgtdiff <= 42) {
me["F_target"].show();
me["F_target"].setTranslation(0, me.Ftrgt * -6.6);
} else {
me["F_target"].hide();
}
tgt_flap = 177;
me.flaptrgt = tgt_flap - 30 - me.ASI;
me.SPDflaptrgtdiff = tgt_flap - ind_spd;
if (me.SPDflaptrgtdiff >= -42 and me.SPDflaptrgtdiff <= 42) {
me["flap_max"].show();
me["flap_max"].setTranslation(0, me.flaptrgt * -6.6);
} else {
me["flap_max"].hide();
}
} else if (flap_config.getValue() == '4') {
me["S_target"].hide();
me["F_target"].hide();
me["clean_speed"].hide();
me["flap_max"].hide();
} else {
me["S_target"].hide();
me["F_target"].hide();
tgt_clean = 2 * weight_lbs.getValue() * 0.00045359237 + 85;
if (altitude.getValue() > 20000) {
tgt_clean += (altitude.getValue() - 20000) / 1000;
}
me.cleantrgt = tgt_clean - 30 - me.ASI;
me.SPDcleantrgtdiff = tgt_clean - ind_spd;
if (me.SPDcleantrgtdiff >= -42 and me.SPDcleantrgtdiff <= 42) {
me["clean_speed"].show();
me["clean_speed"].setTranslation(0, me.cleantrgt * -6.6);
} else {
me["clean_speed"].hide();
}
tgt_flap = 230;
me.flaptrgt = tgt_flap - 30 - me.ASI;
me.SPDflaptrgtdiff = tgt_flap - ind_spd;
if (me.SPDflaptrgtdiff >= -42 and me.SPDflaptrgtdiff <= 42) {
me["flap_max"].show();
me["flap_max"].setTranslation(0, me.flaptrgt * -6.6);
} else {
me["flap_max"].hide();
}
}
if (alt_agl.getValue() < 400) {
me["S_target"].hide();
me["F_target"].hide();
}
me.ASItrend = dmc.DMController.DMCs[0].outputs[6].getValue() - me.ASI;
me["ASI_trend_up"].setTranslation(0, math.clamp(me.ASItrend, 0, 50) * -6.6);
me["ASI_trend_down"].setTranslation(0, math.clamp(me.ASItrend, -50, 0) * -6.6);
@ -1072,6 +1402,13 @@ var canvas_PFD_1 = {
me["ASI_group"].hide();
me["ASI_error"].show();
me["ASI_frame"].setColor(1,0,0);
me["clean_speed"].hide();
me["S_target"].hide();
me["F_target"].hide();
me["flap_max"].hide();
me["v1_group"].hide();
me["v1_text"].hide();
me["vr_speed"].hide();
}
if (dmc.DMController.DMCs[0].outputs[2] != nil) {
@ -1099,6 +1436,7 @@ var canvas_PFD_1 = {
me["ALT_error"].hide();
me["ALT_frame"].setColor(1,1,1);
me["ALT_group"].show();
me["ALT_box"].show();
me["ALT_group2"].show();
me["ALT_scale"].show();
@ -1164,12 +1502,60 @@ var canvas_PFD_1 = {
me["ALT_digit_DN"].hide();
me["ALT_target"].hide();
}
if (!getprop("ECAM/alt-alert-flash") and !getprop("ECAM/alt-alert-steady")) {
alt_going1 = 0;
amber_going1 = 0;
me["ALT_box_flash"].hide();
me["ALT_box_amber"].hide();
} else {
if (getprop("ECAM/alt-alert-flash")) {
if (alt_going1 == 1) {
me["ALT_box_flash"].hide();
altTimer1.stop();
}
if (amber_going1 == 0) {
amber_going1 = 1;
}
if (amber_going1 == 1) {
me["ALT_box_amber"].show();
me["ALT_box"].hide();
amberTimer1.start();
}
if (amberFlash1.getValue() == 1) {
me["ALT_box_amber"].hide();
} else {
me["ALT_box_amber"].show();
}
} elsif (getprop("ECAM/alt-alert-steady")) {
if (amber_going1 == 1) {
me["ALT_box"].show();
me["ALT_box_amber"].hide();
amberTimer1.stop();
}
if (alt_going1 == 0) {
alt_going1 = 1;
}
if (alt_going1 == 1) {
me["ALT_box_flash"].show();
altTimer1.start();
}
if (altFlash1.getValue() == 1) {
me["ALT_box_flash"].show();
} else {
me["ALT_box_flash"].hide();
}
}
}
} else {
me["ALT_error"].show();
me["ALT_frame"].setColor(1,0,0);
me["ALT_group"].hide();
me["ALT_group2"].hide();
me["ALT_scale"].hide();
me["ALT_box_flash"].hide();
me["ALT_box_amber"].hide();
me["ALT_box"].hide();
}
me.updateCommonFast();
@ -1182,6 +1568,20 @@ var canvas_PFD_2 = {
ASItrend: 0,
ASItrgt: 0,
ASItrgtdiff: 0,
V1trgt: 0,
VRtrgt: 0,
V2trgt: 0,
Strgt: 0,
Ftrgt: 0,
flaptrgt: 0,
cleantrgt: 0,
SPDv1trgtdiff: 0,
SPDvrtrgtdiff: 0,
SPDv2trgtdiff: 0,
SPDstrgtdiff: 0,
SPDftrgtdiff: 0,
SPDflaptrgtdiff: 0,
SPDcleantrgtdiff: 0,
FMGC_max: 0,
new: func(canvas_group, file) {
var m = {parents: [canvas_PFD_2, canvas_PFD_base]};
@ -1271,16 +1671,15 @@ var canvas_PFD_2 = {
me["innerMarker"].hide();
}
if (ap_ils_mode2.getValue() == 1 and (appr_enabled.getValue() == 1 or loc_enabled.getValue() == 1 or vert_state.getValue() == 2)) {
if (outer_marker.getValue() == 1) {
me["outerMarker"].show();
me["middleMarker"].hide();
me["innerMarker"].hide();
} else if (middle_marker.getValue() == 1) {
} else if (middle_marker.getValue()) {
me["middleMarker"].show();
me["outerMarker"].hide();
me["innerMarker"].hide();
} else if (inner_marker.getValue() == 1) {
} else if (inner_marker.getValue()) {
me["innerMarker"].show();
me["outerMarker"].hide();
me["middleMarker"].hide();
@ -1289,11 +1688,6 @@ var canvas_PFD_2 = {
me["middleMarker"].hide();
me["innerMarker"].hide();
}
} else {
me["outerMarker"].hide();
me["middleMarker"].hide();
me["innerMarker"].hide();
}
if (ap_ils_mode2.getValue() == 1 and loc_in_range.getValue() == 1 and hasloc.getValue() == 1 and nav0_signalq.getValue() > 0.99) {
me["LOC_pointer"].show();
@ -1306,11 +1700,23 @@ var canvas_PFD_2 = {
me["GS_pointer"].hide();
}
if (ap_ils_mode2.getValue() == 0 and (appr_enabled.getValue() == 1 or loc_enabled.getValue() == 1)) {
if (ap_ils_mode2.getValue() == 0 and (appr_enabled.getValue() == 1 or loc_enabled.getValue() == 1 or vert_gs.getValue() == 2)) {
if (ils_going2 == 0) {
ils_going2 = 1;
}
if (ils_going2 == 1) {
ilsTimer2.start();
if (ilsFlash2.getValue() == 1) {
me["ilsError"].show();
} else {
me["ilsError"].hide();
}
}
} else {
ilsTimer2.stop();
ils_going2 = 0;
me["ilsError"].hide();
}
me.updateCommon();
},
@ -1405,6 +1811,225 @@ var canvas_PFD_2 = {
me["ASI_target"].hide();
}
if (v1_set.getValue() == '1') {
tgt_v1 = v1.getValue();
if (tgt_v1 <= 30) {
me.V1trgt = 0 - me.ASI;
} else if (tgt_v1 >= 420) {
me.V1trgt = 390 - me.ASI;
} else {
me.V1trgt = tgt_v1 - 30 - me.ASI;
}
me.SPDv1trgtdiff = tgt_v1 - ind_spd;
if (tostate.getValue() == '1' and me.SPDv1trgtdiff >= -42 and me.SPDv1trgtdiff <= 42) {
me["v1_group"].show();
me["v1_text"].hide();
me["v1_group"].setTranslation(0, me.V1trgt * -6.6);
} else if (tostate.getValue() == '1') {
me["v1_group"].hide();
me["v1_text"].show();
me["v1_text"].setText(sprintf("%3.0f", v1.getValue()));
} else {
me["v1_group"].hide();
me["v1_text"].hide();
}
} else {
me["v1_group"].hide();
me["v1_text"].hide();
}
if (vr_set.getValue() == '1') {
tgt_vr = vr.getValue();
if (tgt_vr <= 30) {
me.VRtrgt = 0 - me.ASI;
} else if (tgt_vr >= 420) {
me.VRtrgt = 390 - me.ASI;
} else {
me.VRtrgt = tgt_vr - 30 - me.ASI;
}
me.SPDvrtrgtdiff = tgt_vr - ind_spd;
if (tostate.getValue() == '1' and me.SPDvrtrgtdiff >= -42 and me.SPDvrtrgtdiff <= 42) {
me["vr_speed"].show();
me["vr_speed"].setTranslation(0, me.VRtrgt * -6.6);
} else {
me["vr_speed"].hide();
}
} else {
me["vr_speed"].hide();
}
if (v2_set.getValue() == '1') {
tgt_v2 = v2.getValue();
if (tgt_v2 <= 30) {
me.V2trgt = 0 - me.ASI;
} else if (tgt_v2 >= 420) {
me.V2trgt = 390 - me.ASI;
} else {
me.V2trgt = tgt_v2 - 30 - me.ASI;
}
me.SPDv2trgtdiff = tgt_v2 - ind_spd;
if (tostate.getValue() == '1' and me.SPDv2trgtdiff >= -42 and me.SPDv2trgtdiff <= 42) {
me["ASI_target"].show();
me["ASI_target"].setTranslation(0, me.V2trgt * -6.6);
me["ASI_digit_UP"].setText(sprintf("%3.0f", v2.getValue()));
} else if (tostate.getValue() == '1') {
me["ASI_target"].hide();
me["ASI_digit_UP"].setText(sprintf("%3.0f", v2.getValue()));
}
}
if (flap_config.getValue() == '1') {
me["F_target"].hide();
me["clean_speed"].hide();
lbs1000 = weight_lbs.getValue() / 1000;
tgt_S = ((0.0024 * lbs1000 * lbs1000) + (0.124 * lbs1000) + 88.942) * 1.23;
if (tgt_S <= 30) {
me.Strgt = 0 - me.ASI;
} else if (tgt_S >= 420) {
me.Strgt = 390 - me.ASI;
} else {
me.Strgt = tgt_S - 30 - me.ASI;
}
me.SPDstrgtdiff = tgt_S - ind_spd;
if (me.SPDstrgtdiff >= -42 and me.SPDstrgtdiff <= 42) {
me["S_target"].show();
me["S_target"].setTranslation(0, me.Strgt * -6.6);
} else {
me["S_target"].hide();
}
tgt_flap = 200;
me.flaptrgt = tgt_flap - 30 - me.ASI;
me.SPDflaptrgtdiff = tgt_flap - ind_spd;
if (me.SPDflaptrgtdiff >= -42 and me.SPDflaptrgtdiff <= 42) {
me["flap_max"].show();
me["flap_max"].setTranslation(0, me.flaptrgt * -6.6);
} else {
me["flap_max"].hide();
}
} else if (flap_config.getValue() == '2') {
me["S_target"].hide();
me["clean_speed"].hide();
lbs1000 = weight_lbs.getValue() / 1000;
tgt_F = ((0.4352 * lbs1000) + 51.006) * 1.47;
if (tgt_F <= 30) {
me.Ftrgt = 0 - me.ASI;
} else if (tgt_F >= 420) {
me.Ftrgt = 390 - me.ASI;
} else {
me.Ftrgt = tgt_F - 30 - me.ASI;
}
me.SPDftrgtdiff = tgt_F - ind_spd;
if (me.SPDftrgtdiff >= -42 and me.SPDftrgtdiff <= 42) {
me["F_target"].show();
me["F_target"].setTranslation(0, me.Ftrgt * -6.6);
} else {
me["F_target"].hide();
}
tgt_flap = 185;
me.flaptrgt = tgt_flap - 30 - me.ASI;
me.SPDflaptrgtdiff = tgt_flap - ind_spd;
if (me.SPDflaptrgtdiff >= -42 and me.SPDflaptrgtdiff <= 42) {
me["flap_max"].show();
me["flap_max"].setTranslation(0, me.flaptrgt * -6.6);
} else {
me["flap_max"].hide();
}
} else if (flap_config.getValue() == '3') {
me["S_target"].hide();
me["clean_speed"].hide();
lbs1000 = weight_lbs.getValue() / 1000;
tgt_F = ((0.4352 * lbs1000) + 50.006) * 1.36;
if (tgt_F <= 30) {
me.Ftrgt = 0 - me.ASI;
} else if (tgt_F >= 420) {
me.Ftrgt = 390 - me.ASI;
} else {
me.Ftrgt = tgt_F - 30 - me.ASI;
}
me.SPDftrgtdiff = tgt_F - ind_spd;
if (me.SPDftrgtdiff >= -42 and me.SPDftrgtdiff <= 42) {
me["F_target"].show();
me["F_target"].setTranslation(0, me.Ftrgt * -6.6);
} else {
me["F_target"].hide();
}
tgt_flap = 177;
me.flaptrgt = tgt_flap - 30 - me.ASI;
me.SPDflaptrgtdiff = tgt_flap - ind_spd;
if (me.SPDflaptrgtdiff >= -42 and me.SPDflaptrgtdiff <= 42) {
me["flap_max"].show();
me["flap_max"].setTranslation(0, me.flaptrgt * -6.6);
} else {
me["flap_max"].hide();
}
} else if (flap_config.getValue() == '4') {
me["S_target"].hide();
me["F_target"].hide();
me["clean_speed"].hide();
me["flap_max"].hide();
} else {
me["S_target"].hide();
me["F_target"].hide();
tgt_clean = 2 * weight_lbs.getValue() * 0.00045359237 + 85;
if (altitude.getValue() > 20000) {
tgt_clean += (altitude.getValue() - 20000) / 1000;
}
me.cleantrgt = tgt_clean - 30 - me.ASI;
me.SPDcleantrgtdiff = tgt_clean - ind_spd;
if (me.SPDcleantrgtdiff >= -42 and me.SPDcleantrgtdiff <= 42) {
me["clean_speed"].show();
me["clean_speed"].setTranslation(0, me.cleantrgt * -6.6);
} else {
me["clean_speed"].hide();
}
tgt_flap = 230;
me.flaptrgt = tgt_flap - 30 - me.ASI;
me.SPDflaptrgtdiff = tgt_flap - ind_spd;
if (me.SPDflaptrgtdiff >= -42 and me.SPDflaptrgtdiff <= 42) {
me["flap_max"].show();
me["flap_max"].setTranslation(0, me.flaptrgt * -6.6);
} else {
me["flap_max"].hide();
}
}
if (alt_agl.getValue() < 400) {
me["S_target"].hide();
me["F_target"].hide();
}
me.ASItrend = dmc.DMController.DMCs[1].outputs[6].getValue() - me.ASI;
me["ASI_trend_up"].setTranslation(0, math.clamp(me.ASItrend, 0, 50) * -6.6);
me["ASI_trend_down"].setTranslation(0, math.clamp(me.ASItrend, -50, 0) * -6.6);
@ -1421,8 +2046,15 @@ var canvas_PFD_2 = {
}
} else {
me["ASI_error"].show();
me["ASI_frame"].setColor(1,0,0);
me["ASI_group"].hide();
me["ASI_frame"].setColor(1,0,0);
me["clean_speed"].hide();
me["S_target"].hide();
me["F_target"].hide();
me["flap_max"].hide();
me["v1_group"].hide();
me["v1_text"].hide();
me["vr_speed"].hide();
}
if (dmc.DMController.DMCs[1].outputs[2] != nil) {
@ -1445,14 +2077,15 @@ var canvas_PFD_2 = {
me["machError"].show();
}
if (dmc.DMController.DMCs[1].outputs[1] != nil) {
if (dmc.DMController.DMCs[0].outputs[1] != nil) {
me["ALT_error"].hide();
me["ALT_frame"].setColor(1,1,1);
me["ALT_group"].show();
me["ALT_box"].show();
me["ALT_group2"].show();
me["ALT_scale"].show();
me.altitude = dmc.DMController.DMCs[1].outputs[1].getValue();
me.altitude = dmc.DMController.DMCs[0].outputs[1].getValue();
me.altOffset = me.altitude / 500 - int(me.altitude / 500);
me.middleAltText = roundaboutAlt(me.altitude / 100);
me.middleAltOffset = nil;
@ -1475,7 +2108,7 @@ var canvas_PFD_2 = {
altPolarity = "";
}
me["ALT_digits"].setText(sprintf("%s%d", altPolarity, dmc.DMController.DMCs[1].outputs[3].getValue()));
me["ALT_digits"].setText(sprintf("%s%d", altPolarity, dmc.DMController.DMCs[0].outputs[3].getValue()));
altTens = num(right(sprintf("%02d", me.altitude), 2));
me["ALT_tens"].setTranslation(0, altTens * 1.392);
@ -1514,12 +2147,60 @@ var canvas_PFD_2 = {
me["ALT_digit_DN"].hide();
me["ALT_target"].hide();
}
if (!getprop("ECAM/alt-alert-flash") and !getprop("ECAM/alt-alert-steady")) {
alt_going2 = 0;
amber_going2 = 0;
me["ALT_box_flash"].hide();
me["ALT_box_amber"].hide();
} else {
if (getprop("ECAM/alt-alert-flash")) {
if (alt_going2 == 1) {
me["ALT_box_flash"].hide();
altTimer2.stop();
}
if (amber_going2 == 0) {
amber_going2 = 1;
}
if (amber_going2 == 1) {
me["ALT_box_amber"].show();
me["ALT_box"].hide();
amberTimer2.start();
}
if (amberFlash2.getValue() == 1) {
me["ALT_box_amber"].show();
} else {
me["ALT_box_amber"].hide();
}
} elsif (getprop("ECAM/alt-alert-steady")) {
if (amber_going2 == 1) {
me["ALT_box"].show();
me["ALT_box_amber"].hide();
amberTimer2.stop();
}
if (alt_going2 == 0) {
alt_going2 = 1;
}
if (alt_going2 == 1) {
me["ALT_box_flash"].show();
altTimer2.start();
}
if (altFlash2.getValue() == 1) {
me["ALT_box_flash"].show();
} else {
me["ALT_box_flash"].hide();
}
}
}
} else {
me["ALT_error"].show();
me["ALT_frame"].setColor(1,0,0);
me["ALT_group"].hide();
me["ALT_group2"].hide();
me["ALT_scale"].hide();
me["ALT_box_flash"].hide();
me["ALT_box_amber"].hide();
me["ALT_box"].hide();
}
me.updateCommonFast();
@ -1756,3 +2437,68 @@ setlistener("/systems/electrical/bus/ac-ess", func() {
setlistener("/systems/electrical/bus/ac-2", func() {
canvas_PFD_base.updateDu6();
}, 0, 0);
# Flash managers
var ils_going1 = 0;
var ilsTimer1 = maketimer(0.50, func {
if (!ilsFlash1.getBoolValue()) {
ilsFlash1.setBoolValue(1);
} else {
ilsFlash1.setBoolValue(0);
}
});
var ils_going2 = 0;
var ilsTimer2 = maketimer(0.50, func {
if (!ilsFlash2.getBoolValue()) {
ilsFlash2.setBoolValue(1);
} else {
ilsFlash2.setBoolValue(0);
}
});
var qnh_going = 0;
var qnhTimer = maketimer(0.50, func {
if (!qnhFlash.getBoolValue()) {
qnhFlash.setBoolValue(1);
} else {
qnhFlash.setBoolValue(0);
}
});
var alt_going1 = 0;
var altTimer1 = maketimer(0.50, func {
if (!altFlash1.getBoolValue()) {
altFlash1.setBoolValue(1);
} else {
altFlash1.setBoolValue(0);
}
});
var alt_going2 = 0;
var altTimer2 = maketimer(0.50, func {
if (!altFlash2.getBoolValue()) {
altFlash2.setBoolValue(1);
} else {
altFlash2.setBoolValue(0);
}
});
var amber_going1 = 0;
var amberTimer1 = maketimer(0.50, func {
if (!amberFlash1.getBoolValue()) {
amberFlash1.setBoolValue(1);
} else {
amberFlash1.setBoolValue(0);
}
});
var amber_going2 = 0;
var amberTimer2 = maketimer(0.50, func {
if (!amberFlash2.getBoolValue()) {
amberFlash2.setBoolValue(1);
} else {
amberFlash2.setBoolValue(0);
}
});

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 284 KiB

After

Width:  |  Height:  |  Size: 293 KiB

View file

@ -112,7 +112,7 @@
<object-name>ACTUTATOR</object-name>
<object-name>Main Tires</object-name>
<object-name>Compression lower scissor</object-name>
<property>gear/gear[1]/compression-ft</property>
<property>gear/gear[1]/compression-norm</property>
<factor>0.305</factor>
<axis>
<x1-m>0</x1-m>

View file

@ -112,7 +112,7 @@
<object-name>ACTUTATOR</object-name>
<object-name>Main Tires</object-name>
<object-name>Compression lower scissor</object-name>
<property>gear/gear[2]/compression-ft</property>
<property>gear/gear[2]/compression-norm</property>
<factor>0.305</factor>
<axis>
<x1-m>0</x1-m>

View file

@ -112,7 +112,7 @@
<object-name>AXLE</object-name>
<object-name>Nose Tires</object-name>
<object-name>Compression lower scissor</object-name>
<property>gear/gear[0]/compression-ft</property>
<property>gear/gear[0]/compression-norm</property>
<factor>0.305</factor>
<axis>
<x1-m>-0.366</x1-m>

View file

@ -32,6 +32,10 @@ var gear_agl_cur = nil;
var numberMinutes = nil;
var timeNow = nil;
var timer10secIRS = nil;
var altAlertInhibit = nil;
var alt200 = nil;
var alt750 = nil;
var bigThree = nil;
var messages_priority_3 = func {
phaseVar = phaseNode.getValue();
@ -744,6 +748,84 @@ var messages_priority_3 = func {
ECAM_controller.warningReset(ap_offw);
}
# C-Chord
if ((pts.Modes.Altimeter.std.getValue() and abs(fcu.altSet.getValue() - getprop("systems/navigation/adr/output/baro-alt-1-capt")) < 200) or !pts.Modes.Altimeter.std.getValue() and abs(fcu.altSet.getValue() - getprop("systems/navigation/adr/output/baro-alt-corrected-1-capt")) < 200) {
alt200 = 1;
} else {
alt200 = 0;
}
if ((pts.Modes.Altimeter.std.getValue() and abs(fcu.altSet.getValue() - getprop("systems/navigation/adr/output/baro-alt-1-capt")) < 750) or !pts.Modes.Altimeter.std.getValue() and abs(fcu.altSet.getValue() - getprop("systems/navigation/adr/output/baro-alt-corrected-1-capt")) < 750) {
alt750 = 1;
} else {
alt750 = 0;
}
if (FWC.altChg.getValue() or pts.Gear.position[0].getValue() == 1 or (getprop("controls/gear/gear-down") and pts.JSBSIM.FCS.slatDeg.getValue() > 4) or fmgc.Output.vert.getValue() == 2) {
altAlertInhibit = 1;
} else {
altAlertInhibit = 0;
}
if (alt750 and !alt200 and !altAlertInhibit) {
FWC.Monostable.altAlert2.setValue(1);
} else {
FWC.Monostable.altAlert2.setValue(0);
}
if ((!fcu.ap1.getBoolValue() and !fcu.ap2.getBoolValue()) and FWC.Monostable.altAlert2.getValue()) {
FWC.Monostable.altAlert1.setValue(1);
} else {
FWC.Monostable.altAlert1.setValue(0);
}
if (alt750 and alt200 and !altAlertInhibit) {
setprop("ECAM/flipflop/alt-alert-2-rs-set", 1);
} else {
setprop("ECAM/flipflop/alt-alert-2-rs-set", 0);
}
if (getprop("ECAM/flipflop/alt-alert-rs-reset") or (!alt750 and !alt200 and !altAlertInhibit)) {
setprop("ECAM/flipflop/alt-alert-2-rs-reset", 1);
} else {
setprop("ECAM/flipflop/alt-alert-2-rs-reset", 0);
}
if (alt750 and !alt200 and !altAlertInhibit and getprop("ECAM/flipflop/alt-alert-2-rs-output")) {
setprop("ECAM/flipflop/alt-alert-3-rs-set", 1);
} else {
setprop("ECAM/flipflop/alt-alert-3-rs-set", 0);
}
if ((!alt750 and !alt200 and !altAlertInhibit and getprop("ECAM/flipflop/alt-alert-rs-output")) or (!alt750 and !alt200 and !altAlertInhibit and getprop("ECAM/flipflop/alt-alert-3-rs-output")) or getprop("ECAM/flipflop/alt-alert-3-rs-set")) {
bigThree = 1;
} else {
bigThree = 0;
}
if (!gnd and (FWC.Monostable.altAlert1Output.getValue() or bigThree)) {
if (!getprop("sim/sound/warnings/cchord-inhibit")) {
setprop("sim/sound/warnings/cchord", 1);
} else {
setprop("sim/sound/warnings/cchord", 0);
}
} else {
setprop("sim/sound/warnings/cchord", 0);
setprop("sim/sound/warnings/cchord-inhibit", 0);
}
if (!gnd and getprop("ECAM/flipflop/alt-alert-3-rs-set") != 1 and alt750 and !alt200 and !altAlertInhibit) {
setprop("ECAM/alt-alert-steady", 1);
} else {
setprop("ECAM/alt-alert-steady", 0);
}
if (!gnd and bigThree) {
setprop("ECAM/alt-alert-flash", 1);
} else {
setprop("ECAM/alt-alert-flash", 0);
}
if (!systems.cargoTestBtn.getBoolValue()) {
if (cargoSmokeFwd.clearFlag == 0 and systems.fwdCargoFireWarn.getBoolValue() and (phaseVar <= 3 or phaseVar >= 9 or phaseVar == 6)) {
cargoSmokeFwd.active = 1;

View file

@ -22,51 +22,55 @@ var gear_agl_cur = nil;
var FWC = {
Btn: {
clr: props.globals.initNode("/ECAM/buttons/clear-btn", 0, "BOOL"),
recall: props.globals.initNode("/ECAM/buttons/recall-btn", 0, "BOOL"),
recallStsNormal: props.globals.initNode("/ECAM/buttons/recall-status-normal", 0, "BOOL"),
recallStsNormalOutput: props.globals.initNode("/ECAM/buttons/recall-status-normal-output", 0, "BOOL"),
clr: props.globals.initNode("ECAM/buttons/clear-btn", 0, "BOOL"),
recall: props.globals.initNode("ECAM/buttons/recall-btn", 0, "BOOL"),
recallStsNormal: props.globals.initNode("ECAM/buttons/recall-status-normal", 0, "BOOL"),
recallStsNormalOutput: props.globals.initNode("ECAM/buttons/recall-status-normal-output", 0, "BOOL"),
},
Monostable: {
phase1: props.globals.initNode("/ECAM/phases/monostable/phase-1-300", 0, "BOOL"),
phase5: props.globals.initNode("/ECAM/phases/monostable/phase-5", 0, "BOOL"),
phase7: props.globals.initNode("/ECAM/phases/monostable/phase-7", 0, "BOOL"),
phase9: props.globals.initNode("/ECAM/phases/monostable/phase-9", 0, "BOOL"),
phase1Output: props.globals.initNode("/ECAM/phases/monostable/phase-1-output"),
phase5Output: props.globals.initNode("/ECAM/phases/monostable/phase-5-output"),
phase7Output: props.globals.initNode("/ECAM/phases/monostable/phase-7-output"),
phase9Output: props.globals.initNode("/ECAM/phases/monostable/phase-9-output"),
phase1: props.globals.initNode("ECAM/phases/monostable/phase-1-300", 0, "BOOL"),
phase5: props.globals.initNode("ECAM/phases/monostable/phase-5", 0, "BOOL"),
phase7: props.globals.initNode("ECAM/phases/monostable/phase-7", 0, "BOOL"),
phase9: props.globals.initNode("ECAM/phases/monostable/phase-9", 0, "BOOL"),
phase1Output: props.globals.initNode("ECAM/phases/monostable/phase-1-output"),
phase5Output: props.globals.initNode("ECAM/phases/monostable/phase-5-output"),
phase7Output: props.globals.initNode("ECAM/phases/monostable/phase-7-output"),
phase9Output: props.globals.initNode("ECAM/phases/monostable/phase-9-output"),
toPowerOutput: props.globals.getNode("ECAM/phases/monostable/to-power-set-output"),
m80kt: props.globals.getNode("ECAM/phases/monostable-80kt"),
altAlert1: props.globals.initNode("ECAM/altitude-alert-monostable-set", 0, "BOOL"),
altAlert1Output: props.globals.initNode("ECAM/altitude-alert-monostable-output"),
altAlert2: props.globals.initNode("ECAM/flipflop/altitude-alert-rs-set", 0, "BOOL"),
},
Flipflop: {
gearSet: props.globals.initNode("/ECAM/phases/flipflop/gear-set", 0, "BOOL"),
gearReset: props.globals.initNode("/ECAM/phases/flipflop/gear-reset", 0, "BOOL"),
gearOutput: props.globals.initNode("/ECAM/phases/flipflop/gear-output", 0, "BOOL"),
phase2Set: props.globals.initNode("/ECAM/phases/flipflop/phase-2-set", 0, "BOOL"),
phase2Reset: props.globals.initNode("/ECAM/phases/flipflop/phase-2-reset", 0, "BOOL"),
phase2Output: props.globals.initNode("/ECAM/phases/flipflop/phase-2-output", 0, "BOOL"),
phase10Set: props.globals.initNode("/ECAM/phases/flipflop/phase-10-set", 0, "BOOL"),
phase10Reset: props.globals.initNode("/ECAM/phases/flipflop/phase-10-reset", 0, "BOOL"),
phase10Output: props.globals.initNode("/ECAM/phases/flipflop/phase-10-output", 0, "BOOL"),
recallSet: props.globals.initNode("/ECAM/flipflop/recall-set", 0, "BOOL"),
recallReset: props.globals.initNode("/ECAM/flipflop/recall-reset", 0, "BOOL"),
recallOutput: props.globals.initNode("/ECAM/flipflop/recall-output", 0, "BOOL"),
gearSet: props.globals.initNode("ECAM/phases/flipflop/gear-set", 0, "BOOL"),
gearReset: props.globals.initNode("ECAM/phases/flipflop/gear-reset", 0, "BOOL"),
gearOutput: props.globals.initNode("ECAM/phases/flipflop/gear-output", 0, "BOOL"),
phase2Set: props.globals.initNode("ECAM/phases/flipflop/phase-2-set", 0, "BOOL"),
phase2Reset: props.globals.initNode("ECAM/phases/flipflop/phase-2-reset", 0, "BOOL"),
phase2Output: props.globals.initNode("ECAM/phases/flipflop/phase-2-output", 0, "BOOL"),
phase10Set: props.globals.initNode("ECAM/phases/flipflop/phase-10-set", 0, "BOOL"),
phase10Reset: props.globals.initNode("ECAM/phases/flipflop/phase-10-reset", 0, "BOOL"),
phase10Output: props.globals.initNode("ECAM/phases/flipflop/phase-10-output", 0, "BOOL"),
recallSet: props.globals.initNode("ECAM/flipflop/recall-set", 0, "BOOL"),
recallReset: props.globals.initNode("ECAM/flipflop/recall-reset", 0, "BOOL"),
recallOutput: props.globals.initNode("ECAM/flipflop/recall-output", 0, "BOOL"),
},
Timer: {
eng1idle: props.globals.initNode("/ECAM/phases/timer/eng1idle", 0, "INT"),
eng2idle: props.globals.initNode("/ECAM/phases/timer/eng2idle", 0, "INT"),
eng1or2: props.globals.initNode("/ECAM/phases/timer/eng1or2", 0, "INT"),
toInhibit: props.globals.initNode("/ECAM/phases/timer/to-inhibit", 0, "INT"),
ldgInhibit: props.globals.initNode("/ECAM/phases/timer/ldg-inhibit", 0, "INT"),
eng1idle: props.globals.initNode("ECAM/phases/timer/eng1idle", 0, "INT"),
eng2idle: props.globals.initNode("ECAM/phases/timer/eng2idle", 0, "INT"),
eng1or2: props.globals.initNode("ECAM/phases/timer/eng1or2", 0, "INT"),
toInhibit: props.globals.initNode("ECAM/phases/timer/to-inhibit", 0, "INT"),
ldgInhibit: props.globals.initNode("ECAM/phases/timer/ldg-inhibit", 0, "INT"),
eng1idleOutput: props.globals.getNode("ECAM/phases/timer/eng1idle-output"),
eng2idleOutput: props.globals.getNode("ECAM/phases/timer/eng2idle-output"),
eng1or2Output: props.globals.initNode("/ECAM/phases/timer/eng1or2-output", 0, "INT"),
eng1or2Output: props.globals.initNode("ECAM/phases/timer/eng1or2-output", 0, "INT"),
toInhibitOutput: props.globals.getNode("ECAM/phases/timer/to-inhibit-output"),
ldgInhibitOutput: props.globals.getNode("ECAM/phases/timer/ldg-inhibit-output"),
},
speed80: props.globals.initNode("/ECAM/phases/speed-gt-80", 0, "BOOL"),
toPower: props.globals.initNode("/ECAM/phases/to-power-set", 0, "BOOL"),
speed80: props.globals.initNode("ECAM/phases/speed-gt-80", 0, "BOOL"),
toPower: props.globals.initNode("ECAM/phases/to-power-set", 0, "BOOL"),
altChg: props.globals.getNode("it-autoflight/input/alt-is-changing", 1),
};
var phaseLoop = func() {

View file

@ -97,6 +97,8 @@ var lskbutton = func(btn, i) {
}
} else if (getprop("MCDU[" ~ i ~ "]/page") == "TO") {
perfTOInput("L1", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "APPR") {
perfAPPRInput("L1", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "RADNAV") {
radnavInput("L1", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "DATA") {
@ -124,6 +126,8 @@ var lskbutton = func(btn, i) {
PerfInput("L2", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "TO") {
perfTOInput("L2", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "APPR") {
perfAPPRInput("L2", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "RADNAV") {
radnavInput("L2", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "CLB") {
@ -154,6 +158,8 @@ var lskbutton = func(btn, i) {
initInputA("L3", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "TO") {
perfTOInput("L3", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "APPR") {
perfAPPRInput("L3", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "STATUS") {
statusInput("L3", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "RADNAV") {
@ -178,6 +184,8 @@ var lskbutton = func(btn, i) {
setprop("MCDU[" ~ i ~ "]/page", "STATUS");
} else if (getprop("MCDU[" ~ i ~ "]/page") == "TO") {
perfTOInput("L4", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "APPR") {
perfAPPRInput("L4", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "RADNAV") {
radnavInput("L4", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "PRINTFUNC2") {
@ -204,6 +212,8 @@ var lskbutton = func(btn, i) {
perfCRZInput("L5", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "DES") {
perfDESInput("L5", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "APPR") {
perfAPPRInput("L5", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "RADNAV") {
radnavInput("L5", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "PRINTFUNC") {
@ -230,6 +240,8 @@ var lskbutton = func(btn, i) {
perfCRZInput("L6", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "DES") {
perfDESInput("L6", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "APPR") {
perfAPPRInput("L6",i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "PRINTFUNC2") {
printInput2("L6", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "F-PLNA" or getprop("MCDU[" ~ i ~ "]/page") == "F-PLNB") {
@ -279,6 +291,8 @@ var rskbutton = func(btn, i) {
} else if (btn == "2") {
if (getprop("MCDU[" ~ i ~ "]/page") == "INITB") {
initInputB("R2", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "APPR") {
perfAPPRInput("R2",i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "RADNAV") {
radnavInput("R2", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "PRINTFUNC") {
@ -299,6 +313,8 @@ var rskbutton = func(btn, i) {
initInputA("R3", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "TO") {
perfTOInput("R3", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "APPR") {
perfAPPRInput("R3", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "PRINTFUNC") {
printInput("R3", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "PRINTFUNC2") {
@ -321,6 +337,8 @@ var rskbutton = func(btn, i) {
} else if (btn == "4") {
if (getprop("MCDU[" ~ i ~ "]/page") == "TO") {
perfTOInput("R4", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "APPR") {
perfAPPRInput("R4", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "RADNAV") {
radnavInput("R4", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "PRINTFUNC2") {
@ -365,6 +383,8 @@ var rskbutton = func(btn, i) {
perfCLBInput("R6", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "CRZ") {
perfCRZInput("R6", i);
} else if (getprop("MCDU[" ~ i ~ "]/page") == "DES") {
perfDESInput("R6", i);
} else if ((getprop("MCDU[" ~ i ~ "]/page") == "DATA") or (getprop("MCDU[" ~ i ~ "]/page") == "PRINTFUNC") or (getprop("MCDU[" ~ i ~ "]/page") == "PRINTFUNC2")) {
if (getprop("MCDU[" ~ i ~ "]/scratchpad") != "AOC DISABLED") {
if (getprop("MCDU[" ~ i ~ "]/scratchpad-msg") == 1) {
@ -464,6 +484,8 @@ var pagebutton = func(btn, i) {
setprop("MCDU[" ~ i ~ "]/page", "CRZ");
} else if (getprop("FMGC/status/phase") == 4) {
setprop("MCDU[" ~ i ~ "]/page", "DES");
} else if (getprop("FMGC/status/phase") == 5) {
setprop("MCDU[" ~ i ~ "]/page", "APPR");
}
} else if (btn == "init") {
setprop("MCDU[" ~ i ~ "]/page", "INITA");

7
Nasal/MCDU/PERFAPPR.nas Normal file
View file

@ -0,0 +1,7 @@
# Copyright (c) 2020 Matthew Maring (hayden2000)
var perfAPPRInput = func(key, i) {
if (key == "L6") {
setprop("MCDU[" ~ i ~ "]/page", "DES");
}
}

View file

@ -5,5 +5,7 @@
var perfDESInput = func(key, i) {
if (key == "L6") {
setprop("MCDU[" ~ i ~ "]/page", "CRZ");
} else if (key == "R6") {
setprop("MCDU[" ~ i ~ "]/page", "APPR");
}
}

View file

@ -126,6 +126,14 @@ var perfTOInput = func(key, i) {
} else {
notAllowed(i);
}
} else if (tfs == 1) {
if (scratchpad >= 1 and scratchpad <= 4) {
setprop("FMGC/internal/to-flap", scratchpad);
setprop("FMGC/internal/flap-ths-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
} else {
notAllowed(i);
}
} else {
notAllowed(i);
}

View file

@ -746,4 +746,120 @@ var resetView = func() {
}
}
var autopilotView = func() {
if (getprop("sim/current-view/view-number") == 0) {
if (getprop("sim/rendering/headshake/enabled")) {
var _shakeFlag = 1;
setprop("sim/rendering/headshake/enabled", 0);
} else {
var _shakeFlag = 0;
}
var hd = getprop("sim/current-view/heading-offset-deg");
var hd_t = 341.7;
if (hd < 180) {
hd_t = hd_t - 360;
}
interpolate("sim/current-view/field-of-view", 63, 0.66);
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
interpolate("sim/current-view/pitch-offset-deg", -16.4, 0.66);
interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
interpolate("sim/current-view/x-offset-m", -0.45, 0.66);
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
if (_shakeFlag) {
setprop("sim/rendering/headshake/enabled", 1);
}
}
}
var overheadView = func() {
if (getprop("sim/current-view/view-number") == 0) {
if (getprop("sim/rendering/headshake/enabled")) {
var _shakeFlag = 1;
setprop("sim/rendering/headshake/enabled", 0);
} else {
var _shakeFlag = 0;
}
var hd = getprop("sim/current-view/heading-offset-deg");
var hd_t = 348;
if (hd < 180) {
hd_t = hd_t - 360;
}
interpolate("sim/current-view/field-of-view", 105.8, 0.66);
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
interpolate("sim/current-view/pitch-offset-deg", 65.25, 0.66);
interpolate("sim/current-view/roll-offset-deg", 0,0.66);
interpolate("sim/current-view/x-offset-m", -0.12, 0.66);
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
if (_shakeFlag) {
setprop("sim/rendering/headshake/enabled", 1);
}
}
}
var pedestalView = func() {
if (getprop("sim/current-view/view-number") == 0) {
if (getprop("sim/rendering/headshake/enabled")) {
var _shakeFlag = 1;
setprop("sim/rendering/headshake/enabled", 0);
} else {
var _shakeFlag = 0;
}
var hd = getprop("sim/current-view/heading-offset-deg");
var hd_t = 315;
if (hd < 180) {
hd_t = hd_t - 360;
}
interpolate("sim/current-view/field-of-view", 63, 0.66);
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
interpolate("sim/current-view/pitch-offset-deg", -46.3, 0.66);
interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
interpolate("sim/current-view/x-offset-m", -0.45, 0.66);
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
if (_shakeFlag) {
setprop("sim/rendering/headshake/enabled", 1);
}
}
}
var lightsView = func() {
if (getprop("sim/current-view/view-number") == 0) {
if (getprop("sim/rendering/headshake/enabled")) {
var _shakeFlag = 1;
setprop("sim/rendering/headshake/enabled", 0);
} else {
var _shakeFlag = 0;
}
var hd = getprop("sim/current-view/heading-offset-deg");
var hd_t = 329;
if (hd < 180) {
hd_t = hd_t - 360;
}
interpolate("sim/current-view/field-of-view", 63, 0.66);
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
interpolate("sim/current-view/pitch-offset-deg", 17.533, 0.66);
interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
interpolate("sim/current-view/x-offset-m", -0.45, 0.66);
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
if (_shakeFlag) {
setprop("sim/rendering/headshake/enabled", 1);
}
}
}
setprop("systems/acconfig/libraries-loaded", 1);

View file

@ -102,6 +102,12 @@ var JSBSim = {
},
};
var Modes = {
Altimeter: {
std: props.globals.getNode("modes/altimeter/std"),
},
};
var Options = {
eng: props.globals.getNode("options/eng"),
};

View file

@ -12,7 +12,7 @@ var viewName = "XX";
var fovZoom = func(d) {
viewName = getprop("sim/current-view/name");
canChangeZOffset = getprop("sim/current-view/type") == "lookat" and viewName != "Tower View" and viewName != "Tower View AGL" and viewName != "Fly-By View" and viewName != "Chase View" and viewName != "Chase View Without Yaw" and viewName != "Walk View";
canChangeZOffset = getprop("sim/current-view/type") == "lookat" and viewName != "Tower View" and viewName != "Tower View AGL" and viewName != "Fly-By View" and viewName != "Chase View" and viewName != "Chase View Without Yaw" and viewName != "Walk View" and viewName != "Walker Orbit View";
if (getprop("sim/current-view/z-offset-m") <= -20) {
decStep = -2;

View file

@ -70,10 +70,10 @@ var BrakeSystem =
setprop("gear/gear[2]/R-Thrust",0);
#Introducing a random error on temp sensors (max 5°C)
setprop("gear/gear[1]/L1error-temp-degc", math.round(rand()*(5)) - 2.5);
setprop("gear/gear[1]/L2error-temp-degc", math.round(rand()*(5)) - 2.5);
setprop("gear/gear[2]/R3error-temp-degc", math.round(rand()*(5)) - 2.5);
setprop("gear/gear[2]/R4error-temp-degc", math.round(rand()*(5)) - 2.5);
setprop("gear/gear[1]/L1error-temp-degc", math.round(rand()*(5)));
setprop("gear/gear[1]/L2error-temp-degc", math.round(rand()*(5)));
setprop("gear/gear[2]/R3error-temp-degc", math.round(rand()*(5)));
setprop("gear/gear[2]/R4error-temp-degc", math.round(rand()*(5)));
#var atemp = getprop("environment/temperature-degc") or 0;
#var vmach = getprop("velocities/mach") or 0;

View file

@ -3,17 +3,100 @@
# Copyright (c) 2019 Joshua Davidson (Octal450)
var dewpoint = 0;
var temperature = 0;
var speed = 0;
var visibility = 0;
var visibLclWx = 0;
var severity = 0;
var factor = 0;
### Ice sensitive components definition.
var Iceable = {
new: func(node) {
var m = { parents: [Iceable] };
m.ice_inches = node.getNode("ice-inches", 1);
m.sensitivity = node.getNode("sensitivity", 1);
var deice_prop = node.getValue("salvage-control");
m.deice = deice_prop ? props.globals.getNode(deice_prop, 1) : nil;
var output_prop = node.getValue("output-property");
m.output = output_prop ? props.globals.getNode(output_prop, 1): nil;
return m;
},
update: func(factor, melt) {
var icing = me.ice_inches.getValue();
if(me.deice != nil and me.deice.getBoolValue()) {
icing += melt;
} else {
icing += factor * me.sensitivity.getValue();
}
if(icing < 0) icing = 0;
me.ice_inches.setValue(icing);
if(me.output != nil) me.output.setValue(icing);
},
};
### Icing parameters computation.
# Environmental parameters of the icing model.
var environment = {
dewpoint: props.globals.getNode("environment/dewpoint-degc"),
temperature: props.globals.getNode("environment/temperature-degc"),
visibility: props.globals.getNode("environment/effective-visibility-m"),
visibLclWx: props.globals.getNode("environment/visibility-m"),
};
var effects = {
frost_inch: props.globals.getNode("environment/aircraft-effects/frost-inch", 1),
frost_norm: props.globals.getNode("environment/aircraft-effects/frost-level"),
};
# Icing factor computation.
var maxSpread = 0;
var icingCond = 0;
var severity_factor_table = [
-0.00000166,
0.00000277,
0.00000277,
0.00000554,
0.00001108,
0.00002216,
];
var melt_factor = -0.00005;
var icing_factor = func() {
var temperature = environment.temperature.getValue();
var dewpoint = environment.dewpoint.getValue();
var visibility = environment.visibility.getValue();
var visibLclWx = environment.visibLclWx.getValue();
# Do we create ice?
var spread = temperature - dewpoint;
# freezing fog or low temp and below dp or in advanced wx cloud
var icingCond = ((spread < maxSpread or visibility < 1000 or visibLclWx < 5000)
and temperature < 0);
# todo: turn this into a table or something
var severity = 0;
if (icingCond) {
if (temperature >= -2) {
severity = 1;
} else if (temperature >= -12) {
severity = 3;
} else if (temperature >= -30) {
severity = 5;
} else if (temperature >= -40) {
severity = 3;
} else if (temperature >= -99) {
severity = 1;
}
}
return severity_factor_table[severity];
}
var speed = 0;
var pause = 0;
var melt = 0;
var windowprobe = 0;
var wingBtn = 0;
var wingFault = 0;
@ -31,40 +114,13 @@ var lengAnti = 0;
var rengAnti = 0;
var WingHasBeenTurnedOff = 0;
var GroundModeFinished = 0;
var icing1 = 0;
var sensitive1 = 0;
var v = 0;
var a = 0;
var icing2 = 0;
var sensitive2 = 0;
var u = 0;
var b = 0;
var icing3 = 0;
var sensitive3 = 0;
var t = 0;
var c = 0;
var icing4 = 0;
var sensitive4 = 0;
var s = 0;
var d = 0;
var icing5 = 0;
var sensitive5 = 0;
var r = 0;
var icing6 = 0;
var sensitive6 = 0;
var q = 0;
var e = 0;
var spread = 0;
var windowprb = 0;
var stateL = 0;
var stateR = 0;
var iceables = [];
var icingInit = func {
setprop("systems/icing/severity", "0"); # maximum severity: we will make it random
setprop("systems/icing/factor", 0.0); # the factor is how many inches we add per second
setprop("systems/icing/max-spread-degc", 0.0);
setprop("systems/icing/melt-w-heat-factor", -0.00005000);
setprop("systems/icing/icingcond", 0);
setprop("controls/switches/windowprobeheat", 0);
setprop("controls/switches/wing", 0);
setprop("controls/switches/wingfault", 0);
@ -80,21 +136,18 @@ var icingInit = func {
setprop("systems/pitot/failed", 1);
setprop("controls/deice/WingHasBeenTurnedOff", 0);
setprop("controls/deice/GroundModeFinished", 0);
iceables = props.globals.getNode("sim/model/icing", 1).getChildren("iceable");
forindex(var i; iceables) {
iceables[i] = Iceable.new(iceables[i]);
}
icing_timer.start();
}
var icingModel = func {
dewpoint = getprop("environment/dewpoint-degc");
temperature = getprop("environment/temperature-degc");
speed = getprop("velocities/airspeed-kt");
visibility = getprop("environment/effective-visibility-m");
visibLclWx = getprop("environment/visibility-m");
severity = getprop("systems/icing/severity");
factor = getprop("systems/icing/factor");
maxSpread = getprop("systems/icing/max-spread-degc");
icingCond = getprop("systems/icing/icingcond");
pause = getprop("sim/freeze/master");
melt = getprop("systems/icing/melt-w-heat-factor");
windowprobe = getprop("controls/deice/windowprobeheat");
wingBtn = getprop("controls/switches/wing");
wingFault = getprop("controls/switches/wingfault");
@ -113,97 +166,12 @@ var icingModel = func {
WingHasBeenTurnedOff = getprop("controls/deice/WingHasBeenTurnedOff");
GroundModeFinished = getprop("controls/deice/GroundModeFinished");
if (temperature >= 0 or !icingCond) {
setprop("systems/icing/severity", "0");
} else if (temperature < 0 and temperature >= -2 and icingCond) {
setprop("systems/icing/severity", "1");
} else if (temperature < -2 and temperature >= -12 and icingCond) {
setprop("systems/icing/severity", "3");
} else if (temperature < -12 and temperature >= -30 and icingCond) {
setprop("systems/icing/severity", "5");
} else if (temperature < -30 and temperature >= -40 and icingCond) {
setprop("systems/icing/severity", "3");
} else if (temperature < -40 and temperature >= -99 and icingCond) {
setprop("systems/icing/severity", "1");
var factor = icing_factor();
foreach(iceable; iceables) {
iceable.update(factor, melt_factor);
}
icing1 = getprop("sim/model/icing/iceable[0]/ice-inches");
sensitive1 = getprop("sim/model/icing/iceable[0]/sensitivity");
v = icing1 + (factor * sensitive1);
a = icing1 + melt;
if (icing1 < 0.0 and !pause) {
setprop("sim/model/icing/iceable[0]/ice-inches", 0.0);
} else if (wingAnti) {
setprop("sim/model/icing/iceable[0]/ice-inches", a);
} else if (!pause and !wingAnti) {
setprop("sim/model/icing/iceable[0]/ice-inches", v);
}
icing2 = getprop("sim/model/icing/iceable[1]/ice-inches");
sensitive2 = getprop("sim/model/icing/iceable[1]/sensitivity");
u = icing2 + (factor * sensitive2);
b = icing2 + melt;
if (icing2 < 0.0 and !pause) {
setprop("sim/model/icing/iceable[1]/ice-inches", 0.0);
} else if (lengAnti) {
setprop("sim/model/icing/iceable[1]/ice-inches", b);
} else if (!pause and !lengAnti) {
setprop("sim/model/icing/iceable[1]/ice-inches", u);
}
icing3 = getprop("sim/model/icing/iceable[2]/ice-inches");
sensitive3 = getprop("sim/model/icing/iceable[2]/sensitivity");
t = icing3 + (factor * sensitive3);
c = icing3 + melt;
if (icing3 < 0.0 and !pause) {
setprop("sim/model/icing/iceable[2]/ice-inches", 0.0);
} else if (rengAnti) {
setprop("sim/model/icing/iceable[2]/ice-inches", c);
} else if (!pause and !rengAnti) {
setprop("sim/model/icing/iceable[2]/ice-inches", t);
}
icing4 = getprop("sim/model/icing/iceable[3]/ice-inches");
sensitive4 = getprop("sim/model/icing/iceable[3]/sensitivity");
s = icing4 + (factor * sensitive4);
d = icing4 + melt;
if (icing4 < 0.0 and !pause) {
setprop("sim/model/icing/iceable[3]/ice-inches", 0.0);
} else if (windowprobe) {
setprop("sim/model/icing/iceable[3]/ice-inches", d);
} else if (!pause and !windowprobe) {
setprop("sim/model/icing/iceable[3]/ice-inches", s);
}
icing5 = getprop("sim/model/icing/iceable[4]/ice-inches");
sensitive5 = getprop("sim/model/icing/iceable[4]/sensitivity");
r = icing5 + (factor * sensitive5);
if (icing5 < 0.0 and !pause) {
setprop("sim/model/icing/iceable[4]/ice-inches", 0.0);
} else if (!pause) {
setprop("sim/model/icing/iceable[4]/ice-inches", r);
}
icing6 = getprop("sim/model/icing/iceable[5]/ice-inches");
sensitive6 = getprop("sim/model/icing/iceable[5]/sensitivity");
q = icing6 + (factor * sensitive6);
e = icing6 + melt;
if (icing6 < 0.0 and !pause) {
setprop("sim/model/icing/iceable[5]/ice-inches", 0.0);
} else if (windowprobe) {
setprop("sim/model/icing/iceable[5]/ice-inches", e);
} else if (!pause and !windowprobe) {
setprop("sim/model/icing/iceable[5]/ice-inches", q);
}
# Do we create ice?
spread = temperature - dewpoint;
# freezing fog or low temp and below dp or in advanced wx cloud
if ((spread < maxSpread and temperature < 0) or (temperature < 0 and visibility < 1000) or (visibLclWx < 5000 and temperature < 0)) {
setprop("systems/icing/icingcond", 1);
} else {
setprop("systems/icing/icingcond", 0);
}
effects.frost_norm.setDoubleValue(effects.frost_inch.getValue() * 50);
if (WingHasBeenTurnedOff and !wowl and !wowr and GroundModeFinished) {
setprop("controls/deice/wing", 1);
@ -364,3 +332,4 @@ var update_Icing = func {
}
var icing_timer = maketimer(0.2, update_Icing);
icing_timer.simulatedTime = 1;

74
Nasal/Systems/save.nas Normal file
View file

@ -0,0 +1,74 @@
# Copyright (C) 2020 Merspieler, merspieler _at_ airmail.cc
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Save and restore properties between sessions
# To add more properties to autosave, just add them here.
var default = [
# CONSUMABLES
# Fuel
"/consumables/fuel/tank[0]/level-lbs",
"/consumables/fuel/tank[1]/level-lbs",
"/consumables/fuel/tank[2]/level-lbs",
"/consumables/fuel/tank[3]/level-lbs",
"/consumables/fuel/tank[4]/level-lbs",
# CONTROLS
# rmp
"/controls/radio/rmp[0]/on",
"/controls/radio/rmp[1]/on",
"/controls/radio/rmp[2]/on",
# efis
"/instrumentation/efis[0]/inputs/range-nm",
"/instrumentation/efis[0]/nd/display-mode",
"/instrumentation/efis[0]/input/lh-vor-adf",
"/instrumentation/efis[0]/input/rh-vor-adf",
"/instrumentation/efis[1]/inputs/range-nm",
"/instrumentation/efis[1]/nd/display-mode",
"/instrumentation/efis[1]/input/lh-vor-adf",
"/instrumentation/efis[1]/input/rh-vor-adf",
# parking brake
"/controls/gear/brake-parking"
];
var save = func (saved_props, file) {
print("Saving state...");
for (var i = 0; i < size(saved_props); i += 1)
{
setprop("/save" ~ saved_props[i], getprop(saved_props[i]));
}
var saveNode = props.globals.getNode("/save", 0);
io.write_properties(file, saveNode);
print("State saved");
}
var restore = func (saved_props, file) {
print("Loading saved state...");
var readNode = props.globals.initNode("/save", );
io.read_properties(file, readNode);
for (var i = 0; i < size(saved_props); i += 1)
{
var val = getprop("/save" ~ saved_props[i]);
if (val != nil)
{
setprop(saved_props[i], val);
}
}
print("Saved state loaded");
}

View file

@ -1595,23 +1595,23 @@
</condition>
<volume>
<property>/sim/current-view/internal</property>
<factor>0.2</factor>
<factor>0.4</factor>
</volume>
<reference-dist>10</reference-dist>
<max-dist>100</max-dist>
</cricket>
<cchord>
<name>Cricket</name>
<name>C-chord</name>
<path>Aircraft/A320-family/Sounds/Cockpit/c-chord.wav</path>
<mode>once</mode>
<mode>looped</mode>
<type>avionics</type>
<condition>
<property>/sim/sound/warnings/cchord</property>
</condition>
<volume>
<property>/sim/current-view/internal</property>
<factor>0.2</factor>
<factor>0.6</factor>
</volume>
<reference-dist>10</reference-dist>
<max-dist>100</max-dist>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -83,89 +83,89 @@
<flipflop>
<type>RS</type>
<S>
<property>/ECAM/to-config-set</property>
<property>ECAM/to-config-set</property>
</S>
<R>
<property>/ECAM/to-config-reset</property>
<property>ECAM/to-config-reset</property>
</R>
<output>/ECAM/to-config-flipflop</output>
<output>ECAM/to-config-flipflop</output>
</flipflop>
<flipflop>
<type>RS</type>
<S>
<property>/ECAM/to-memo-set</property>
<property>ECAM/to-memo-set</property>
</S>
<R>
<property>/ECAM/to-memo-reset</property>
<property>ECAM/to-memo-reset</property>
</R>
<output>/ECAM/to-memo-flipflop</output>
<output>ECAM/to-memo-flipflop</output>
</flipflop>
<flipflop>
<type>SR</type>
<S>
<property>/ECAM/ldg-memo-set</property>
<property>ECAM/ldg-memo-set</property>
</S>
<R>
<property>/ECAM/ldg-memo-reset</property>
<property>ECAM/ldg-memo-reset</property>
</R>
<output>/ECAM/ldg-memo-flipflop</output>
<output>ECAM/ldg-memo-flipflop</output>
</flipflop>
<flipflop>
<type>RS</type>
<S>
<property>/ECAM/ldg-memo-2200-set</property>
<property>ECAM/ldg-memo-2200-set</property>
</S>
<R>
<property>/ECAM/ldg-memo-2200-reset</property>
<property>ECAM/ldg-memo-2200-reset</property>
</R>
<output>/ECAM/ldg-memo-2200-flipflop</output>
<output>ECAM/ldg-memo-2200-flipflop</output>
</flipflop>
<flipflop>
<type>SR</type>
<S>
<property>/ECAM/phases/flipflop/gear-set</property>
<property>ECAM/phases/flipflop/gear-set</property>
</S>
<R>
<property>/ECAM/phases/flipflop/gear-reset</property>
<property>ECAM/phases/flipflop/gear-reset</property>
</R>
<output>/ECAM/phases/flipflop/gear-output</output>
<output>ECAM/phases/flipflop/gear-output</output>
</flipflop>
<flipflop>
<type>SR</type>
<S>
<property>/ECAM/phases/flipflop/phase-2-set</property>
<property>ECAM/phases/flipflop/phase-2-set</property>
</S>
<R>
<property>/ECAM/phases/flipflop/phase-2-reset</property>
<property>ECAM/phases/flipflop/phase-2-reset</property>
</R>
<output>/ECAM/phases/flipflop/phase-2-output</output>
<output>ECAM/phases/flipflop/phase-2-output</output>
</flipflop>
<flipflop>
<type>RS</type>
<S>
<property>/ECAM/phases/flipflop/phase-10-set</property>
<property>ECAM/phases/flipflop/phase-10-set</property>
</S>
<R>
<property>/ECAM/phases/flipflop/phase-10-reset</property>
<property>ECAM/phases/flipflop/phase-10-reset</property>
</R>
<output>/ECAM/phases/flipflop/phase-10-output</output>
<output>ECAM/phases/flipflop/phase-10-output</output>
</flipflop>
<flipflop>
<type>RS</type>
<S>
<property>/ECAM/flipflop/recall-set</property>
<property>ECAM/flipflop/recall-set</property>
</S>
<R>
<property>/ECAM/flipflop/recall-reset</property>
<property>ECAM/flipflop/recall-reset</property>
</R>
<output>/ECAM/flipflop/recall-output</output>
<output>ECAM/flipflop/recall-output</output>
</flipflop>
<flipflop>
@ -175,10 +175,10 @@
</time>
<S>
<not>
<property>/ECAM/phases/speed-gt-80</property>
<property>ECAM/phases/speed-gt-80</property>
</not>
</S>
<output>/ECAM/phases/monostable-80kt</output>
<output>ECAM/phases/monostable-80kt</output>
</flipflop>
<flipflop>
@ -187,9 +187,9 @@
<value>300.0</value>
</time>
<S>
<property>/ECAM/phases/monostable/phase-1-300</property>
<property>ECAM/phases/monostable/phase-1-300</property>
</S>
<output>/ECAM/phases/monostable/phase-1-output</output>
<output>ECAM/phases/monostable/phase-1-output</output>
</flipflop>
<flipflop>
@ -198,9 +198,9 @@
<value>120.0</value>
</time>
<S>
<property>/ECAM/phases/monostable/phase-5</property>
<property>ECAM/phases/monostable/phase-5</property>
</S>
<output>/ECAM/phases/monostable/phase-5-output</output>
<output>ECAM/phases/monostable/phase-5-output</output>
</flipflop>
<flipflop>
@ -209,9 +209,9 @@
<value>180.0</value>
</time>
<S>
<property>/ECAM/phases/monostable/phase-7</property>
<property>ECAM/phases/monostable/phase-7</property>
</S>
<output>/ECAM/phases/monostable/phase-7-output</output>
<output>ECAM/phases/monostable/phase-7-output</output>
</flipflop>
<flipflop>
@ -220,12 +220,159 @@
<value>5.0</value>
</time>
<S>
<property>/ECAM/buttons/recall-status-normal</property>
<property>ECAM/buttons/recall-status-normal</property>
</S>
<R>
<property>/ECAM/buttons/clear-btn</property>
<property>ECAM/buttons/clear-btn</property>
</R>
<output>/ECAM/buttons/recall-status-normal-output</output>
<output>ECAM/buttons/recall-status-normal-output</output>
</flipflop>
<flipflop>
<type>SR</type>
<S>
<property>ECAM/altitude-alert-monostable-set</property>
</S>
<R>
<property>ECAM/altitude-alert-monostable-intermediate-output</property>
</R>
<output>ECAM/altitude-alert-monostable-flipflop-intermediate</output>
</flipflop>
<flipflop>
<type>monostable</type>
<inverted type="bool">true</inverted>
<time>
<value>1.5</value>
</time>
<S>
<not><property>ECAM/altitude-alert-monostable-flipflop-intermediate</property></not>
</S>
<output>ECAM/altitude-alert-monostable-intermediate-output</output>
</flipflop>
<filter>
<type>gain</type>
<gain>1.0</gain>
<input>
<condition>
<and>
<property>ECAM/altitude-alert-monostable-flipflop-intermediate</property>
<not><property>ECAM/altitude-alert-monostable-intermediate-output</property></not>
</and>
</condition>
<value>1</value>
</input>
<output>ECAM/altitude-alert-monostable-output</output>
</filter>
<filter>
<type>derivative</type>
<input>it-autoflight/input/alt</input>
<output>it-autoflight/input/alt-is-changing</output>
<filter-time>1.0</filter-time>
</filter>
<flipflop>
<type>monostable</type>
<time>
<value>1</value>
</time>
<S>
<property>it-autoflight/input/alt-is-changing</property>
</S>
<output>ECAM/alt-is-changing</output>
</flipflop>
<filter>
<input>
<condition>
<equals>
<property>gear/gear[0]/position-norm</property>
<value>1</value>
</equals>
</condition>
<value>1</value>
</input>
<input>
<condition>
<not-equals>
<property>gear/gear[0]/position-norm</property>
<value>1</value>
</not-equals>
</condition>
<value>0</value>
</input>
<output>ECAM/gear-downlocked-set</output>
</filter>
<flipflop>
<type>monostable</type>
<time>
<value>1</value>
</time>
<S>
<property>ECAM/gear-downlocked-set</property>
</S>
<output>ECAM/gear-downlocked-output</output>
</flipflop>
<filter>
<type>gain</type>
<gain>1.0</gain>
<input>
<condition>
<or>
<equals><property>ECAM/gear-downlocked-output</property><value>1</value></equals>
<equals><property>ECAM/alt-is-changing</property><value>1</value></equals>
</or>
</condition>
<value>1</value>
</input>
<input>
<condition>
<and>
<equals><property>ECAM/gear-downlocked-output</property><value>0</value></equals>
<equals><property>ECAM/alt-is-changing</property><value>0</value></equals>
</and>
</condition>
<value>0</value>
</input>
<output>ECAM/flipflop/alt-alert-rs-reset</output>
</filter>
<flipflop>
<type>RS</type>
<S>
<property>ECAM/flipflop/altitude-alert-rs-set</property>
</S>
<R>
<property>ECAM/flipflop/alt-alert-rs-reset</property>
</R>
<output>ECAM/flipflop/alt-alert-rs-output</output>
</flipflop>
<flipflop>
<type>RS</type>
<S>
<property>ECAM/flipflop/alt-alert-2-rs-set</property>
</S>
<R>
<property>ECAM/flipflop/alt-alert-2-rs-reset</property>
</R>
<output>ECAM/flipflop/alt-alert-2-rs-output</output>
</flipflop>
<flipflop>
<type>RS</type>
<S>
<property>ECAM/flipflop/alt-alert-3-rs-set</property>
</S>
<R>
<property>ECAM/flipflop/alt-alert-rs-reset</property>
</R>
<output>ECAM/flipflop/alt-alert-3-rs-output</output>
</flipflop>
<!-- falling edge detector - take inverse of following -->
@ -236,9 +383,9 @@
<value>3.0</value>
</time>
<S>
<property>/ECAM/phases/monostable/phase-9</property>
<property>ECAM/phases/monostable/phase-9</property>
</S>
<output>/ECAM/phases/monostable/phase-9-output</output>
<output>ECAM/phases/monostable/phase-9-output</output>
</flipflop>
<flipflop>
@ -248,9 +395,9 @@
<value>1.0</value>
</time>
<S>
<property>/ECAM/phases/to-power-set</property>
<property>ECAM/phases/to-power-set</property>
</S>
<output>/ECAM/phases/monostable/to-power-set-output</output>
<output>ECAM/phases/monostable/to-power-set-output</output>
</flipflop>
</PropertyList>

56
Systems/glass-effect.xml Normal file
View file

@ -0,0 +1,56 @@
<?xml version="1.0"?>
<!-- Copyright (c) 2019 Joshua Davidson (Octal450) -->
<system name="glass-effect">
<channel name="rain">
<fcs_function name="glass-effects/splashx">
<function>
<table>
<independentVar>velocities/u-aero-fps</independentVar>
<tableData>
0 0.01
7 0.01
8 -0.01
25 -0.5
50 -1.2
120 -2
</tableData>
</table>
</function>
<output>/environment/aircraft-effects/splash-vector-x</output>
</fcs_function>
<fcs_function name="glass-effects/splashy">
<function>
<table>
<independentVar>velocities/v-aero-fps</independentVar>
<tableData>
-25 -0.1
-8 0
8 0
25 0.1
</tableData>
</table>
</function>
<output>/environment/aircraft-effects/splash-vector-y</output>
</fcs_function>
<fcs_function name="glass-effects/splashz">
<function>
<table>
<independentVar>velocities/u-aero-fps</independentVar>
<tableData>
0 1.2
7 1.2
8 0.9
25 0.9
50 -0.2
120 -0.5
</tableData>
</table>
</function>
<output>/environment/aircraft-effects/splash-vector-z</output>
</fcs_function>
</channel>
</system>

View file

@ -1,58 +0,0 @@
<?xml version="1.0"?>
<!-- Copyright (c) 2019 Joshua Davidson (Octal450) -->
<system name="glass-effect1">
<channel name="rain">
<fcs_function name="glass-effects/airspeed-clamped-sqrt">
<function>
<sqrt>
<quotient>
<min>
<property>/velocities/airspeed-kt</property>
<value>40</value>
</min>
<value>40</value>
</quotient>
</sqrt>
</function>
</fcs_function>
<fcs_function name="glass-effects/splashx">
<function>
<difference>
<value>-0.1</value>
<product>
<value>2.0</value>
<property>/fdm/jsbsim/glass-effects/airspeed-clamped-sqrt</property>
</product>
</difference>
</function>
<output>/environment/aircraft-effects/splash-vector-x</output>
</fcs_function>
<fcs_function name="glass-effects/splashy">
<function>
<value>0.0</value>
</function>
<output>/environment/aircraft-effects/splash-vector-y</output>
</fcs_function>
<fcs_function name="glass-effects/splashz">
<function>
<difference>
<value>1.0</value>
<product>
<value>1.35</value>
<property>/fdm/jsbsim/glass-effects/airspeed-clamped-sqrt</property>
</product>
</difference>
</function>
<output>/environment/aircraft-effects/splash-vector-z</output>
</fcs_function>
</channel>
</system>

View file

@ -1,40 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright (c) 2019 Joshua Davidson (Octal450) -->
<PropertyList>
<filter>
<name>splashX</name>
<type>gain</type>
<input>
<property>/fdm/jsbsim/glass-effects/splashx</property>
</input>
<output>
<property>/environment/aircraft-effects/splash-vector-x</property>
</output>
</filter>
<filter>
<name>splashY</name>
<type>gain</type>
<input>
<value>0.0</value>
</input>
<output>
<property>/environment/aircraft-effects/splash-vector-y</property>
</output>
</filter>
<filter>
<name>splashZ</name>
<type>gain</type>
<input>
<property>/fdm/jsbsim/glass-effects/splashz</property>
</input>
<output>
<property>/environment/aircraft-effects/splash-vector-z</property>
</output>
</filter>
</PropertyList>

View file

@ -608,27 +608,6 @@
<output>/systems/pressurization/targetvs</output>
</filter>
<filter>
<name>Icing Severity</name>
<type>gain</type>
<gain>1.0</gain>
<update-interval-secs type="double">0.1</update-interval-secs>
<input>
<expression>
<table>
<property>/systems/icing/severity</property>
<entry><ind>0</ind><dep>-0.00000166</dep></entry>
<entry><ind>1</ind><dep> 0.00000277</dep></entry>
<entry><ind>2</ind><dep> 0.00000277</dep></entry>
<entry><ind>3</ind><dep> 0.00000554</dep></entry>
<entry><ind>4</ind><dep> 0.00001108</dep></entry>
<entry><ind>5</ind><dep> 0.00002216</dep></entry>
</table>
</expression>
</input>
<output>/systems/icing/factor</output>
</filter>
<filter>
<name>TAS</name>
<type>gain</type>