@dimforge/rapier2d
Version:
2-dimensional physics engine in Rust - official JS bindings.
58 lines • 2.13 kB
JavaScript
import { VectorOps } from "../math";
/**
* The intersection between a ray and a collider.
*/
export class ShapeCastHit {
constructor(time_of_impact, witness1, witness2, normal1, normal2) {
this.time_of_impact = time_of_impact;
this.witness1 = witness1;
this.witness2 = witness2;
this.normal1 = normal1;
this.normal2 = normal2;
}
static fromBuffer(collider, buffer, target) {
if (!buffer)
return null;
target !== null && target !== void 0 ? target : (target = new ShapeCastHit(0, VectorOps.zeros(), VectorOps.zeros(), VectorOps.zeros(), VectorOps.zeros()));
target.time_of_impact = buffer[0];
// #if DIM2
target.witness1.x = buffer[1];
target.witness1.y = buffer[2];
target.witness2.x = buffer[3];
target.witness2.y = buffer[4];
target.normal1.x = buffer[5];
target.normal1.y = buffer[6];
target.normal2.x = buffer[7];
target.normal2.y = buffer[8];
// #endif
return target;
}
}
/**
* The intersection between a ray and a collider.
*/
export class ColliderShapeCastHit extends ShapeCastHit {
constructor(collider, time_of_impact, witness1, witness2, normal1, normal2) {
super(time_of_impact, witness1, witness2, normal1, normal2);
this.collider = collider;
}
static fromBuffer(collider, buffer, target) {
if (!buffer)
return null;
target !== null && target !== void 0 ? target : (target = new ColliderShapeCastHit(null, 0, VectorOps.zeros(), VectorOps.zeros(), VectorOps.zeros(), VectorOps.zeros()));
target.collider = collider;
target.time_of_impact = buffer[0];
// #if DIM2
target.witness1.x = buffer[1];
target.witness1.y = buffer[2];
target.witness2.x = buffer[3];
target.witness2.y = buffer[4];
target.normal1.x = buffer[5];
target.normal1.y = buffer[6];
target.normal2.x = buffer[7];
target.normal2.y = buffer[8];
// #endif
return target;
}
}
//# sourceMappingURL=toi.js.map