Uživatelské nástroje

Nástroje pro tento web


xplsdk

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
xplsdk [2016/02/27 11:39] – vytvořeno djbuldogxplsdk [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 3: Řádek 3:
   * [[http://www.xsquawkbox.net/xpsdk/mediawiki/Main_Page|domácí stránka]]   * [[http://www.xsquawkbox.net/xpsdk/mediawiki/Main_Page|domácí stránka]]
   * [[http://aerosim.calpoly.edu/media/cms_page_media/18/doc.pdf|návod pro začátečníky]]   * [[http://aerosim.calpoly.edu/media/cms_page_media/18/doc.pdf|návod pro začátečníky]]
-  * [[http://www.xsquawkbox.net/xpsdk/mediawiki/SimDataSimData|ukázkový příklad pro XPL menu a změnu dataref]] +  * [[http://www.xsquawkbox.net/xpsdk/mediawiki/SimDataSimData|ukázkový příklad pro XPL menu a změnu dataref včetně Makefile]] 
-  * [[http://www.xsquawkbox.net/xpsdk/docs/DataRefs.html|seznam datarefs]]+  * [[https://github.com/vranki/ExtPlane|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. 
 +    * [[http://www.xsquawkbox.net/xpsdk/docs/DataRefs.html|seznam datarefs]] 
 + 
 +  * commands 
 +    * akce, které se typicky provádí při stisku klávesy 
 +    * [[https://siminnovations.com/wiki/index.php?title=Xplane_commandrefs|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 
 + 
 +<code cpp> 
 +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) { 
 +
 +</code> 
 + 
 +   * 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, 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; 
 +
 +</code>
xplsdk.1456569561.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki