Add top of climb / level off symbols to the navdisplay
This commit is contained in:
parent
1e38f24926
commit
d65fde3726
3 changed files with 74 additions and 99 deletions
|
@ -1,73 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<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="64"
|
|
||||||
height="64"
|
|
||||||
id="svg2985"
|
|
||||||
version="1.1"
|
|
||||||
inkscape:version="0.48.5 r10040"
|
|
||||||
sodipodi:docname="airbus_tc.svg">
|
|
||||||
<defs
|
|
||||||
id="defs2987" />
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="base"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:zoom="5.27"
|
|
||||||
inkscape:cx="14.464853"
|
|
||||||
inkscape:cy="15.800695"
|
|
||||||
inkscape:current-layer="layer1"
|
|
||||||
showgrid="true"
|
|
||||||
inkscape:grid-bbox="true"
|
|
||||||
inkscape:document-units="px"
|
|
||||||
inkscape:window-width="1075"
|
|
||||||
inkscape:window-height="665"
|
|
||||||
inkscape:window-x="93"
|
|
||||||
inkscape:window-y="92"
|
|
||||||
inkscape:window-maximized="0" />
|
|
||||||
<metadata
|
|
||||||
id="metadata2990">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
id="layer1"
|
|
||||||
inkscape:label="Layer 1"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
transform="translate(0,16)">
|
|
||||||
<g
|
|
||||||
id="tc_symbol"
|
|
||||||
transform="matrix(1.4141414,0,0,1.4141414,-2.4444435,-18.040404)">
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="cccc"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path2993"
|
|
||||||
d="m 2.9285709,34.185715 12.3428571,-12.685716 30.514286,0 -4.8,-7.542856"
|
|
||||||
style="fill:none;stroke:#118eff;stroke-width:2.4000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
|
||||||
<path
|
|
||||||
style="fill:none;stroke:#118eff;stroke-width:2.4000001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
d="m 45.785714,21.561266 -4.8,7.542856"
|
|
||||||
id="path3094"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="cc" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 2.3 KiB |
|
@ -181,7 +181,7 @@ canvas.NDStyles["Airbus"] = {
|
||||||
{
|
{
|
||||||
name: "ALT-profile",
|
name: "ALT-profile",
|
||||||
isMapStructure: 1,
|
isMapStructure: 1,
|
||||||
update_on: ["toggle_display_mode","toggle_range",{rate_hz: 2}],
|
update_on: ["toggle_display_mode","toggle_range", {rate_hz: 0.5}],
|
||||||
predicate: func(nd, layer) {
|
predicate: func(nd, layer) {
|
||||||
var visible = nd.in_mode("toggle_display_mode", ["MAP", "PLAN"]) and (nd.adirs_property.getValue() == 1 or (adirs_3.getValue() == 1 and att_switch.getValue() == nd.attitude_heading_setting));
|
var visible = nd.in_mode("toggle_display_mode", ["MAP", "PLAN"]) and (nd.adirs_property.getValue() == 1 or (adirs_3.getValue() == 1 and att_switch.getValue() == nd.attitude_heading_setting));
|
||||||
layer.group.setVisible( visible );
|
layer.group.setVisible( visible );
|
||||||
|
@ -205,7 +205,6 @@ canvas.NDStyles["Airbus"] = {
|
||||||
# /autopilot/route-manager/vnav/td/
|
# /autopilot/route-manager/vnav/td/
|
||||||
# Each node should have the latitude-deg and longitude-deg properties.
|
# Each node should have the latitude-deg and longitude-deg properties.
|
||||||
# Available nodes are:
|
# Available nodes are:
|
||||||
# tc (top of climb)
|
|
||||||
# td (top of descent)
|
# td (top of descent)
|
||||||
# ec (end of climb)
|
# ec (end of climb)
|
||||||
# ed (end of descent)
|
# ed (end of descent)
|
||||||
|
@ -214,14 +213,13 @@ canvas.NDStyles["Airbus"] = {
|
||||||
# If ec and ed are altitude constraints, their node should have the
|
# If ec and ed are altitude constraints, their node should have the
|
||||||
# boolean "alt-cstr" property set to 1.
|
# boolean "alt-cstr" property set to 1.
|
||||||
vnav_node: "/autopilot/route-manager/vnav/",
|
vnav_node: "/autopilot/route-manager/vnav/",
|
||||||
types: ["tc", "td", "ec", "ed","sc","sd"],
|
types: ["ec","ed","sc","sd","td"],
|
||||||
svg_path: {
|
svg_path: {
|
||||||
tc: get_local_path("res/airbus_tc.svg"),
|
|
||||||
td: get_local_path("res/airbus_td.svg"),
|
|
||||||
ec: get_local_path("res/airbus_ec.svg"),
|
ec: get_local_path("res/airbus_ec.svg"),
|
||||||
ed: get_local_path("res/airbus_ed.svg"),
|
ed: get_local_path("res/airbus_ed.svg"),
|
||||||
sc: get_local_path("res/airbus_sc.svg"),
|
sc: get_local_path("res/airbus_sc.svg"),
|
||||||
sd: get_local_path("res/airbus_sd.svg")
|
sd: get_local_path("res/airbus_sd.svg"),
|
||||||
|
td: get_local_path("res/airbus_td.svg")
|
||||||
},
|
},
|
||||||
listen: [
|
listen: [
|
||||||
"fplan_active",
|
"fplan_active",
|
||||||
|
@ -233,31 +231,32 @@ canvas.NDStyles["Airbus"] = {
|
||||||
draw_callback: func(){
|
draw_callback: func(){
|
||||||
var name = me.model.getName();
|
var name = me.model.getName();
|
||||||
var grp = me.element.getElementById(name~"_symbol");
|
var grp = me.element.getElementById(name~"_symbol");
|
||||||
if(grp == nil) return;
|
if (grp == nil) return;
|
||||||
var dfcolor = me.getStyle("default_color");
|
|
||||||
var armed_color = me.getStyle("armed_color");
|
if (me.model.getValue("show")) {
|
||||||
var managed_color = me.getStyle("managed_color");
|
grp.show();
|
||||||
#print("Draw: -> " ~ name);
|
} else {
|
||||||
if(name == "td" or name == "sd" or name == "sc"){
|
grp.hide();
|
||||||
var vnav_armed = me.model.getValue("vnav-armed");
|
|
||||||
if(vnav_armed and name != "td")
|
|
||||||
grp.setColor(armed_color);
|
|
||||||
else
|
|
||||||
grp.setColor(dfcolor);
|
|
||||||
}
|
}
|
||||||
elsif(name == "ed" or name == "ec"){
|
|
||||||
var is_cstr = me.model.getValue("alt-cstr");
|
if (name == "ed" or name == "ec") {
|
||||||
if(is_cstr)
|
if (me.model.getValue("alt-cstr")) {
|
||||||
grp.setColor(managed_color);
|
grp.setColor(me.getStyle("managed_color"));
|
||||||
else
|
} else {
|
||||||
grp.setColor(armed_color);
|
grp.setColor(me.getStyle("armed_color"));
|
||||||
|
}
|
||||||
|
} elsif(name == "td" or name == "sd" or name == "sc"){
|
||||||
|
if (me.model.getValue("vnav-armed") and name != "td") {
|
||||||
|
grp.setColor(me.getStyle("armed_color"));
|
||||||
|
} else {
|
||||||
|
grp.setColor(me.getStyle("default_color"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
init_after_callback: func{
|
init_after_callback: func{
|
||||||
var name = me.model.getName();
|
var name = me.model.getName();
|
||||||
var grp = me.element.getElementById(name~"_symbol");
|
if (name != "td" and name != "sd" and name != "sc") {
|
||||||
if(name != "td" and name != "sd" and name != "sc"){
|
me.element.getElementById(name~"_symbol").setTranslation(-66,0);
|
||||||
grp.setTranslation(-66,0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,6 +45,7 @@ var flightPlanController = {
|
||||||
_timeTemp: nil,
|
_timeTemp: nil,
|
||||||
_altTemp: nil,
|
_altTemp: nil,
|
||||||
decelPoint: nil,
|
decelPoint: nil,
|
||||||
|
lvlOffPoint: nil,
|
||||||
|
|
||||||
init: func() {
|
init: func() {
|
||||||
me.resetFlightplan(2);
|
me.resetFlightplan(2);
|
||||||
|
@ -60,8 +61,18 @@ var flightPlanController = {
|
||||||
me.resetFlightplan(0);
|
me.resetFlightplan(0);
|
||||||
me.resetFlightplan(1);
|
me.resetFlightplan(1);
|
||||||
me.resetFlightplan(2);
|
me.resetFlightplan(2);
|
||||||
|
|
||||||
me.decelPoint = nil;
|
me.decelPoint = nil;
|
||||||
setprop("/instrumentation/nd/symbols/decel/show", 0);
|
setprop("/instrumentation/nd/symbols/decel/show", 0);
|
||||||
|
|
||||||
|
me.lvlOffPoint = nil;
|
||||||
|
setprop("/autopilot/route-manager/vnav/ec/latitude-deg", 0); # necessary to prevent canvas glitching out because properties don't exist
|
||||||
|
setprop("/autopilot/route-manager/vnav/ed/latitude-deg", 0);
|
||||||
|
setprop("/autopilot/route-manager/vnav/ec/longitude-deg", 0);
|
||||||
|
setprop("/autopilot/route-manager/vnav/ed/longitude-deg", 0);
|
||||||
|
setprop("/autopilot/route-manager/vnav/ec/show", 0);
|
||||||
|
setprop("/autopilot/route-manager/vnav/ed/show", 0);
|
||||||
|
|
||||||
me.flightplans[2].activate();
|
me.flightplans[2].activate();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -763,6 +774,36 @@ var flightPlanController = {
|
||||||
setprop("/instrumentation/nd/symbols/decel/index", me.indexTemp);
|
setprop("/instrumentation/nd/symbols/decel/index", me.indexTemp);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
calculateLvlOffPoint: func(deltaAltitude) {
|
||||||
|
me.distLvl = (deltaAltitude * pts.Velocities.groundspeedKt.getValue()) / (fmgc.Internal.vs.getValue() * 60);
|
||||||
|
|
||||||
|
if (fmgc.Output.lat.getValue() == 1) { # NAV
|
||||||
|
me.lvlOffPoint = me.flightplans[2].pathGeod(me.currentToWptIndex.getValue() - 1, me.flightplans[2].getWP(me.currentToWptIndex.getValue()).leg_distance - me.distToWpt.getValue() + abs(me.distLvl));
|
||||||
|
} elsif (fmgc.Output.lat.getValue() == 0) { # HDG TRK
|
||||||
|
#var coord = geo.aircraft_position();
|
||||||
|
#coord.apply_course_distance(fmgc.Internal.hdg.getValue(), me.distLvl * FT2M);
|
||||||
|
#me.lvlOffPoint = {lat: coord.lat(), lon: coord.lon()};
|
||||||
|
me.lvlOffPoint = me.flightplans[2].pathGeod(me.currentToWptIndex.getValue(), 10);
|
||||||
|
} else {
|
||||||
|
setprop("/autopilot/route-manager/vnav/ec/show", 0);
|
||||||
|
setprop("/autopilot/route-manager/vnav/ed/show", 0);
|
||||||
|
me.lvlOffPoint = nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (deltaAltitude >= 100 and me.lvlOffPoint != nil) {
|
||||||
|
setprop("/autopilot/route-manager/vnav/ec/latitude-deg", me.lvlOffPoint.lat);
|
||||||
|
setprop("/autopilot/route-manager/vnav/ec/longitude-deg", me.lvlOffPoint.lon);
|
||||||
|
setprop("/autopilot/route-manager/vnav/ec/show", 1);
|
||||||
|
setprop("/autopilot/route-manager/vnav/ed/show", 0);
|
||||||
|
} elsif (deltaAltitude <= -100 and me.lvlOffPoint != nil) {
|
||||||
|
setprop("/autopilot/route-manager/vnav/ed/latitude-deg", me.lvlOffPoint.lat);
|
||||||
|
setprop("/autopilot/route-manager/vnav/ed/longitude-deg", me.lvlOffPoint.lon);
|
||||||
|
setprop("/autopilot/route-manager/vnav/ec/show", 0);
|
||||||
|
setprop("/autopilot/route-manager/vnav/ed/show", 1);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
# insertPlaceBearingDistance - insert PBD waypoint at specified index,
|
# insertPlaceBearingDistance - insert PBD waypoint at specified index,
|
||||||
# at some specified bearing, distance from a specified location
|
# at some specified bearing, distance from a specified location
|
||||||
# args: wp, index, plan
|
# args: wp, index, plan
|
||||||
|
@ -898,6 +939,14 @@ var flightPlanController = {
|
||||||
me.calculateDecelPoint();
|
me.calculateDecelPoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var deltaAltitude = fmgc.Input.alt.getValue() - pts.Instrumentation.Altimeter.indicatedFt.getValue();
|
||||||
|
if (abs(deltaAltitude) >= 100) {
|
||||||
|
me.calculateLvlOffPoint(deltaAltitude);
|
||||||
|
} else {
|
||||||
|
setprop("/autopilot/route-manager/vnav/ec/show", 0);
|
||||||
|
setprop("/autopilot/route-manager/vnav/ed/show", 0);
|
||||||
|
}
|
||||||
|
|
||||||
for (var i = 0; i <= 1; i += 1) {
|
for (var i = 0; i <= 1; i += 1) {
|
||||||
if (canvas_mcdu.myFpln[i] != nil) {
|
if (canvas_mcdu.myFpln[i] != nil) {
|
||||||
canvas_mcdu.myFpln[i].updatePlan();
|
canvas_mcdu.myFpln[i].updatePlan();
|
||||||
|
|
Loading…
Reference in a new issue