# See: http://wiki.flightgear.org/MapStructure # Class things: var name = 'RWY-profile'; var parents = [DotSym]; var __self__ = caller(0)[0]; DotSym.makeinstance( name, __self__ ); var element_type = "group"; var style = { # style to use by default zoom: 20, color: [1,1,1], center_line_len: 0.75, line_width: 3 }; SymbolLayer.get(name).df_style = style; #var already_drawn = 0; var init = func { #if(me.already_drawn) return; var lat = me.model.lat; var lon = me.model.lon; var rwyhdg = me.model.heading; var width = me.model.width; var length = me.model.length; var group = me.element; var ctr_len = length * me.getStyle('center_line_len', 0.75); var crds = []; var coord = geo.Coord.new(); width = width * me.getStyle('zoom', 20); # Else rwy is too thin to be visible var line_w = me.getStyle('line_width', 3); var color = me.getStyle('color', [1,1,1]); coord.set_latlon(lat, lon); coord.apply_course_distance(rwyhdg, -(ctr_len / 2)); append(crds,"N"~coord.lat()); append(crds,"E"~coord.lon()); coord.apply_course_distance(rwyhdg, (ctr_len)); append(crds,"N"~coord.lat()); append(crds,"E"~coord.lon()); icon_rwy = group.createChild("path", "rwy-cl") .setStrokeLineWidth(line_w) .setDataGeo([2,4],crds) .setColor(color); #.setStrokeDashArray([10, 20, 10, 20, 10]); #icon_rwy.hide(); var crds = []; coord.set_latlon(lat, lon); append(crds,"N"~coord.lat()); append(crds,"E"~coord.lon()); coord.apply_course_distance(rwyhdg + 90, width/2); append(crds,"N"~coord.lat()); append(crds,"E"~coord.lon()); coord.apply_course_distance(rwyhdg, length); append(crds,"N"~coord.lat()); append(crds,"E"~coord.lon()); icon_rwy = group.createChild("path", "rwy") .setStrokeLineWidth(line_w) .setDataGeo([2,4,4],crds) .setColor(color); var crds = []; append(crds,"N"~coord.lat()); append(crds,"E"~coord.lon()); coord.apply_course_distance(rwyhdg - 90, width); append(crds,"N"~coord.lat()); append(crds,"E"~coord.lon()); coord.apply_course_distance(rwyhdg, -length); append(crds,"N"~coord.lat()); append(crds,"E"~coord.lon()); coord.apply_course_distance(rwyhdg + 90, width / 2); append(crds,"N"~coord.lat()); append(crds,"E"~coord.lon()); icon_rwy = group.createChild("path", "rwy") .setStrokeLineWidth(line_w) .setDataGeo([2,4,4,4],crds) .setColor(color); }; var draw = func{} #var update = func() { # if (me.controller != nil) { # if (!me.controller.update(me, me.model)) return; # elsif (!me.controller.isVisible(me.model)) { # me.element.hide(); # return; # } # } else # me.element.show(); # me.draw(); #}