@ue-too/dynamics 0.7.3 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dynamics.tsbuildinfo +1 -1
- package/index.d.ts +0 -3
- package/index.js +1883 -3100
- package/index.js.map +17 -1
- package/package.json +14 -8
- package/LICENSE.txt +0 -19
- package/benchmark.d.ts +0 -47
- package/ecs-version/collision-system.d.ts +0 -36
- package/ecs-version/component.d.ts +0 -40
- package/ecs-version/index.d.ts +0 -4
- package/ecs-version/physics-system.d.ts +0 -9
- package/ecs-version/render-system.d.ts +0 -8
- package/simple-benchmark-runner.d.ts +0 -2
package/index.js.map
CHANGED
|
@@ -1 +1,17 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/collision-filter.ts","../src/rigidbody.ts","../src/quadtree.ts","../src/dynamic-tree.ts","../src/collision.ts","../src/pair-manager.ts","../src/world.ts","../src/constraint.ts","../src/ecs-version/component.ts","../src/ecs-version/collision-system.ts","../src/ecs-version/physics-system.ts","../src/ecs-version/render-system.ts","../src/simple-benchmark-runner.ts","../src/benchmark.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["resolveCollisionWithRotation","intersects","Collision.broadPhaseWithSpatialIndexFiltered","Collision.narrowPhaseWithRigidBodyAndPairs"],"mappings":"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"}
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/rigidbody.ts", "../src/collision-filter.ts", "../src/quadtree.ts", "../src/dynamic-tree.ts", "../src/collision.ts", "../src/pair-manager.ts", "../src/world.ts", "../src/constraint.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { PointCal, Point } from \"@ue-too/math\";\nimport { CollisionFilter, DEFAULT_COLLISION_FILTER } from \"./collision-filter\";\n\nexport interface RigidBody {\n center: Point;\n orientationAngle: number;\n linearVelocity: Point;\n angularVelocity: number;\n AABB: {min: Point, max: Point};\n mass: number;\n staticFrictionCoeff: number;\n momentOfInertia: number;\n \n // Collision filtering\n collisionFilter: CollisionFilter;\n \n // Sleeping system\n isSleeping: boolean;\n sleepThreshold: number;\n sleepTime: number;\n timeAtRest: number;\n \n step(deltaTime: number): void;\n isStatic(): boolean;\n isMovingStatic(): boolean;\n getMinMaxProjection(unitvector: Point): {min: number, max: number};\n getCollisionAxes(relativeBody: RigidBody): Point[];\n applyForce(force: Point): void;\n applyForceInOrientation(force: Point): void;\n // applyForceAtPoint(force: Point, point: Point): void;\n move(delta: Point): void;\n significantVertex(collisionNormal: Point): Point;\n getSignificantVertices(collisionNormal: Point): Point[];\n getNormalOfSignificantFace(collisionNormal: Point): Point;\n getAdjacentFaces(collisionNormal: Point): {startPoint: {coord: Point, index: number}, endPoint: {coord: Point, index: number}}[];\n \n // Sleeping methods\n setSleeping(sleeping: boolean): void;\n updateSleeping(deltaTime: number): void;\n}\n\nexport interface VisualComponent{\n draw(ctx: CanvasRenderingContext2D): void;\n}\n\nexport abstract class BaseRigidBody implements RigidBody{\n \n protected _center: Point;\n protected _mass: number = 50;\n protected _linearVelocity: Point;\n protected _angularVelocity: number; // in radians\n protected _orientationAngle: number = 0;\n protected linearAcceleartion: Point;\n protected force: Point;\n protected isStaticBody: boolean = false;\n protected _staticFrictionCoeff: number = 0.3;\n protected dynamicFrictionCoeff: number = 0.3;\n protected frictionEnabled: boolean = false;\n protected isMovingStaticBody: boolean = false;\n protected angularDampingFactor: number = 0.005;\n \n // Collision filtering\n public collisionFilter: CollisionFilter = { ...DEFAULT_COLLISION_FILTER };\n \n // Sleeping system\n public isSleeping: boolean = false;\n public sleepThreshold: number = 0.01; // Velocity threshold to consider sleeping\n public sleepTime: number = 0.5; // Time (seconds) to wait before sleeping\n public timeAtRest: number = 0;\n \n\n constructor(center: Point, _orientationAngle: number = 0, mass: number = 50, isStaticBody: boolean = false, frictionEnabled: boolean = false){\n this._center = center;\n this._orientationAngle = _orientationAngle;\n this._mass = mass;\n this.isStaticBody = isStaticBody;\n this.frictionEnabled = frictionEnabled;\n this.force = {x: 0, y: 0};\n this.linearAcceleartion = {x: 0, y: 0};\n this._linearVelocity = {x: 0, y: 0};\n this._angularVelocity = 0;\n }\n\n move(delta: Point): void {\n if (!this.isStatic()){\n this._center = PointCal.addVector(this._center, delta);\n }\n }\n\n rotateRadians(angle: number): void {\n this._orientationAngle += angle;\n }\n\n getCenter(): Point {\n return this._center;\n }\n\n getOrientationAngle(): number{\n return this._orientationAngle;\n }\n\n get angularVelocity(): number{\n return this._angularVelocity;\n }\n\n set angularVelocity(angularVelocity: number){\n this._angularVelocity = angularVelocity;\n }\n\n get orientationAngle(): number{\n return this._orientationAngle;\n }\n\n isStatic(): boolean{\n return this.isStaticBody;\n }\n\n isMovingStatic(): boolean {\n return this.isMovingStaticBody;\n }\n\n setLinearVelocity(linearVelocity: Point): void {\n this._linearVelocity = linearVelocity;\n }\n\n setMovingStatic(movingStatic: boolean):void {\n this.isMovingStaticBody = movingStatic;\n }\n\n setOrientationAngle(angle: number): void{\n this._orientationAngle = angle;\n }\n\n applyForce(force: Point): void {\n if (PointCal.magnitude(this.force) !== 0){\n this.force = PointCal.addVector(this.force, force);\n } else {\n this.force = force;\n }\n }\n\n applyForceInOrientation(force: Point | number): void {\n let forceTransformed: Point;\n if (typeof force === \"number\") {\n forceTransformed = PointCal.rotatePoint({x: force, y: 0}, this._orientationAngle);\n } else {\n forceTransformed = PointCal.rotatePoint(force, this._orientationAngle);\n }\n this.applyForce(forceTransformed);\n }\n\n step(deltaTime: number): void {\n if (this.frictionEnabled) {\n if (this.isStatic() || \n (this.linearVelocity.x == 0 && \n this.linearVelocity.y == 0 && \n PointCal.magnitude(PointCal.subVector({x: this.force.x, y: this.force.y}, {x: 0, y: 0})) >= 0 && \n PointCal.magnitude({x: this.force.x, y: this.force.y}) < this.staticFrictionCoeff * this.mass * 9.81)\n ) {\n if (this.force.z != undefined) {\n this.force = {x: 0, y: 0, z: this.force.z};\n } else {\n this.force = {x: 0, y: 0};\n }\n // return;\n } else {\n let kineticFrictionDirection = PointCal.multiplyVectorByScalar(PointCal.unitVector({x: this._linearVelocity.x, y: this._linearVelocity.y}), -1);\n let kineticFriction = PointCal.multiplyVectorByScalar(kineticFrictionDirection, this.dynamicFrictionCoeff * this.mass * 9.81);\n this.force = PointCal.addVector(this.force, kineticFriction);\n }\n }\n const angularDamping = this._angularVelocity != 0 ? this._angularVelocity > 0 ? -this.angularDampingFactor : this.angularDampingFactor : 0;\n // console.log(\"angular velocity\", this._angularVelocity);\n // console.log(\"angular damping\", angularDamping);\n if (Math.abs(this._angularVelocity) < Math.abs(angularDamping)) {\n this._angularVelocity = 0;\n } else {\n this._angularVelocity += angularDamping;\n }\n this._orientationAngle += this._angularVelocity * deltaTime;\n if (PointCal.magnitude({x: this._linearVelocity.x, y: this._linearVelocity.y}) < PointCal.magnitude(PointCal.divideVectorByScalar(PointCal.multiplyVectorByScalar(this.force, deltaTime), this.mass))){\n if (this._linearVelocity.z != undefined) {\n this._linearVelocity = {x: 0, y: 0, z: this._linearVelocity.z};\n } else {\n this._linearVelocity = {x: 0, y: 0};\n }\n }\n const gravitationalForce = -9.81 * this._mass;\n this.force = PointCal.addVector(this.force, {x: 0, y: 0, z: gravitationalForce});\n const deltaLinearVelocity = PointCal.divideVectorByScalar(PointCal.multiplyVectorByScalar(this.force, deltaTime), this.mass);\n this._linearVelocity = PointCal.addVector(this._linearVelocity, deltaLinearVelocity);\n const deltaCenter = PointCal.multiplyVectorByScalar(this._linearVelocity, deltaTime);\n // console.log('delta center', deltaCenter);\n this._center = PointCal.addVector(this._center, deltaCenter);\n if (this._center.z != undefined && this._center.z < 0) {\n this._center.z = 0;\n }\n this.force = {x: 0, y: 0};\n }\n\n get center(): Point {\n return this._center;\n }\n\n set center(dest: Point){\n this._center = dest;\n }\n\n get linearVelocity(): Point {\n return this._linearVelocity;\n }\n\n set linearVelocity(dest: Point){\n this._linearVelocity = dest;\n }\n\n get mass(): number{\n return this._mass;\n }\n\n get staticFrictionCoeff(): number{\n return this._staticFrictionCoeff;\n }\n\n set staticFrictionCoeff(coeff: number){\n this._staticFrictionCoeff = coeff;\n }\n\n abstract get momentOfInertia(): number;\n abstract getMinMaxProjection(unitvector: Point): {min: number, max: number};\n abstract getCollisionAxes(relativeBody: RigidBody): Point[];\n abstract get AABB(): {min: Point, max: Point};\n abstract significantVertex(collisionNormal: Point): Point;\n abstract getSignificantVertices(collisionNormal: Point): Point[];\n abstract getNormalOfSignificantFace(collisionNormal: Point): Point;\n abstract getAdjacentFaces(collisionNormal: Point): {startPoint: {coord: Point, index: number}, endPoint: {coord: Point, index: number}}[];\n\n // Sleeping methods\n setSleeping(sleeping: boolean): void {\n if (sleeping && !this.isSleeping) {\n this.isSleeping = true;\n this._linearVelocity = { x: 0, y: 0 };\n this._angularVelocity = 0;\n } else if (!sleeping && this.isSleeping) {\n this.isSleeping = false;\n this.timeAtRest = 0;\n }\n }\n\n updateSleeping(deltaTime: number): void {\n if (this.isStatic() || this.isMovingStatic()) return;\n\n const speed = PointCal.magnitude(this._linearVelocity);\n const angularSpeed = Math.abs(this._angularVelocity);\n\n if (speed < this.sleepThreshold && angularSpeed < this.sleepThreshold) {\n this.timeAtRest += deltaTime;\n if (this.timeAtRest >= this.sleepTime) {\n this.setSleeping(true);\n }\n } else {\n this.timeAtRest = 0;\n if (this.isSleeping) {\n this.setSleeping(false);\n }\n }\n }\n}\n\nexport class VisaulCircleBody implements VisualComponent, RigidBody {\n\n private _circle: Circle;\n private _context: CanvasRenderingContext2D;\n \n // Collision filtering\n public collisionFilter: CollisionFilter = { ...DEFAULT_COLLISION_FILTER };\n \n // Sleeping system\n public isSleeping: boolean = false;\n public sleepThreshold: number = 0.01;\n public sleepTime: number = 0.5;\n public timeAtRest: number = 0;\n\n constructor(center: Point = {x: 0, y: 0}, radius: number, drawingContext: CanvasRenderingContext2D, _orientationAngle: number = 0, mass: number = 50, isStatic: boolean = false, frictionEnabled: boolean = true) {\n this._circle = new Circle(center, radius, _orientationAngle, mass, isStatic, frictionEnabled);\n this._context = drawingContext;\n }\n\n draw(ctx: CanvasRenderingContext2D): void {\n ctx.beginPath();\n ctx.arc(this._circle.center.x, this._circle.center.y, this._circle.radius, 0, 2 * Math.PI);\n ctx.stroke();\n }\n\n step(deltaTime: number): void {\n this._circle.step(deltaTime);\n this.draw(this._context);\n }\n\n isStatic(): boolean {\n return this._circle.isStatic();\n }\n\n isMovingStatic(): boolean {\n return this._circle.isMovingStatic();\n }\n\n getMinMaxProjection(unitvector: Point): { min: number; max: number; } {\n return this._circle.getMinMaxProjection(unitvector);\n }\n\n getCollisionAxes(relativeBody: RigidBody): Point[] {\n return this._circle.getCollisionAxes(relativeBody);\n }\n\n applyForce(force: Point): void {\n this._circle.applyForce(force);\n }\n\n get AABB(): { min: Point; max: Point; } {\n return this._circle.AABB;\n }\n\n getMass(): number {\n return this._circle.mass;\n }\n\n applyForceInOrientation(force: Point): void {\n this._circle.applyForceInOrientation(force);\n }\n\n move(delta: Point): void {\n this._circle.move(delta);\n }\n\n getSignificantVertices(collisionNormal: Point): Point[] {\n return this._circle.getSignificantVertices(collisionNormal);\n }\n\n get center(): Point {\n return this._circle.center;\n }\n\n set center(dest: Point){\n this._circle.center = dest;\n }\n\n get linearVelocity(): Point {\n return this._circle.linearVelocity;\n }\n\n set linearVelocity(dest: Point){\n this._circle.linearVelocity = dest;\n }\n\n get orientationAngle(){\n return this._circle.orientationAngle;\n }\n\n significantVertex(collisionNormal: Point): Point {\n return this._circle.significantVertex(collisionNormal);\n }\n\n set angularVelocity(angularVelocity: number){\n this._circle.angularVelocity = angularVelocity;\n }\n\n get angularVelocity(): number{\n return this._circle.angularVelocity;\n }\n\n get mass(): number{\n return this._circle.mass;\n }\n\n getNormalOfSignificantFace(collisionNormal: Point): Point {\n return this._circle.getNormalOfSignificantFace(collisionNormal);\n }\n\n get staticFrictionCoeff(): number{\n return this._circle.staticFrictionCoeff;\n }\n\n set staticFrictionCoeff(coeff: number){\n this._circle.staticFrictionCoeff = coeff;\n }\n\n getAdjacentFaces(collisionNormal: Point): {startPoint: {coord: Point, index: number}, endPoint: {coord: Point, index: number}}[] {\n return this._circle.getAdjacentFaces(collisionNormal);\n }\n\n get momentOfInertia(): number {\n return this._circle.momentOfInertia;\n }\n\n // Sleeping methods\n setSleeping(sleeping: boolean): void {\n if (sleeping && !this.isSleeping) {\n this.isSleeping = true;\n this._circle.linearVelocity = { x: 0, y: 0 };\n this._circle.angularVelocity = 0;\n } else if (!sleeping && this.isSleeping) {\n this.isSleeping = false;\n this.timeAtRest = 0;\n }\n }\n\n updateSleeping(deltaTime: number): void {\n if (this._circle.isStatic() || this._circle.isMovingStatic()) return;\n\n const speed = PointCal.magnitude(this._circle.linearVelocity);\n const angularSpeed = Math.abs(this._circle.angularVelocity);\n\n if (speed < this.sleepThreshold && angularSpeed < this.sleepThreshold) {\n this.timeAtRest += deltaTime;\n if (this.timeAtRest >= this.sleepTime) {\n this.setSleeping(true);\n }\n } else {\n this.timeAtRest = 0;\n if (this.isSleeping) {\n this.setSleeping(false);\n }\n }\n }\n\n}\n\nexport class VisualPolygonBody implements VisualComponent, RigidBody {\n \n private _polygon: Polygon;\n private _context: CanvasRenderingContext2D;\n \n // Collision filtering\n public collisionFilter: CollisionFilter = { ...DEFAULT_COLLISION_FILTER };\n \n // Sleeping system\n public isSleeping: boolean = false;\n public sleepThreshold: number = 0.01;\n public sleepTime: number = 0.5;\n public timeAtRest: number = 0;\n\n constructor(center: Point = {x: 0, y: 0}, vertices: Point[], drawingContext: CanvasRenderingContext2D, _orientationAngle: number = 0, mass: number = 50, isStatic: boolean = false, frictionEnabled: boolean = true) {\n this._polygon = new Polygon(center, vertices, _orientationAngle, mass, isStatic, frictionEnabled);\n this._context = drawingContext;\n }\n\n draw(ctx: CanvasRenderingContext2D): void {\n ctx.beginPath();\n let vertices = this._polygon.getVerticesAbsCoord();\n ctx.moveTo(vertices[0].x, vertices[0].y);\n vertices.forEach(vertex => {\n ctx.lineTo(vertex.x, vertex.y);\n });\n ctx.lineTo(vertices[0].x, vertices[0].y);\n ctx.stroke();\n // ctx.beginPath();\n // ctx.rect(this._polygon.AABB.min.x, this._polygon.AABB.min.y, this._polygon.AABB.max.x - this._polygon.AABB.min.x, this._polygon.AABB.max.y - this._polygon.AABB.min.y);\n // ctx.stroke();\n }\n\n step(deltaTime: number): void {\n this._polygon.step(deltaTime);\n this.draw(this._context);\n }\n\n isStatic(): boolean {\n return this._polygon.isStatic();\n }\n\n isMovingStatic(): boolean {\n return this._polygon.isMovingStatic();\n }\n\n getMinMaxProjection(unitvector: Point): { min: number; max: number; } {\n return this._polygon.getMinMaxProjection(unitvector);\n }\n\n getCollisionAxes(relativeBody: RigidBody): Point[] {\n return this._polygon.getCollisionAxes(relativeBody);\n }\n\n applyForce(force: Point): void {\n this._polygon.applyForce(force);\n }\n\n applyForceInOrientation(force: Point): void {\n this._polygon.applyForceInOrientation(force);\n }\n\n setLinearVelocity(linearVelocity: Point): void {\n this._polygon.setLinearVelocity(linearVelocity);\n }\n\n move(delta: Point): void {\n this._polygon.move(delta);\n }\n\n get center(): Point {\n return this._polygon.center;\n }\n\n set center(dest: Point){\n this._polygon.center = dest;\n }\n\n get linearVelocity(): Point {\n return this._polygon.linearVelocity;\n }\n\n set linearVelocity(dest: Point){\n this._polygon.linearVelocity = dest;\n }\n\n get angularVelocity(): number{\n return this._polygon.angularVelocity;\n }\n\n set angularVelocity(angularVelocity: number){\n this._polygon.angularVelocity = angularVelocity;\n }\n\n get orientationAngle(): number{\n return this._polygon.orientationAngle;\n }\n\n significantVertex(collisionNormal: Point): Point {\n return this._polygon.significantVertex(collisionNormal);\n }\n\n getSignificantVertices(collisionNormal: Point): Point[] {\n return this._polygon.getSignificantVertices(collisionNormal);\n }\n\n get AABB(): {min: Point, max: Point}{\n return this._polygon.AABB;\n }\n\n get mass(): number{\n return this._polygon.mass;\n }\n \n get staticFrictionCoeff(): number{\n return this._polygon.staticFrictionCoeff;\n }\n\n set staticFrictionCoeff(coeff: number){\n this._polygon.staticFrictionCoeff = coeff;\n }\n\n get momentOfInertia(): number {\n return this._polygon.momentOfInertia;\n }\n\n getNormalOfSignificantFace(collisionNormal: Point): Point {\n return this._polygon.getNormalOfSignificantFace(collisionNormal);\n }\n\n getAdjacentFaces(collisionNormal: Point): {startPoint: {coord: Point, index: number}, endPoint: {coord: Point, index: number}}[] {\n return this._polygon.getAdjacentFaces(collisionNormal);\n }\n\n // Sleeping methods\n setSleeping(sleeping: boolean): void {\n if (sleeping && !this.isSleeping) {\n this.isSleeping = true;\n this._polygon.linearVelocity = { x: 0, y: 0 };\n this._polygon.angularVelocity = 0;\n } else if (!sleeping && this.isSleeping) {\n this.isSleeping = false;\n this.timeAtRest = 0;\n }\n }\n\n updateSleeping(deltaTime: number): void {\n if (this._polygon.isStatic() || this._polygon.isMovingStatic()) return;\n\n const speed = PointCal.magnitude(this._polygon.linearVelocity);\n const angularSpeed = Math.abs(this._polygon.angularVelocity);\n\n if (speed < this.sleepThreshold && angularSpeed < this.sleepThreshold) {\n this.timeAtRest += deltaTime;\n if (this.timeAtRest >= this.sleepTime) {\n this.setSleeping(true);\n }\n } else {\n this.timeAtRest = 0;\n if (this.isSleeping) {\n this.setSleeping(false);\n }\n }\n }\n}\n\nexport class Polygon extends BaseRigidBody {\n\n private vertices: Point[];\n private _momentOfInertia: number;\n\n constructor(center: Point = {x: 0, y: 0}, vertices: Point[], _orientationAngle: number = 0, mass: number = 50, isStatic: boolean = false, frictionEnabled: boolean = true) {\n super(center, _orientationAngle, mass, isStatic, frictionEnabled);\n this.vertices = vertices;\n this.step = this.step.bind(this);\n\n let numerator = this.vertices.reduce((acc, vertex, index) => {\n let nextPointIndex = index < this.vertices.length - 1 ? index + 1 : 0;\n let nextPoint = this.vertices[nextPointIndex];\n let crossProduct = PointCal.crossProduct(nextPoint, vertex);\n return acc + PointCal.magnitude(crossProduct) * (PointCal.dotProduct(vertex, vertex) + PointCal.dotProduct(vertex, nextPoint) + PointCal.dotProduct(nextPoint, nextPoint));\n }, 0);\n\n let denomiator = this.vertices.reduce((acc, vertex, index) => {\n return acc + PointCal.magnitude(PointCal.crossProduct(this.vertices[index < this.vertices.length - 1 ? index + 1 : 0], vertex));\n }, 0);\n\n \n this._momentOfInertia = this._mass * numerator / (6 * denomiator);\n }\n\n\n getVerticesAbsCoord(): Point[]{\n return this.vertices.map(vertex=>{\n return PointCal.addVector(this._center, PointCal.rotatePoint(vertex, this._orientationAngle));\n });\n }\n\n getCollisionAxes(relativeBody: RigidBody): Point[] {\n return this.getVerticesAbsCoord().map((vertex, index, absVertices)=>{\n let vector = PointCal.subVector(vertex, absVertices[absVertices.length - 1]);\n if (index > 0){\n vector = PointCal.subVector(vertex, absVertices[index - 1]); \n }\n return PointCal.unitVector(PointCal.rotatePoint(vector, Math.PI / 2));\n });\n }\n\n getMinMaxProjection(unitvector: Point): { min: number; max: number; } {\n let vertices = this.getVerticesAbsCoord();\n \n let projections = vertices.map( vertex => {\n return PointCal.dotProduct(vertex, unitvector);\n });\n\n \n return {min: Math.min(...projections), max: Math.max(...projections)};\n }\n\n get AABB(): { min: Point; max: Point; } {\n let points = this.getVerticesAbsCoord();\n let xCoords = points.map(vertex => vertex.x);\n let yCoords = points.map(vertex => vertex.y);\n return {min: {x: Math.min(...xCoords), y: Math.min(...yCoords)}, max: {x: Math.max(...xCoords), y: Math.max(...yCoords)}};\n }\n\n significantVertex(collisionNormal: Point): Point {\n let vertices = this.getVerticesAbsCoord();\n let verticesProjected = vertices.map(vertex => PointCal.dotProduct(vertex, collisionNormal));\n let maxIndex = verticesProjected.indexOf(Math.max(...verticesProjected));\n return vertices[maxIndex];\n }\n\n getSignificantVertices(collisionNormal: Point): Point[]{\n let vertices = this.getVerticesAbsCoord();\n let verticesProjected = vertices.map(vertex => PointCal.dotProduct(vertex, collisionNormal));\n let maxIndex = verticesProjected.indexOf(Math.max(...verticesProjected));\n const tipVertex = vertices[maxIndex];\n let prevPointIndex = maxIndex > 0 ? maxIndex - 1 : vertices.length - 1;\n let nextPointIndex = maxIndex < vertices.length - 1 ? maxIndex + 1 : 0;\n const prevPoint = vertices[prevPointIndex];\n const nextPoint = vertices[nextPointIndex];\n const prevPointProjected = PointCal.dotProduct(prevPoint, collisionNormal);\n const nextPointProjected = PointCal.dotProduct(nextPoint, collisionNormal);\n if (prevPointProjected > nextPointProjected) {\n return [prevPoint, tipVertex];\n } else {\n return [tipVertex, nextPoint];\n }\n }\n\n getNormalOfSignificantFace(collisionNormal: Point): Point{\n const vertices = this.getSignificantVertices(collisionNormal);\n const direction = PointCal.unitVectorFromA2B(vertices[0], vertices[1]);\n return PointCal.rotatePoint(direction, -Math.PI / 2);\n }\n\n getAdjacentFaces(collisionNormal: Point): {startPoint: {coord: Point, index: number}, endPoint: {coord: Point, index: number}}[]{\n let vertices = this.getVerticesAbsCoord();\n let verticesProjected = vertices.map(vertex => PointCal.dotProduct(vertex, collisionNormal));\n let maxIndex = verticesProjected.indexOf(Math.max(...verticesProjected));\n const tipVertex = vertices[maxIndex];\n let prevPointIndex = maxIndex > 0 ? maxIndex - 1 : vertices.length - 1;\n let nextPointIndex = maxIndex < vertices.length - 1 ? maxIndex + 1 : 0;\n const prevPoint = vertices[prevPointIndex];\n const nextPoint = vertices[nextPointIndex];\n const prevPointProjected = PointCal.dotProduct(prevPoint, collisionNormal);\n const nextPointProjected = PointCal.dotProduct(nextPoint, collisionNormal);\n const adjacentFaces: Point[] = [];\n const adjacentFacesWithIndex: {startPoint: {coord: Point, index: number}, endPoint: {coord: Point, index: number}}[] = [];\n if (prevPointProjected > nextPointProjected) {\n adjacentFaces.push(prevPoint, tipVertex);\n adjacentFacesWithIndex.push({startPoint: {coord: prevPoint, index: prevPointIndex}, endPoint: {coord: tipVertex, index: maxIndex}});\n\n // the nextface is the next face\n adjacentFacesWithIndex.unshift({startPoint: {coord: tipVertex, index: maxIndex}, endPoint: {coord: nextPoint, index: nextPointIndex}});\n // need to get the previous face of the previous face\n let prevPrevPointIndex = prevPointIndex > 0 ? prevPointIndex - 1 : vertices.length - 1;\n adjacentFacesWithIndex.unshift({startPoint: {coord: vertices[prevPrevPointIndex], index: prevPrevPointIndex}, endPoint: {coord: prevPoint, index: prevPointIndex}});\n } else {\n adjacentFaces.push(tipVertex, nextPoint);\n adjacentFacesWithIndex.push({startPoint: {coord: tipVertex, index: maxIndex}, endPoint: {coord: nextPoint, index: nextPointIndex}});\n\n // need to get the next face of the next face\n let nextNextPointIndex = nextPointIndex < vertices.length - 1 ? nextPointIndex + 1 : 0;\n adjacentFacesWithIndex.unshift({startPoint: {coord: nextPoint, index: nextPointIndex}, endPoint: {coord: vertices[nextNextPointIndex], index: nextNextPointIndex}})\n\n // the prevoius face is the previous face\n adjacentFacesWithIndex.unshift({startPoint: {coord: prevPoint, index: prevPointIndex}, endPoint: {coord: tipVertex, index: maxIndex}});\n }\n \n return adjacentFacesWithIndex;\n }\n\n get momentOfInertia(): number {\n return this._momentOfInertia;\n }\n\n}\n\nexport class Circle extends BaseRigidBody {\n\n private _radius: number;\n private _momentOfInertia: number;\n\n constructor(center: Point = {x: 0, y: 0}, radius: number, _orientationAngle: number = 0, mass: number = 50, isStatic: boolean = false, frictionEnabled: boolean = true) {\n super(center, _orientationAngle, mass, isStatic, frictionEnabled);\n this._radius = radius;\n this.step = this.step.bind(this);\n this._momentOfInertia = this._mass * this._radius * this._radius / 2;\n }\n\n getMinMaxProjection(unitvector: Point): { min: number; max: number; } {\n let PositiveFurthest = PointCal.addVector(this._center, PointCal.multiplyVectorByScalar(unitvector, this._radius));\n let NegativeFurthest = PointCal.addVector(this._center, PointCal.multiplyVectorByScalar(unitvector, -this._radius));\n return {min: PointCal.dotProduct(NegativeFurthest, unitvector), max: PointCal.dotProduct(PositiveFurthest, unitvector)};\n }\n\n getCollisionAxes(relativeBody: RigidBody): Point[] {\n return [PointCal.unitVector(PointCal.subVector(relativeBody.center, this._center))];\n }\n\n get AABB(): { min: Point; max: Point; } {\n return {min: PointCal.subVector(this._center, {x: this._radius, y: this._radius}), max: PointCal.addVector(this._center, {x: this._radius, y: this._radius})};\n }\n\n significantVertex(collisionNormal: Point): Point {\n return PointCal.addVector(this._center, PointCal.multiplyVectorByScalar(collisionNormal, this._radius));\n }\n\n get radius(): number {\n return this._radius;\n }\n\n getSignificantVertices(collisionNormal: Point): Point[]{\n return [PointCal.addVector(this._center, PointCal.multiplyVectorByScalar(collisionNormal, this._radius))];\n }\n\n getNormalOfSignificantFace(collisionNormal: Point): Point{\n return PointCal.unitVector(collisionNormal);\n }\n\n getAdjacentFaces(collisionNormal: Point): {startPoint: {coord: Point, index: number}, endPoint: {coord: Point, index: number}}[]{\n return [];\n }\n\n get momentOfInertia(): number {\n return this._momentOfInertia;\n }\n}\n",
|
|
6
|
+
"export interface CollisionFilter {\n category: number; // What category this body belongs to\n mask: number; // What categories this body can collide with\n group: number; // Collision group (negative = never collide, positive = always collide if same group)\n}\n\nexport const DEFAULT_COLLISION_FILTER: CollisionFilter = {\n category: 0x0001,\n mask: 0xFFFF, \n group: 0\n};\n\nexport function canCollide(filterA: CollisionFilter, filterB: CollisionFilter): boolean {\n // If objects are in the same group\n if (filterA.group !== 0 && filterA.group === filterB.group) {\n return filterA.group > 0; // Positive groups collide, negative groups don't\n }\n\n // Check category-mask pairs\n return (filterA.category & filterB.mask) !== 0 && (filterB.category & filterA.mask) !== 0;\n}\n\n// Common collision categories for games\nexport const CollisionCategory = {\n STATIC: 0x0001, // Walls, floors, static objects\n DYNAMIC: 0x0002, // Moving objects \n PLAYER: 0x0004, // Player character\n ENEMY: 0x0008, // Enemy entities\n PROJECTILE: 0x0010, // Bullets, projectiles\n SENSOR: 0x0020, // Trigger zones, sensors\n PICKUP: 0x0040, // Items that can be collected\n PLATFORM: 0x0080, // One-way platforms\n} as const;",
|
|
7
|
+
"import { Point } from \"@ue-too/math\";\nimport { RigidBody } from \"./rigidbody\";\nimport { SpatialIndex, SpatialIndexObject } from \"./dynamic-tree\";\n\nexport class RectangleBound{\n private bottomLeft: Point;\n private width: number;\n private height: number;\n\n constructor(bottomLeft: Point, width: number, height: number){\n this.bottomLeft = bottomLeft;\n this.width = width;\n this.height = height;\n }\n\n getWidth(){\n return this.width;\n }\n\n getHeight(){\n return this.height;\n }\n\n getbottomLeft(){\n return this.bottomLeft;\n }\n}\n\nexport type QuadTreeObject = SpatialIndexObject;\n\nexport class QuadTree<T extends QuadTreeObject> implements SpatialIndex<T> {\n private MAX_OBJECTS = 10; // per node\n private MAX_LEVELS = 5;\n\n private level: number;\n private objects: T[] = [];\n private nodes: (QuadTree<T> | undefined)[] = [];\n private bounds: RectangleBound;\n \n\n constructor(level: number, bounds: RectangleBound){\n this.level = level;\n this.objects = [];\n this.bounds = bounds;\n this.nodes = [undefined, undefined, undefined, undefined];\n }\n\n draw(context: CanvasRenderingContext2D){\n context.beginPath();\n context.rect(this.bounds.getbottomLeft().x, this.bounds.getbottomLeft().y, this.bounds.getWidth(), this.bounds.getHeight());\n context.stroke();\n // console.log(\"objects: \", this.objects.length, \"level: \", this.level);\n for(let index = 0; index < this.nodes.length; index++){\n let node = this.nodes[index];\n if(node != undefined){\n node.draw(context);\n }\n }\n }\n\n clear(){\n this.objects = [];\n for(let index = 0; index < this.nodes.length; index++){\n let node = this.nodes[index];\n if(node != undefined){\n node.clear();\n node = undefined;\n }\n }\n }\n\n split(){\n // console.log(\"split\");\n let subWidth = this.bounds.getWidth() / 2;\n let subHeight = this.bounds.getHeight() / 2;\n let bottomLeft = this.bounds.getbottomLeft();\n // bottom left is the first node and it goes clock wise \n this.nodes[0] = new QuadTree<T>(this.level + 1, new RectangleBound({x: bottomLeft.x, y: bottomLeft.y}, subWidth, subHeight));\n this.nodes[1] = new QuadTree<T>(this.level + 1, new RectangleBound({x: bottomLeft.x, y: bottomLeft.y + subHeight}, subWidth, subHeight));\n this.nodes[2] = new QuadTree<T>(this.level + 1, new RectangleBound({x: bottomLeft.x + subWidth, y: bottomLeft.y + subHeight}, subWidth, subHeight));\n this.nodes[3] = new QuadTree<T>(this.level + 1, new RectangleBound({x: bottomLeft.x + subWidth, y: bottomLeft.y}, subWidth, subHeight));\n }\n\n getIndex(vBody: T){\n let midPoint = {x: this.bounds.getbottomLeft().x + this.bounds.getWidth() / 2, y: this.bounds.getbottomLeft().y + this.bounds.getHeight() / 2};\n let points = vBody.AABB;\n let bottom = points.max.y < midPoint.y && points.min.y > this.bounds.getbottomLeft().y;\n let left = points.max.x < midPoint.x && points.min.x > this.bounds.getbottomLeft().x;\n let right = points.max.x > midPoint.x && points.min.x > midPoint.x;\n let top = points.max.y > midPoint.y && points.min.y > midPoint.y;\n // console.log(\"level\", this.level);\n if (bottom && left){\n return 0;\n } else if (bottom && right){\n return 3;\n } else if (top && left){\n return 1;\n } else if (top && right){\n return 2;\n }\n return -1;\n }\n\n insert(vBody: T){\n let node = this.nodes[0];\n if (node != undefined){\n let index = this.getIndex(vBody);\n\n if (index !== -1){\n node = this.nodes[index];\n node?.insert(vBody);\n return;\n }\n }\n\n this.objects.push(vBody);\n if(this.objects.length > this.MAX_OBJECTS && this.level < this.MAX_LEVELS){\n if (this.nodes[0] == null || this.nodes[0] == undefined){\n this.split();\n }\n let i = 0;\n while (i < this.objects.length){\n let index = this.getIndex(this.objects[i]);\n let node = this.nodes[index];\n if (index != -1 && node !== undefined){\n let vBody = this.objects[i];\n this.objects.splice(i, 1);\n node.insert(vBody);\n } else{\n i++;\n }\n }\n }\n }\n\n retrieve(vBody: T): T[]{\n let index = this.getIndex(vBody);\n let res = [];\n let node = this.nodes[index];\n if(index !== -1 && node !== undefined){\n res.push(...node.retrieve(vBody));\n }\n res.push(...this.objects);\n return res;\n }\n\n}",
|
|
8
|
+
"import { Point } from \"@ue-too/math\";\n\nexport interface SpatialIndexObject {\n AABB: { min: Point, max: Point };\n}\n\nexport interface SpatialIndex<T extends SpatialIndexObject> {\n clear(): void;\n insert(object: T): void;\n retrieve(object: T): T[];\n draw?(context: CanvasRenderingContext2D): void;\n}\n\ninterface AABB {\n min: Point;\n max: Point;\n}\n\nclass TreeNode<T extends SpatialIndexObject> {\n public parent: TreeNode<T> | null = null;\n public children: [TreeNode<T> | null, TreeNode<T> | null] = [null, null];\n public aabb: AABB = { min: { x: 0, y: 0 }, max: { x: 0, y: 0 } };\n public object: T | null = null;\n public height: number = 0;\n\n constructor(object?: T) {\n if (object) {\n this.setLeaf(object);\n }\n }\n\n isLeaf(): boolean {\n return this.children[0] === null;\n }\n\n setLeaf(object: T): void {\n this.object = object;\n this.updateAABB();\n this.children = [null, null];\n this.height = 0;\n }\n\n setBranch(child1: TreeNode<T>, child2: TreeNode<T>): void {\n child1.parent = this;\n child2.parent = this;\n this.children = [child1, child2];\n this.object = null;\n this.updateAABB();\n this.height = 1 + Math.max(child1.height, child2.height);\n }\n\n updateAABB(margin: number = 0.1): void {\n if (this.isLeaf() && this.object) {\n // Create \"fat\" AABB with margin for dynamic objects\n const obj = this.object.AABB;\n this.aabb = {\n min: { x: obj.min.x - margin, y: obj.min.y - margin },\n max: { x: obj.max.x + margin, y: obj.max.y + margin }\n };\n } else if (this.children[0] && this.children[1]) {\n // Union of children AABBs\n const aabb1 = this.children[0].aabb;\n const aabb2 = this.children[1].aabb;\n this.aabb = {\n min: {\n x: Math.min(aabb1.min.x, aabb2.min.x),\n y: Math.min(aabb1.min.y, aabb2.min.y)\n },\n max: {\n x: Math.max(aabb1.max.x, aabb2.max.x),\n y: Math.max(aabb1.max.y, aabb2.max.y)\n }\n };\n }\n }\n\n getSibling(): TreeNode<T> | null {\n if (!this.parent) return null;\n return this.parent.children[0] === this ? this.parent.children[1] : this.parent.children[0];\n }\n\n getBalance(): number {\n if (this.isLeaf()) return 0;\n const leftHeight = this.children[0] ? this.children[0].height : 0;\n const rightHeight = this.children[1] ? this.children[1].height : 0;\n return leftHeight - rightHeight;\n }\n}\n\n// Endpoint for Sweep and Prune algorithm\ninterface Endpoint<T> {\n value: number;\n isMin: boolean;\n object: T;\n id: number;\n}\n\n// Optimized Sweep and Prune implementation\nexport class SweepAndPrune<T extends SpatialIndexObject> implements SpatialIndex<T> {\n private xEndpoints: Endpoint<T>[] = [];\n private objects: Map<T, { minEndpoint: Endpoint<T>, maxEndpoint: Endpoint<T> }> = new Map();\n private nextId: number = 0;\n\n clear(): void {\n this.xEndpoints = [];\n this.objects.clear();\n this.nextId = 0;\n }\n\n insert(object: T): void {\n const id = this.nextId++;\n \n const minEndpoint: Endpoint<T> = { value: object.AABB.min.x, isMin: true, object, id };\n const maxEndpoint: Endpoint<T> = { value: object.AABB.max.x, isMin: false, object, id };\n \n this.objects.set(object, { minEndpoint, maxEndpoint });\n\n // Use binary search + splice for O(n) insertion instead of O(n log n) sort\n this.insertEndpointSorted(minEndpoint);\n this.insertEndpointSorted(maxEndpoint);\n }\n\n update(object: T): void {\n const endpoints = this.objects.get(object);\n if (!endpoints) return;\n\n const newMinX = object.AABB.min.x;\n const newMaxX = object.AABB.max.x;\n\n // Update endpoint values and maintain sorted order\n if (endpoints.minEndpoint.value !== newMinX) {\n this.removeEndpoint(endpoints.minEndpoint);\n endpoints.minEndpoint.value = newMinX;\n this.insertEndpointSorted(endpoints.minEndpoint);\n }\n\n if (endpoints.maxEndpoint.value !== newMaxX) {\n this.removeEndpoint(endpoints.maxEndpoint);\n endpoints.maxEndpoint.value = newMaxX;\n this.insertEndpointSorted(endpoints.maxEndpoint);\n }\n }\n\n remove(object: T): void {\n const endpoints = this.objects.get(object);\n if (!endpoints) return;\n\n this.removeEndpoint(endpoints.minEndpoint);\n this.removeEndpoint(endpoints.maxEndpoint);\n this.objects.delete(object);\n }\n\n retrieve(queryObject: T): T[] {\n const result: T[] = [];\n const queryMin = queryObject.AABB.min.x;\n const queryMax = queryObject.AABB.max.x;\n\n // Find all objects that overlap on x-axis using sweep line\n for (const endpoint of this.xEndpoints) {\n if (endpoint.value > queryMax) break;\n \n if (endpoint.isMin && endpoint.object !== queryObject) {\n // Object starts - check if it overlaps with query on x-axis\n const objMax = this.objects.get(endpoint.object)?.maxEndpoint.value;\n if (objMax !== undefined && objMax >= queryMin) {\n // Check y-axis overlap\n if (this.aabbIntersects(endpoint.object.AABB, queryObject.AABB)) {\n result.push(endpoint.object);\n }\n }\n }\n }\n\n return result;\n }\n\n // Efficient method to find all collision pairs - the main strength of sweep-and-prune\n findAllOverlaps(): Array<{a: T, b: T}> {\n const pairs: Array<{a: T, b: T}> = [];\n const activeObjects = new Set<T>();\n \n for (const endpoint of this.xEndpoints) {\n if (endpoint.isMin) {\n // Check against all currently active objects\n for (const activeObj of activeObjects) {\n if (this.aabbIntersects(endpoint.object.AABB, activeObj.AABB)) {\n pairs.push({a: endpoint.object, b: activeObj});\n }\n }\n activeObjects.add(endpoint.object);\n } else {\n activeObjects.delete(endpoint.object);\n }\n }\n return pairs;\n }\n\n private insertEndpointSorted(endpoint: Endpoint<T>): void {\n // Binary search for insertion position\n let left = 0;\n let right = this.xEndpoints.length;\n \n while (left < right) {\n const mid = Math.floor((left + right) / 2);\n const midEndpoint = this.xEndpoints[mid];\n \n if (midEndpoint.value < endpoint.value || \n (midEndpoint.value === endpoint.value && midEndpoint.isMin && !endpoint.isMin)) {\n left = mid + 1;\n } else {\n right = mid;\n }\n }\n \n this.xEndpoints.splice(left, 0, endpoint);\n }\n\n private removeEndpoint(endpoint: Endpoint<T>): void {\n const index = this.xEndpoints.indexOf(endpoint);\n if (index !== -1) {\n this.xEndpoints.splice(index, 1);\n }\n }\n\n private aabbIntersects(aabb1: { min: Point, max: Point }, aabb2: { min: Point, max: Point }): boolean {\n return !(aabb1.max.x < aabb2.min.x || \n aabb1.min.x > aabb2.max.x || \n aabb1.max.y < aabb2.min.y || \n aabb1.min.y > aabb2.max.y);\n }\n\n // Enhanced visualization showing active sweep line and overlaps\n draw?(context: CanvasRenderingContext2D): void {\n context.strokeStyle = 'orange';\n context.lineWidth = 1;\n context.globalAlpha = 0.3;\n \n // Draw vertical lines at object boundaries\n for (const endpoint of this.xEndpoints) {\n context.beginPath();\n context.moveTo(endpoint.value, -1000);\n context.lineTo(endpoint.value, 1000);\n context.stroke();\n \n // Label min/max endpoints\n context.fillStyle = endpoint.isMin ? 'green' : 'red';\n context.fillText(endpoint.isMin ? 'min' : 'max', endpoint.value, -950);\n }\n \n context.globalAlpha = 1.0;\n }\n\n // Get statistics for performance monitoring\n getStats(): { endpointCount: number, objectCount: number } {\n return {\n endpointCount: this.xEndpoints.length,\n objectCount: this.objects.size\n };\n }\n}\n\nexport class DynamicTree<T extends SpatialIndexObject> implements SpatialIndex<T> {\n private root: TreeNode<T> | null = null;\n private nodeCount: number = 0;\n private margin: number = 0.1; // Fat AABB margin\n\n clear(): void {\n this.root = null;\n this.nodeCount = 0;\n }\n\n insert(object: T): void {\n const node = new TreeNode(object);\n this.insertNode(node);\n }\n\n private insertNode(node: TreeNode<T>): void {\n this.nodeCount++;\n\n if (!this.root) {\n this.root = node;\n return;\n }\n\n // Find the best sibling for the new node\n let sibling = this.findBestSibling(node);\n \n // Create new parent\n const oldParent = sibling.parent;\n const newParent = new TreeNode<T>();\n newParent.parent = oldParent;\n newParent.setBranch(sibling, node);\n\n if (oldParent) {\n // Replace sibling with newParent in oldParent\n if (oldParent.children[0] === sibling) {\n oldParent.children[0] = newParent;\n } else {\n oldParent.children[1] = newParent;\n }\n } else {\n // sibling was root\n this.root = newParent;\n }\n\n // Walk back up the tree fixing heights and AABBs\n let ancestor = newParent.parent;\n while (ancestor) {\n ancestor.updateAABB(this.margin);\n ancestor.height = 1 + Math.max(\n ancestor.children[0] ? ancestor.children[0].height : 0,\n ancestor.children[1] ? ancestor.children[1].height : 0\n );\n\n // Balance the tree\n ancestor = this.balance(ancestor);\n ancestor = ancestor.parent;\n }\n }\n\n private findBestSibling(node: TreeNode<T>): TreeNode<T> {\n let current = this.root!;\n\n while (!current.isLeaf()) {\n const child1 = current.children[0]!;\n const child2 = current.children[1]!;\n\n const area = this.getArea(current.aabb);\n const combinedAABB = this.combineAABB(current.aabb, node.aabb);\n const combinedArea = this.getArea(combinedAABB);\n\n // Cost of creating new parent for this node and current\n const cost = 2.0 * combinedArea;\n\n // Minimum cost of pushing node further down the tree\n const inheritanceCost = 2.0 * (combinedArea - area);\n\n // Cost of descending into child1\n let cost1: number;\n const aabb1 = this.combineAABB(node.aabb, child1.aabb);\n if (child1.isLeaf()) {\n cost1 = this.getArea(aabb1) + inheritanceCost;\n } else {\n const oldArea = this.getArea(child1.aabb);\n const newArea = this.getArea(aabb1);\n cost1 = (newArea - oldArea) + inheritanceCost;\n }\n\n // Cost of descending into child2\n let cost2: number;\n const aabb2 = this.combineAABB(node.aabb, child2.aabb);\n if (child2.isLeaf()) {\n cost2 = this.getArea(aabb2) + inheritanceCost;\n } else {\n const oldArea = this.getArea(child2.aabb);\n const newArea = this.getArea(aabb2);\n cost2 = (newArea - oldArea) + inheritanceCost;\n }\n\n // Descend according to the minimum cost\n if (cost < cost1 && cost < cost2) {\n break;\n }\n\n // Descend\n current = cost1 < cost2 ? child1 : child2;\n }\n\n return current;\n }\n\n private balance(node: TreeNode<T>): TreeNode<T> {\n if (node.isLeaf()) {\n return node;\n }\n\n const balance = node.getBalance();\n\n // Rotate if imbalanced\n if (balance < -1) {\n return this.rotateLeft(node);\n } else if (balance > 1) {\n return this.rotateRight(node);\n }\n\n return node;\n }\n\n private rotateLeft(node: TreeNode<T>): TreeNode<T> {\n const child2 = node.children[1]!;\n const child2Child1 = child2.children[0]!;\n const child2Child2 = child2.children[1]!;\n\n // Swap\n child2.children[0] = node;\n child2.parent = node.parent;\n node.parent = child2;\n\n // Update parent\n if (child2.parent) {\n if (child2.parent.children[0] === node) {\n child2.parent.children[0] = child2;\n } else {\n child2.parent.children[1] = child2;\n }\n } else {\n this.root = child2;\n }\n\n // Rotate\n if (child2Child1.height > child2Child2.height) {\n child2.children[1] = child2Child1;\n node.children[1] = child2Child2;\n child2Child2.parent = node;\n node.updateAABB(this.margin);\n child2.updateAABB(this.margin);\n node.height = 1 + Math.max(node.children[0]!.height, node.children[1]!.height);\n child2.height = 1 + Math.max(node.height, child2Child1.height);\n } else {\n child2.children[1] = child2Child2;\n node.children[1] = child2Child1;\n child2Child1.parent = node;\n node.updateAABB(this.margin);\n child2.updateAABB(this.margin);\n node.height = 1 + Math.max(node.children[0]!.height, node.children[1]!.height);\n child2.height = 1 + Math.max(node.height, child2Child2.height);\n }\n\n return child2;\n }\n\n private rotateRight(node: TreeNode<T>): TreeNode<T> {\n const child1 = node.children[0]!;\n const child1Child1 = child1.children[0]!;\n const child1Child2 = child1.children[1]!;\n\n // Swap\n child1.children[1] = node;\n child1.parent = node.parent;\n node.parent = child1;\n\n // Update parent\n if (child1.parent) {\n if (child1.parent.children[0] === node) {\n child1.parent.children[0] = child1;\n } else {\n child1.parent.children[1] = child1;\n }\n } else {\n this.root = child1;\n }\n\n // Rotate\n if (child1Child1.height > child1Child2.height) {\n child1.children[0] = child1Child1;\n node.children[0] = child1Child2;\n child1Child2.parent = node;\n node.updateAABB(this.margin);\n child1.updateAABB(this.margin);\n node.height = 1 + Math.max(node.children[0]!.height, node.children[1]!.height);\n child1.height = 1 + Math.max(child1Child1.height, node.height);\n } else {\n child1.children[0] = child1Child2;\n node.children[0] = child1Child1;\n child1Child1.parent = node;\n node.updateAABB(this.margin);\n child1.updateAABB(this.margin);\n node.height = 1 + Math.max(node.children[0]!.height, node.children[1]!.height);\n child1.height = 1 + Math.max(child1Child2.height, node.height);\n }\n\n return child1;\n }\n\n retrieve(object: T): T[] {\n const result: T[] = [];\n if (!this.root) return result;\n\n const stack: TreeNode<T>[] = [this.root];\n\n while (stack.length > 0) {\n const node = stack.pop()!;\n\n if (this.aabbIntersects(node.aabb, object.AABB)) {\n if (node.isLeaf()) {\n if (node.object && node.object !== object) {\n result.push(node.object);\n }\n } else {\n if (node.children[0]) stack.push(node.children[0]);\n if (node.children[1]) stack.push(node.children[1]);\n }\n }\n }\n\n return result;\n }\n\n draw(context: CanvasRenderingContext2D): void {\n if (!this.root) return;\n this.drawNode(context, this.root, 0);\n }\n\n private drawNode(context: CanvasRenderingContext2D, node: TreeNode<T>, depth: number): void {\n const { min, max } = node.aabb;\n \n // Different colors for different depths\n const colors = ['red', 'blue', 'green', 'orange', 'purple', 'brown'];\n context.strokeStyle = colors[depth % colors.length];\n context.lineWidth = Math.max(1, 3 - depth);\n\n context.beginPath();\n context.rect(min.x, min.y, max.x - min.x, max.y - min.y);\n context.stroke();\n\n if (!node.isLeaf()) {\n if (node.children[0]) this.drawNode(context, node.children[0], depth + 1);\n if (node.children[1]) this.drawNode(context, node.children[1], depth + 1);\n }\n }\n\n private getArea(aabb: AABB): number {\n return (aabb.max.x - aabb.min.x) * (aabb.max.y - aabb.min.y);\n }\n\n private combineAABB(aabb1: AABB, aabb2: AABB): AABB {\n return {\n min: {\n x: Math.min(aabb1.min.x, aabb2.min.x),\n y: Math.min(aabb1.min.y, aabb2.min.y)\n },\n max: {\n x: Math.max(aabb1.max.x, aabb2.max.x),\n y: Math.max(aabb1.max.y, aabb2.max.y)\n }\n };\n }\n\n private aabbIntersects(aabb1: AABB, aabb2: AABB): boolean {\n return !(aabb1.max.x < aabb2.min.x || \n aabb1.min.x > aabb2.max.x || \n aabb1.max.y < aabb2.min.y || \n aabb1.min.y > aabb2.max.y);\n }\n\n // Getter for tree statistics\n getStats(): { nodeCount: number, height: number } {\n return {\n nodeCount: this.nodeCount,\n height: this.root ? this.root.height : 0\n };\n }\n}",
|
|
9
|
+
"import { BaseRigidBody, RigidBody } from \"./rigidbody\";\nimport { PointCal, Point } from \"@ue-too/math\";\nimport { QuadTree } from \"./quadtree\";\nimport { canCollide } from \"./collision-filter\";\n\nexport function resolveCollision(bodyA: RigidBody, bodyB: RigidBody, normal: Point): void {\n // console.log(\"resolve\");\n if (bodyA.isStatic() && bodyB.isStatic()) {\n return;\n }\n let restitution = 0.4;\n let inverseMassA = bodyA.isStatic() || bodyA.isMovingStatic() ? 0 : 1 / bodyA.mass;\n let inverseMassB = bodyB.isStatic() || bodyB.isMovingStatic() ? 0 : 1 / bodyB.mass;\n // console.log(\"inverse mass a\", inverseMassA);\n // console.log(\"inverse mass b\", inverseMassB);\n\n let relativeVelocity = PointCal.subVector(bodyA.linearVelocity, bodyB.linearVelocity);\n // console.log(\"relative velocity: \", relativeVelocity);\n // console.log(\"linear velocity of a\", bodyA.getLinearVelocity());\n // console.log(\"linear veolcity of b\", bodyB.getLinearVelocity());\n let J = -(1 + restitution) * PointCal.dotProduct(relativeVelocity, normal);\n J /= inverseMassA + inverseMassB;\n\n let deltaVelocityA = PointCal.multiplyVectorByScalar(normal, J * inverseMassA);\n let deltaVelocityB = PointCal.multiplyVectorByScalar(normal, J * inverseMassB);\n // console.log(\"delta velocity A:\", deltaVelocityA);\n // console.log(\"delta velocity B:\", deltaVelocityB);\n\n bodyA.linearVelocity = PointCal.addVector(bodyA.linearVelocity, deltaVelocityA);\n bodyB.linearVelocity = PointCal.subVector(bodyB.linearVelocity, deltaVelocityB);\n}\n\nexport function resolveCollisionWithRotation(bodyA: RigidBody, bodyB: RigidBody, contactManifold: {normal: Point, contactPoints: Point[]}){\n // console.log(\"resolve\");\n if (bodyA.isStatic() && bodyB.isStatic()) {\n return;\n }\n\n let restitution = 0.4;\n let inverseMassA = bodyA.isStatic() || bodyA.isMovingStatic() ? 0 : 1 / bodyA.mass;\n let inverseMassB = bodyB.isStatic() || bodyB.isMovingStatic() ? 0 : 1 / bodyB.mass;\n\n let inverseMMOIA = bodyA.isStatic() || bodyA.isMovingStatic() ? 0 : 1 / bodyA.momentOfInertia;\n let inverseMMOIB = bodyB.isStatic() || bodyB.isMovingStatic() ? 0 : 1 / bodyB.momentOfInertia;\n\n const Js: Point[] = [];\n for(let index = 0; index < contactManifold.contactPoints.length; index++){\n const contactPoint = contactManifold.contactPoints[index];\n const rA = PointCal.subVector(contactPoint, bodyA.center);\n const rB = PointCal.subVector(contactPoint, bodyB.center);\n const rAPerpendicular = {x: -rA.y, y: rA.x};\n const rBPerpendicular = {x: -rB.y, y: rB.x}; \n\n const angularVelocityA = PointCal.multiplyVectorByScalar(rAPerpendicular, bodyA.angularVelocity);\n const angularVelocityB = PointCal.multiplyVectorByScalar(rBPerpendicular, bodyB.angularVelocity);\n\n // console.log(\"inverse mass a\", inverseMassA);\n // console.log(\"inverse mass b\", inverseMassB);\n\n let relativeVelocity = PointCal.subVector(PointCal.addVector(bodyA.linearVelocity, angularVelocityA), PointCal.addVector(bodyB.linearVelocity, angularVelocityB));\n // console.log(\"relative velocity: \", relativeVelocity);\n // console.log(\"linear velocity of a\", bodyA.getLinearVelocity());\n // console.log(\"linear veolcity of b\", bodyB.getLinearVelocity());\n let relativeVelocityNormal = PointCal.dotProduct(relativeVelocity, contactManifold.normal);\n const rAPerpendicularNormal = PointCal.dotProduct(rAPerpendicular, contactManifold.normal);\n const rBPerpendicularNormal = PointCal.dotProduct(rBPerpendicular, contactManifold.normal);\n \n const denominator = inverseMassA + inverseMassB + rAPerpendicularNormal * rAPerpendicularNormal * inverseMMOIA + rBPerpendicularNormal * rBPerpendicularNormal * inverseMMOIB;\n let J = -(1 + restitution) * relativeVelocityNormal;\n J /= denominator;\n\n J /= contactManifold.contactPoints.length;\n\n Js.push(PointCal.multiplyVectorByScalar(contactManifold.normal, J));\n }\n\n Js.forEach((impulse, index) => {\n let deltaVelocityA = PointCal.multiplyVectorByScalar(impulse, inverseMassA);\n let deltaVelocityB = PointCal.multiplyVectorByScalar(impulse, inverseMassB);\n\n bodyA.linearVelocity = PointCal.addVector(bodyA.linearVelocity, deltaVelocityA);\n let resA = PointCal.crossProduct(PointCal.subVector(contactManifold.contactPoints[index], bodyA.center), impulse).z;\n resA = resA == undefined ? 0 : resA;\n let resB = PointCal.crossProduct(PointCal.subVector(contactManifold.contactPoints[index], bodyB.center), impulse).z;\n resB = resB == undefined ? 0 : resB;\n bodyA.angularVelocity += resA * inverseMMOIA;\n bodyB.angularVelocity -= resB * inverseMMOIB;\n bodyB.linearVelocity = PointCal.subVector(bodyB.linearVelocity, deltaVelocityB);\n });\n}\n\nexport function aabbIntersects(aabbA: {min: Point, max: Point}, aabbB: {min: Point, max: Point}): boolean{\n if ((aabbA.min.x <= aabbB.max.x && aabbB.min.x <= aabbA.max.x) && (aabbA.min.y <= aabbB.max.y && aabbB.min.y <= aabbA.max.y)) {\n return true;\n }\n return false;\n}\n\nexport function intersects(bodyA: RigidBody, bodyB: RigidBody): {collision: boolean, depth?: number, normal?: Point}{\n let axis: Point[] = [];\n let bodyAAxes = bodyA.getCollisionAxes(bodyB);\n let bodyBAxes = bodyB.getCollisionAxes(bodyA);\n\n axis.push(...bodyAAxes);\n axis.push(...bodyBAxes);\n\n let collision = true;\n let minDepth = Number.MAX_VALUE;\n let minAxis = axis[0];\n\n axis.forEach(projAxis => {\n let bodyAInterval = bodyA.getMinMaxProjection(projAxis);\n let bodyBInterval = bodyB.getMinMaxProjection(projAxis);\n\n if (bodyAInterval.min >= bodyBInterval.max || bodyBInterval.min >= bodyAInterval.max) {\n collision = false;\n }else {\n let depth = Math.abs(Math.min(bodyAInterval.max, bodyBInterval.max) - Math.max(bodyBInterval.min, bodyAInterval.min));\n if (depth < minDepth) {\n minDepth = depth;\n minAxis = projAxis;\n if (bodyAInterval.max < bodyBInterval.max) {\n minAxis = PointCal.multiplyVectorByScalar(minAxis, -1);\n }\n }\n }\n });\n\n if (collision){\n return {collision: collision, depth: minDepth, normal: minAxis};\n }else {\n return {collision: false, depth: undefined, normal: undefined};\n }\n}\n\nexport function narrowPhaseWithRigidBody(bodies: RigidBody[], combinationsToCheck: {bodyA: RigidBody, bodyB: RigidBody}[], resolveCollisionFlag: boolean): Point[]{\n if (!resolveCollisionFlag) {\n return [];\n }\n const contactPoints: Point[] = [];\n combinationsToCheck.forEach(combination => {\n let bodyA = combination.bodyA;\n let bodyB = combination.bodyB;\n if (bodyA == bodyB) {\n // console.log(\"same body\");\n return;\n }\n let bodyAZ = bodyA.center.z == undefined ? 0 : bodyA.center.z;\n let bodyBZ = bodyB.center.z == undefined ? 0 : bodyB.center.z;\n if(Math.abs(bodyAZ - bodyBZ) > 0.5){\n // console.log(\"z-index difference is too large\");\n return;\n }\n let {collision, depth, normal: normalAxis} = intersects(bodyA, bodyB);\n if (collision && normalAxis !== undefined && depth !== undefined) {\n // the normal axis points in the direction that push bodyA away from bodyB\n \n let moveDisplacement = PointCal.multiplyVectorByScalar(normalAxis, depth / 2);\n let revMoveDisplacement = PointCal.multiplyVectorByScalar(normalAxis, -depth / 2);\n\n if (!bodyA.isStatic()) {\n bodyA.move(moveDisplacement);\n }\n if (!bodyB.isStatic()) {\n bodyB.move(revMoveDisplacement);\n }\n if (bodyA.isStatic()) {\n // bodyA.move(revMoveDisplacement);\n bodyB.move(revMoveDisplacement);\n }\n if (bodyB.isStatic()) {\n bodyA.move(moveDisplacement);\n // bodyB.move(moveDisplacement);\n }\n\n // finding the collision contact point(s)\n const bodyASigNormal = bodyA.getNormalOfSignificantFace(PointCal.multiplyVectorByScalar(normalAxis, -1));\n const bodyBSigNormal = bodyB.getNormalOfSignificantFace(normalAxis);\n const bodyASigVertices = bodyA.getSignificantVertices(PointCal.multiplyVectorByScalar(normalAxis, -1));\n const bodyBSigVertices = bodyB.getSignificantVertices(normalAxis);\n const bodyAParallelIndicator = Math.abs(PointCal.dotProduct(bodyASigNormal, PointCal.multiplyVectorByScalar(normalAxis, -1)));\n const bodyBParallelIndicator = Math.abs(PointCal.dotProduct(bodyBSigNormal, normalAxis));\n \n if (bodyBSigVertices.length == 1 || bodyASigVertices.length == 1){\n // one of the body is a circle\n // console.log(\"involving a circle\");\n if (bodyBSigVertices.length == 1){\n // bodyB is a circle\n // contact point is on the perimeter of the circle and the direction is the collision normal\n contactPoints.push(bodyBSigVertices[0]);\n } else {\n // bodyA is a circle\n // contact point is on the perimeter of the circle and the direction is the collision normal\n contactPoints.push(bodyASigVertices[0]);\n }\n }\n else if (bodyAParallelIndicator > bodyBParallelIndicator) {\n // bodyA has the normal that is the most parallel to the collision normal\n const adjacentFaces = bodyA.getAdjacentFaces(PointCal.multiplyVectorByScalar(normalAxis, -1));\n let faceToClip = [...bodyBSigVertices];\n for(let index = 0; index < adjacentFaces.length - 1; index++){\n let startPoint = adjacentFaces[index].startPoint.coord;\n let endPoint = adjacentFaces[index].endPoint.coord;\n let direction = PointCal.subVector(endPoint, startPoint);\n let sigStart = PointCal.subVector(faceToClip[0], startPoint);\n let sigEnd = PointCal.subVector(faceToClip[1], startPoint);\n let startInside = PointCal.angleFromA2B(direction, sigStart) >= 0;\n let endInside = PointCal.angleFromA2B(direction, sigEnd) >= 0;\n if ((startInside ? 1 : 0) ^ (endInside ? 1 : 0)){\n // one of the point is outside the face\n let intersectionPoint = PointCal.getLineIntersection(startPoint, endPoint, faceToClip[0], faceToClip[1]);\n if (intersectionPoint.intersects && intersectionPoint.intersection !== undefined){\n if(startInside){\n faceToClip[1] = intersectionPoint.intersection;\n } else {\n faceToClip[0] = intersectionPoint.intersection;\n }\n }\n }\n }\n const referenceFace = adjacentFaces[adjacentFaces.length - 1];\n let startPoint = referenceFace.startPoint.coord;\n let endPoint = referenceFace.endPoint.coord;\n let direction = PointCal.subVector(endPoint, startPoint);\n let sigStart = PointCal.subVector(faceToClip[0], startPoint);\n let sigEnd = PointCal.subVector(faceToClip[1], startPoint);\n let startInside = PointCal.angleFromA2B(direction, sigStart) >= 0;\n let endInside = PointCal.angleFromA2B(direction, sigEnd) >= 0;\n if (startInside){\n contactPoints.push(faceToClip[0]);\n }\n if (endInside){\n contactPoints.push(faceToClip[1]);\n }\n } else {\n // bodyB has the normal that is the most parallel to the collision normal\n const adjacentFaces = bodyB.getAdjacentFaces(normalAxis);\n let faceToClip = [...bodyASigVertices];\n if(faceToClip.length == 0){\n console.log(\"warning\");\n }\n let count = 0;\n for(let index = 0; index < adjacentFaces.length - 1; index++){\n let startPoint = adjacentFaces[index].startPoint.coord;\n let endPoint = adjacentFaces[index].endPoint.coord;\n let direction = PointCal.subVector(endPoint, startPoint);\n let sigStart = PointCal.subVector(faceToClip[0], startPoint);\n let sigEnd = PointCal.subVector(faceToClip[1], startPoint);\n let startInside = PointCal.angleFromA2B(direction, sigStart) >= 0;\n let endInside = PointCal.angleFromA2B(direction, sigEnd) >= 0;\n if ((startInside ? 1 : 0) ^ (endInside ? 1 : 0)){\n count += 1;\n // one of the point is outside the face\n let intersectionPoint = PointCal.getLineIntersection(startPoint, endPoint, faceToClip[0], faceToClip[1]);\n if (intersectionPoint.intersects && intersectionPoint.intersection !== undefined){\n if(startInside){\n faceToClip[1] = intersectionPoint.intersection;\n } else {\n faceToClip[0] = intersectionPoint.intersection;\n }\n }\n }\n }\n const referenceFace = adjacentFaces[adjacentFaces.length - 1];\n let startPoint = referenceFace.startPoint.coord;\n let endPoint = referenceFace.endPoint.coord;\n let direction = PointCal.subVector(endPoint, startPoint);\n let sigStart = PointCal.subVector(faceToClip[0], startPoint);\n let sigEnd = PointCal.subVector(faceToClip[1], startPoint);\n let startInside = PointCal.angleFromA2B(direction, sigStart) >= 0;\n let endInside = PointCal.angleFromA2B(direction, sigEnd) >= 0;\n if (startInside){\n contactPoints.push(faceToClip[0]);\n }\n if (endInside){\n contactPoints.push(faceToClip[1]);\n }\n }\n if (resolveCollisionFlag) {\n resolveCollisionWithRotation(bodyA, bodyB, {normal: normalAxis, contactPoints: contactPoints});\n // resolveCollision(bodyA, bodyB, normalAxis);\n }\n }\n });\n return contactPoints;\n}\n\nexport function narrowPhase(bodies: BaseRigidBody[], combinationsToCheck: {bodyAIndex: number, bodyBIndex: number}[], resolveCollisionFlag: boolean): void {\n if (!resolveCollisionFlag) {\n return;\n }\n combinationsToCheck.forEach(combination => {\n let bodyA = bodies[combination.bodyAIndex];\n let bodyB = bodies[combination.bodyBIndex];\n let {collision, depth, normal: normalAxis} = intersects(bodyA, bodyB);\n if (collision && normalAxis !== undefined && depth !== undefined) {\n // console.log(\"collision\");\n let moveDisplacement = PointCal.multiplyVectorByScalar(normalAxis, depth / 2);\n let revMoveDisplacement = PointCal.multiplyVectorByScalar(normalAxis, -depth / 2);\n\n if (!bodyA.isStatic()) {\n bodyA.move(moveDisplacement);\n }\n if (!bodyB.isStatic()) {\n bodyB.move(revMoveDisplacement);\n }\n if (bodyA.isStatic()) {\n // bodyA.move(revMoveDisplacement);\n bodyB.move(revMoveDisplacement);\n }\n if (bodyB.isStatic()) {\n bodyA.move(moveDisplacement);\n // bodyB.move(moveDisplacement);\n }\n\n if (resolveCollisionFlag) {\n resolveCollision(bodyA, bodyB, normalAxis);\n }\n\n }\n })\n}\n\nexport function broadPhaseWithRigidBodyReturned(quadTree: QuadTree<RigidBody>, bodies: RigidBody[]): {bodyA: RigidBody, bodyB: RigidBody}[]{\n let possibleCombi: {bodyA: RigidBody, bodyB: RigidBody}[] = [];\n for(let index = 0; index <= bodies.length - 1; index++){\n let objsToCheck = quadTree.retrieve(bodies[index]);\n for(let jindex = 0; jindex <= objsToCheck.length - 1; jindex++){\n let bodyA = bodies[index];\n let bodyB = objsToCheck[jindex];\n if (bodyA.isStatic() && bodyB.isStatic()){\n continue;\n }\n if(!aabbIntersects(bodyA.AABB, bodyB.AABB)){\n continue;\n }\n possibleCombi.push({bodyA: bodyA, bodyB: bodyB});\n }\n }\n return possibleCombi\n}\n\nexport function broadPhaseWithSpatialIndex(spatialIndex: import(\"./dynamic-tree\").SpatialIndex<RigidBody>, bodies: RigidBody[]): {bodyA: RigidBody, bodyB: RigidBody}[]{\n let possibleCombi: {bodyA: RigidBody, bodyB: RigidBody}[] = [];\n for(let index = 0; index <= bodies.length - 1; index++){\n let objsToCheck = spatialIndex.retrieve(bodies[index]);\n for(let jindex = 0; jindex <= objsToCheck.length - 1; jindex++){\n let bodyA = bodies[index];\n let bodyB = objsToCheck[jindex];\n if (bodyA.isStatic() && bodyB.isStatic()){\n continue;\n }\n if(!aabbIntersects(bodyA.AABB, bodyB.AABB)){\n continue;\n }\n possibleCombi.push({bodyA: bodyA, bodyB: bodyB});\n }\n }\n return possibleCombi\n}\n\nexport function broadPhase(quadTree: QuadTree<RigidBody>, bodies: BaseRigidBody[]): {bodyAIndex: number, bodyBIndex: number}[]{\n let possibleCombi: {bodyAIndex: number, bodyBIndex: number}[] = [];\n for(let index = 0; index <= bodies.length - 1; index++){\n let objsToCheck = quadTree.retrieve(bodies[index]);\n for(let jindex = 0; jindex <= objsToCheck.length - 1; jindex++){\n let bodyA = bodies[index];\n let bodyB = objsToCheck[jindex];\n if (bodyA.isStatic() && bodyB.isStatic()){\n continue;\n }\n if(!aabbIntersects(bodyA.AABB, bodyB.AABB)){\n continue;\n }\n possibleCombi.push({bodyAIndex: index, bodyBIndex: jindex});\n }\n }\n return possibleCombi\n}\n\n// Enhanced broadphase with collision filtering\nexport function broadPhaseWithSpatialIndexFiltered(spatialIndex: import(\"./dynamic-tree\").SpatialIndex<RigidBody>, bodies: RigidBody[]): {bodyA: RigidBody, bodyB: RigidBody}[]{\n let possibleCombi: {bodyA: RigidBody, bodyB: RigidBody}[] = [];\n for(let index = 0; index <= bodies.length - 1; index++){\n let objsToCheck = spatialIndex.retrieve(bodies[index]);\n for(let jindex = 0; jindex <= objsToCheck.length - 1; jindex++){\n let bodyA = bodies[index];\n let bodyB = objsToCheck[jindex];\n \n // Skip if both are static\n if (bodyA.isStatic() && bodyB.isStatic()){\n continue;\n }\n \n // Apply collision filtering\n if (!canCollide(bodyA.collisionFilter, bodyB.collisionFilter)) {\n continue;\n }\n \n // Basic AABB check\n if(!aabbIntersects(bodyA.AABB, bodyB.AABB)){\n continue;\n }\n \n possibleCombi.push({bodyA: bodyA, bodyB: bodyB});\n }\n }\n return possibleCombi;\n}\n\n// Enhanced narrow phase that returns collision data for pair management\nexport function narrowPhaseWithRigidBodyAndPairs(bodies: RigidBody[], combinationsToCheck: {bodyA: RigidBody, bodyB: RigidBody}[], resolveCollisionFlag: boolean): {\n contactPoints: Point[],\n collisions: {bodyA: RigidBody, bodyB: RigidBody, contactPoints: Point[], normal?: Point, depth?: number}[]\n} {\n const contactPoints: Point[] = [];\n const collisions: {bodyA: RigidBody, bodyB: RigidBody, contactPoints: Point[], normal?: Point, depth?: number}[] = [];\n\n combinationsToCheck.forEach(combination => {\n let bodyA = combination.bodyA;\n let bodyB = combination.bodyB;\n \n let {collision, depth, normal: normalAxis} = intersects(bodyA, bodyB);\n if (collision && normalAxis !== undefined && depth !== undefined) {\n // Calculate contact points (simplified version)\n const collisionContactPoints: Point[] = [];\n \n // For now, use a simple contact point calculation\n // This could be enhanced later with proper clipping algorithms\n const contactCenter = {\n x: (bodyA.center.x + bodyB.center.x) / 2,\n y: (bodyA.center.y + bodyB.center.y) / 2\n };\n collisionContactPoints.push(contactCenter);\n \n const collisionData = {\n bodyA,\n bodyB,\n contactPoints: collisionContactPoints,\n normal: normalAxis,\n depth: depth\n };\n \n collisions.push(collisionData);\n contactPoints.push(...collisionContactPoints);\n\n if (resolveCollisionFlag) {\n // Position correction\n let moveDisplacement = PointCal.multiplyVectorByScalar(normalAxis, depth / 2);\n let revMoveDisplacement = PointCal.multiplyVectorByScalar(normalAxis, -depth / 2);\n\n if (!bodyA.isStatic()) {\n bodyA.move(moveDisplacement);\n }\n if (!bodyB.isStatic()) {\n bodyB.move(revMoveDisplacement);\n }\n if (bodyA.isStatic()) {\n bodyB.move(revMoveDisplacement);\n }\n if (bodyB.isStatic()) {\n bodyA.move(moveDisplacement);\n }\n\n // Resolve collision with rotation\n resolveCollisionWithRotation(bodyA, bodyB, {normal: normalAxis, contactPoints: collisionContactPoints});\n }\n }\n });\n\n return { contactPoints, collisions };\n}\n",
|
|
10
|
+
"import { RigidBody } from \"./rigidbody\";\nimport { Point } from \"@ue-too/math\";\n\nexport interface CollisionPair {\n bodyA: RigidBody;\n bodyB: RigidBody;\n id: string;\n isActive: boolean;\n contactPoints: Point[];\n normal?: Point;\n depth?: number;\n frameCreated: number;\n frameUpdated: number;\n}\n\nexport interface PairEvents {\n created: CollisionPair[];\n updated: CollisionPair[];\n removed: CollisionPair[];\n}\n\nexport class PairManager {\n private pairs = new Map<string, CollisionPair>();\n private frameNumber = 0;\n private maxPairAge = 10; // Remove inactive pairs after N frames\n\n constructor() {}\n\n // Generate unique ID for a pair\n private getPairId(bodyA: RigidBody, bodyB: RigidBody): string {\n const idA = this.getBodyId(bodyA);\n const idB = this.getBodyId(bodyB);\n // Ensure consistent ordering\n return idA < idB ? `${idA}:${idB}` : `${idB}:${idA}`;\n }\n\n private getBodyId(body: RigidBody): string {\n // Use object reference as unique ID\n return body.toString();\n }\n\n // Update pairs for current frame\n updatePairs(newCollisions: {bodyA: RigidBody, bodyB: RigidBody, contactPoints?: Point[], normal?: Point, depth?: number}[]): PairEvents {\n this.frameNumber++;\n \n const events: PairEvents = {\n created: [],\n updated: [],\n removed: []\n };\n\n // Mark all existing pairs as inactive for this frame\n this.pairs.forEach(pair => {\n pair.isActive = false;\n });\n\n // Process new collisions\n for (const collision of newCollisions) {\n const id = this.getPairId(collision.bodyA, collision.bodyB);\n const existingPair = this.pairs.get(id);\n\n if (existingPair) {\n // Update existing pair\n existingPair.isActive = true;\n existingPair.frameUpdated = this.frameNumber;\n existingPair.contactPoints = collision.contactPoints || [];\n existingPair.normal = collision.normal;\n existingPair.depth = collision.depth;\n events.updated.push(existingPair);\n } else {\n // Create new pair\n const newPair: CollisionPair = {\n bodyA: collision.bodyA,\n bodyB: collision.bodyB,\n id,\n isActive: true,\n contactPoints: collision.contactPoints || [],\n normal: collision.normal,\n depth: collision.depth,\n frameCreated: this.frameNumber,\n frameUpdated: this.frameNumber\n };\n this.pairs.set(id, newPair);\n events.created.push(newPair);\n }\n }\n\n // Remove old inactive pairs\n const pairsToRemove: string[] = [];\n this.pairs.forEach((pair, id) => {\n if (!pair.isActive && (this.frameNumber - pair.frameUpdated) > this.maxPairAge) {\n pairsToRemove.push(id);\n events.removed.push(pair);\n }\n });\n\n pairsToRemove.forEach(id => {\n this.pairs.delete(id);\n });\n\n return events;\n }\n\n // Get all active pairs\n getActivePairs(): CollisionPair[] {\n return Array.from(this.pairs.values()).filter(pair => pair.isActive);\n }\n\n // Get pair by bodies\n getPair(bodyA: RigidBody, bodyB: RigidBody): CollisionPair | undefined {\n const id = this.getPairId(bodyA, bodyB);\n return this.pairs.get(id);\n }\n\n // Clear all pairs\n clear(): void {\n this.pairs.clear();\n this.frameNumber = 0;\n }\n\n // Get statistics\n getStats() {\n return {\n totalPairs: this.pairs.size,\n activePairs: this.getActivePairs().length,\n frameNumber: this.frameNumber\n };\n }\n}",
|
|
11
|
+
"import { RigidBody } from \"./rigidbody\";\nimport * as Collision from \"./collision\";\nimport { RectangleBound, QuadTree} from \"./quadtree\"\nimport { DynamicTree, SpatialIndex, SweepAndPrune } from \"./dynamic-tree\";\nimport { Point } from \"@ue-too/math\";\nimport { Constraint } from \"./constraint\";\nimport { PinJointConstraint } from \"./constraint\";\nimport { PairManager, PairEvents } from \"./pair-manager\";\nimport { canCollide } from \"./collision-filter\";\n\nexport type SpatialIndexType = 'quadtree' | 'dynamictree' | 'sap';\n\nexport class World {\n private rigidBodyList: RigidBody[];\n private rigidBodyMap: Map<string, RigidBody>;\n private _resolveCollision: boolean;\n private maxTransWidth: number;\n private maxTransHeight: number;\n private bound: RectangleBound;\n private spatialIndex: SpatialIndex<RigidBody>;\n private spatialIndexType: SpatialIndexType;\n private constraints: Constraint[];\n private pinJoints: PinJointConstraint[] = [];\n private pairManager: PairManager;\n private enableSleeping: boolean = true;\n _context: CanvasRenderingContext2D | null = null;\n\n constructor(maxTransWidth: number, maxTransHeight: number, spatialIndexType: SpatialIndexType = 'dynamictree'){\n this.maxTransHeight = maxTransHeight;\n this.maxTransWidth = maxTransWidth;\n this.spatialIndexType = spatialIndexType;\n this.bound = new RectangleBound({x: -this.maxTransWidth, y: -this.maxTransHeight}, 2 * this.maxTransWidth, 2 * this.maxTransHeight);\n \n // Initialize spatial index based on type\n if (spatialIndexType === 'dynamictree') {\n this.spatialIndex = new DynamicTree<RigidBody>();\n } else if (spatialIndexType === 'sap') {\n this.spatialIndex = new SweepAndPrune<RigidBody>();\n } else {\n this.spatialIndex = new QuadTree(0, this.bound);\n }\n \n this.rigidBodyList = [];\n this.rigidBodyMap = new Map<string, RigidBody>();\n this._resolveCollision = true;\n this.constraints = [];\n this.pairManager = new PairManager();\n }\n\n addRigidBody(ident: string, body: RigidBody): void{\n this.rigidBodyList.push(body);\n this.rigidBodyMap.set(ident, body);\n \n // Add to spatial index immediately for sweep-and-prune\n if (this.spatialIndexType === 'sap') {\n this.spatialIndex.insert(body);\n }\n }\n\n removeRigidBody(ident: string): void{\n if (this.rigidBodyMap.has(ident)) {\n const body = this.rigidBodyMap.get(ident);\n this.rigidBodyMap.delete(ident);\n \n // Remove from spatial index for sweep-and-prune\n if (body && this.spatialIndexType === 'sap' && this.spatialIndex instanceof SweepAndPrune) {\n (this.spatialIndex as SweepAndPrune<RigidBody>).remove(body);\n }\n \n // Remove from rigidBodyList as well\n const index = this.rigidBodyList.findIndex(b => b === body);\n if (index !== -1) {\n this.rigidBodyList.splice(index, 1);\n }\n }\n }\n\n step(deltaTime: number): void{\n // Update sleeping states first\n if (this.enableSleeping) {\n this.getRigidBodyList().forEach(rigidBody => {\n rigidBody.updateSleeping(deltaTime);\n });\n }\n\n if(this._resolveCollision){\n const contactPoints = this.resolveCollisionPhase();\n }\n // if(this._context != null){\n // this.spatialIndex.draw?.(this._context);\n // contactPoints.forEach((contactPoint) => {\n // if(this._context != null){\n // this._context.lineWidth = 1;\n // this._context.strokeStyle = \"red\";\n // }\n // this._context?.beginPath();\n // this._context?.arc(contactPoint.x, contactPoint.y, 3, 0, 2 * Math.PI);\n // this._context?.stroke();\n // });\n // }\n this.constraints.forEach(constraint => constraint.enforce(deltaTime));\n this.getRigidBodyList().forEach(rigidBody => {\n if (!rigidBody.isSleeping) {\n rigidBody.step(deltaTime);\n }\n });\n }\n\n resolveCollisionPhase(): Point[]{\n let rigidBodyList: RigidBody[] = [];\n \n // Use incremental updates for sweep-and-prune, full rebuild for others\n if (this.spatialIndexType === 'sap') {\n // For sweep-and-prune: use incremental updates for better performance\n this.rigidBodyMap.forEach((body) => {\n if (!this.enableSleeping || !body.isSleeping) {\n rigidBodyList.push(body);\n // Update existing objects in spatial index\n if (this.spatialIndex instanceof SweepAndPrune) {\n (this.spatialIndex as SweepAndPrune<RigidBody>).update(body);\n }\n }\n });\n } else {\n // For QuadTree and DynamicTree: rebuild each frame (existing behavior)\n this.spatialIndex.clear();\n this.rigidBodyMap.forEach((body) => {\n if (!this.enableSleeping || !body.isSleeping) {\n rigidBodyList.push(body);\n this.spatialIndex.insert(body);\n }\n });\n }\n \n // console.log(\"spatial index size: \", this.spatialIndex);\n let possibleCombinations = Collision.broadPhaseWithSpatialIndexFiltered(this.spatialIndex, rigidBodyList);\n let collisionResults = Collision.narrowPhaseWithRigidBodyAndPairs(rigidBodyList, possibleCombinations, this._resolveCollision);\n \n // Update pair manager with new collisions\n const pairEvents = this.pairManager.updatePairs(collisionResults.collisions);\n \n // Wake up bodies that start colliding\n if (this.enableSleeping) {\n pairEvents.created.forEach(pair => {\n if (pair.bodyA.isSleeping) pair.bodyA.setSleeping(false);\n if (pair.bodyB.isSleeping) pair.bodyB.setSleeping(false);\n });\n }\n \n return collisionResults.contactPoints;\n }\n\n get resolveCollision(): boolean{\n return this._resolveCollision;\n }\n\n set resolveCollision(resolveCollision: boolean){\n this._resolveCollision = resolveCollision;\n }\n\n getRigidBodyList(){\n let rigidBodyList:RigidBody[] = [];\n this.rigidBodyMap.forEach((body) => {\n rigidBodyList.push(body);\n })\n return rigidBodyList;\n }\n\n getRigidBodyMap(): Map<string, RigidBody>{\n return this.rigidBodyMap;\n }\n\n setMaxTransHeight(height: number){\n this.maxTransHeight = height;\n }\n\n setMaxTransWidth(width: number){\n this.maxTransWidth = width;\n }\n\n addConstraint(constraint: Constraint): void{\n this.constraints.push(constraint);\n }\n\n getConstraints(): Constraint[]{\n return this.constraints;\n }\n\n addPinJoint(bodyA: RigidBody, bodyB: RigidBody, anchorA: Point, anchorB: Point) {\n this.pinJoints.push({ bodyA, bodyB, anchorA, anchorB });\n }\n\n get currentSpatialIndexType(): SpatialIndexType {\n return this.spatialIndexType;\n }\n\n setSpatialIndexType(type: SpatialIndexType): void {\n if (type === this.spatialIndexType) return;\n \n this.spatialIndexType = type;\n if (type === 'dynamictree') {\n this.spatialIndex = new DynamicTree<RigidBody>();\n } else if (type === 'sap') {\n this.spatialIndex = new SweepAndPrune<RigidBody>();\n } else {\n this.spatialIndex = new QuadTree(0, this.bound);\n }\n }\n\n getSpatialIndexStats(): any {\n if (this.spatialIndex instanceof DynamicTree) {\n return (this.spatialIndex as DynamicTree<RigidBody>).getStats();\n } else if (this.spatialIndex instanceof SweepAndPrune) {\n return {\n type: this.spatialIndexType,\n ...(this.spatialIndex as SweepAndPrune<RigidBody>).getStats()\n };\n }\n return { type: this.spatialIndexType, objects: this.rigidBodyMap.size };\n }\n\n // Sleeping control\n get sleepingEnabled(): boolean {\n return this.enableSleeping;\n }\n\n set sleepingEnabled(enabled: boolean) {\n this.enableSleeping = enabled;\n if (!enabled) {\n // Wake up all sleeping bodies\n this.rigidBodyMap.forEach(body => {\n if (body.isSleeping) {\n body.setSleeping(false);\n }\n });\n }\n }\n\n // Pair manager access\n getPairManager(): PairManager {\n return this.pairManager;\n }\n\n // Get collision statistics\n getCollisionStats() {\n return {\n ...this.pairManager.getStats(),\n sleepingBodies: Array.from(this.rigidBodyMap.values()).filter(body => body.isSleeping).length,\n totalBodies: this.rigidBodyMap.size\n };\n }\n}\n",
|
|
12
|
+
"import { Point, PointCal } from \"@ue-too/math\";\nimport { RigidBody } from \"./rigidbody\";\n\nexport interface Constraint {\n enforce(dt: number): void;\n}\n\nexport class FixedPinJoint implements Constraint {\n\n private anchorA: Point;\n private worldAnchorA: Point;\n private bodyA: RigidBody;\n\n constructor(bodyA: RigidBody, anchorA: Point, worldAnchorA: Point) {\n this.bodyA = bodyA;\n this.anchorA = anchorA;\n this.worldAnchorA = worldAnchorA;\n }\n\n enforce(dt: number): void {\n this.solveWorldPinJointConstraint(dt);\n }\n\n solveWorldPinJointConstraint(dt: number) {\n const body = this.bodyA;\n const localAnchor = this.anchorA;\n const worldAnchor = this.worldAnchorA;\n\n // Transform local anchor point to world space\n const worldAnchorOnBody = PointCal.addVector(body.center, PointCal.rotatePoint(localAnchor, body.orientationAngle));\n\n // Calculate the difference between the anchor points\n const diff = PointCal.subVector(worldAnchorOnBody, worldAnchor);\n\n // Calculate the relative velocity of the anchor point\n const r = PointCal.subVector(worldAnchorOnBody, body.center);\n const velocity = PointCal.addVector(\n body.linearVelocity,\n PointCal.crossProduct({x: 0, y: 0, z: body.angularVelocity}, r)\n );\n\n // Calculate the mass matrix\n const invMass = body.isStatic() ? 0 : 1 / body.mass;\n const invI = body.isStatic() ? 0 : 1 / body.momentOfInertia;\n\n const K = {\n x: invMass + invI * r.y * r.y,\n y: invMass + invI * r.x * r.x,\n xy: -invI * r.x * r.y\n };\n\n // Calculate the impulse\n const baumgarte = 1; // Baumgarte stabilization factor\n const impulse = {\n x: -K.x * diff.x - K.xy * diff.y - baumgarte * diff.x / dt - velocity.x,\n y: -K.xy * diff.x - K.y * diff.y - baumgarte * diff.y / dt - velocity.y\n };\n\n // Apply the impulse\n if (!body.isStatic()) {\n body.linearVelocity.x += invMass * impulse.x;\n body.linearVelocity.y += invMass * impulse.y;\n body.angularVelocity += invI * (r.x * impulse.y - r.y * impulse.x);\n }\n }\n}\n\nexport class PinJoint implements Constraint {\n\n private anchorA: Point;\n private anchorB: Point;\n private bodyA: RigidBody;\n private bodyB: RigidBody;\n\n constructor(bodyA: RigidBody, bodyB: RigidBody, anchorA: Point, anchorB: Point) {\n this.bodyA = bodyA;\n this.bodyB = bodyB;\n this.anchorA = anchorA;\n this.anchorB = anchorB;\n }\n\n enforce(dt: number): void {\n this.solvePinJointConstraint(dt);\n }\n\n solvePinJointConstraint(dt: number) {\n const bodyA = this.bodyA;\n const bodyB = this.bodyB;\n const anchorA = this.anchorA;\n const anchorB = this.anchorB;\n\n // Transform local anchor points to world space\n const worldAnchorA = PointCal.addVector(bodyA.center, PointCal.rotatePoint(anchorA, bodyA.orientationAngle));\n const worldAnchorB = PointCal.addVector(bodyB.center, PointCal.rotatePoint(anchorB, bodyB.orientationAngle));\n \n // Calculate the difference between the two anchor points in world space\n const diff = PointCal.subVector(worldAnchorB, worldAnchorA);\n \n // Calculate the relative velocity of the anchor points\n const rA = PointCal.subVector(worldAnchorA, bodyA.center);\n const rB = PointCal.subVector(worldAnchorB, bodyB.center);\n const relativeVelocity = PointCal.subVector(\n PointCal.addVector(bodyB.linearVelocity, PointCal.crossProduct({x: 0, y: 0, z: bodyB.angularVelocity}, rB)),\n PointCal.addVector(bodyA.linearVelocity, PointCal.crossProduct({x: 0, y: 0, z: bodyA.angularVelocity}, rA))\n );\n \n // Calculate the mass matrix\n const invMassA = bodyA.isStatic() ? 0 : 1 / bodyA.mass;\n const invMassB = bodyB.isStatic() ? 0 : 1 / bodyB.mass;\n const invIA = bodyA.isStatic() ? 0 : 1 / bodyA.momentOfInertia;\n const invIB = bodyB.isStatic() ? 0 : 1 / bodyB.momentOfInertia;\n \n const K = {\n x: invMassA + invMassB + invIA * rA.y * rA.y + invIB * rB.y * rB.y,\n y: invMassA + invMassB + invIA * rA.x * rA.x + invIB * rB.x * rB.x,\n xy: -invIA * rA.x * rA.y - invIB * rB.x * rB.y\n };\n \n // Calculate the impulse\n const baumgarte = 1; // Baumgarte stabilization factor\n const impulse = {\n x: -K.x * diff.x - K.xy * diff.y - baumgarte * diff.x / dt - relativeVelocity.x,\n y: -K.xy * diff.x - K.y * diff.y - baumgarte * diff.y / dt - relativeVelocity.y\n };\n \n // Apply the impulse\n if (!bodyA.isStatic()) {\n bodyA.linearVelocity.x -= invMassA * impulse.x;\n bodyA.linearVelocity.y -= invMassA * impulse.y;\n bodyA.angularVelocity -= invIA * (rA.x * impulse.y - rA.y * impulse.x);\n }\n \n if (!bodyB.isStatic()) {\n bodyB.linearVelocity.x += invMassB * impulse.x;\n bodyB.linearVelocity.y += invMassB * impulse.y;\n bodyB.angularVelocity += invIB * (rB.x * impulse.y - rB.y * impulse.x);\n }\n }\n\n}\n\nexport interface PinJointConstraint {\n bodyA: RigidBody;\n bodyB: RigidBody;\n anchorA: Point; // Local anchor point for bodyA\n anchorB: Point; // Local anchor point for bodyB\n}\n\nexport function solvePinJointConstraint(constraint: PinJointConstraint, dt: number) {\n const { bodyA, bodyB, anchorA, anchorB } = constraint;\n\n // Transform local anchor points to world space\n const worldAnchorA = PointCal.addVector(bodyA.center, PointCal.rotatePoint(anchorA, bodyA.orientationAngle));\n const worldAnchorB = PointCal.addVector(bodyB.center, PointCal.rotatePoint(anchorB, bodyB.orientationAngle));\n\n // Calculate the difference between the two anchor points in world space\n const diff = PointCal.subVector(worldAnchorB, worldAnchorA);\n\n // Calculate the relative velocity of the anchor points\n const rA = PointCal.subVector(worldAnchorA, bodyA.center);\n const rB = PointCal.subVector(worldAnchorB, bodyB.center);\n const relativeVelocity = PointCal.subVector(\n PointCal.addVector(bodyB.linearVelocity, PointCal.crossProduct({x: 0, y: 0, z: bodyB.angularVelocity}, rB)),\n PointCal.addVector(bodyA.linearVelocity, PointCal.crossProduct({x: 0, y: 0, z: bodyA.angularVelocity}, rA))\n );\n\n // Calculate the mass matrix\n const invMassA = bodyA.isStatic() ? 0 : 1 / bodyA.mass;\n const invMassB = bodyB.isStatic() ? 0 : 1 / bodyB.mass;\n const invIA = bodyA.isStatic() ? 0 : 1 / bodyA.momentOfInertia;\n const invIB = bodyB.isStatic() ? 0 : 1 / bodyB.momentOfInertia;\n\n const K = {\n x: invMassA + invMassB + invIA * rA.y * rA.y + invIB * rB.y * rB.y,\n y: invMassA + invMassB + invIA * rA.x * rA.x + invIB * rB.x * rB.x,\n xy: -invIA * rA.x * rA.y - invIB * rB.x * rB.y\n };\n\n // Calculate the impulse\n const baumgarte = 0.5; // Baumgarte stabilization factor\n const impulse = {\n x: -K.x * diff.x - K.xy * diff.y - baumgarte * diff.x / dt - relativeVelocity.x,\n y: -K.xy * diff.x - K.y * diff.y - baumgarte * diff.y / dt - relativeVelocity.y\n };\n\n // Apply the impulse\n if (!bodyA.isStatic()) {\n bodyA.linearVelocity.x -= invMassA * impulse.x;\n bodyA.linearVelocity.y -= invMassA * impulse.y;\n bodyA.angularVelocity -= invIA * (rA.x * impulse.y - rA.y * impulse.x);\n }\n\n if (!bodyB.isStatic()) {\n bodyB.linearVelocity.x += invMassB * impulse.x;\n bodyB.linearVelocity.y += invMassB * impulse.y;\n bodyB.angularVelocity += invIB * (rB.x * impulse.y - rB.y * impulse.x);\n }\n}\n\nexport interface WorldPinJointConstraint {\n body: RigidBody;\n localAnchor: Point; // Anchor point in body's local space\n worldAnchor: Point; // Fixed point in world space\n}\n\nexport function solveWorldPinJointConstraint(constraint: WorldPinJointConstraint, dt: number) {\n const { body, localAnchor, worldAnchor } = constraint;\n\n // Transform local anchor point to world space\n const worldAnchorOnBody = PointCal.addVector(body.center, PointCal.rotatePoint(localAnchor, body.orientationAngle));\n\n // Calculate the difference between the anchor points\n const diff = PointCal.subVector(worldAnchorOnBody, worldAnchor);\n\n // Calculate the relative velocity of the anchor point\n const r = PointCal.subVector(worldAnchorOnBody, body.center);\n const velocity = PointCal.addVector(\n body.linearVelocity,\n PointCal.crossProduct({x: 0, y: 0, z: body.angularVelocity}, r)\n );\n\n // Calculate the mass matrix\n const invMass = body.isStatic() ? 0 : 1 / body.mass;\n const invI = body.isStatic() ? 0 : 1 / body.momentOfInertia;\n\n const K = {\n x: invMass + invI * r.y * r.y,\n y: invMass + invI * r.x * r.x,\n xy: -invI * r.x * r.y\n };\n\n // Calculate the impulse\n const baumgarte = 0.2; // Baumgarte stabilization factor\n const impulse = {\n x: -K.x * diff.x - K.xy * diff.y - baumgarte * diff.x / dt - velocity.x,\n y: -K.xy * diff.x - K.y * diff.y - baumgarte * diff.y / dt - velocity.y\n };\n\n // Apply the impulse\n if (!body.isStatic()) {\n body.linearVelocity.x += invMass * impulse.x;\n body.linearVelocity.y += invMass * impulse.y;\n body.angularVelocity += invI * (r.x * impulse.y - r.y * impulse.x);\n }\n}\n"
|
|
13
|
+
],
|
|
14
|
+
"mappings": "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",
|
|
15
|
+
"debugId": "E95FEA238308AF2664756E2164756E21",
|
|
16
|
+
"names": []
|
|
17
|
+
}
|