babylon.glTF2FileLoader.d.ts 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486
  1. declare module BABYLON {
  2. enum GLTFLoaderCoordinateSystemMode {
  3. /**
  4. * Automatically convert the glTF right-handed data to the appropriate system based on the current coordinate system mode of the scene.
  5. */
  6. AUTO = 0,
  7. /**
  8. * Sets the useRightHandedSystem flag on the scene.
  9. */
  10. FORCE_RIGHT_HANDED = 1,
  11. }
  12. enum GLTFLoaderAnimationStartMode {
  13. /**
  14. * No animation will start.
  15. */
  16. NONE = 0,
  17. /**
  18. * The first animation will start.
  19. */
  20. FIRST = 1,
  21. /**
  22. * All animations will start.
  23. */
  24. ALL = 2,
  25. }
  26. interface IGLTFLoaderData {
  27. json: Object;
  28. bin: Nullable<ArrayBufferView>;
  29. }
  30. interface IGLTFLoaderExtension {
  31. /**
  32. * The name of this extension.
  33. */
  34. readonly name: string;
  35. /**
  36. * Whether this extension is enabled.
  37. */
  38. enabled: boolean;
  39. }
  40. enum GLTFLoaderState {
  41. /**
  42. * The asset is loading.
  43. */
  44. LOADING = 0,
  45. /**
  46. * The asset is ready for rendering.
  47. */
  48. READY = 1,
  49. /**
  50. * The asset is completely loaded.
  51. */
  52. COMPLETE = 2,
  53. }
  54. interface IGLTFLoader extends IDisposable {
  55. coordinateSystemMode: GLTFLoaderCoordinateSystemMode;
  56. animationStartMode: GLTFLoaderAnimationStartMode;
  57. compileMaterials: boolean;
  58. useClipPlane: boolean;
  59. compileShadowGenerators: boolean;
  60. onMeshLoadedObservable: Observable<AbstractMesh>;
  61. onTextureLoadedObservable: Observable<BaseTexture>;
  62. onMaterialLoadedObservable: Observable<Material>;
  63. onCompleteObservable: Observable<IGLTFLoader>;
  64. onDisposeObservable: Observable<IGLTFLoader>;
  65. onExtensionLoadedObservable: Observable<IGLTFLoaderExtension>;
  66. state: Nullable<GLTFLoaderState>;
  67. importMeshAsync: (meshesNames: any, scene: Scene, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void) => Promise<{
  68. meshes: AbstractMesh[];
  69. particleSystems: ParticleSystem[];
  70. skeletons: Skeleton[];
  71. animationGroups: AnimationGroup[];
  72. }>;
  73. loadAsync: (scene: Scene, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void) => Promise<void>;
  74. }
  75. class GLTFFileLoader implements IDisposable, ISceneLoaderPluginAsync, ISceneLoaderPluginFactory {
  76. static CreateGLTFLoaderV1: () => IGLTFLoader;
  77. static CreateGLTFLoaderV2: () => IGLTFLoader;
  78. /**
  79. * Raised when the asset has been parsed.
  80. * The data.json property stores the glTF JSON.
  81. * The data.bin property stores the BIN chunk from a glTF binary or null if the input is not a glTF binary.
  82. */
  83. onParsedObservable: Observable<IGLTFLoaderData>;
  84. private _onParsedObserver;
  85. onParsed: (loaderData: IGLTFLoaderData) => void;
  86. static IncrementalLoading: boolean;
  87. static HomogeneousCoordinates: boolean;
  88. /**
  89. * The coordinate system mode (AUTO, FORCE_RIGHT_HANDED).
  90. */
  91. coordinateSystemMode: GLTFLoaderCoordinateSystemMode;
  92. /**
  93. * The animation start mode (NONE, FIRST, ALL).
  94. */
  95. animationStartMode: GLTFLoaderAnimationStartMode;
  96. /**
  97. * Set to true to compile materials before raising the success callback.
  98. */
  99. compileMaterials: boolean;
  100. /**
  101. * Set to true to also compile materials with clip planes.
  102. */
  103. useClipPlane: boolean;
  104. /**
  105. * Set to true to compile shadow generators before raising the success callback.
  106. */
  107. compileShadowGenerators: boolean;
  108. /**
  109. * Raised when the loader creates a mesh after parsing the glTF properties of the mesh.
  110. */
  111. readonly onMeshLoadedObservable: Observable<AbstractMesh>;
  112. private _onMeshLoadedObserver;
  113. onMeshLoaded: (mesh: AbstractMesh) => void;
  114. /**
  115. * Raised when the loader creates a texture after parsing the glTF properties of the texture.
  116. */
  117. readonly onTextureLoadedObservable: Observable<BaseTexture>;
  118. private _onTextureLoadedObserver;
  119. onTextureLoaded: (texture: BaseTexture) => void;
  120. /**
  121. * Raised when the loader creates a material after parsing the glTF properties of the material.
  122. */
  123. readonly onMaterialLoadedObservable: Observable<Material>;
  124. private _onMaterialLoadedObserver;
  125. onMaterialLoaded: (material: Material) => void;
  126. /**
  127. * Raised when the asset is completely loaded, immediately before the loader is disposed.
  128. * For assets with LODs, raised when all of the LODs are complete.
  129. * For assets without LODs, raised when the model is complete, immediately after the loader resolves the returned promise.
  130. */
  131. readonly onCompleteObservable: Observable<GLTFFileLoader>;
  132. private _onCompleteObserver;
  133. onComplete: () => void;
  134. /**
  135. * Raised after the loader is disposed.
  136. */
  137. readonly onDisposeObservable: Observable<GLTFFileLoader>;
  138. private _onDisposeObserver;
  139. onDispose: () => void;
  140. /**
  141. * Raised after a loader extension is created.
  142. * Set additional options for a loader extension in this event.
  143. */
  144. readonly onExtensionLoadedObservable: Observable<IGLTFLoaderExtension>;
  145. private _onExtensionLoadedObserver;
  146. onExtensionLoaded: (extension: IGLTFLoaderExtension) => void;
  147. /**
  148. * Returns a promise that resolves when the asset is completely loaded.
  149. * @returns A promise that resolves when the asset is completely loaded.
  150. */
  151. whenCompleteAsync(): Promise<void>;
  152. /**
  153. * The loader state (LOADING, READY, COMPLETE) or null if the loader is not active.
  154. */
  155. readonly loaderState: Nullable<GLTFLoaderState>;
  156. private _loader;
  157. name: string;
  158. extensions: ISceneLoaderPluginExtensions;
  159. /**
  160. * Disposes the loader, releases resources during load, and cancels any outstanding requests.
  161. */
  162. dispose(): void;
  163. importMeshAsync(meshesNames: any, scene: Scene, data: any, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void): Promise<{
  164. meshes: AbstractMesh[];
  165. particleSystems: ParticleSystem[];
  166. skeletons: Skeleton[];
  167. animationGroups: AnimationGroup[];
  168. }>;
  169. loadAsync(scene: Scene, data: string | ArrayBuffer, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void): Promise<void>;
  170. loadAssetContainerAsync(scene: Scene, data: string | ArrayBuffer, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void): Promise<AssetContainer>;
  171. canDirectLoad(data: string): boolean;
  172. rewriteRootURL: (rootUrl: string, responseURL?: string) => string;
  173. createPlugin(): ISceneLoaderPlugin | ISceneLoaderPluginAsync;
  174. private _parse(data);
  175. private _getLoader(loaderData);
  176. private static _parseBinary(data);
  177. private static _parseV1(binaryReader);
  178. private static _parseV2(binaryReader);
  179. private static _parseVersion(version);
  180. private static _compareVersion(a, b);
  181. private static _decodeBufferToText(buffer);
  182. }
  183. }
  184. declare module BABYLON.GLTF2 {
  185. interface IArrayItem {
  186. _index: number;
  187. }
  188. class ArrayItem {
  189. static Assign(values?: IArrayItem[]): void;
  190. }
  191. class AnimationMultiTarget {
  192. subTargets: any[];
  193. position: Vector3;
  194. rotationQuaternion: Quaternion;
  195. scaling: Vector3;
  196. influence: number;
  197. }
  198. }
  199. declare module BABYLON.GLTF2 {
  200. interface ILoaderAccessor extends IAccessor, IArrayItem {
  201. _data?: Promise<ArrayBufferView>;
  202. _babylonVertexBuffer?: Promise<VertexBuffer>;
  203. }
  204. interface ILoaderAnimationChannel extends IAnimationChannel, IArrayItem {
  205. }
  206. interface ILoaderAnimationSamplerData {
  207. input: Float32Array;
  208. interpolation: AnimationSamplerInterpolation;
  209. output: Float32Array;
  210. }
  211. interface ILoaderAnimationSampler extends IAnimationSampler, IArrayItem {
  212. _data: Promise<ILoaderAnimationSamplerData>;
  213. }
  214. interface ILoaderAnimation extends IAnimation, IArrayItem {
  215. channels: ILoaderAnimationChannel[];
  216. samplers: ILoaderAnimationSampler[];
  217. _babylonAnimationGroup?: AnimationGroup;
  218. }
  219. interface ILoaderBuffer extends IBuffer, IArrayItem {
  220. _data?: Promise<ArrayBufferView>;
  221. }
  222. interface ILoaderBufferView extends IBufferView, IArrayItem {
  223. _data?: Promise<ArrayBufferView>;
  224. _babylonBuffer?: Promise<Buffer>;
  225. }
  226. interface ILoaderCamera extends ICamera, IArrayItem {
  227. }
  228. interface ILoaderImage extends IImage, IArrayItem {
  229. _objectURL?: Promise<string>;
  230. }
  231. interface ILoaderMaterial extends IMaterial, IArrayItem {
  232. _babylonData?: {
  233. [drawMode: number]: {
  234. material: Material;
  235. meshes: AbstractMesh[];
  236. loaded: Promise<void>;
  237. };
  238. };
  239. }
  240. interface ILoaderMesh extends IMesh, IArrayItem {
  241. primitives: ILoaderMeshPrimitive[];
  242. }
  243. interface ILoaderMeshPrimitive extends IMeshPrimitive, IArrayItem {
  244. }
  245. interface ILoaderNode extends INode, IArrayItem {
  246. _parent: ILoaderNode;
  247. _babylonMesh?: Mesh;
  248. _primitiveBabylonMeshes?: Mesh[];
  249. _babylonAnimationTargets?: Node[];
  250. _numMorphTargets?: number;
  251. }
  252. interface ILoaderSamplerData {
  253. noMipMaps: boolean;
  254. samplingMode: number;
  255. wrapU: number;
  256. wrapV: number;
  257. }
  258. interface ILoaderSampler extends ISampler, IArrayItem {
  259. _data?: ILoaderSamplerData;
  260. }
  261. interface ILoaderScene extends IScene, IArrayItem {
  262. }
  263. interface ILoaderSkin extends ISkin, IArrayItem {
  264. _babylonSkeleton?: Skeleton;
  265. _loaded?: Promise<void>;
  266. }
  267. interface ILoaderTexture extends ITexture, IArrayItem {
  268. }
  269. interface ILoaderGLTF extends IGLTF {
  270. accessors?: ILoaderAccessor[];
  271. animations?: ILoaderAnimation[];
  272. buffers?: ILoaderBuffer[];
  273. bufferViews?: ILoaderBufferView[];
  274. cameras?: ILoaderCamera[];
  275. images?: ILoaderImage[];
  276. materials?: ILoaderMaterial[];
  277. meshes?: ILoaderMesh[];
  278. nodes?: ILoaderNode[];
  279. samplers?: ILoaderSampler[];
  280. scenes?: ILoaderScene[];
  281. skins?: ILoaderSkin[];
  282. textures?: ILoaderTexture[];
  283. }
  284. }
  285. declare module BABYLON.GLTF2 {
  286. interface MaterialConstructor<T extends Material> {
  287. readonly prototype: T;
  288. new (name: string, scene: Scene): T;
  289. }
  290. class GLTFLoader implements IGLTFLoader {
  291. _gltf: ILoaderGLTF;
  292. _babylonScene: Scene;
  293. _completePromises: Promise<void>[];
  294. private _disposed;
  295. private _state;
  296. private _extensions;
  297. private _rootUrl;
  298. private _rootBabylonMesh;
  299. private _defaultSampler;
  300. private _defaultBabylonMaterials;
  301. private _progressCallback?;
  302. private _requests;
  303. private static _Names;
  304. private static _Factories;
  305. static _Register(name: string, factory: (loader: GLTFLoader) => GLTFLoaderExtension): void;
  306. coordinateSystemMode: GLTFLoaderCoordinateSystemMode;
  307. animationStartMode: GLTFLoaderAnimationStartMode;
  308. compileMaterials: boolean;
  309. useClipPlane: boolean;
  310. compileShadowGenerators: boolean;
  311. readonly onDisposeObservable: Observable<IGLTFLoader>;
  312. readonly onMeshLoadedObservable: Observable<AbstractMesh>;
  313. readonly onTextureLoadedObservable: Observable<BaseTexture>;
  314. readonly onMaterialLoadedObservable: Observable<Material>;
  315. readonly onExtensionLoadedObservable: Observable<IGLTFLoaderExtension>;
  316. readonly onCompleteObservable: Observable<IGLTFLoader>;
  317. readonly state: Nullable<GLTFLoaderState>;
  318. dispose(): void;
  319. importMeshAsync(meshesNames: any, scene: Scene, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void): Promise<{
  320. meshes: AbstractMesh[];
  321. particleSystems: ParticleSystem[];
  322. skeletons: Skeleton[];
  323. animationGroups: AnimationGroup[];
  324. }>;
  325. loadAsync(scene: Scene, data: IGLTFLoaderData, rootUrl: string, onProgress?: (event: SceneLoaderProgressEvent) => void): Promise<void>;
  326. private _loadAsync(nodes, scene, data, rootUrl, onProgress?);
  327. private _loadExtensions();
  328. private _loadData(data);
  329. private _setupData();
  330. private _checkExtensions();
  331. private _createRootNode();
  332. private _loadNodesAsync(nodes);
  333. _loadSceneAsync(context: string, scene: ILoaderScene): Promise<void>;
  334. private _forEachPrimitive(node, callback);
  335. private _getMeshes();
  336. private _getSkeletons();
  337. private _getAnimationGroups();
  338. private _startAnimations();
  339. _loadNodeAsync(context: string, node: ILoaderNode): Promise<void>;
  340. private _loadMeshAsync(context, node, mesh, babylonMesh);
  341. private _loadPrimitiveAsync(context, node, mesh, primitive, babylonMesh);
  342. private _loadVertexDataAsync(context, primitive, babylonMesh);
  343. private _createMorphTargets(context, node, mesh, primitive, babylonMesh);
  344. private _loadMorphTargetsAsync(context, primitive, babylonMesh, babylonGeometry);
  345. private _loadMorphTargetVertexDataAsync(context, babylonGeometry, attributes, babylonMorphTarget);
  346. private static _LoadTransform(node, babylonNode);
  347. private _loadSkinAsync(context, node, mesh, skin);
  348. private _loadSkinInverseBindMatricesDataAsync(context, skin);
  349. private _createBone(node, skin, parent, localMatrix, baseMatrix, index);
  350. private _loadBones(context, skin, inverseBindMatricesData);
  351. private _loadBone(node, skin, inverseBindMatricesData, babylonBones);
  352. private _getNodeMatrix(node);
  353. private _loadAnimationsAsync();
  354. private _loadAnimationAsync(context, animation);
  355. private _loadAnimationChannelAsync(context, animationContext, animation, channel, babylonAnimationGroup);
  356. private _loadAnimationSamplerAsync(context, sampler);
  357. private _loadBufferAsync(context, buffer);
  358. _loadBufferViewAsync(context: string, bufferView: ILoaderBufferView): Promise<ArrayBufferView>;
  359. private _loadAccessorAsync(context, accessor);
  360. _loadVertexBufferViewAsync(context: string, bufferView: ILoaderBufferView, kind: string): Promise<Buffer>;
  361. private _loadVertexAccessorAsync(context, accessor, kind);
  362. private _getDefaultMaterial(drawMode);
  363. private _loadMaterialMetallicRoughnessPropertiesAsync(context, material, babylonMaterial);
  364. _loadMaterialAsync(context: string, material: ILoaderMaterial, babylonMesh: Mesh, babylonDrawMode: number, assign: (babylonMaterial: Material) => void): Promise<void>;
  365. _createMaterial<T extends Material>(type: MaterialConstructor<T>, name: string, drawMode: number): T;
  366. _loadMaterialBasePropertiesAsync(context: string, material: ILoaderMaterial, babylonMaterial: PBRMaterial): Promise<void>;
  367. _loadMaterialAlphaProperties(context: string, material: ILoaderMaterial, babylonMaterial: PBRMaterial): void;
  368. _loadTextureAsync(context: string, textureInfo: ITextureInfo, assign: (texture: Texture) => void): Promise<void>;
  369. private _loadSampler(context, sampler);
  370. private _loadImageAsync(context, image);
  371. _loadUriAsync(context: string, uri: string): Promise<ArrayBufferView>;
  372. private _onProgress();
  373. static _GetProperty<T>(context: string, array: ArrayLike<T> | undefined, index: number | undefined): T;
  374. private static _GetTextureWrapMode(context, mode);
  375. private static _GetTextureSamplingMode(context, magFilter?, minFilter?);
  376. private static _GetNumComponents(context, type);
  377. private static _ValidateUri(uri);
  378. private static _GetDrawMode(context, mode);
  379. private _compileMaterialsAsync();
  380. private _compileShadowGeneratorsAsync();
  381. private _clear();
  382. _applyExtensions<T>(actionAsync: (extension: GLTFLoaderExtension) => Nullable<Promise<T>>): Nullable<Promise<T>>;
  383. }
  384. }
  385. declare module BABYLON.GLTF2 {
  386. abstract class GLTFLoaderExtension implements IGLTFLoaderExtension, IDisposable {
  387. enabled: boolean;
  388. readonly abstract name: string;
  389. protected _loader: GLTFLoader;
  390. constructor(loader: GLTFLoader);
  391. dispose(): void;
  392. /** Override this method to modify the default behavior for loading scenes. */
  393. protected _loadSceneAsync(context: string, node: ILoaderScene): Nullable<Promise<void>>;
  394. /** Override this method to modify the default behavior for loading nodes. */
  395. protected _loadNodeAsync(context: string, node: ILoaderNode): Nullable<Promise<void>>;
  396. /** Override this method to modify the default behavior for loading mesh primitive vertex data. */
  397. protected _loadVertexDataAsync(context: string, primitive: ILoaderMeshPrimitive, babylonMesh: Mesh): Nullable<Promise<Geometry>>;
  398. /** Override this method to modify the default behavior for loading materials. */
  399. protected _loadMaterialAsync(context: string, material: ILoaderMaterial, babylonMesh: Mesh, babylonDrawMode: number, assign: (babylonMaterial: Material) => void): Nullable<Promise<void>>;
  400. /** Override this method to modify the default behavior for loading uris. */
  401. protected _loadUriAsync(context: string, uri: string): Nullable<Promise<ArrayBufferView>>;
  402. /** Helper method called by a loader extension to load an glTF extension. */
  403. protected _loadExtensionAsync<TProperty, TResult = void>(context: string, property: IProperty, actionAsync: (extensionContext: string, extension: TProperty) => Promise<TResult>): Nullable<Promise<TResult>>;
  404. /** Helper method called by the loader to allow extensions to override loading scenes. */
  405. static _LoadSceneAsync(loader: GLTFLoader, context: string, scene: ILoaderScene): Nullable<Promise<void>>;
  406. /** Helper method called by the loader to allow extensions to override loading nodes. */
  407. static _LoadNodeAsync(loader: GLTFLoader, context: string, node: ILoaderNode): Nullable<Promise<void>>;
  408. /** Helper method called by the loader to allow extensions to override loading mesh primitive vertex data. */
  409. static _LoadVertexDataAsync(loader: GLTFLoader, context: string, primitive: ILoaderMeshPrimitive, babylonMesh: Mesh): Nullable<Promise<Geometry>>;
  410. /** Helper method called by the loader to allow extensions to override loading materials. */
  411. static _LoadMaterialAsync(loader: GLTFLoader, context: string, material: ILoaderMaterial, babylonMesh: Mesh, babylonDrawMode: number, assign: (babylonMaterial: Material) => void): Nullable<Promise<void>>;
  412. /** Helper method called by the loader to allow extensions to override loading uris. */
  413. static _LoadUriAsync(loader: GLTFLoader, context: string, uri: string): Nullable<Promise<ArrayBufferView>>;
  414. }
  415. }
  416. declare module BABYLON.GLTF2.Extensions {
  417. class MSFT_lod extends GLTFLoaderExtension {
  418. readonly name: string;
  419. /**
  420. * Maximum number of LODs to load, starting from the lowest LOD.
  421. */
  422. maxLODsToLoad: number;
  423. private _loadingNodeLOD;
  424. private _loadNodeSignals;
  425. private _loadingMaterialLOD;
  426. private _loadMaterialSignals;
  427. protected _loadNodeAsync(context: string, node: ILoaderNode): Nullable<Promise<void>>;
  428. protected _loadMaterialAsync(context: string, material: ILoaderMaterial, babylonMesh: Mesh, babylonDrawMode: number, assign: (babylonMaterial: Material) => void): Nullable<Promise<void>>;
  429. protected _loadUriAsync(context: string, uri: string): Nullable<Promise<ArrayBufferView>>;
  430. /**
  431. * Gets an array of LOD properties from lowest to highest.
  432. */
  433. private _getLODs<T>(context, property, array, ids);
  434. }
  435. }
  436. declare module BABYLON.GLTF2.Extensions {
  437. class KHR_draco_mesh_compression extends GLTFLoaderExtension {
  438. readonly name: string;
  439. private _dracoCompression;
  440. constructor(loader: GLTFLoader);
  441. dispose(): void;
  442. protected _loadVertexDataAsync(context: string, primitive: ILoaderMeshPrimitive, babylonMesh: Mesh): Nullable<Promise<Geometry>>;
  443. }
  444. }
  445. declare module BABYLON.GLTF2.Extensions {
  446. class KHR_materials_pbrSpecularGlossiness extends GLTFLoaderExtension {
  447. readonly name: string;
  448. protected _loadMaterialAsync(context: string, material: ILoaderMaterial, babylonMesh: Mesh, babylonDrawMode: number, assign: (babylonMaterial: Material) => void): Nullable<Promise<void>>;
  449. private _loadSpecularGlossinessPropertiesAsync(context, material, properties, babylonMaterial);
  450. }
  451. }
  452. declare module BABYLON.GLTF2.Extensions {
  453. class KHR_materials_unlit extends GLTFLoaderExtension {
  454. readonly name: string;
  455. protected _loadMaterialAsync(context: string, material: ILoaderMaterial, babylonMesh: Mesh, babylonDrawMode: number, assign: (babylonMaterial: Material) => void): Nullable<Promise<void>>;
  456. private _loadUnlitPropertiesAsync(context, material, babylonMaterial);
  457. }
  458. }
  459. declare module BABYLON.GLTF2.Extensions {
  460. class KHR_lights extends GLTFLoaderExtension {
  461. readonly name: string;
  462. protected _loadSceneAsync(context: string, scene: ILoaderScene): Nullable<Promise<void>>;
  463. protected _loadNodeAsync(context: string, node: ILoaderNode): Nullable<Promise<void>>;
  464. private readonly _lights;
  465. }
  466. }