30 lines
957 B
TypeScript
30 lines
957 B
TypeScript
import type { Vector3Tuple } from "@/types/three/three";
|
|
|
|
export const LA_FABRIK_CENTER: Vector3Tuple = [59.4973, 6.2746, 64.6354];
|
|
export const LA_FABRIK_ROTATION_Y = 2.4107;
|
|
export const LA_FABRIK_HALF_EXTENTS = {
|
|
x: 8.5,
|
|
z: 7.5,
|
|
} as const;
|
|
export const LA_FABRIK_PLAYER_SPAWN: Vector3Tuple = [59.5, 6.3, 64.64];
|
|
export const LA_FABRIK_INITIAL_LOOK_AT: Vector3Tuple = [58, 7.3, 62.5];
|
|
export const LA_FABRIK_INTERIOR_LIGHT_POSITION: Vector3Tuple = [59.5, 9, 64.64];
|
|
|
|
export function isInsideLaFabrikFootprint(
|
|
x: number,
|
|
z: number,
|
|
padding = 0,
|
|
): boolean {
|
|
const dx = x - LA_FABRIK_CENTER[0];
|
|
const dz = z - LA_FABRIK_CENTER[2];
|
|
const cos = Math.cos(-LA_FABRIK_ROTATION_Y);
|
|
const sin = Math.sin(-LA_FABRIK_ROTATION_Y);
|
|
const localX = dx * cos - dz * sin;
|
|
const localZ = dx * sin + dz * cos;
|
|
|
|
return (
|
|
Math.abs(localX) <= LA_FABRIK_HALF_EXTENTS.x + padding &&
|
|
Math.abs(localZ) <= LA_FABRIK_HALF_EXTENTS.z + padding
|
|
);
|
|
}
|