import * as THREE from "three"; import { MeshDefinition } from "./mesh"; import { MaterialDefinition } from "./material"; import { Module } from "./Module"; import { ECSContext } from "../core/ecs"; import * as GEO from "../utils/geometry"; export type RendererPartTag = "head" | "heldItemAnchor"; export type RendererPart = { mesh: string | MeshDefinition; material: string | MaterialDefinition; localTransform?: number[]; /** optional position offset [x, y, z] */ offset?: [number, number, number]; /** optional rotation in radians [rx, ry, rz] */ rotation?: [number, number, number]; tag?: RendererPartTag; }; export type RendererDefinition = { type: "composite"; params: { parts: RendererPart[]; }; }; export interface RendererResolved { parts: { mesh: THREE.BufferGeometry; material: THREE.Material; localTransform?: THREE.Matrix4; tag?: RendererPartTag; }[]; } declare class RendererModule extends Module { constructor(ctx: ECSContext); resolve(def: string): number; resolve(def: RendererDefinition): number; resolve(def: { parts: RendererPart[]; }): number; } export declare const rendererModule: (ctx: ECSContext) => RendererModule; /** * Helper to get the list of Object3Ds for a given tag from the Object3D hierarchy for a given eid. * @param ctx - ECS Context * @param eid - Entity id * @param tag - Tag to look up * @returns Array of Object3D for the tag for the eid, or empty array if none. */ export declare function getTaggedObjects(ctx: ECSContext, eid: number, tag: RendererPartTag): THREE.Object3D[]; export declare function getSpawnTransform(ctx: ECSContext, eid: number): GEO.Transform; export declare function getHeldItemTransform(ctx: ECSContext, eid: number): { x: number; y: number; z: number; qx: number; qy: number; qz: number; qw: number; } | null; export {}; //# sourceMappingURL=renderer.d.ts.map