import * as Native from './NativeTypes'; import { MeshAttributes } from './Mesh'; import * as Math from './Math'; import { HeapBufferView } from './Heap'; import { AssetType, AssetLoadResult } from './NativeEnums'; export { MeshAttributes, VertexBuffer } from './Mesh'; export { AssetType, AssetLoadResult } from './NativeEnums'; declare type UserPointer = Native.UserPointer; export interface MaterialData extends Omit { textures: Array; } export interface TextureData { info: Native.TextureInfo; buffer: HeapBufferView; } export interface MeshData { buffers: MeshAttributes; material: any; bounds: Math.BoundingBox; } export declare type AssetData = MaterialData | TextureData | MeshData; export declare type UserAssetData = any; export interface Job { ptr: Native.Pointer; assetType: AssetType; } export interface Load extends Job { type: LoadType; data: AssetData | UserPointer; assetUserPointer: UserPointer; prepare(): void; finish(result: AssetLoadResult): void; } export interface LoadMaterial extends Load { type: 'LoadMaterial'; } export interface LoadTexture extends Load { type: 'LoadTexture'; } export interface LoadMesh extends Load { type: 'LoadMesh'; } export interface Unload extends Job { data: UserAssetData; readonly userPointer: UserPointer; finish(): void; } export declare type LoadType = 'LoadMaterial' | 'LoadTexture' | 'LoadMesh'; export declare type UnloadType = 'UnloadMaterial' | 'UnloadTexture' | 'UnloadMesh';