server/src/game/torus.object.ts

26 lines
768 B
TypeScript

import { Quaternion, Vector3 } from 'three';
import { Brick } from './brick.object';
import type Rapier from '@dimforge/rapier3d-compat';
export class Torus extends Brick {
public objectType = 'Torus';
public name = this.objectType;
protected override createCollider(
factory: typeof Rapier,
world: Rapier.World,
body?: Rapier.RigidBody,
) {
const scale = this.getWorldScale(new Vector3());
const height = Math.abs(scale.y) * 0.4;
const radius = (Math.abs(scale.x) + Math.abs(scale.z)) / 2;
const collider = factory.ColliderDesc.cylinder(
height,
radius * 1.4,
).setRotation(
new Quaternion().setFromAxisAngle(new Vector3(1, 0, 0), Math.PI / 2),
);
return world.createCollider(collider, body);
}
}