server/src/game/wedge-inner-corner.object.ts

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);
}
}