1
0
Fork 0
Commit graph

7 commits

Author SHA1 Message Date
Florent Rougon
02b01af19e Add-ons: small fixes to Nasal/addons.nas and Docs/README.add-ons
+ After discussion with Henning:
    - orig_setlistener() and orig_maketimer() were not intended to be
      public -> prefix the function names with an underscore;
    - clear the add-on's lists of tracked listeners and timers in
      remove() (load() does that too, but it's a bit late).

+ Little rewording in Docs/README.add-ons.
2018-12-10 15:29:22 +01:00
Henning Stahlke
5e2756b410 Add reload support to addons.nas; add tracking of listeners and timers 2018-12-07 19:24:22 +01:00
Florent Rougon
c17d9377f8 Add-ons: more specific file names for the interface between FG core and add-ons
The add-on framework now uses the following files in each add-on
directory:
  - addon-config.xml (previously: config.xml)
  - addon-main.nas   (previously: main.nas)

This is consistent with the addon-metadata.xml file that is already part
of the interface between FG core and add-ons. The goal is to make it
clearer, when browsing an add-on directory, which files belong to the
"FG core <-> add-on" interface and which files belong to the add-on
proper. This will be beneficial also when more files are added to the
"FG core <-> add-on" interface, such as possibly addon-events.xml in the
future.

This change is incompatible, thus it is the right time to do *before*
2018.2.1 is out, especially considering that this upcoming release
already has incompatible changes in the add-on API, namely the
requirement of the addon-metadata.xml file and the type of the argument
passed to each add-on's main() function. We'll try harder not to break
compatibility in the add-on API once 2018.2.1 is out. For now, it is
still a good time to try to get the API as clean as possible.
2018-02-10 19:50:00 +01:00
Florent Rougon
a57aed195e Add-ons: pass the addons.Addon ghost to main() instead of the base path
The addons.Addon instance (ghost) is much more interesting than its base
path. The base path is immediately accessible from the addons.Addon
instance using its 'basePath' attribute. The addons.Addon instance
allows main() to easily access essentially all of the add-on metadata,
including the add-on identifier, which makes it possible to write
main.nas without hardcoding the add-on id at all.

This is an incompatible change of course, so better do it now than
later.
2018-01-08 09:55:55 +01:00
Florent Rougon
c535306b3d Add-ons: simplify loading using the new API, set the 'loaded' flag
Also:
  - use the namespace __addon[ADDON_ID]__ when loading an add-on's
    main.nas file (previously, the namespace used was __addon[i]__ where
    i is 0 for the first registered add-on, 1 for the second one, etc.);
  - use logprint() instead of printlog(), because the former writes a
    more helpful source file and line number for the log call in
    fgfs.log (i.e., not always src/Scripting/NasalSys.cxx...);
  - remove the listener once it has been fired;
  - add documentation in Docs/README.add-ons.
2017-12-08 00:37:21 +01:00
Torsten Dreyer
e35ff1aa9a Don't complain about non-existant /addon property 2017-08-12 22:32:40 +02:00
Torsten Dreyer
5c1f4a69f1 Introduce handler for --addon commandline switch
Requires flightgear commit f6698a0b1f9e8c0791314aa09cbe1625927ef3ff
to have property /addons/addon[n] populated
2017-07-18 12:14:50 +02:00