JPThread

JPThread

Exécutez une simple fonction sur plusieurs trames
Version : 2.0
Prix : $20
Etat : Épuisé

Liste des modifications

v2.0

  • Now compatible with ShiVa 2.0.
  • Plugin API compiled for Mac and Linux in addition to Windows : it will provide API completion in the Script module in ShiVa Editor for each of these operating systems.
  • Now uses a user token instead of an email to activate

v1.2

  • Optimized for ShiVa 1.9.2

v1.1

  • JPThread.create now takes the parameters of the function.

API

--JPThread API JPThread.activate ( sUserToken, sActivationKey ) sID = JPThread.create ( fFunction, vOptParam0, vOptParam1, vOptParam2, vOptParam3, vOptParam4, vOptParam5, vOptParam6, vOptParam7, vOptParam8, vOptParam9, vOptParam10, vOptParam11, vOptParam12, vOptParam13, vOptParam14, vOptParam15 ) JPThread.addYieldPoint ( ) JPThread.cancel ( sID ) JPThread.pause ( sID ) JPThread.resume ( sID ) JPThread.cancelAllThreads ( ) JPThread.pauseAllThreads ( ) JPThread.resumeAllThreads ( )

Description

JPThread est un autre des cas packs magiques, qui vous permet de penser la conception de votre jeu différemment. Il vous permet d'exécuter le code d'une fonction sur plusieurs trames.

JPThread.create ( this.preloadSceneResources )
function MyAIModel.preloadSceneResources ( ) for i = 0, table.getSize ( this.tTextures ( ) ) - 1 do local sTextute = table.getAt ( this.tTextures ( ), i ) application.forceResourceToStayLoaded ( sTexture, application.kResourceTypeTexture, true ) JPThread.addYieldPoint ( ) end end

Le résultat sera que le chargement sera exécuté sur plusieurs trames, à la vitesse de 1 chargement de texture par trame. Votre jeu en sera alors beaucoup plus fluide. JPThread.addYieldPoint ( ) signifie que l'exécution de la fonction set mets en pause à cet endroit et qu'elle sera repris à la prochaine trame. Bien sur, vous pouvez ajouter cet appel plusieurs fois dans le code de votre fonction.

Voici un screenshot du Performance Reporter dans ShiVa, vous pouvez voir clairement que la fonction ne crée pas du tout un freeze car elle est exécutée sur plusieurs trames :

Comparaison des performances avec JPThread Cette fonctionalité est aussi très pratique dans de nombreux autres cas, pensez par exemple à comment vous chargez un fichier dans le cache actuellement. Maintenant, vous pourrez le faire avec un seul appel de fonction::

function MyAIModel.loadFile ( sFile, sUrl ) cache.addFile ( sFile, sUrl ) while ( cache.getFileStatus ( sFile ) >= 0 and cache.getFileStatus ( sFile ) < 1 ) do JPThread.addYieldPoint ( ) end local nStatus = cache.getFileStatus ( sFile ) if ( nStatus == 1 ) then --Success else --Fail end end

C'est un pack vraiment puissant.