export class CollisionRegistry { constructor() { this.entries = [] } purge(agentId) { this.entries = this.entries.filter( e => e.agentA !== agentId && e.agentB !== agentId ) } add(entry) { const duplicate = this.entries.find( e => (e.agentA === entry.agentA && e.agentB === entry.agentB) || (e.agentA === entry.agentB && e.agentB === entry.agentA) ) if(duplicate) { if(entry.time < duplicate.time) Object.assign(duplicate, entry) return } this.entries.push(entry) } dueBefore(t) { return(this.entries.filter(e => e.time <= t)) } remove(entry) { this.entries = this.entries.filter( e => !((e.agentA === entry.agentA && e.agentB === entry.agentB) || (e.agentA === entry.agentB && e.agentB === entry.agentA)) ) } }