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 instance -
object
- Object which this behaviour was attached
Callbacks
-
onAttach
- called after being attached in a target object -
onDetach
- 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 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
MIT