Merge branch 'master' of gitorious.org:fg/fgdata
This commit is contained in:
commit
5f44af9639
10 changed files with 2630 additions and 243 deletions
File diff suppressed because it is too large
Load diff
|
@ -1,53 +1,130 @@
|
|||
|
||||
|
||||
var GPSmap196 = {
|
||||
new: func() {
|
||||
|
||||
id:0,
|
||||
|
||||
############
|
||||
new: func(placement='gps196.screen') {
|
||||
print("Load Garmin GPSmap196 canvas");
|
||||
m = { parents : [GPSmap196] };
|
||||
m.node = props.globals.initNode("/instrumentation/gps196");
|
||||
m.rockerUp = m.node.initNode("inputs/rocker-up", 0, "BOOL");
|
||||
m.buttonIn = m.node.initNode("inputs/button-in", 0, "BOOL");
|
||||
m.buttonDto = m.node.initNode("inputs/button-dto", 0, "BOOL");
|
||||
m.buttonOut = m.node.initNode("inputs/button-out", 0, "BOOL");
|
||||
m.buttonMenu = m.node.initNode("inputs/button-menu", 0, "BOOL");
|
||||
m.buttonNrst = m.node.initNode("inputs/button-nrst", 0, "BOOL");
|
||||
m.buttonPage = m.node.initNode("inputs/button-page", 0, "BOOL");
|
||||
m.buttonQuit = m.node.initNode("inputs/button-quit", 0, "BOOL");
|
||||
m.rockerDown = m.node.initNode("inputs/rocker-down", 0, "BOOL");
|
||||
m.rockerLeft = m.node.initNode("inputs/rocker-left", 0, "BOOL");
|
||||
m.buttonPower = m.node.initNode("inputs/button-power", 0, "BOOL");
|
||||
m.rockerRight = m.node.initNode("inputs/rocker-right", 0, "BOOL");
|
||||
m.buttonEnter = m.node.initNode("inputs/button-enter", 0, "BOOL");
|
||||
m.buttons = {};
|
||||
m.pages = {panel:nil, map:nil, route:nil, position:nil};
|
||||
m.gmt = props.globals.getNode("sim/time/gmt");
|
||||
m.node = props.globals.initNode("/instrumentation/gps196",GPSmap196.id+=1);
|
||||
|
||||
m.selectedPage = m.node.initNode("selected-page", 0, "INT");
|
||||
|
||||
var buttons = [ 'rocker-up', 'button-in', 'button-dto', 'button-out',
|
||||
'button-menu', 'button-nrst', 'button-page', 'button-quit',
|
||||
'button-down', 'rocker-left', 'button-power', 'rocker-right',
|
||||
'button-enter' ];
|
||||
|
||||
# to access, use: m.buttons['rocker-up']
|
||||
foreach(var btn; buttons)
|
||||
m.buttons[btn] = m.node.initNode("inputs/"~btn, 0, "BOOL");
|
||||
|
||||
m.gpsmap196Screen = canvas.new({
|
||||
"name": "GPSmap196-screen",
|
||||
"size": [512, 512],
|
||||
"view": [320, 240],
|
||||
"mipmapping": 1
|
||||
});
|
||||
m.gpsmap196Screen.addPlacement({"node": "gps196.screen"});
|
||||
var g = m.gpsmap196Screen.createGroup();
|
||||
|
||||
m.text_title =
|
||||
g.createChild("text", "line-title")
|
||||
.setDrawMode(canvas.Text.TEXT + canvas.Text.FILLEDBOUNDINGBOX)
|
||||
.setColor(0,0,0)
|
||||
.setColorFill(0,1,0)
|
||||
.setAlignment("center-top")
|
||||
.setFont("LiberationFonts/LiberationMono-Bold.ttf")
|
||||
.setFontSize(35, 1.5)
|
||||
.setTranslation(150, 50);
|
||||
m.gpsmap196Screen.addPlacement({"node": placement});
|
||||
m.root = m.gpsmap196Screen.createGroup();
|
||||
|
||||
m.timers = [];
|
||||
m.initMap();
|
||||
m.initPanel();
|
||||
if(0){
|
||||
m.initRoute();
|
||||
m.initPosition();
|
||||
}
|
||||
append( m.timers, var update_timer=maketimer(0.1, func m.update()) );
|
||||
update_timer.start();
|
||||
|
||||
return m;
|
||||
},
|
||||
|
||||
############
|
||||
del: func {
|
||||
foreach(var t; me.timers) {
|
||||
t.stop();
|
||||
t=nil;
|
||||
}
|
||||
print("GPSmap196: cleanup finished");
|
||||
},
|
||||
|
||||
############
|
||||
initRoute: func() {
|
||||
canvas.parsesvg(var data = me.root.createChild("group", "page-route"), 'Aircraft/Instruments-3d/GPSmap196/pages/page-route.svg');
|
||||
me.pages.route = data;
|
||||
data.hide();
|
||||
},
|
||||
|
||||
############
|
||||
initPosition: func() {
|
||||
canvas.parsesvg(var data = me.root.createChild("group", "page-position"), 'Aircraft/Instruments-3d/GPSmap196/pages/page-position.svg');
|
||||
me.pages.position = data;
|
||||
data.hide();
|
||||
},
|
||||
|
||||
############
|
||||
initPanel: func() {
|
||||
canvas.parsesvg(var data = me.root.createChild("group", "page-panel"), 'Aircraft/Instruments-3d/GPSmap196/pages/page-panel.svg');
|
||||
me.pages.panel = data;
|
||||
data.hide();
|
||||
},
|
||||
|
||||
############
|
||||
initMap:func() {
|
||||
me.pages.map = me.root.createChild("map").hide();
|
||||
me.pages.map.setController("Aircraft position");
|
||||
me.pages.map.setRange(10);
|
||||
|
||||
me.pages.map.setTranslation(
|
||||
me.gpsmap196Screen.get("view[0]")/2,
|
||||
me.gpsmap196Screen.get("view[1]")/2
|
||||
);
|
||||
var style = {scale_factor:0.3, line_width:2, animation_test:0, color_default:[1,0,0], color_tuned:[0,1,1]};
|
||||
var r = func(name,vis=1,zindex=nil) return caller(0)[0];
|
||||
foreach(var type; [r('DME',0),r('APT'), ] )
|
||||
me.pages.map.addLayer(factory: canvas.SymbolLayer, type_arg: type.name, visible: type.vis, priority: type.zindex,style:style);
|
||||
|
||||
canvas.parsesvg( var symbol=me.pages.map.createChild("group","airplane-symbol"), 'Nasal/canvas/map/boeingAirplane.svg');
|
||||
symbol.setScale( 0.25 );
|
||||
},
|
||||
|
||||
############
|
||||
update: func() {
|
||||
me.text_title.setText(me.gmt.getValue());
|
||||
settimer(func me.update(), 0);
|
||||
|
||||
if(me.buttons['button-page'].getBoolValue()){
|
||||
me.selectedPage.setIntValue( me.selectedPage.getValue() + 1 );
|
||||
if(me.selectedPage.getValue() > 3) me.selectedPage.setIntValue(0);
|
||||
}
|
||||
|
||||
me.pages.map.hide();
|
||||
me.pages.panel.hide();
|
||||
if(0){
|
||||
me.pages.route.hide();
|
||||
me.pages.position.hide();
|
||||
}
|
||||
|
||||
if(me.selectedPage.getValue() == 0)
|
||||
me.pages.map.show();
|
||||
elsif(me.selectedPage.getValue() == 1)
|
||||
me.pages.panel.show();
|
||||
# elsif(me.selectedPage.getValue() == 2)
|
||||
# me.pages.route.show();
|
||||
# elsif(me.selectedPage.getValue() == 3)
|
||||
# me.pages.position.show();
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
setlistener("sim/signals/fdm-initialized", func() {
|
||||
gpsmap196Canvas = GPSmap196.new();
|
||||
gpsmap196Canvas.update();
|
||||
});
|
||||
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 504 KiB After Width: | Height: | Size: 511 KiB |
|
@ -292,37 +292,7 @@
|
|||
<command>nasal</command>
|
||||
<script>
|
||||
<![CDATA[
|
||||
var gps196CanvasInstance = canvas.get({name: "GPSmap196-screen"});
|
||||
var dlg = canvas.Window.new([1024, 512], "dialog").set("title", "Garmin GPSmap196");
|
||||
var buttons = [
|
||||
["gps196.widget.button.in", "button-in"], ["gps196.widget.button.out", "button-out"],
|
||||
["gps196.widget.button.dto", "button-dto"], ["gps196.widget.button.page", "button-page"],
|
||||
["gps196.widget.button.quit", "button-quit"], ["gps196.widget.button.nrst", "button-nrst"],
|
||||
["gps196.widget.button.menu", "button-menu"], ["gps196.widget.button.enter", "button-enter"],
|
||||
["gps196.widget.button.power", "button-power"], ["gps196.widget.rocker.up", "rocker-up"],
|
||||
["gps196.widget.rocker.down", "rocker-down"], ["gps196.widget.rocker.left", "rocker-left"],
|
||||
["gps196.widget.rocker.right", "rocker-right"]
|
||||
];
|
||||
|
||||
var gps196Widget = dlg.createCanvas().setColorBackground(1,1,1,1);
|
||||
var root = gps196Widget.createGroup();
|
||||
canvas.parsesvg(root, "Aircraft/Instruments-3d/GPSmap196/widget/gpsmap196-widget.svg");
|
||||
|
||||
var setButtonListener = func(btn, prop) {
|
||||
root.getElementById(btn).addEventListener("mousedown", func(e) { setprop("instrumentation/gps196/inputs/"~prop, 1); });
|
||||
root.getElementById(btn).addEventListener("mouseup", func(e) { setprop("instrumentation/gps196/inputs/"~prop, 0); });
|
||||
root.getElementById(btn).set("z-index", 11);
|
||||
}
|
||||
|
||||
for( var i=0; i<size(buttons); i=i+1){
|
||||
setButtonListener(buttons[i][0], buttons[i][1]);
|
||||
}
|
||||
|
||||
var background = root.createChild("image");
|
||||
background.setFile("Aircraft/Instruments-3d/GPSmap196/widget/gpsmap196-widget.png").setSize(1024,512).set("z-index",10);
|
||||
|
||||
var canvasScreenWidget = root.createChild("image");
|
||||
canvasScreenWidget.setFile(gps196CanvasInstance.getPath()).setSize(563,359).setTranslation(87,53).set("z-index", 11);
|
||||
io.include("Aircraft/Instruments-3d/GPSmap196/widget/gpsmap196-widget.nas");
|
||||
]]>
|
||||
</script>
|
||||
</binding>
|
||||
|
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
31
Aircraft/Instruments-3d/GPSmap196/pages/page-panel.nas
Normal file
31
Aircraft/Instruments-3d/GPSmap196/pages/page-panel.nas
Normal file
|
@ -0,0 +1,31 @@
|
|||
#groundspeed.needle
|
||||
#groundspeed.num0
|
||||
#groundspeed.num1
|
||||
#groundspeed.num2
|
||||
#groundspeed.num3
|
||||
#groundspeed.num4
|
||||
#groundspeed.num5
|
||||
#groundspeed.num6
|
||||
#groundspeed.num7
|
||||
#groundspeed.digit
|
||||
#groundspeed.tag.kmh
|
||||
#groundspeed.tag.kt
|
||||
#attitude.aircraft
|
||||
#ete.digit
|
||||
#cdi.digit
|
||||
#cdi.tag.sm
|
||||
#cdi.tag.nm
|
||||
#cdi.tag.km
|
||||
#waypoint.id
|
||||
#waypoint.distance
|
||||
#waypoint.tag.km
|
||||
#waypoint.tag.nm
|
||||
#altimeter.needle100
|
||||
#altimeter.needle1000
|
||||
#altimeter.digit
|
||||
#altimeter.tag.m
|
||||
#altimeter.tag.ft
|
||||
#vsi.needle
|
||||
#compass.needle
|
||||
#compass.dot
|
||||
#compass.grade
|
2073
Aircraft/Instruments-3d/GPSmap196/pages/page-panel.svg
Normal file
2073
Aircraft/Instruments-3d/GPSmap196/pages/page-panel.svg
Normal file
File diff suppressed because it is too large
Load diff
After Width: | Height: | Size: 88 KiB |
|
@ -0,0 +1,47 @@
|
|||
|
||||
# Search the canvas texture created by the GPSmap196
|
||||
var gps196CanvasInstance = canvas.get({name: "GPSmap196-screen"});
|
||||
|
||||
# Create a new Canvas window (calling that the "widget")
|
||||
var dlg = canvas.Window.new([1024, 512], "dialog").set("title", "Garmin GPSmap196");
|
||||
|
||||
# A list of all button available in the SVG file of the widget
|
||||
# and associate the button with the property he will trigger
|
||||
var buttons = [
|
||||
["gps196.widget.button.in", "button-in"], ["gps196.widget.button.out", "button-out"],
|
||||
["gps196.widget.button.dto", "button-dto"], ["gps196.widget.button.page", "button-page"],
|
||||
["gps196.widget.button.quit", "button-quit"], ["gps196.widget.button.nrst", "button-nrst"],
|
||||
["gps196.widget.button.menu", "button-menu"], ["gps196.widget.button.enter", "button-enter"],
|
||||
["gps196.widget.button.power", "button-power"], ["gps196.widget.rocker.up", "rocker-up"],
|
||||
["gps196.widget.rocker.down", "rocker-down"], ["gps196.widget.rocker.left", "rocker-left"],
|
||||
["gps196.widget.rocker.right", "rocker-right"]
|
||||
];
|
||||
|
||||
# Create the content of the Canvas window with a white background
|
||||
var gps196Widget = dlg.createCanvas().setColorBackground(1,1,1,1);
|
||||
|
||||
# Create the main (root) group of our canvas
|
||||
var root = gps196Widget.createGroup();
|
||||
|
||||
# Load the SVG file of the widget providing all buttons
|
||||
canvas.parsesvg(root, "Aircraft/Instruments-3d/GPSmap196/widget/gpsmap196-widget.svg");
|
||||
|
||||
# An helper function who add the event listener for each button
|
||||
var setButtonListener = func(btn, prop) {
|
||||
root.getElementById(btn).addEventListener("mousedown", func(e) { setprop("instrumentation/gps196/inputs/"~prop, 1); });
|
||||
root.getElementById(btn).addEventListener("mouseup", func(e) { setprop("instrumentation/gps196/inputs/"~prop, 0); });
|
||||
root.getElementById(btn).set("z-index", 11);
|
||||
}
|
||||
|
||||
# Run through all our buttons in order to setup the event listener
|
||||
for( var i=0; i<size(buttons); i=i+1){
|
||||
setButtonListener(buttons[i][0], buttons[i][1]);
|
||||
}
|
||||
|
||||
# Add a background image to our Canvas window
|
||||
var background = root.createChild("image");
|
||||
background.setFile("Aircraft/Instruments-3d/GPSmap196/widget/gpsmap196-widget.png").setSize(1024,512).set("z-index",10);
|
||||
|
||||
# Include the canvas texture in the display of the widget
|
||||
var canvasScreenWidget = root.createChild("image");
|
||||
canvasScreenWidget.setFile(gps196CanvasInstance.getPath()).setSize(563,359).setTranslation(87,53).set("z-index", 11);
|
26
Materials/regions/alaska.xml
Normal file
26
Materials/regions/alaska.xml
Normal file
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- General settings for all Alaska materials -->
|
||||
<PropertyList>
|
||||
<!-- Define Alaska as a box with given latitude/longitude -->
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than>
|
||||
<property>position/longitude-deg</property>
|
||||
<value>-180.0</value>
|
||||
</greater-than>
|
||||
<less-than>
|
||||
<property>position/longitude-deg</property>
|
||||
<value>-60.0</value>
|
||||
</less-than>
|
||||
<greater-than>
|
||||
<property>position/latitude-deg</property>
|
||||
<value>55.0</value>
|
||||
</greater-than>
|
||||
<less-than>
|
||||
<property>position/latitude-deg</property>
|
||||
<value>90.0</value>
|
||||
</less-than>
|
||||
</and>
|
||||
</condition>
|
||||
|
||||
</PropertyList>
|
|
@ -3639,6 +3639,143 @@
|
|||
</material>
|
||||
|
||||
|
||||
<!-- REGIONAL DEFINITION ALASKA AND NORTHWEST TERRITORIES-->
|
||||
|
||||
|
||||
<material include="Materials/regions/alaska.xml">
|
||||
<effect>Effects/forest</effect>
|
||||
<name>MixedForestCover</name>
|
||||
<name>MixedForest</name>
|
||||
<name>RainForest</name>
|
||||
<texture-set>
|
||||
<texture>Terrain/mixedforest-hires-autumn.png</texture>
|
||||
<texture n="11">Terrain/grass_hires.png</texture>
|
||||
<texture n="12">Terrain/herbtundra_iceland.png</texture>
|
||||
</texture-set>
|
||||
<parameters>
|
||||
<hires_overlay_bias>-0.05</hires_overlay_bias>
|
||||
</parameters>
|
||||
<xsize>2000</xsize>
|
||||
<ysize>2000</ysize>
|
||||
<light-coverage>5000000.0</light-coverage>
|
||||
<wood-coverage>4000.0</wood-coverage>
|
||||
<tree-texture>Trees/mixed.png</tree-texture>
|
||||
<tree-varieties>8</tree-varieties>
|
||||
<tree-range-m alias="/params/forest/tree-range-m"/>
|
||||
<tree-height-m>25.0</tree-height-m>
|
||||
<tree-width-m>15.0</tree-width-m>
|
||||
<rolling-friction>1</rolling-friction>
|
||||
<bumpiness>0.95</bumpiness>
|
||||
</material>
|
||||
|
||||
<material include="Materials/regions/alaska.xml">
|
||||
<effect>Effects/forest</effect>
|
||||
<name>DeciduousBroadCover</name>
|
||||
<name>DeciduousForest</name>
|
||||
<name>Bog</name>
|
||||
<name>Heath</name>
|
||||
<texture-set>
|
||||
<texture>Terrain/deciduous-hires-autumn.png</texture>
|
||||
<texture n="11">Terrain/grass_hires.png</texture>
|
||||
<texture n="12">Terrain/herbtundra_iceland.png</texture>
|
||||
</texture-set>
|
||||
<parameters>
|
||||
<hires_overlay_bias>-0.05</hires_overlay_bias>
|
||||
</parameters>
|
||||
<xsize>2000</xsize>
|
||||
<ysize>2000</ysize>
|
||||
<light-coverage>10000000.0</light-coverage>
|
||||
<wood-coverage>4000.0</wood-coverage>
|
||||
<tree-texture>Trees/deciduous.png</tree-texture>
|
||||
<tree-varieties>8</tree-varieties>
|
||||
<tree-range-m alias="/params/forest/tree-range-m"/>
|
||||
<tree-height-m>25.0</tree-height-m>
|
||||
<tree-width-m>15.0</tree-width-m>
|
||||
<rolling-friction>1</rolling-friction>
|
||||
<bumpiness>0.85</bumpiness>
|
||||
</material>
|
||||
|
||||
<material include="Materials/regions/alaska.xml">
|
||||
<effect>Effects/landmass-scrub</effect>
|
||||
<name>ShrubCover</name>
|
||||
<name>ShrubGrassCover</name>
|
||||
<name>ScrubCover</name>
|
||||
<name>Scrub</name>
|
||||
<name>Sclerophyllous</name>
|
||||
<texture-set>
|
||||
<texture>Terrain/shrub1-autumn.png</texture>
|
||||
<texture n="11">Terrain/grass_hires.png</texture>
|
||||
<texture n="12">Terrain/herbtundra_iceland.png</texture>
|
||||
<texture n="14">Terrain/grain_texture.png</texture>
|
||||
<texture n="15">Terrain/airport_grass2.png</texture>
|
||||
</texture-set>
|
||||
<xsize>2000</xsize>
|
||||
<ysize>2000</ysize>
|
||||
<diffuse>
|
||||
<r>0.86</r>
|
||||
<g>0.86</g>
|
||||
<b>0.86</b>
|
||||
<a>1.0</a>
|
||||
</diffuse>
|
||||
<specular>
|
||||
<r>0.1</r>
|
||||
<g>0.1</g>
|
||||
<b>0.1</b>
|
||||
<a>1.0</a>
|
||||
</specular>
|
||||
<shininess>1.2</shininess>
|
||||
<light-coverage>20000000.0</light-coverage>
|
||||
<wood-coverage>12000.0</wood-coverage>
|
||||
<tree-texture>Trees/mixed-shrub.png</tree-texture>
|
||||
<tree-varieties>8</tree-varieties>
|
||||
<tree-range-m alias="/params/forest/tree-range-m"/>
|
||||
<tree-height-m>2.0</tree-height-m>
|
||||
<tree-width-m>2.0</tree-width-m>
|
||||
<rolling-friction>0.6</rolling-friction>
|
||||
<bumpiness>0.4</bumpiness>
|
||||
</material>
|
||||
|
||||
<material include="Materials/regions/alaska.xml">
|
||||
<name>EvergreenBroadCover</name>
|
||||
<name>EvergreenForest</name>
|
||||
<effect>Effects/forest</effect>
|
||||
<texture-set>
|
||||
<texture>Terrain/forest1a.png</texture>
|
||||
<texture n="11">Terrain/grass_hires.png</texture>
|
||||
<texture n="12">Terrain/herbtundra_iceland.png</texture>
|
||||
</texture-set>
|
||||
<parameters>
|
||||
<hires_overlay_bias>-0.05</hires_overlay_bias>
|
||||
</parameters>
|
||||
<xsize>2000</xsize>
|
||||
<ysize>2000</ysize>
|
||||
<light-coverage>10000000.0</light-coverage>
|
||||
<wood-coverage>4000.0</wood-coverage>
|
||||
<tree-texture>Trees/coniferous.png</tree-texture>
|
||||
<tree-varieties>8</tree-varieties>
|
||||
<tree-range-m alias="/params/forest/tree-range-m"/>
|
||||
<tree-height-m>25.0</tree-height-m>
|
||||
<tree-width-m>18.0</tree-width-m>
|
||||
<rolling-friction>1</rolling-friction>
|
||||
<bumpiness>1</bumpiness>
|
||||
</material>
|
||||
|
||||
<material include="Materials/regions/alaska.xml">
|
||||
<name>Sand</name>
|
||||
<texture-set>
|
||||
<texture>Terrain/herbtundra_iceland.png</texture>
|
||||
<texture n="11">Terrain/grass_hires.png</texture>
|
||||
</texture-set>
|
||||
<xsize>2000</xsize>
|
||||
<ysize>2000</ysize>
|
||||
<light-coverage>10000000.0</light-coverage>
|
||||
<shininess>2.5</shininess>
|
||||
<rolling-friction>0.1</rolling-friction>
|
||||
<friction-factor>0.7</friction-factor>
|
||||
<bumpiness>0.1</bumpiness>
|
||||
</material>
|
||||
|
||||
|
||||
<!-- DEFAULT SUMMER DEFINITIONS -->
|
||||
|
||||
<material>
|
||||
|
|
Loading…
Add table
Reference in a new issue