Plugable Entity Component System for Games
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:
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 );
}
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.
These methods are injected on all instances of the base object you provided oncreateComponentSystem
(e.g. THREE.Object
, PIXI.DisplayObject
, etc)
Methods
getEntity()
- Get Entity instance attached to the object.addBehaviour(behaviour, options)
- Attach custom behaviour to this entityProperties
entity
- Entity instanceobject
- Object which this behaviour was attachedCallbacks
onAttach
- called after being attached in a target objectonDetach
- called after being manually detached (through entity.detach
method)update
- called when your component system is updatedMethods
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
Properties
object
- Object which this behaviour was attachedbehaviours
- Array of behaviour instancesMethods
attach(behaviour)
- Attach behaviour instance into this Entitydetach(behaviour)
- Detach behaviour instance from this EntitygetBehaviour
- Get attached behaviour by name or class reference.detachAll
- Detach all behaviours from this Entitydestroy
- Detach all behaviours from this Entity and remove it from the Systemon(event, callback[, context])
- Subscribe to an eventonce(event, callback[, context])
- Subscribe to an event only onceoff(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 eventMIT