@pmndrs/cannon-worker-api
Version:
An API to use cannon-es in a web worker
24 lines (19 loc) • 689 B
text/typescript
import { Material } from 'cannon-es'
type MaterialOptions = {
friction?: number
name?: string | symbol
restitution?: number
}
export type CreateMaterial = (nameOrOptions?: MaterialOptions | string) => Material
let materialId = 0
export const createMaterialFactory =
(materials: Record<string | symbol, Material>): CreateMaterial =>
(nameOrOptions = {}) => {
const materialOptions =
typeof nameOrOptions === 'string'
? { name: nameOrOptions }
: { name: Symbol.for(`Material${materialId++}`), ...nameOrOptions }
const { name } = materialOptions
materials[name] = materials[name] || new Material(materialOptions)
return materials[name]
}