32 lines
756 B
JavaScript
32 lines
756 B
JavaScript
|
import Schema from '@/ecs/schema.js';
|
||
|
|
||
|
export default function(Component) {
|
||
|
return class Emitter extends Component {
|
||
|
mergeDiff(original, update) {
|
||
|
const merged = {};
|
||
|
if (update.emit) {
|
||
|
merged.emit = {
|
||
|
...original.emit,
|
||
|
...update.emit,
|
||
|
}
|
||
|
}
|
||
|
return merged;
|
||
|
}
|
||
|
instanceFromSchema() {
|
||
|
const Component = this;
|
||
|
const Instance = super.instanceFromSchema();
|
||
|
return class EmitterInstance extends Instance {
|
||
|
emitting = [];
|
||
|
id = 0;
|
||
|
emit(specification) {
|
||
|
Component.markChange(this.entity, 'emit', {[this.id++]: specification});
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
static schema = new Schema({
|
||
|
type: 'object',
|
||
|
properties: {},
|
||
|
});
|
||
|
}
|
||
|
}
|