28 lines
882 B
TypeScript
28 lines
882 B
TypeScript
import { Matrix4, Vector3 } from 'three';
|
|
import { Brick } from './brick.object';
|
|
import type Rapier from '@dimforge/rapier3d-compat';
|
|
import { WedgeInnerCornerGeometry } from './geometries';
|
|
|
|
export class WedgeInnerCorner extends Brick {
|
|
public objectType = 'WedgeInnerCorner';
|
|
public name = this.objectType;
|
|
|
|
public static geometry = new WedgeInnerCornerGeometry();
|
|
|
|
protected override createCollider(
|
|
factory: typeof Rapier,
|
|
world: Rapier.World,
|
|
body?: Rapier.RigidBody,
|
|
) {
|
|
const scale = this.getWorldScale(new Vector3());
|
|
const mat = new Matrix4();
|
|
mat.makeScale(...scale.toArray());
|
|
const points = WedgeInnerCorner.geometry
|
|
.getAttribute('position')
|
|
.clone()
|
|
.applyMatrix4(mat)?.array as Float32Array;
|
|
const collider = factory.ColliderDesc.convexMesh(points)!;
|
|
return world.createCollider(collider, body);
|
|
}
|
|
}
|