threefiz
Version:
Implementation of a physics engine based on the [Three.js](https://github.com/mrdoob/three.js) library.
33 lines (25 loc) • 761 B
text/typescript
import RigidBody from "./RigidBody";
import { Box3 } from "three";
let objects: RigidBody[] = [];
let hostAABB: Box3;
let MatchedIds: Uint16Array;
let MatchedIndex: number;
export const init = (objs: RigidBody[]) => {
objects.push(...objs);
MatchedIds = new Uint16Array(objs.length);
};
const SweepAndPrune = (
hostID: number,
others: Uint16Array,
maxResults: number
) => {
hostAABB = objects[hostID].aabb;
MatchedIndex = 0;
for (let i = 0; i < maxResults; i++)
if (isMatched(objects[others[i]].aabb)) others[MatchedIndex++] = others[i];
return MatchedIndex;
};
const isMatched = (aabb: Box3) => {
return hostAABB.min.x < aabb.max.x && hostAABB.max.x > aabb.min.x;
};
export default SweepAndPrune;