Engine API Reference - v2.6.1
    Preparing search index...

    Class Tags

    Set of tag names. Tags are automatically available on Entity and Asset as tags field.

    Hierarchy (View Summary)

    Index

    Constructors

    • Create an instance of a Tags.

      Parameters

      • Optionalparent: any

        Parent object who tags belong to.

      Returns Tags

    Accessors

    • get size(): number

      Number of tags in set.

      Returns number

    Methods

    • Add a tag, duplicates are ignored. Can be array or comma separated arguments for multiple tags.

      Parameters

      • ...args: any[]

        Name of a tag, or array of tags.

      Returns boolean

      True if any tag were added.

      tags.add('level-1');
      
      tags.add('ui', 'settings');
      
      tags.add(['level-2', 'mob']);
      
    • Remove all tags.

      Returns void

      tags.clear();
      
    • Fire an event, all additional arguments are passed on to the event listener.

      Parameters

      • name: string

        Name of event to fire.

      • Optionalarg1: any

        First argument that is passed to the event handler.

      • Optionalarg2: any

        Second argument that is passed to the event handler.

      • Optionalarg3: any

        Third argument that is passed to the event handler.

      • Optionalarg4: any

        Fourth argument that is passed to the event handler.

      • Optionalarg5: any

        Fifth argument that is passed to the event handler.

      • Optionalarg6: any

        Sixth argument that is passed to the event handler.

      • Optionalarg7: any

        Seventh argument that is passed to the event handler.

      • Optionalarg8: any

        Eighth argument that is passed to the event handler.

      Returns EventHandler

      Self for chaining.

      obj.fire('test', 'This is the message');
      
    • Check if tags satisfy filters. Filters can be provided by simple name of tag, as well as by array of tags. When an array is provided it will check if tags contain each tag within the array. If any of comma separated argument is satisfied, then it will return true. Any number of combinations are valid, and order is irrelevant.

      Parameters

      • ...query: any[]

        Name of a tag or array of tags.

      Returns boolean

      True if filters are satisfied.

      tags.has('player'); // player
      
      tags.has('mob', 'player'); // player OR mob
      
      tags.has(['level-1', 'mob']); // monster AND level-1
      
      tags.has(['ui', 'settings'], ['ui', 'levels']); // (ui AND settings) OR (ui AND levels)
      
    • Test if there are any handlers bound to an event name.

      Parameters

      • name: string

        The name of the event to test.

      Returns boolean

      True if the object has handlers bound to the specified event name.

      obj.on('test', () => {}); // bind an event to 'test'
      obj.hasEvent('test'); // returns true
      obj.hasEvent('hello'); // returns false
    • Returns immutable array of tags.

      Returns string[]

      Copy of tags array.

    • Detach an event handler from an event. If callback is not provided then all callbacks are unbound from the event, if scope is not provided then all events with the callback will be unbound.

      Parameters

      • Optionalname: string

        Name of the event to unbind.

      • Optionalcallback: HandleEventCallback

        Function to be unbound.

      • Optionalscope: any

        Scope that was used as the this when the event is fired.

      Returns EventHandler

      Self for chaining.

      const handler = () => {};
      obj.on('test', handler);

      obj.off(); // Removes all events
      obj.off('test'); // Removes all events called 'test'
      obj.off('test', handler); // Removes all handler functions, called 'test'
      obj.off('test', handler, this); // Removes all handler functions, called 'test' with scope this
    • Attach an event handler to an event.

      Parameters

      • name: string

        Name of the event to bind the callback to.

      • callback: HandleEventCallback

        Function that is called when event is fired. Note the callback is limited to 8 arguments.

      • Optionalscope: any = ...

        Object to use as 'this' when the event is fired, defaults to current this.

      Returns EventHandle

      Can be used for removing event in the future.

      obj.on('test', (a, b) => {
      console.log(a + b);
      });
      obj.fire('test', 1, 2); // prints 3 to the console
      const evt = obj.on('test', (a, b) => {
      console.log(a + b);
      });
      // some time later
      evt.off();
    • Attach an event handler to an event. This handler will be removed after being fired once.

      Parameters

      • name: string

        Name of the event to bind the callback to.

      • callback: HandleEventCallback

        Function that is called when event is fired. Note the callback is limited to 8 arguments.

      • Optionalscope: any = ...

        Object to use as 'this' when the event is fired, defaults to current this.

      Returns EventHandle

      • can be used for removing event in the future.
      obj.once('test', (a, b) => {
      console.log(a + b);
      });
      obj.fire('test', 1, 2); // prints 3 to the console
      obj.fire('test', 1, 2); // not going to get handled
    • Remove tag.

      Parameters

      • ...args: any[]

        Name of a tag or array of tags.

      Returns boolean

      True if any tag were removed.

      tags.remove('level-1');
      
      tags.remove('ui', 'settings');
      
      tags.remove(['level-2', 'mob']);
      

    Events

    EVENT_ADD: string = 'add'

    Fired for each individual tag that is added.

    tags.on('add', (tag, parent) => {
    console.log(`${tag} added to ${parent.name}`);
    });
    EVENT_CHANGE: string = 'change'

    Fired when tags have been added or removed. It will fire once on bulk changes, while add and remove will fire on each tag operation.

    tags.on('change', (parent) => {
    console.log(`Tags changed on ${parent.name}`);
    });
    EVENT_REMOVE: string = 'remove'

    Fired for each individual tag that is removed.

    tags.on('remove', (tag, parent) => {
    console.log(`${tag} removed from ${parent.name}`);
    });