blaze-2d
Version:
A fast and simple WebGL 2 2D game engine written in TypeScript
43 lines • 1.96 kB
JavaScript
import { vec2 } from "gl-matrix";
import RectCollider from "./collider/rect";
import CollisionObject from "./collisionObject";
import EPA from "./epa";
import GJK from "./gjk";
import Manifold from "./manifold";
export default function testManifold() {
// first example
{
const a = new CollisionObject(new RectCollider(6, 5, vec2.fromValues(11, 6.5)));
const b = new CollisionObject(new RectCollider(8, 3, vec2.fromValues(8, 3.5)));
const gjk = GJK(a.collider, b.collider);
const epa = EPA(gjk.simplex, a.collider, b.collider);
console.log(epa);
const m = new Manifold(a, b, Object.assign({ hasCollision: true }, epa), vec2.fromValues(0, -9.8), 1);
console.log("inc", m.edges[0]);
console.log("ref", m.edges[1]);
console.log(m.contactPoints);
if (vec2.equals(m.contactPoints[0].point, vec2.fromValues(12, 5)) &&
vec2.equals(m.contactPoints[1].point, vec2.fromValues(8, 5)) &&
m.contactPoints.length === 2) {
console.log("first case passed.");
}
}
// second example
{
const aCollider = new RectCollider(6, 5, vec2.fromValues(5.5, 7.5));
aCollider.rotate((30 * Math.PI) / 180);
const a = new CollisionObject(aCollider);
const b = new CollisionObject(new RectCollider(8, 3, vec2.fromValues(8, 3.5)));
const gjk = GJK(a.collider, b.collider);
const epa = EPA(gjk.simplex, a.collider, b.collider);
console.log(epa);
const m = new Manifold(a, b, Object.assign({ hasCollision: true }, epa), vec2.fromValues(0, -9.8), 1);
console.log("inc", m.edges[0]);
console.log("ref", m.edges[1]);
console.log(m.contactPoints);
if (vec2.equals(m.contactPoints[0].point, vec2.fromValues(4, 5)) && m.contactPoints.length === 1) {
console.log("second case passed.");
}
}
}
//# sourceMappingURL=manifold.test.js.map