import {compose} from '@avocado/core'; import {StateProperty, Trait} from '@avocado/entity'; const decorate = compose( StateProperty('isCheckingCollisions'), ); export class Collider extends decorate(Trait) { static defaultParams() { return { collidesWithGroups: [ 'default', ], collisionGroup: 'default', } } static defaultState() { return { isCheckingCollisions: true, } } initialize() { this._collisionGroup = this.params.get('collisionGroup'); this._collidesWithGroups = this.params.get('collidesWithGroups').toJS(); } get collisionGroup() { return this._collisionGroup; } get collidesWithGroups() { return this._collidesWithGroups; } methods() { return { collidesWith: (entity) => { if (!entity.is('collider')) { return false; } const collisionGroup = entity.collisionGroup(); return -1 !== this._collidesWithGroups.indexOf(collisionGroup); }, }; } }