All Projects → endel → behaviour.js

endel / behaviour.js

Licence: MIT license
Plugable Entity Component System for Games

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to behaviour.js

typed-ecstasy
An entity component system for TypeScript (and JavaScript), based on ashley
Stars: ✭ 25 (-10.71%)
Mutual labels:  entity-component
SpaceWar-ECS
A space war game made with ECS and JobSystem in Unity.
Stars: ✭ 26 (-7.14%)
Mutual labels:  entity-component
Entitas Csharp
Entitas is a super fast Entity Component System (ECS) Framework specifically made for C# and Unity
Stars: ✭ 5,393 (+19160.71%)
Mutual labels:  entity-component
Orbtk
The Rust UI-Toolkit.
Stars: ✭ 3,460 (+12257.14%)
Mutual labels:  entity-component
bcs thesis
My bachelor's thesis on the Entity-Component-System pattern and ECST
Stars: ✭ 36 (+28.57%)
Mutual labels:  entity-component
apecs
A petite entity component system
Stars: ✭ 17 (-39.29%)
Mutual labels:  entity-component
entity-system-js
ensy - A very simple Entity System for JavaScript
Stars: ✭ 90 (+221.43%)
Mutual labels:  entity-component
ecs
🐰 Entity Component System
Stars: ✭ 62 (+121.43%)
Mutual labels:  entity-component

behaviour.js

Greenkeeper badge

Build Status

Plugable Entity Component System for Games.

behaviour.js is a Unity-like Entity Component System that you can plug on any JavaScript library or engine.

Examples:

Usage

Attach the entity component system into your target library's base class. Then you'll be able to attach custom behaviours directly into your objects.

import { createComponentSystem, Behaviour } from 'behaviour.js'
var componentSystem = createComponentSystem(THREE.Object3D)

// Define your custom behaviour
class CustomBehaviour extends Behaviour {
  onAttach () {
    console.log("CustomBehaviour has been attached into ", this.object)
  }

  update() {
    console.log("Let's do something with this object", this.object)
    this.object.rotation += 0.1
  }

  onDetach () {
    console.log("CustomBehaviour has been detached from ", this.object)
  }
}

// Attach the behaviour into your objects
var object = new THREE.Object3D()
object.addBehaviour(new CustomBehaviour())

function animate() {
  componentSystem.update()

  // render your application
  // ...
  requestAnimationFrame( animate );
}

API

Entities are a sublcass of EventEmitters, they have emit/on/once/off methods. A handy way to communicate between behaviours is listening to events in Behaviour's onAttach callback.

Object

These methods are injected on all instances of the base object you provided on createComponentSystem (e.g. THREE.Object, PIXI.DisplayObject, etc)

Methods

  • getEntity() - Get Entity instance attached to the object.
  • addBehaviour(behaviour, options) - Attach custom behaviour to this entity

Behaviour

Properties

  • entity - Entity instance
  • object - Object which this behaviour was attached

Callbacks

  • onAttach - called after being attached in a target object
  • onDetach - called after being manually detached (through entity.detach method)
  • update - called when your component system is updated

Methods

  • detach
  • on(event, callback[, context]) - alias to entity.on
  • once(event, callback[, context]) - alias to entity.once
  • off(event[, callback]) - alias to entity.off
  • emit(event[, arguments...]) - alias to entity.emit

Entity

Properties

  • object - Object which this behaviour was attached
  • behaviours - Array of behaviour instances

Methods

  • attach(behaviour) - Attach behaviour instance into this Entity
  • detach(behaviour) - Detach behaviour instance from this Entity
  • getBehaviour - Get attached behaviour by name or class reference.
  • detachAll - Detach all behaviours from this Entity
  • destroy - Detach all behaviours from this Entity and remove it from the System
  • on(event, callback[, context]) - Subscribe to an event
  • once(event, callback[, context]) - Subscribe to an event only once
  • off(event[, callback]) - Unsubscribe from an event or all events. If no callback is provided, it unsubscribes you from all events.
  • emit(event[, arguments...]) - Trigger a named event

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].