Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
9e912fc
initial
PoseidonEnergy Jul 25, 2025
941bbf8
rigid_body pass
PoseidonEnergy Jul 25, 2025
3eab1a6
added parameter info comments to rigid_body.rs
PoseidonEnergy Jul 26, 2025
ab1f5f0
collider.rs/.ts pass
PoseidonEnergy Jul 28, 2025
1f1a44f
update collider.rs and shape.ts
PoseidonEnergy Sep 20, 2025
c26bcef
Merge remote-tracking branch 'origin/master' into feat/mitigate-objec…
PoseidonEnergy Sep 20, 2025
1307487
indent comment
PoseidonEnergy Sep 20, 2025
adaa43b
toi (time of impact) updated to make no JS allocations
PoseidonEnergy Sep 20, 2025
42943f7
ensure ColliderShapeCastHit.collider is not null if target object is …
PoseidonEnergy Sep 20, 2025
167592c
simplified VectorOps.fromRaw() and RotationOps.fromRaw()
PoseidonEnergy Sep 21, 2025
f34f19c
simplified VectorOps.fromBuffer() and RotationOps.fromBuffer()
PoseidonEnergy Sep 21, 2025
d3cab35
simplified SdpMatrix3Ops.fromBuffer()
PoseidonEnergy Sep 21, 2025
c0cdb2f
Merge remote-tracking branch 'origin/feat/mitigate-object-creation-2'…
PoseidonEnergy Sep 21, 2025
9bcc580
Update collider.rs and collider.ts to use scratchBuffer. Ensured all …
PoseidonEnergy Mar 8, 2026
c32bbad
Updated ray_cast_vehicle_controller.
PoseidonEnergy Mar 8, 2026
8574036
Updated impulse_joint.
PoseidonEnergy Mar 8, 2026
378c7f0
CI fixes
sebcrozet May 31, 2026
a71ee2b
Merge remote-tracking branch 'origin/master' into feat/mitigate-objec…
sebcrozet May 31, 2026
58530fb
feat: more application of the scratch buffer pattern to avoid allocat…
sebcrozet May 31, 2026
270bee9
fix fmt
sebcrozet Jun 4, 2026
46b5715
feat: use typescript 5
sebcrozet Jun 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 59 additions & 34 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion builds/prepare_builds/templates/package.json.tera
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
"//": "Better keep rimraf version in sync with wasm-pack, see https://github.com/rustwasm/wasm-pack/issues/1444",
"devDependencies": {
"rimraf": "^3.0.2",
"typedoc": "^0.25.13"
"typedoc": "^0.25.13",
"typescript": "~5.4.5"
},
"dependencies": {
"wasm-pack": "^0.12.1"
Expand Down
2 changes: 1 addition & 1 deletion builds/prepare_builds/templates/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"outDir": "./pkg",
"module": "ES6",
"target": "es6",
"lib": ["es6"],
"lib": ["es6", "ESNext.Disposable"],
"moduleResolution": "node",
"sourceMap": true,
"declaration": true,
Expand Down
2 changes: 1 addition & 1 deletion builds/prepare_builds/templates/tsconfig_typedoc.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"moduleResolution": "node",
"sourceMap": true,
"declaration": true,
"lib": ["es6"]
"lib": ["es6", "ESNext.Disposable"]
},
"files": ["./pkg/rapier.d.ts"]
}
31 changes: 20 additions & 11 deletions src.ts/control/character_controller.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {RawKinematicCharacterController, RawCharacterCollision} from "../raw";
import {Rotation, Vector, VectorOps} from "../math";
import {Rotation, Vector, VectorOps, scratchBuffer} from "../math";
import {
BroadPhase,
Collider,
Expand Down Expand Up @@ -333,8 +333,9 @@ export class KinematicCharacterController {
/**
* The movement computed by the last call to `this.computeColliderMovement`.
*/
public computedMovement(): Vector {
return VectorOps.fromRaw(this.raw.computedMovement());
public computedMovement(target?: Vector): Vector {
this.raw.computedMovement(scratchBuffer);
return VectorOps.fromBuffer(scratchBuffer, target);
}

/**
Expand Down Expand Up @@ -368,17 +369,25 @@ export class KinematicCharacterController {
} else {
let c = this.rawCharacterCollision;
out = out ?? new CharacterCollision();
out.translationDeltaApplied = VectorOps.fromRaw(
c.translationDeltaApplied(),
c.translationDeltaApplied(scratchBuffer);
out.translationDeltaApplied = VectorOps.fromBuffer(
scratchBuffer,
out.translationDeltaApplied,
);
out.translationDeltaRemaining = VectorOps.fromRaw(
c.translationDeltaRemaining(),
c.translationDeltaRemaining(scratchBuffer);
out.translationDeltaRemaining = VectorOps.fromBuffer(
scratchBuffer,
out.translationDeltaRemaining,
);
out.toi = c.toi();
out.witness1 = VectorOps.fromRaw(c.worldWitness1());
out.witness2 = VectorOps.fromRaw(c.worldWitness2());
out.normal1 = VectorOps.fromRaw(c.worldNormal1());
out.normal2 = VectorOps.fromRaw(c.worldNormal2());
c.worldWitness1(scratchBuffer);
out.witness1 = VectorOps.fromBuffer(scratchBuffer, out.witness1);
c.worldWitness2(scratchBuffer);
out.witness2 = VectorOps.fromBuffer(scratchBuffer, out.witness2);
c.worldNormal1(scratchBuffer);
out.normal1 = VectorOps.fromBuffer(scratchBuffer, out.normal1);
c.worldNormal2(scratchBuffer);
out.normal2 = VectorOps.fromBuffer(scratchBuffer, out.normal2);
out.collider = this.colliders.get(c.handle());
return out;
}
Expand Down
14 changes: 9 additions & 5 deletions src.ts/control/pid_controller.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {RawPidController} from "../raw";
import {Rotation, RotationOps, Vector, VectorOps} from "../math";
import {Rotation, RotationOps, scratchBuffer, Vector, VectorOps} from "../math";
import {Collider, ColliderSet, InteractionGroups, Shape} from "../geometry";
import {QueryFilterFlags, World} from "../pipeline";
import {IntegrationParameters, RigidBody, RigidBodySet} from "../dynamics";
Expand Down Expand Up @@ -151,20 +151,22 @@ export class PidController {
body: RigidBody,
targetPosition: Vector,
targetLinvel: Vector,
target?: Vector,
): Vector {
let rawPos = VectorOps.intoRaw(targetPosition);
let rawVel = VectorOps.intoRaw(targetLinvel);
let correction = this.raw.linear_correction(
this.raw.linear_correction(
this.params.dt,
this.bodies.raw,
body.handle,
rawPos,
rawVel,
scratchBuffer,
);
rawPos.free();
rawVel.free();

return VectorOps.fromRaw(correction);
return VectorOps.fromBuffer(scratchBuffer, target);
}

// #if DIM2
Expand All @@ -188,20 +190,22 @@ export class PidController {
body: RigidBody,
targetRotation: Rotation,
targetAngVel: Vector,
target?: Vector,
): Vector {
let rawPos = RotationOps.intoRaw(targetRotation);
let rawVel = VectorOps.intoRaw(targetAngVel);
let correction = this.raw.angular_correction(
this.raw.angular_correction(
this.params.dt,
this.bodies.raw,
body.handle,
rawPos,
rawVel,
scratchBuffer,
);
rawPos.free();
rawVel.free();

return VectorOps.fromRaw(correction);
return VectorOps.fromBuffer(scratchBuffer, target);
}
// #endif
}
Loading
Loading