Uživatelské nástroje

Nástroje pro tento web


xplsdk

Toto je starší verze dokumentu!


X-Plane SDK

  • 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
    • seznam commands (jinak prý v <X-plane>/Resources/plugins/Commands.txt)
  • 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
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 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)
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.1457380196.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki