forked from phenom/healer-man
23 lines
696 B
TypeScript
23 lines
696 B
TypeScript
import type { WorldSpawn } from "./dungeonTypes";
|
|
|
|
export function derivePartySpawnSlots(spawn: WorldSpawn, partySize = 5): readonly WorldSpawn[] {
|
|
const size = Math.max(1, Math.min(5, Math.trunc(partySize)));
|
|
const offsets = [
|
|
[0, 0],
|
|
[-1.65, -1.8],
|
|
[1.65, -1.8],
|
|
[-3.05, -3.5],
|
|
[3.05, -3.5],
|
|
] as const;
|
|
const sin = Math.sin(spawn.yaw);
|
|
const cos = Math.cos(spawn.yaw);
|
|
return Object.freeze(offsets.slice(0, size).map(([lateral, forward]) => ({
|
|
footPosition: [
|
|
spawn.footPosition[0] + lateral * cos + forward * sin,
|
|
spawn.footPosition[1],
|
|
spawn.footPosition[2] - lateral * sin + forward * cos,
|
|
] as const,
|
|
yaw: spawn.yaw,
|
|
})));
|
|
}
|