Files
healer-man/src/scene/mobAggroRangeVisibility.ts
T
2026-09-09 14:26:13 -04:00

18 lines
712 B
TypeScript

import type { MobVector3 } from "../game/mobPopulation";
export const MOB_AGGRO_RANGE_VISIBILITY_DISTANCE = 40;
export function isMobAggroRangeVisible(
playerPosition: MobVector3,
mobPosition: MobVector3,
hasLineOfSight: (from: MobVector3, to: MobVector3) => boolean,
maximumDistance = MOB_AGGRO_RANGE_VISIBILITY_DISTANCE,
): boolean {
if (!Number.isFinite(maximumDistance) || maximumDistance < 0) return false;
const dx = mobPosition[0] - playerPosition[0];
const dy = mobPosition[1] - playerPosition[1];
const dz = mobPosition[2] - playerPosition[2];
if (dx * dx + dy * dy + dz * dz > maximumDistance * maximumDistance) return false;
return hasLineOfSight(playerPosition, mobPosition);
}