Introduce handler for --addon commandline switch
Requires flightgear commit f6698a0b1f9e8c0791314aa09cbe1625927ef3ff to have property /addons/addon[n] populated
This commit is contained in:
parent
09bcc00b80
commit
5c1f4a69f1
1 changed files with 27 additions and 0 deletions
27
Nasal/addons.nas
Normal file
27
Nasal/addons.nas
Normal file
|
@ -0,0 +1,27 @@
|
|||
##
|
||||
# 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/nasal-dir-initialized", func {
|
||||
foreach (var addon; props.globals.getNode("/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);
|
||||
}
|
||||
})
|
||||
|
Loading…
Add table
Reference in a new issue