import {compose} from '@avocado/core'; import {Vector} from '@avocado/math'; import {simpleState, Trait} from '../trait'; const decorate = compose( simpleState('direction', { track: true, }), ); class DirectionalBase extends Trait { static defaultParams() { return { directionCount: 1, }; } static defaultState() { return { direction: 0, }; } listeners() { return { movementRequest: (vector) => { this.entity.direction = Vector.toDirection( vector, this.params.get('directionCount') ); }, } } } export class Directional extends decorate(DirectionalBase) {}