eventSystem
jsngin implements a custom event system that is more suited for a game type environment.
Types of eventSystems
local eventSystemThis is the eventSystem on each gameObject. Events specific to this gameObject are triggered on this eventSystem. Eg. collision of this gameObject.global eventSystemThis is the global eventSystem and event at fame/root level are triggered on this eventSystem. Eg. LoadCompleteEvent
Scripts for global events
To attach a script to a global event. For the eventName use global_eventName. The export from the script should still be named eventName.
Lifecycle Events
Some basic lifecycle events are defined in the @thejsngin/jsngin implementation.
resource event
Is a special type of event and the only event, for which the handler's return value matters. The return value of the resource event is stored as the value for the component inside the gameObject. Incase there are multiple scripts for the resource event, the return values of these scripts must contain a resourceName property, and the final resource is evaluated to be equal to
finalResourceForTheComponent = {
[res0.resourceName]: res0,
[res1.resourceName]: res1,
// ... and so on
}If any of the return values is a promise then the final resouce is computed after all the promises are fullfilled or rejected.
load event
Is fired on every component to initiate the load procedure. Provides addToLoadTracking function to add weighted resources as promises to the loading queue.
import type { Callback, LoadEvent } from '@thejsngin/jsngin';
const load: Callback<LoadEvent> = (gameInstance, gameObjectInstance, componentHelpers, addToLoadTracking) => {
let resolve;
let reject;
const resourcePromise = new Promise((res, rej) => {
resolve = res;
reject = rej;
});
const resourceWeight = 10;
addToLoadTracking(resourcePromise, resourceWeight);
setTimeout(() => {
if(Math.random() > 0.5){
resolve();// triggers `loadProgress`
}else{
reject();// triggers `loadError`
}
}, 5000);
}
export { load };loadError event
Fired every time a queued resorce fails to load. Provides failLoad which can fail the entire load procedure.
loadProgress event
Fired every time a queued resource loads. Provides failLoad which can fail the entire load procedure.
loadFailed event
Fired if failLoad is called inside loadError or loadProgress. Stops loading and disposes everthing after this is executed.
loadComplete event
Fired if all the queued resource promisses have settled and failLoad was not called.
dispose event
Fired before either the component is removed / gameObject is removed.