New functions:
--JPEvent JPEvent.activate ( sUserToken, sActivationKey ) --NEW EVENT --"onWillBeDestroyed" trigered when an AIModel will be destroyed. --For users, it occurs in the following cases : -- - When the AIModel is removed from the user. (user.removeAIModel) -- - When the user is destroyed. (application.destroyUser) --For objects, it occurs in the following cases : -- - When the AIModel is removed from the object. (object.removeAIModel) -- - When the object is explicitly destroyed, or if its parent is destroyed.(scene.destroyRuntimeObject, object.destroy, ) -- - When the scene of the object is closed. (user.setScene, application.setCurrentUserScene) --For both users and objects: -- - When the application stops or is restarted (onApplicationWillQuit) --IMPROVED API FUNCTIONS: possibility to set a pattern for the AIModel parameter. If the AIModel is nil, the event will be sent to any AIModel of the specified target object.sendEventImmediate ( hObject, sAIModelPattern, sHandler, vParam0, vParam1, ... ) object.sendEvent ( hObject, sAIModelPattern, sHandler, vParam0, vParam1, ... ) object.postEvent ( hObject, nDelay, sAIModelPattern, sHandler, vParam0, vParam1, ... ) user.sendEventImmediate ( hUser, sAIModelPattern, sHandler, vParam0, vParam1, ... ) user.sendEvent ( hUser, sAIModelPattern, sHandler, vParam0, vParam1, ... ) user.postEvent ( hUser, nDelay, sAIModelPattern, sHandler, vParam0, vParam1, ... ) --NEW API FUNCTIONS: Note that you can use these function using both api.function ( ) or JPEvent.api_function ( ). Only the second case will have code completion. --application application.cancelEvents ( sAIModelPattern, sHandlerPattern ) application.cancelObjectEvents ( sAIModelPattern, sHandlerPattern ) application.cancelUserEvents ( sAIModelPattern, sHandlerPattern ) application.delayEvents ( nDelay, sAIModelPattern, sHandlerPattern ) application.delayObjectEvents ( nDelay, sAIModelPattern, sHandlerPattern ) application.delayUserEvents ( nDelay, sAIModelPattern, sHandlerPattern ) application.pauseEvents ( sAIModelPattern, sHandlerPattern ) application.pauseObjectEvents ( sAIModelPattern, sHandlerPattern ) application.pauseUserEvents ( sAIModelPattern, sHandlerPattern ) application.postEventToCurrentUser ( nDelay, sAIModelPattern, sHandler, vParam0, vParam1, ... ) application.resumeEvents ( sAIModelPattern, sHandlerPattern ) application.resumeObjectEvents ( sAIModelPattern, sHandlerPattern ) application.resumeUserEvents ( sAIModelPattern, sHandlerPattern ) application.postEventToCurrentUser ( nDelay, sAIModelPattern, sHandler, vParam0, vParam1, ... ) application.sendEventImmediateToCurrentUser ( sAIModelPattern, sHandler, vParam0, vParam1, ... ) application.sendEventToCurrentUser ( sAIModelPattern, sHandler, vParam0, vParam1, ... ) application.postEventToAllUsers ( nDelay, sAIModelPattern, sHandler, vParam0, vParam1, ... ) application.sendEventImmediateToAllUsers ( sAIModelPattern, sHandler, vParam0, vParam1, ... ) application.sendEventToAllUsers ( sAIModelPattern, sHandler, vParam0, vParam1, ... ) --object object.cancelEvents ( hObject, sAIModelPattern, sHandlerPattern ) object.delayEvents ( hObject, nDelay, sAIModelPattern, sHandlerPattern ) object.pauseEvents ( hObject, sAIModelPattern, sHandlerPattern ) object.resumeEvents ( hObject, sAIModelPattern, sHandlerPattern ) --scene scene.cancelEvents ( hScene, sAIModelPattern, sHandlerPattern ) scene.cancelObjectEvents ( hScene, sAIModelPattern, sHandlerPattern ) scene.cancelUserEvents ( hScene, sAIModelPattern, sHandlerPattern ) scene.delayEvents ( hScene, nDelay, sAIModelPattern, sHandlerPattern ) scene.delayObjectEvents ( hScene, nDelay, sAIModelPattern, sHandlerPattern ) scene.delayUserEvents ( hScene, nDelay, sAIModelPattern, sHandlerPattern ) scene.pauseEvents ( hScene, sAIModelPattern, sHandlerPattern ) scene.pauseObjectEvents ( hScene, sAIModelPattern, sHandlerPattern ) scene.pauseUserEvents ( hScene, sAIModelPattern, sHandlerPattern ) scene.resumeEvents ( hScene, sAIModelPattern, sHandlerPattern ) scene.resumeObjectEvents ( hScene, sAIModelPattern, sHandlerPattern ) scene.resumeUserEvents ( hScene, sAIModelPattern, sHandlerPattern ) --user user.cancelEvents ( hUser, sAIModelPattern, sHandlerPattern ) user.delayEvents ( hUser, nDelay, sAIModelPattern, sHandlerPattern ) user.pauseEvents ( hUser, sAIModelPattern, sHandlerPattern ) user.resumeEvents ( hUser, sAIModelPattern, sHandlerPattern )
Qui n'a jamais eu besoin d'annuler un évènement qui a été envoyé?
JPEvent est un outil très pratique, il vous permet de contrôler les évènements que vous avez envoyés. Vous pourrez annuler des évènements, les mettre en pause ou les reprendre, ou encore d'ajouter un délai additionel.
Vous allez pouvoir affectuer des actions sur plusieurs évènements à la fois, grâce au support des patterns.
JPEvent fourni des fonctions variées, pour cibler uniquement les évènements des objets, ceux des users, les évènements envoyés dans une scène ou dans toute l'application. Ci-dessous quelques exemples de fonctions :
--All of these functions can be used with patterns! user.cancelEvents ( hUser ) scene.pauseObjectEvents ( hScene, "MonsterType.*", ".*" ) object.resumeEvents ( hObject, ".*", "onAttack" ) application.delayEvents ( 3 )
Toutes les fonctions disponibles peut être trouvées dans la page d'API de JPEvent.
JPEvent fourni également une nouvelle fonctionalité lors de l'envoi d'évènements, la possibilité d'utiliser des patterns à la place du nom de l'AIModel. Avec ce genre de fonctionalité, vous allez pouvoir envoyer un évènement à plusieurs AIModels en même temps. Ca fonctionne aussi bien avec les objets que les users, avec postEvent, sendEvent ou sendEventImmediate. Egalement, 3 nouvelles fonctions sont disponibles, pour pouvoir envoyer des évènements à l'utilisateur courant sans avoir à utiliser son handle :
application.postEventToCurrentUser ( nDelay, sAIModelPattern, sHandler, vParam0, ... ) application.sendEventImmediateToCurrentUser ( sAIModelPattern, sHandler, vParam0, ... ) application.sendEventToCurrentUser ( sAIModelPattern, sHandler, vParam0, ... )
Enfin, il offre une fonctionalité très intéressante : il déclenche un évènement "onWillBeDestroyed" pour tout AIModel qui va être détruit. C'est vraiment super puisque ça va vous permettre par exemple de désallouer des ressources qui ont été créées lors de la durée de vie de l'AIModel. Ca fonctionne pour tous les AIModels, aussi bien user que objet, et ça se produit dans les cas suivants :