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 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
Properties
entity
- Entity instanceobject
- Object which this behaviour was attached
Callbacks
onAttach
- called after being attached in a target objectonDetach
- called after being manually detached (throughentity.detach
method)update
- called when your component system is updated
Methods
detach
on(event, callback[, context])
- alias toentity.on
once(event, callback[, context])
- alias toentity.once
off(event[, callback])
- alias toentity.off
emit(event[, arguments...])
- alias toentity.emit
Properties
object
- Object which this behaviour was attachedbehaviours
- Array of behaviour instances
Methods
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 event
MIT