From 8e554952854f0ae8af86d1c2e4517b88cfa65bd8 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Sun, 5 Apr 2026 02:30:04 +0200 Subject: [PATCH] Update collision handling for brush colliders --- src/runtime-three/rapier-collision-world.ts | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/runtime-three/rapier-collision-world.ts b/src/runtime-three/rapier-collision-world.ts index ed80aded..3f32456f 100644 --- a/src/runtime-three/rapier-collision-world.ts +++ b/src/runtime-three/rapier-collision-world.ts @@ -11,7 +11,7 @@ import type { } from "../geometry/model-instance-collider-generation"; import type { FirstPersonPlayerShape, ResolvedPlayerMotion } from "./player-collision"; -import type { RuntimeBoxCollider, RuntimeSceneCollider } from "./runtime-scene-build"; +import type { RuntimeBrushTriMeshCollider, RuntimeSceneCollider } from "./runtime-scene-build"; const CHARACTER_CONTROLLER_OFFSET = 0.01; const COLLISION_EPSILON = 1e-5; @@ -87,19 +87,14 @@ function createFixedBodyForModelCollider(world: RAPIER.World, collider: Generate ); } -function attachBrushCollider(world: RAPIER.World, collider: RuntimeBoxCollider) { +function attachBrushCollider(world: RAPIER.World, collider: RuntimeBrushTriMeshCollider) { const body = world.createRigidBody( RAPIER.RigidBodyDesc.fixed() .setTranslation(collider.center.x, collider.center.y, collider.center.z) .setRotation(createRapierQuaternion(collider.rotationDegrees)) ); - const halfExtents = { - x: collider.size.x * 0.5, - y: collider.size.y * 0.5, - z: collider.size.z * 0.5 - }; - world.createCollider(RAPIER.ColliderDesc.cuboid(halfExtents.x, halfExtents.y, halfExtents.z), body); + world.createCollider(RAPIER.ColliderDesc.trimesh(collider.vertices, collider.indices), body); } function attachSimpleModelCollider(world: RAPIER.World, collider: GeneratedModelBoxCollider) {