cannon-es-control
Version:
A lightweight 3D physics engine written in JavaScript with control system tools
45 lines (39 loc) • 811 B
text/typescript
/**
* TupleDictionary
*/
export class TupleDictionary {
data: { [id: string]: any; keys: string[] } = { keys: [] }
/** get */
get(i: number, j: number): any {
if (i > j) {
// swap
const temp = j
j = i
i = temp
}
return this.data[`${i}-${j}`]
}
/** set */
set(i: number, j: number, value: any): void {
if (i > j) {
const temp = j
j = i
i = temp
}
const key = `${i}-${j}`
// Check if key already exists
if (!this.get(i, j)) {
this.data.keys.push(key)
}
this.data[key] = value
}
/** reset */
reset(): void {
const data = this.data
const keys = data.keys
while (keys.length > 0) {
const key = keys.pop()!
delete data[key]
}
}
}