-
-
-
ExtPlane pěkný plugin vytvářející wrapper pro datarefs
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.
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;
}