import { Vec3 } from '@quake2ts/shared'; import { Entity } from './entity.js'; import { EntitySystem } from './system.js'; export interface EntityHit { entity: Entity; fraction: number; point: Vec3; normal: Vec3; } export interface Ray { origin: Vec3; direction: Vec3; } export interface EntityMetadata { id: number; classname: string; origin: Vec3; angles: Vec3; model?: string; targetname?: string; target?: string; killtarget?: string; spawnflags: number; [key: string]: any; } export interface EntityConnection { sourceId: number; targetId: number; type: 'target' | 'killtarget' | 'other'; } export interface EntityGraph { nodes: { id: number; label: string; type: string; }[]; edges: { source: number; target: number; label: string; }[]; } export interface CameraLike { origin: Vec3; axis: [Vec3, Vec3, Vec3]; fovX: number; fovY: number; width: number; height: number; } export declare class EntitySelection { private system; constructor(system: EntitySystem); rayCastEntities(origin: Vec3, direction: Vec3): EntityHit[]; private intersectAabb; private intersectObb; getEntityMetadata(entityId: number): EntityMetadata | null; getEntityFields(entityId: number): Record; getEntityConnections(entityId: number): EntityConnection[]; getEntityBounds(entityId: number): { mins: Vec3; maxs: Vec3; } | null; getEntityModel(entityId: number): string | null; findEntitiesByClassname(classname: string): number[]; findEntitiesByTargetname(targetname: string): number[]; findEntitiesInRadius(origin: Vec3, radius: number): number[]; findEntitiesInBounds(mins: Vec3, maxs: Vec3): number[]; searchEntityFields(field: string, value: any): number[]; getAllEntityClassnames(): string[]; getEntityGraph(): EntityGraph; } //# sourceMappingURL=selection.d.ts.map