## # initialize addons configured with --addon=foobar command line switch # - loop over /addons/addon[n] nodes # - get root path in /addons/addon[n]/path property (set by options.cxx from --addon=/foo/bar) # - load main.nas therein into namespace __addon[n]__ # - call function main() from that main.nas with addon-path as arg # example: # fgfs --addon=/foo/bar/baz # options.cxx creates /addons/addon[0]/path=/foo/bar/baz # options.cxx loads /foo/bar/baz/config.xml # options.cxx add /foo/bar/baz to aircraft-dir (to get permissions to read files from there) # this script loads /foo/bar/baz/main.nas into namespace __addon[0]__ # this script calls main("/foo/bar/baz") in /foo/bar/baz/main.nas0 _setlistener("/sim/signals/fdm-initialized", func { var addons = props.globals.getNode("/addons"); if( addons == nil ) return; foreach (var addon; addons.getChildren("addon")) { var main_nas = addon.getNode("path",1).getValue() ~ "/main.nas"; var namespace = "__" ~ addon.getName() ~ "[" ~ addon.getIndex() ~ "]__"; printlog("alert","Initializing addon from " ~ main_nas ~ " in " ~ namespace ); io.load_nasal( main_nas, namespace ); var addon_main = globals[namespace]["main"]; var addon_main_args = [ addon.getNode("path").getValue() ]; call(addon_main, addon_main_args); #, object, namespace, error_vector); } })