2d-physics-engine
Version:
A lightweight, flexible 2D physics engine with ECS architecture, built with TypeScript
40 lines • 1.22 kB
JavaScript
import { AABB } from '../../math/AABB';
import { Vector2 } from '../../math/Vector2';
import { Collider } from './Collider.abstract';
export class CircleCollider extends Collider {
constructor(radius) {
super();
Object.defineProperty(this, "radius", {
enumerable: true,
configurable: true,
writable: true,
value: radius
});
Object.defineProperty(this, "colliderId", {
enumerable: true,
configurable: true,
writable: true,
value: CircleCollider.COLLIDER_ID
});
}
getRadius() {
return this.radius;
}
getAABB() {
return new AABB(new Vector2(-this.radius, -this.radius), new Vector2(this.radius, this.radius));
}
calculateInertia(mass) {
// Moment of inertia for a solid disk
return (mass * this.radius * this.radius) / 2;
}
getClosestPoint(point) {
return point.getNormal().scale(this.radius);
}
}
Object.defineProperty(CircleCollider, "COLLIDER_ID", {
enumerable: true,
configurable: true,
writable: true,
value: Symbol('CircleCollider')
});
//# sourceMappingURL=CircleCollider.component.js.map