xplsdk
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Následující verze | Předchozí verze | ||
| xplsdk [2016/02/27 11:39] – vytvořeno djbuldog | xplsdk [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
|---|---|---|---|
| Řádek 3: | Řádek 3: | ||
| * [[http:// | * [[http:// | ||
| * [[http:// | * [[http:// | ||
| - | * [[http:// | + | * [[http:// |
| - | * [[http:// | + | |
| + | |||
| + | * datarefs | ||
| + | * proměnné, ke kterým lze přímo přistupovat | ||
| + | * do některých lze i zapisovat. | ||
| + | | ||
| + | |||
| + | * commands | ||
| + | * akce, které se typicky provádí při stisku klávesy | ||
| + | * [[https:// | ||
| + | |||
| + | * plugin musí obsahovat 5 základních funkcí: | ||
| + | * **XPluginStart** | ||
| + | * volá se při zavádění pluginu, spouštění XPL. | ||
| + | * pokud nevrátí hodnotu 1, tak se plugin do XPL správce modulů vůbec nenačte. | ||
| + | * **XPluginStop** - asi opak start, ale kdy se volá? FIXME | ||
| + | * **XPluginDisable** - při deaktivaci pluginu (XPL menu plugins) | ||
| + | * **XPluginEnable** - při aktivaci pluginu (XPL menu plugins) | ||
| + | * **XPluginReceiveMessage** - umožňuje reagovat na jakési zprávy z XPL FIXME | ||
| + | |||
| + | <code cpp> | ||
| + | PLUGIN_API int XPluginStart(char *outName, char *outSig, char *outDesc) { | ||
| + | |||
| + | strcpy(outName, | ||
| + | strcpy(outSig, | ||
| + | strcpy(outDesc, | ||
| + | |||
| + | return 1; | ||
| + | } | ||
| + | |||
| + | PLUGIN_API void XPluginStop(void) { | ||
| + | } | ||
| + | |||
| + | PLUGIN_API void XPluginDisable(void) { | ||
| + | } | ||
| + | |||
| + | PLUGIN_API int XPluginEnable(void) | ||
| + | return 1; | ||
| + | } | ||
| + | |||
| + | PLUGIN_API void XPluginReceiveMessage(XPLMPluginID inFromWho, int inMessage, void *inParam) { | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | * následně může plugin vykonávat nějakou činnost | ||
| + | * plugin beží ve stejném vlákně jako XPL. | ||
| + | * pád pluginu shodí celý XPL. | ||
| + | * nekončený loop pluginu zablokuje celý XPL (myslím FIXME) | ||
| + | * aby plugin něco dělal, musí si zaregistrovat nějaký callback, například | ||
| + | * kliknutí na menu | ||
| + | * registrace vlastního command | ||
| + | * registrace klávesové zkratky | ||
| + | * periodické volání během letu (XPLMRegisterFlightLoopCallback) | ||
| + | |||
| + | <code cpp> | ||
| + | static float callback_rate = -1.0; // -X.0 call every 1 frame | ||
| + | |||
| + | float FlightLoopCallback(float inElapsedSinceLastCall, | ||
| + | |||
| + | PLUGIN_API int XPluginStart(char *outName, char *outSig, char *outDesc) { | ||
| + | .. | ||
| + | XPLMRegisterFlightLoopCallback(FlightLoopCallback, | ||
| + | .. | ||
| + | } | ||
| + | |||
| + | PLUGIN_API void XPluginStop(void) { | ||
| + | .. | ||
| + | XPLMUnregisterFlightLoopCallback(FlightLoopCallback, | ||
| + | .. | ||
| + | } | ||
| + | |||
| + | float FlightLoopCallback(float inElapsedSinceLastCall, | ||
| + | .. | ||
| + | return callback_rate; | ||
| + | } | ||
| + | </ | ||
xplsdk.1456569561.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
