18 lines
712 B
TypeScript
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);
|
|
}
|