/** * These definitions are exported in 'index.ts'. * See the API reference for more details: * * https://github.com/UmbraSoftware/umbrajs/wiki/API-reference * */ import * as Native from './NativeTypes'; import * as Assets from './Assets'; import * as UmbraMath from './Math'; export { ConnectionStatus, TextureSupportFlags, TextureFormat, TextureType, ColorSpace, DepthRange, MatrixFormat, } from './NativeTypes'; export declare type UserPointer = Native.UserPointer; export declare type Pointer = Native.Pointer; export declare type SceneInfo = Native.SceneInfo; export { UmbraMath as Math, Assets }; export * from './Heap'; export * from './Mesh'; export interface Location { project: string; model: string; } export interface Renderable { id: UserPointer; mesh: any; lod: number; mask: number; scenePtr: Pointer; } export interface Texture extends Native.TextureInfo { mipByteSizes: number[]; mipByteOffsets: number[]; } export interface NativeScene { connectionStatus(): Native.ConnectionStatus; isConnected(): boolean; setTransform(matrix: UmbraMath.Matrix4x4): void; destroy(): void; getInfo(): SceneInfo; readonly ptr: Native.Pointer; } export interface View { setCamera(worldToClip: UmbraMath.Matrix4x4, positionVector: UmbraMath.Vector3, quality: number, lights?: UmbraMath.Vector3[], depthRange?: Native.DepthRange, matrixFormat?: Native.MatrixFormat): void; getVisible(batchSize: number): Renderable[]; destroy(): void; readonly ptr: Native.Pointer; } export interface JobHandlers { LoadMaterial: (data: Assets.MaterialData, assetID: UserPointer) => Assets.AssetLoadResult; LoadTexture: (data: Assets.TextureData, assetID: UserPointer) => Assets.AssetLoadResult; LoadMesh: (data: Assets.MeshData, assetID: UserPointer) => Assets.AssetLoadResult; UnloadMaterial: (asset: any, assetID: UserPointer) => void; UnloadTexture: (asset: any, assetID: UserPointer) => void; UnloadMesh: (asset: any, assetID: UserPointer) => void; } export interface Runtime { createScene(apiKey: string, locator: string): NativeScene; createScenePublic(publicKey: string): NativeScene; createSceneLocal(url: string): NativeScene; setHandlers(handlers: JobHandlers): void; update(): void; getAssetUnloads(): IterableIterator; loadAssets(timeLimit: number): void; addAsset(assetID: UserPointer, asset: any): void; removeAsset(assetID: UserPointer): void; readonly assets: Map; getStreamingState(): Native.StreamingState; getStreamingProgress(): number; getNumberOfWorkers(): number; destroy(): void; } export interface PlatformFeatures { textureSupportMask: number; formats: string[]; srgb: boolean; halfFloat: boolean; } export interface RuntimeConfig { features: PlatformFeatures; flags?: number; } export interface UmbraInstance { getPlatformFeatures(gl: WebGLRenderingContext): PlatformFeatures; getStreamingInfo(): { minBytesDownloaded: number; maxBytesDownloaded: number; }; getLibraryInfo(): { version: string; copyright: string; buildTime: string; buildID: string; }; createRuntime(config: RuntimeConfig): Runtime; abortDownloads(): void; }