1
0
Fork 0
fgdata/Nasal/canvas/map/traffic.model

45 lines
1.4 KiB
Text
Raw Normal View History

var MPTrafficModel = {};
MPTrafficModel.new = func make(LayerModel, MPTrafficModel);
MPTrafficModel.init = func {
var pos = geo.Coord.new(); # FIXME: all of these should be instance variables
var myPosition = geo.Coord.new();
var myPositionVec = me._controller['get_position']();
myPosition.set_latlon( myPositionVec[0], myPositionVec[1]);
var max_dist_nm = me._controller['query_range']();
##
# uncomment this for showing MP traffic
# var traffic_type = "multiplayer";
# and use this for development purposes:
var traffic_type = "aircraft";
#if (traffic_type == "aircraft")
# print("INFO: traffic.model is still showing AI traffic instead of MP traffic!");
me._view.reset(); # hides: removeAllChildren()
var traffic = props.globals.initNode("/ai/models/").getChildren( traffic_type );
#print("Total traffic:", size(traffic));
foreach(var t; traffic) {
pos.set_latlon( t.getNode("position/latitude-deg").getValue(),
t.getNode("position/longitude-deg").getValue()
);
if (pos.distance_to( myPosition ) <= max_dist_nm*NM2M ) {
#print("Pushing: ", t.getNode("callsign").getValue() );
me.push(t);
}
}
#print("traffic.model: Query range:", max_dist_nm, " Items:", me.hasData() );
me.notifyView();
# update itself FIXME: this needs to be killed by the controller (e.g. when tcas layer is disabled)
# and the interval needs to be configurable via the controller
# so better use maketimer() here
settimer(func me.init(), 2);
}