xplsdk
Toto je starší verze dokumentu!
X-Plane SDK
- ExtPlane pěkný plugin vytvářející wrapper pro datarefs
- 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
- 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á?
- 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
PLUGIN_API int XPluginStart(char *outName, char *outSig, char *outDesc) { strcpy(outName, "LCDxpl"); strcpy(outSig, "bari2.eu"); strcpy(outDesc, "A plugin for X-Plane LCD."); 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
)
- 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)
static float callback_rate = -1.0; // -X.0 call every 1 frame float FlightLoopCallback(float inElapsedSinceLastCall, float inElapsedTimeSinceLastFlightLoop, int inCounter, void* inRefcon); PLUGIN_API int XPluginStart(char *outName, char *outSig, char *outDesc) { .. XPLMRegisterFlightLoopCallback(FlightLoopCallback,callback_rate,NULL); .. } PLUGIN_API void XPluginStop(void) { .. XPLMUnregisterFlightLoopCallback(FlightLoopCallback, NULL); .. } float FlightLoopCallback(float inElapsedSinceLastCall, float inElapsedTimeSinceLastFlightLoop, int inCounter, void* inRefcon) { .. return callback_rate; }
xplsdk.1457379027.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
