minerender 2.1.0-alpha.0 → 2.1.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/README.md +0 -2
  2. package/dist/browser/index.d.mts +106 -84
  3. package/dist/browser/index.d.ts +106 -84
  4. package/dist/browser/index.js +1094 -968
  5. package/dist/browser/index.js.map +1 -1
  6. package/dist/browser/index.mjs +1107 -981
  7. package/dist/browser/index.mjs.map +1 -1
  8. package/dist/bundle.js +1045 -921
  9. package/dist/bundle.js.map +1 -1
  10. package/dist/node/index.d.mts +106 -84
  11. package/dist/node/index.d.ts +106 -84
  12. package/dist/node/index.js +1100 -970
  13. package/dist/node/index.js.map +1 -1
  14. package/dist/node/index.mjs +1112 -982
  15. package/dist/node/index.mjs.map +1 -1
  16. package/package.json +5 -5
  17. package/.worktrees/jobqu-review/LICENSE +0 -21
  18. package/.worktrees/jobqu-review/README.md +0 -176
  19. package/.worktrees/v2-asset-sources/LICENSE +0 -21
  20. package/.worktrees/v2-asset-sources/README.md +0 -30
  21. package/.worktrees/v2-asset-sources/examples/script-tag/README.md +0 -13
  22. package/.worktrees/v2-asset-sources/examples/vite/README.md +0 -13
  23. package/.worktrees/v2-asset-sources/packages/minerender/LICENSE +0 -21
  24. package/.worktrees/v2-asset-sources/packages/minerender/README.md +0 -24
  25. package/.worktrees/v2-brightness/LICENSE +0 -21
  26. package/.worktrees/v2-brightness/README.md +0 -30
  27. package/.worktrees/v2-brightness/examples/script-tag/README.md +0 -13
  28. package/.worktrees/v2-brightness/examples/vite/README.md +0 -13
  29. package/.worktrees/v2-brightness/packages/minerender/LICENSE +0 -21
  30. package/.worktrees/v2-brightness/packages/minerender/README.md +0 -24
  31. package/.worktrees/v2-cache-recovery/LICENSE +0 -21
  32. package/.worktrees/v2-cache-recovery/README.md +0 -30
  33. package/.worktrees/v2-cache-recovery/examples/script-tag/README.md +0 -13
  34. package/.worktrees/v2-cache-recovery/examples/vite/README.md +0 -13
  35. package/.worktrees/v2-cache-recovery/packages/minerender/LICENSE +0 -21
  36. package/.worktrees/v2-cache-recovery/packages/minerender/README.md +0 -24
  37. package/.worktrees/v2-ci-stack/LICENSE +0 -21
  38. package/.worktrees/v2-ci-stack/README.md +0 -109
  39. package/.worktrees/v2-ci-stack/examples/script-tag/README.md +0 -15
  40. package/.worktrees/v2-ci-stack/examples/vite/README.md +0 -15
  41. package/.worktrees/v2-ci-stack/packages/minerender/LICENSE +0 -21
  42. package/.worktrees/v2-ci-stack/packages/minerender/README.md +0 -11
  43. package/.worktrees/v2-ci-typescript/LICENSE +0 -21
  44. package/.worktrees/v2-ci-typescript/README.md +0 -11
  45. package/.worktrees/v2-controls/LICENSE +0 -21
  46. package/.worktrees/v2-controls/README.md +0 -30
  47. package/.worktrees/v2-controls/examples/script-tag/README.md +0 -13
  48. package/.worktrees/v2-controls/examples/vite/README.md +0 -13
  49. package/.worktrees/v2-controls/packages/minerender/LICENSE +0 -21
  50. package/.worktrees/v2-controls/packages/minerender/README.md +0 -24
  51. package/.worktrees/v2-dependencies/LICENSE +0 -21
  52. package/.worktrees/v2-dependencies/README.md +0 -30
  53. package/.worktrees/v2-dependencies/examples/script-tag/README.md +0 -13
  54. package/.worktrees/v2-dependencies/examples/vite/README.md +0 -13
  55. package/.worktrees/v2-dependencies/packages/minerender/LICENSE +0 -21
  56. package/.worktrees/v2-dependencies/packages/minerender/README.md +0 -24
  57. package/.worktrees/v2-frame-limit/LICENSE +0 -21
  58. package/.worktrees/v2-frame-limit/README.md +0 -30
  59. package/.worktrees/v2-frame-limit/examples/script-tag/README.md +0 -13
  60. package/.worktrees/v2-frame-limit/examples/vite/README.md +0 -13
  61. package/.worktrees/v2-frame-limit/packages/minerender/LICENSE +0 -21
  62. package/.worktrees/v2-frame-limit/packages/minerender/README.md +0 -24
  63. package/.worktrees/v2-images/LICENSE +0 -21
  64. package/.worktrees/v2-images/README.md +0 -30
  65. package/.worktrees/v2-images/examples/script-tag/README.md +0 -13
  66. package/.worktrees/v2-images/examples/vite/README.md +0 -13
  67. package/.worktrees/v2-images/packages/minerender/LICENSE +0 -21
  68. package/.worktrees/v2-images/packages/minerender/README.md +0 -24
  69. package/.worktrees/v2-lifecycle/LICENSE +0 -21
  70. package/.worktrees/v2-lifecycle/README.md +0 -30
  71. package/.worktrees/v2-lifecycle/examples/script-tag/README.md +0 -13
  72. package/.worktrees/v2-lifecycle/examples/vite/README.md +0 -13
  73. package/.worktrees/v2-lifecycle/packages/minerender/LICENSE +0 -21
  74. package/.worktrees/v2-lifecycle/packages/minerender/README.md +0 -24
  75. package/.worktrees/v2-main-conflicts/LICENSE +0 -21
  76. package/.worktrees/v2-main-conflicts/README.md +0 -11
  77. package/.worktrees/v2-monorepo/LICENSE +0 -21
  78. package/.worktrees/v2-monorepo/README.md +0 -30
  79. package/.worktrees/v2-monorepo/examples/script-tag/README.md +0 -13
  80. package/.worktrees/v2-monorepo/examples/vite/README.md +0 -13
  81. package/.worktrees/v2-monorepo/packages/minerender/LICENSE +0 -21
  82. package/.worktrees/v2-monorepo/packages/minerender/README.md +0 -24
  83. package/.worktrees/v2-requests/LICENSE +0 -21
  84. package/.worktrees/v2-requests/README.md +0 -30
  85. package/.worktrees/v2-requests/examples/script-tag/README.md +0 -13
  86. package/.worktrees/v2-requests/examples/vite/README.md +0 -13
  87. package/.worktrees/v2-requests/packages/minerender/LICENSE +0 -21
  88. package/.worktrees/v2-requests/packages/minerender/README.md +0 -26
  89. package/.worktrees/v2-source-errors/LICENSE +0 -21
  90. package/.worktrees/v2-source-errors/README.md +0 -30
  91. package/.worktrees/v2-source-errors/examples/script-tag/README.md +0 -13
  92. package/.worktrees/v2-source-errors/examples/vite/README.md +0 -13
  93. package/.worktrees/v2-source-errors/packages/minerender/LICENSE +0 -21
  94. package/.worktrees/v2-source-errors/packages/minerender/README.md +0 -26
@@ -1,5 +1,5 @@
1
1
  import * as three from 'three';
2
- import { Vector3, PixelFormat, BoxGeometry, Material, Mesh, Euler, Vector2, BufferAttribute, Float32BufferAttribute, Object3D, Box3, InstancedMesh, PerspectiveCamera, OrthographicCamera, Matrix4, Scene, Texture, Camera, WebGLRenderer, EventDispatcher, Raycaster, Intersection, CanvasTexture, BufferGeometry as BufferGeometry$1, InterleavedBufferAttribute, TrianglesDrawModes, Line, Points, MOUSE, TOUCH } from 'three';
2
+ import { Vector3, PixelFormat, BoxGeometry, Material, Mesh, Euler, Vector2, BufferAttribute, Float32BufferAttribute, Object3D, Box3, InstancedMesh, PerspectiveCamera, OrthographicCamera, Matrix4, Scene, Texture, Camera, MOUSE, TOUCH, WebGLRenderer, EventDispatcher, Raycaster, Intersection, CanvasTexture, BufferGeometry as BufferGeometry$1, InterleavedBufferAttribute, TrianglesDrawModes, Line, Points } from 'three';
3
3
  import * as nodeCanvas from 'canvas';
4
4
  import { ImageData as ImageData$1, CanvasRenderingContext2D } from 'canvas';
5
5
  import { AxiosResponse, AxiosRequestConfig } from 'axios';
@@ -650,7 +650,7 @@ interface MultipartCondition {
650
650
  [key: string]: string;
651
651
  }
652
652
 
653
- declare const DEFAULT_ROOT = "https://cdn.mcasset.cloud/file/minecraft-assets/1.17.1";
653
+ declare const DEFAULT_ROOT = "https://assets.mcasset.cloud/1.17.1";
654
654
  declare const DEFAULT_NAMESPACE = "minecraft";
655
655
  declare class Assets {
656
656
  /**
@@ -870,9 +870,12 @@ declare class MineRenderScene extends Scene {
870
870
  readonly stats: SceneStats;
871
871
  protected readonly instanceManager: InstanceManager;
872
872
  dirty: boolean;
873
+ private readonly observedObjects;
874
+ private readonly onObjectChange;
873
875
  constructor(options?: DeepPartial<MineRenderSceneOptions>);
874
- add(...object: any[]): this;
875
- remove(...object: any[]): this;
876
+ add(...objects: Object3D[]): this;
877
+ remove(...objects: Object3D[]): this;
878
+ private updateObjectRegistration;
876
879
  initAndAdd(...object: SceneObject[]): Promise<this>;
877
880
  addSceneObject<A extends BasicMinecraftAsset, T extends SceneObject, O extends SceneObjectOptions>(asset: A, objectSupplier: () => T | Promise<T>, _options?: Partial<O>, parent?: Object3D): Promise<T | InstanceReference<T>>;
878
881
  addModel(model: Model, options?: Partial<ModelObjectOptions>, parent?: Object3D): Promise<ModelObject | InstanceReference<ModelObject>>;
@@ -1233,7 +1236,84 @@ declare class GuiObject extends SceneObject {
1233
1236
  interface GuiObjectOptions extends SceneObjectOptions {
1234
1237
  }
1235
1238
 
1236
- declare class Renderer {
1239
+ declare class OrbitControls {
1240
+ constructor(object: Camera, domElement?: HTMLElement);
1241
+
1242
+ object: Camera;
1243
+ domElement: HTMLElement | HTMLDocument;
1244
+
1245
+ // API
1246
+ enabled: boolean;
1247
+ target: Vector3;
1248
+
1249
+ // deprecated
1250
+ center: Vector3;
1251
+
1252
+ minDistance: number;
1253
+ maxDistance: number;
1254
+
1255
+ minZoom: number;
1256
+ maxZoom: number;
1257
+
1258
+ minPolarAngle: number;
1259
+ maxPolarAngle: number;
1260
+
1261
+ minAzimuthAngle: number;
1262
+ maxAzimuthAngle: number;
1263
+
1264
+ enableDamping: boolean;
1265
+ dampingFactor: number;
1266
+
1267
+ enableZoom: boolean;
1268
+ zoomSpeed: number;
1269
+
1270
+ enableRotate: boolean;
1271
+ rotateSpeed: number;
1272
+
1273
+ enablePan: boolean;
1274
+ panSpeed: number;
1275
+ screenSpacePanning: boolean;
1276
+ keyPanSpeed: number;
1277
+
1278
+ autoRotate: boolean;
1279
+ autoRotateSpeed: number;
1280
+
1281
+ enableKeys: boolean;
1282
+ keys: { LEFT: string; UP: string; RIGHT: string; BOTTOM: string };
1283
+ mouseButtons: { LEFT: MOUSE; MIDDLE: MOUSE; RIGHT: MOUSE };
1284
+ touches: { ONE: TOUCH; TWO: TOUCH };
1285
+
1286
+ update(): boolean;
1287
+
1288
+ listenToKeyEvents(domElement: HTMLElement): void;
1289
+
1290
+ saveState(): void;
1291
+
1292
+ reset(): void;
1293
+
1294
+ dispose(): void;
1295
+
1296
+ getPolarAngle(): number;
1297
+
1298
+ getAzimuthalAngle(): number;
1299
+
1300
+ getDistance(): number;
1301
+
1302
+ // EventDispatcher mixins
1303
+ addEventListener(type: string, listener: (event: any) => void): void;
1304
+
1305
+ hasEventListener(type: string, listener: (event: any) => void): boolean;
1306
+
1307
+ removeEventListener(type: string, listener: (event: any) => void): void;
1308
+
1309
+ dispatchEvent(event: { type: string; target: any }): void;
1310
+ }
1311
+
1312
+ declare class MapControls extends OrbitControls {
1313
+ constructor(object: Camera, domElement?: HTMLElement);
1314
+ }
1315
+
1316
+ declare class Renderer implements Disposable {
1237
1317
  static readonly DEFAULT_OPTIONS: RendererOptions;
1238
1318
  readonly options: RendererOptions;
1239
1319
  protected _element?: HTMLElement;
@@ -1241,6 +1321,7 @@ declare class Renderer {
1241
1321
  protected _camera: Camera;
1242
1322
  protected _renderer: WebGLRenderer;
1243
1323
  protected _composer: EffectComposer;
1324
+ protected _controls?: OrbitControls;
1244
1325
  protected _stats?: Stats;
1245
1326
  protected _dirty: boolean;
1246
1327
  protected _animationLoop: any;
@@ -1248,16 +1329,22 @@ declare class Renderer {
1248
1329
  protected _animationTimer?: NodeJS.Timeout;
1249
1330
  protected _animationFrame?: number;
1250
1331
  protected _resizeListener?: () => void;
1332
+ private _disposed;
1333
+ private readonly _debugHelpers;
1334
+ private readonly _eventDispatchers;
1335
+ private readonly _changeListener;
1251
1336
  constructor(options?: DeepPartial<RendererOptions>);
1252
1337
  protected createScene(): MineRenderScene;
1253
1338
  protected createCamera(): Camera;
1254
1339
  protected createRenderer(): WebGLRenderer;
1255
1340
  protected createComposer(): EffectComposer;
1341
+ protected createControls(): Maybe<OrbitControls>;
1256
1342
  init(): void;
1257
1343
  get element(): Maybe<HTMLElement>;
1258
1344
  appendTo(element: HTMLElement): void;
1259
1345
  /**
1260
- * Register an EventDispatcher which may update the scene or renderer in order to redraw the scene
1346
+ * Redraws when the dispatcher emits the selected event. Registering the same pair twice has no effect.
1347
+ * The renderer removes its listener on disposal; the caller retains ownership of the dispatcher.
1261
1348
  */
1262
1349
  registerEventDispatcher(dispatcher: EventDispatcher, changeEvent?: string): void;
1263
1350
  resize(width: number, height: number): void;
@@ -1265,6 +1352,12 @@ declare class Renderer {
1265
1352
  set dirty(dirty: boolean);
1266
1353
  start(): void;
1267
1354
  stop(): void;
1355
+ /**
1356
+ * Stops rendering and releases owned resources. Repeated calls have no effect, and a disposed
1357
+ * renderer cannot be restarted. Scene objects are detached; shared assets and caller-owned
1358
+ * controls must be managed by their owners.
1359
+ */
1360
+ dispose(): void;
1268
1361
  private animate;
1269
1362
  toImage(): string;
1270
1363
  protected get attachedToBody(): boolean;
@@ -1274,11 +1367,14 @@ declare class Renderer {
1274
1367
  get camera(): Camera;
1275
1368
  get renderer(): WebGLRenderer;
1276
1369
  get composer(): EffectComposer;
1370
+ /** Renderer-owned controls, or undefined when disabled at construction or after disposal. */
1371
+ get controls(): Maybe<OrbitControls>;
1277
1372
  }
1278
1373
  interface RendererOptions {
1279
1374
  camera: CameraOptions;
1280
1375
  render: RenderOptions;
1281
1376
  composer: ComposerOptions;
1377
+ controls?: ControlsOptions;
1282
1378
  debug: DebugOptions;
1283
1379
  }
1284
1380
  interface CameraOptions {
@@ -1309,6 +1405,9 @@ interface RenderOptions {
1309
1405
  interface ComposerOptions {
1310
1406
  enabled: boolean;
1311
1407
  }
1408
+ interface ControlsOptions {
1409
+ enabled: boolean;
1410
+ }
1312
1411
  interface DebugOptions {
1313
1412
  grid: boolean;
1314
1413
  axes: boolean;
@@ -1433,83 +1532,6 @@ declare function mergeVertices(geometry: BufferGeometry$1, tolerance?: number):
1433
1532
  declare function toTrianglesDrawMode(geometry: BufferGeometry$1, drawMode: TrianglesDrawModes): BufferGeometry$1;
1434
1533
  declare function computeMorphedAttributes(object: Mesh | Line | Points): object;
1435
1534
 
1436
- declare class OrbitControls {
1437
- constructor(object: Camera, domElement?: HTMLElement);
1438
-
1439
- object: Camera;
1440
- domElement: HTMLElement | HTMLDocument;
1441
-
1442
- // API
1443
- enabled: boolean;
1444
- target: Vector3;
1445
-
1446
- // deprecated
1447
- center: Vector3;
1448
-
1449
- minDistance: number;
1450
- maxDistance: number;
1451
-
1452
- minZoom: number;
1453
- maxZoom: number;
1454
-
1455
- minPolarAngle: number;
1456
- maxPolarAngle: number;
1457
-
1458
- minAzimuthAngle: number;
1459
- maxAzimuthAngle: number;
1460
-
1461
- enableDamping: boolean;
1462
- dampingFactor: number;
1463
-
1464
- enableZoom: boolean;
1465
- zoomSpeed: number;
1466
-
1467
- enableRotate: boolean;
1468
- rotateSpeed: number;
1469
-
1470
- enablePan: boolean;
1471
- panSpeed: number;
1472
- screenSpacePanning: boolean;
1473
- keyPanSpeed: number;
1474
-
1475
- autoRotate: boolean;
1476
- autoRotateSpeed: number;
1477
-
1478
- enableKeys: boolean;
1479
- keys: { LEFT: string; UP: string; RIGHT: string; BOTTOM: string };
1480
- mouseButtons: { LEFT: MOUSE; MIDDLE: MOUSE; RIGHT: MOUSE };
1481
- touches: { ONE: TOUCH; TWO: TOUCH };
1482
-
1483
- update(): boolean;
1484
-
1485
- listenToKeyEvents(domElement: HTMLElement): void;
1486
-
1487
- saveState(): void;
1488
-
1489
- reset(): void;
1490
-
1491
- dispose(): void;
1492
-
1493
- getPolarAngle(): number;
1494
-
1495
- getAzimuthalAngle(): number;
1496
-
1497
- getDistance(): number;
1498
-
1499
- // EventDispatcher mixins
1500
- addEventListener(type: string, listener: (event: any) => void): void;
1501
-
1502
- hasEventListener(type: string, listener: (event: any) => void): boolean;
1503
-
1504
- removeEventListener(type: string, listener: (event: any) => void): void;
1505
-
1506
- dispatchEvent(event: { type: string; target: any }): void;
1507
- }
1508
-
1509
- declare class MapControls extends OrbitControls {
1510
- constructor(object: Camera, domElement?: HTMLElement);
1511
- }
1512
-
1513
1535
  interface BlockInfo {
1514
1536
  block: Block;
1515
1537
  object: BlockObject;
@@ -1604,4 +1626,4 @@ declare class NodeCache extends PersistentCache<LocalStorage> {
1604
1626
  forEach<T>(callback: (v: T, k: string) => void): Promise<void>;
1605
1627
  }
1606
1628
 
1607
- export { AXES, type AnimationFrame, type AnimationMeta, type AnimatorFunction, ArchiveAssetSource, type ArchiveEntry, type ArchiveProxy, AssetKey, AssetLoader, AssetParser, AssetSource, type AssetType, Assets, Axis, BUILTIN_ENTITY, BUILTIN_GENERATED, BasicAssetKey, type BasicMinecraftAsset, BatchedExecutor, type BedrockBone, type BedrockCube, type BedrockEntityDescription, type BedrockEntityFile, type BedrockGeometry, type BedrockGeometryFile, type Block, BlockEntityModels, type BlockInfo, type BlockModel, type BlockModelTextures, BlockObject, type BlockObjectOptions, type BlockState, type BlockStateMultipart, type BlockStateProperties, type BlockStateProperty, type BlockStatePropertyDefaults, type BlockStatePropertyValue, type BlockStateVariant, type BlockStateVariants, BlockStates, type BoxGeometryKey, BrowserArchiveProxy, CUBE_FACES, type CacheKey, Caching, type CameraOptions, CanvasImage, Chunk, type CompatCanvas, type CompatImage, type ComposerOptions, type Cube, CubeFace, CubeFaceIndex, DEFAULT_ELEMENTS, DEFAULT_NAMESPACE, DEFAULT_ROOT, DEFAULT_UV, DISPLAY_POSITIONS, type DebugOptions, type DeepPartial, DefaultBlockStates, DisplayPosition, type Disposable, type DoubleArray, type ElementFace, type ElementRotation, Entities, type EntityModel, EntityModels, EntityObject, type EntityObjectOptions, Env, type EnvProvider, type ExtractableImageData, type FromTo, Geometries, GuiLight, GuiObject, type GuiObjectOptions, HostedAssetSource, type IModelTextures, ITEM_GENERATED, type ImageInfo, ImageLoader, type ImageSizeInfo, InstanceManager, InstanceReference, type Instanceable, type ItemModel, type ItemModelTextures, type ListAsset, MapControls, type MaterialKey, Materials, type Maybe, type MeshKey, Meshes, MineRenderError, MineRenderScene, type MineRenderSceneOptions, MineRenderWorld, type MinecraftAsset, MinecraftCubeTexture, MinecraftFaceUV, type MinecraftTextureMeta, type Model, type ModelDisplay, type ModelElement, type ModelFaces, ModelGenerator, ModelMerger, ModelObject, type ModelObjectOptions, type ModelPart, ModelTextures, Models, type MultiBlockBlock, type MultiBlockStructure, type MultipartCondition, type NBTAsset, NBTHelper, NodeCache, NodeEnv, OrbitControls, PersistentCache, type QuadArray, type RawImageKey, type RenderOptions, Renderer, type RendererOptions, Requests, type ResponseParser, SKIN_PARTS, SceneInspector, SceneObject, type SceneObjectOptions, SceneStats, SceneStatsDisplay, SchematicParser, type Serializable, type SkinGeometries, SkinObject, type SkinObjectOptions, SkinPart, type SkinTextureCoordinates, Skins, type StructureNBT, StructureParser, type TextureAsset, TextureAtlas, type TextureKey, TextureLoader, Textures, Ticker, type TickerFunction, TintColors, type Transformable, type TripleArray, UVMapper, WrappedImage, addBox3WireframeToObject, addWireframeToMesh, addWireframeToObject, applyElementRotation, applyGenericRotation, applyModelPartRotation, axisToVec3, base64decode, base64encode, captureException, changeEvent, clampRotationDegrees, classicSkinGeometries, classicSkinTextureCoordinates, computeMorphedAttributes, createCanvas, createImage, estimateBytesUsed, interleaveAttributes, isAssetKey, isBasicAssetKey, isBlockObject, isDisposable, isDoubleArray, isEntityObject, isInstanceManager, isInstanceReference, isInstanceable, isInstancedMesh, isMesh, isMineRenderScene, isModelObject, isObject3D, isOrthographicCamera, isPerspectiveCamera, isQuadArray, isSceneObject, isTransformable, isTripleArray, isVector3, md5, mergeBufferAttributes, mergeBufferGeometries, mergeVertices, prefix, registerNodeEnv, serializeBoxGeometryKey, serializeImageKey, serializeMaterialKey, serializeMeshKey, serializeTextureKey, sha1, sha256, sha512, shutdown, sleep, slimSkinGeometries, slimSkinTextureCoordinates, timingEnd, timingStart, toDegrees, toRadians, toTrianglesDrawMode };
1629
+ export { AXES, type AnimationFrame, type AnimationMeta, type AnimatorFunction, ArchiveAssetSource, type ArchiveEntry, type ArchiveProxy, AssetKey, AssetLoader, AssetParser, AssetSource, type AssetType, Assets, Axis, BUILTIN_ENTITY, BUILTIN_GENERATED, BasicAssetKey, type BasicMinecraftAsset, BatchedExecutor, type BedrockBone, type BedrockCube, type BedrockEntityDescription, type BedrockEntityFile, type BedrockGeometry, type BedrockGeometryFile, type Block, BlockEntityModels, type BlockInfo, type BlockModel, type BlockModelTextures, BlockObject, type BlockObjectOptions, type BlockState, type BlockStateMultipart, type BlockStateProperties, type BlockStateProperty, type BlockStatePropertyDefaults, type BlockStatePropertyValue, type BlockStateVariant, type BlockStateVariants, BlockStates, type BoxGeometryKey, BrowserArchiveProxy, CUBE_FACES, type CacheKey, Caching, type CameraOptions, CanvasImage, Chunk, type CompatCanvas, type CompatImage, type ComposerOptions, type ControlsOptions, type Cube, CubeFace, CubeFaceIndex, DEFAULT_ELEMENTS, DEFAULT_NAMESPACE, DEFAULT_ROOT, DEFAULT_UV, DISPLAY_POSITIONS, type DebugOptions, type DeepPartial, DefaultBlockStates, DisplayPosition, type Disposable, type DoubleArray, type ElementFace, type ElementRotation, Entities, type EntityModel, EntityModels, EntityObject, type EntityObjectOptions, Env, type EnvProvider, type ExtractableImageData, type FromTo, Geometries, GuiLight, GuiObject, type GuiObjectOptions, HostedAssetSource, type IModelTextures, ITEM_GENERATED, type ImageInfo, ImageLoader, type ImageSizeInfo, InstanceManager, InstanceReference, type Instanceable, type ItemModel, type ItemModelTextures, type ListAsset, MapControls, type MaterialKey, Materials, type Maybe, type MeshKey, Meshes, MineRenderError, MineRenderScene, type MineRenderSceneOptions, MineRenderWorld, type MinecraftAsset, MinecraftCubeTexture, MinecraftFaceUV, type MinecraftTextureMeta, type Model, type ModelDisplay, type ModelElement, type ModelFaces, ModelGenerator, ModelMerger, ModelObject, type ModelObjectOptions, type ModelPart, ModelTextures, Models, type MultiBlockBlock, type MultiBlockStructure, type MultipartCondition, type NBTAsset, NBTHelper, NodeCache, NodeEnv, OrbitControls, PersistentCache, type QuadArray, type RawImageKey, type RenderOptions, Renderer, type RendererOptions, Requests, type ResponseParser, SKIN_PARTS, SceneInspector, SceneObject, type SceneObjectOptions, SceneStats, SceneStatsDisplay, SchematicParser, type Serializable, type SkinGeometries, SkinObject, type SkinObjectOptions, SkinPart, type SkinTextureCoordinates, Skins, type StructureNBT, StructureParser, type TextureAsset, TextureAtlas, type TextureKey, TextureLoader, Textures, Ticker, type TickerFunction, TintColors, type Transformable, type TripleArray, UVMapper, WrappedImage, addBox3WireframeToObject, addWireframeToMesh, addWireframeToObject, applyElementRotation, applyGenericRotation, applyModelPartRotation, axisToVec3, base64decode, base64encode, captureException, changeEvent, clampRotationDegrees, classicSkinGeometries, classicSkinTextureCoordinates, computeMorphedAttributes, createCanvas, createImage, estimateBytesUsed, interleaveAttributes, isAssetKey, isBasicAssetKey, isBlockObject, isDisposable, isDoubleArray, isEntityObject, isInstanceManager, isInstanceReference, isInstanceable, isInstancedMesh, isMesh, isMineRenderScene, isModelObject, isObject3D, isOrthographicCamera, isPerspectiveCamera, isQuadArray, isSceneObject, isTransformable, isTripleArray, isVector3, md5, mergeBufferAttributes, mergeBufferGeometries, mergeVertices, prefix, registerNodeEnv, serializeBoxGeometryKey, serializeImageKey, serializeMaterialKey, serializeMeshKey, serializeTextureKey, sha1, sha256, sha512, shutdown, sleep, slimSkinGeometries, slimSkinTextureCoordinates, timingEnd, timingStart, toDegrees, toRadians, toTrianglesDrawMode };
@@ -1,5 +1,5 @@
1
1
  import * as three from 'three';
2
- import { Vector3, PixelFormat, BoxGeometry, Material, Mesh, Euler, Vector2, BufferAttribute, Float32BufferAttribute, Object3D, Box3, InstancedMesh, PerspectiveCamera, OrthographicCamera, Matrix4, Scene, Texture, Camera, WebGLRenderer, EventDispatcher, Raycaster, Intersection, CanvasTexture, BufferGeometry as BufferGeometry$1, InterleavedBufferAttribute, TrianglesDrawModes, Line, Points, MOUSE, TOUCH } from 'three';
2
+ import { Vector3, PixelFormat, BoxGeometry, Material, Mesh, Euler, Vector2, BufferAttribute, Float32BufferAttribute, Object3D, Box3, InstancedMesh, PerspectiveCamera, OrthographicCamera, Matrix4, Scene, Texture, Camera, MOUSE, TOUCH, WebGLRenderer, EventDispatcher, Raycaster, Intersection, CanvasTexture, BufferGeometry as BufferGeometry$1, InterleavedBufferAttribute, TrianglesDrawModes, Line, Points } from 'three';
3
3
  import * as nodeCanvas from 'canvas';
4
4
  import { ImageData as ImageData$1, CanvasRenderingContext2D } from 'canvas';
5
5
  import { AxiosResponse, AxiosRequestConfig } from 'axios';
@@ -650,7 +650,7 @@ interface MultipartCondition {
650
650
  [key: string]: string;
651
651
  }
652
652
 
653
- declare const DEFAULT_ROOT = "https://cdn.mcasset.cloud/file/minecraft-assets/1.17.1";
653
+ declare const DEFAULT_ROOT = "https://assets.mcasset.cloud/1.17.1";
654
654
  declare const DEFAULT_NAMESPACE = "minecraft";
655
655
  declare class Assets {
656
656
  /**
@@ -870,9 +870,12 @@ declare class MineRenderScene extends Scene {
870
870
  readonly stats: SceneStats;
871
871
  protected readonly instanceManager: InstanceManager;
872
872
  dirty: boolean;
873
+ private readonly observedObjects;
874
+ private readonly onObjectChange;
873
875
  constructor(options?: DeepPartial<MineRenderSceneOptions>);
874
- add(...object: any[]): this;
875
- remove(...object: any[]): this;
876
+ add(...objects: Object3D[]): this;
877
+ remove(...objects: Object3D[]): this;
878
+ private updateObjectRegistration;
876
879
  initAndAdd(...object: SceneObject[]): Promise<this>;
877
880
  addSceneObject<A extends BasicMinecraftAsset, T extends SceneObject, O extends SceneObjectOptions>(asset: A, objectSupplier: () => T | Promise<T>, _options?: Partial<O>, parent?: Object3D): Promise<T | InstanceReference<T>>;
878
881
  addModel(model: Model, options?: Partial<ModelObjectOptions>, parent?: Object3D): Promise<ModelObject | InstanceReference<ModelObject>>;
@@ -1233,7 +1236,84 @@ declare class GuiObject extends SceneObject {
1233
1236
  interface GuiObjectOptions extends SceneObjectOptions {
1234
1237
  }
1235
1238
 
1236
- declare class Renderer {
1239
+ declare class OrbitControls {
1240
+ constructor(object: Camera, domElement?: HTMLElement);
1241
+
1242
+ object: Camera;
1243
+ domElement: HTMLElement | HTMLDocument;
1244
+
1245
+ // API
1246
+ enabled: boolean;
1247
+ target: Vector3;
1248
+
1249
+ // deprecated
1250
+ center: Vector3;
1251
+
1252
+ minDistance: number;
1253
+ maxDistance: number;
1254
+
1255
+ minZoom: number;
1256
+ maxZoom: number;
1257
+
1258
+ minPolarAngle: number;
1259
+ maxPolarAngle: number;
1260
+
1261
+ minAzimuthAngle: number;
1262
+ maxAzimuthAngle: number;
1263
+
1264
+ enableDamping: boolean;
1265
+ dampingFactor: number;
1266
+
1267
+ enableZoom: boolean;
1268
+ zoomSpeed: number;
1269
+
1270
+ enableRotate: boolean;
1271
+ rotateSpeed: number;
1272
+
1273
+ enablePan: boolean;
1274
+ panSpeed: number;
1275
+ screenSpacePanning: boolean;
1276
+ keyPanSpeed: number;
1277
+
1278
+ autoRotate: boolean;
1279
+ autoRotateSpeed: number;
1280
+
1281
+ enableKeys: boolean;
1282
+ keys: { LEFT: string; UP: string; RIGHT: string; BOTTOM: string };
1283
+ mouseButtons: { LEFT: MOUSE; MIDDLE: MOUSE; RIGHT: MOUSE };
1284
+ touches: { ONE: TOUCH; TWO: TOUCH };
1285
+
1286
+ update(): boolean;
1287
+
1288
+ listenToKeyEvents(domElement: HTMLElement): void;
1289
+
1290
+ saveState(): void;
1291
+
1292
+ reset(): void;
1293
+
1294
+ dispose(): void;
1295
+
1296
+ getPolarAngle(): number;
1297
+
1298
+ getAzimuthalAngle(): number;
1299
+
1300
+ getDistance(): number;
1301
+
1302
+ // EventDispatcher mixins
1303
+ addEventListener(type: string, listener: (event: any) => void): void;
1304
+
1305
+ hasEventListener(type: string, listener: (event: any) => void): boolean;
1306
+
1307
+ removeEventListener(type: string, listener: (event: any) => void): void;
1308
+
1309
+ dispatchEvent(event: { type: string; target: any }): void;
1310
+ }
1311
+
1312
+ declare class MapControls extends OrbitControls {
1313
+ constructor(object: Camera, domElement?: HTMLElement);
1314
+ }
1315
+
1316
+ declare class Renderer implements Disposable {
1237
1317
  static readonly DEFAULT_OPTIONS: RendererOptions;
1238
1318
  readonly options: RendererOptions;
1239
1319
  protected _element?: HTMLElement;
@@ -1241,6 +1321,7 @@ declare class Renderer {
1241
1321
  protected _camera: Camera;
1242
1322
  protected _renderer: WebGLRenderer;
1243
1323
  protected _composer: EffectComposer;
1324
+ protected _controls?: OrbitControls;
1244
1325
  protected _stats?: Stats;
1245
1326
  protected _dirty: boolean;
1246
1327
  protected _animationLoop: any;
@@ -1248,16 +1329,22 @@ declare class Renderer {
1248
1329
  protected _animationTimer?: NodeJS.Timeout;
1249
1330
  protected _animationFrame?: number;
1250
1331
  protected _resizeListener?: () => void;
1332
+ private _disposed;
1333
+ private readonly _debugHelpers;
1334
+ private readonly _eventDispatchers;
1335
+ private readonly _changeListener;
1251
1336
  constructor(options?: DeepPartial<RendererOptions>);
1252
1337
  protected createScene(): MineRenderScene;
1253
1338
  protected createCamera(): Camera;
1254
1339
  protected createRenderer(): WebGLRenderer;
1255
1340
  protected createComposer(): EffectComposer;
1341
+ protected createControls(): Maybe<OrbitControls>;
1256
1342
  init(): void;
1257
1343
  get element(): Maybe<HTMLElement>;
1258
1344
  appendTo(element: HTMLElement): void;
1259
1345
  /**
1260
- * Register an EventDispatcher which may update the scene or renderer in order to redraw the scene
1346
+ * Redraws when the dispatcher emits the selected event. Registering the same pair twice has no effect.
1347
+ * The renderer removes its listener on disposal; the caller retains ownership of the dispatcher.
1261
1348
  */
1262
1349
  registerEventDispatcher(dispatcher: EventDispatcher, changeEvent?: string): void;
1263
1350
  resize(width: number, height: number): void;
@@ -1265,6 +1352,12 @@ declare class Renderer {
1265
1352
  set dirty(dirty: boolean);
1266
1353
  start(): void;
1267
1354
  stop(): void;
1355
+ /**
1356
+ * Stops rendering and releases owned resources. Repeated calls have no effect, and a disposed
1357
+ * renderer cannot be restarted. Scene objects are detached; shared assets and caller-owned
1358
+ * controls must be managed by their owners.
1359
+ */
1360
+ dispose(): void;
1268
1361
  private animate;
1269
1362
  toImage(): string;
1270
1363
  protected get attachedToBody(): boolean;
@@ -1274,11 +1367,14 @@ declare class Renderer {
1274
1367
  get camera(): Camera;
1275
1368
  get renderer(): WebGLRenderer;
1276
1369
  get composer(): EffectComposer;
1370
+ /** Renderer-owned controls, or undefined when disabled at construction or after disposal. */
1371
+ get controls(): Maybe<OrbitControls>;
1277
1372
  }
1278
1373
  interface RendererOptions {
1279
1374
  camera: CameraOptions;
1280
1375
  render: RenderOptions;
1281
1376
  composer: ComposerOptions;
1377
+ controls?: ControlsOptions;
1282
1378
  debug: DebugOptions;
1283
1379
  }
1284
1380
  interface CameraOptions {
@@ -1309,6 +1405,9 @@ interface RenderOptions {
1309
1405
  interface ComposerOptions {
1310
1406
  enabled: boolean;
1311
1407
  }
1408
+ interface ControlsOptions {
1409
+ enabled: boolean;
1410
+ }
1312
1411
  interface DebugOptions {
1313
1412
  grid: boolean;
1314
1413
  axes: boolean;
@@ -1433,83 +1532,6 @@ declare function mergeVertices(geometry: BufferGeometry$1, tolerance?: number):
1433
1532
  declare function toTrianglesDrawMode(geometry: BufferGeometry$1, drawMode: TrianglesDrawModes): BufferGeometry$1;
1434
1533
  declare function computeMorphedAttributes(object: Mesh | Line | Points): object;
1435
1534
 
1436
- declare class OrbitControls {
1437
- constructor(object: Camera, domElement?: HTMLElement);
1438
-
1439
- object: Camera;
1440
- domElement: HTMLElement | HTMLDocument;
1441
-
1442
- // API
1443
- enabled: boolean;
1444
- target: Vector3;
1445
-
1446
- // deprecated
1447
- center: Vector3;
1448
-
1449
- minDistance: number;
1450
- maxDistance: number;
1451
-
1452
- minZoom: number;
1453
- maxZoom: number;
1454
-
1455
- minPolarAngle: number;
1456
- maxPolarAngle: number;
1457
-
1458
- minAzimuthAngle: number;
1459
- maxAzimuthAngle: number;
1460
-
1461
- enableDamping: boolean;
1462
- dampingFactor: number;
1463
-
1464
- enableZoom: boolean;
1465
- zoomSpeed: number;
1466
-
1467
- enableRotate: boolean;
1468
- rotateSpeed: number;
1469
-
1470
- enablePan: boolean;
1471
- panSpeed: number;
1472
- screenSpacePanning: boolean;
1473
- keyPanSpeed: number;
1474
-
1475
- autoRotate: boolean;
1476
- autoRotateSpeed: number;
1477
-
1478
- enableKeys: boolean;
1479
- keys: { LEFT: string; UP: string; RIGHT: string; BOTTOM: string };
1480
- mouseButtons: { LEFT: MOUSE; MIDDLE: MOUSE; RIGHT: MOUSE };
1481
- touches: { ONE: TOUCH; TWO: TOUCH };
1482
-
1483
- update(): boolean;
1484
-
1485
- listenToKeyEvents(domElement: HTMLElement): void;
1486
-
1487
- saveState(): void;
1488
-
1489
- reset(): void;
1490
-
1491
- dispose(): void;
1492
-
1493
- getPolarAngle(): number;
1494
-
1495
- getAzimuthalAngle(): number;
1496
-
1497
- getDistance(): number;
1498
-
1499
- // EventDispatcher mixins
1500
- addEventListener(type: string, listener: (event: any) => void): void;
1501
-
1502
- hasEventListener(type: string, listener: (event: any) => void): boolean;
1503
-
1504
- removeEventListener(type: string, listener: (event: any) => void): void;
1505
-
1506
- dispatchEvent(event: { type: string; target: any }): void;
1507
- }
1508
-
1509
- declare class MapControls extends OrbitControls {
1510
- constructor(object: Camera, domElement?: HTMLElement);
1511
- }
1512
-
1513
1535
  interface BlockInfo {
1514
1536
  block: Block;
1515
1537
  object: BlockObject;
@@ -1604,4 +1626,4 @@ declare class NodeCache extends PersistentCache<LocalStorage> {
1604
1626
  forEach<T>(callback: (v: T, k: string) => void): Promise<void>;
1605
1627
  }
1606
1628
 
1607
- export { AXES, type AnimationFrame, type AnimationMeta, type AnimatorFunction, ArchiveAssetSource, type ArchiveEntry, type ArchiveProxy, AssetKey, AssetLoader, AssetParser, AssetSource, type AssetType, Assets, Axis, BUILTIN_ENTITY, BUILTIN_GENERATED, BasicAssetKey, type BasicMinecraftAsset, BatchedExecutor, type BedrockBone, type BedrockCube, type BedrockEntityDescription, type BedrockEntityFile, type BedrockGeometry, type BedrockGeometryFile, type Block, BlockEntityModels, type BlockInfo, type BlockModel, type BlockModelTextures, BlockObject, type BlockObjectOptions, type BlockState, type BlockStateMultipart, type BlockStateProperties, type BlockStateProperty, type BlockStatePropertyDefaults, type BlockStatePropertyValue, type BlockStateVariant, type BlockStateVariants, BlockStates, type BoxGeometryKey, BrowserArchiveProxy, CUBE_FACES, type CacheKey, Caching, type CameraOptions, CanvasImage, Chunk, type CompatCanvas, type CompatImage, type ComposerOptions, type Cube, CubeFace, CubeFaceIndex, DEFAULT_ELEMENTS, DEFAULT_NAMESPACE, DEFAULT_ROOT, DEFAULT_UV, DISPLAY_POSITIONS, type DebugOptions, type DeepPartial, DefaultBlockStates, DisplayPosition, type Disposable, type DoubleArray, type ElementFace, type ElementRotation, Entities, type EntityModel, EntityModels, EntityObject, type EntityObjectOptions, Env, type EnvProvider, type ExtractableImageData, type FromTo, Geometries, GuiLight, GuiObject, type GuiObjectOptions, HostedAssetSource, type IModelTextures, ITEM_GENERATED, type ImageInfo, ImageLoader, type ImageSizeInfo, InstanceManager, InstanceReference, type Instanceable, type ItemModel, type ItemModelTextures, type ListAsset, MapControls, type MaterialKey, Materials, type Maybe, type MeshKey, Meshes, MineRenderError, MineRenderScene, type MineRenderSceneOptions, MineRenderWorld, type MinecraftAsset, MinecraftCubeTexture, MinecraftFaceUV, type MinecraftTextureMeta, type Model, type ModelDisplay, type ModelElement, type ModelFaces, ModelGenerator, ModelMerger, ModelObject, type ModelObjectOptions, type ModelPart, ModelTextures, Models, type MultiBlockBlock, type MultiBlockStructure, type MultipartCondition, type NBTAsset, NBTHelper, NodeCache, NodeEnv, OrbitControls, PersistentCache, type QuadArray, type RawImageKey, type RenderOptions, Renderer, type RendererOptions, Requests, type ResponseParser, SKIN_PARTS, SceneInspector, SceneObject, type SceneObjectOptions, SceneStats, SceneStatsDisplay, SchematicParser, type Serializable, type SkinGeometries, SkinObject, type SkinObjectOptions, SkinPart, type SkinTextureCoordinates, Skins, type StructureNBT, StructureParser, type TextureAsset, TextureAtlas, type TextureKey, TextureLoader, Textures, Ticker, type TickerFunction, TintColors, type Transformable, type TripleArray, UVMapper, WrappedImage, addBox3WireframeToObject, addWireframeToMesh, addWireframeToObject, applyElementRotation, applyGenericRotation, applyModelPartRotation, axisToVec3, base64decode, base64encode, captureException, changeEvent, clampRotationDegrees, classicSkinGeometries, classicSkinTextureCoordinates, computeMorphedAttributes, createCanvas, createImage, estimateBytesUsed, interleaveAttributes, isAssetKey, isBasicAssetKey, isBlockObject, isDisposable, isDoubleArray, isEntityObject, isInstanceManager, isInstanceReference, isInstanceable, isInstancedMesh, isMesh, isMineRenderScene, isModelObject, isObject3D, isOrthographicCamera, isPerspectiveCamera, isQuadArray, isSceneObject, isTransformable, isTripleArray, isVector3, md5, mergeBufferAttributes, mergeBufferGeometries, mergeVertices, prefix, registerNodeEnv, serializeBoxGeometryKey, serializeImageKey, serializeMaterialKey, serializeMeshKey, serializeTextureKey, sha1, sha256, sha512, shutdown, sleep, slimSkinGeometries, slimSkinTextureCoordinates, timingEnd, timingStart, toDegrees, toRadians, toTrianglesDrawMode };
1629
+ export { AXES, type AnimationFrame, type AnimationMeta, type AnimatorFunction, ArchiveAssetSource, type ArchiveEntry, type ArchiveProxy, AssetKey, AssetLoader, AssetParser, AssetSource, type AssetType, Assets, Axis, BUILTIN_ENTITY, BUILTIN_GENERATED, BasicAssetKey, type BasicMinecraftAsset, BatchedExecutor, type BedrockBone, type BedrockCube, type BedrockEntityDescription, type BedrockEntityFile, type BedrockGeometry, type BedrockGeometryFile, type Block, BlockEntityModels, type BlockInfo, type BlockModel, type BlockModelTextures, BlockObject, type BlockObjectOptions, type BlockState, type BlockStateMultipart, type BlockStateProperties, type BlockStateProperty, type BlockStatePropertyDefaults, type BlockStatePropertyValue, type BlockStateVariant, type BlockStateVariants, BlockStates, type BoxGeometryKey, BrowserArchiveProxy, CUBE_FACES, type CacheKey, Caching, type CameraOptions, CanvasImage, Chunk, type CompatCanvas, type CompatImage, type ComposerOptions, type ControlsOptions, type Cube, CubeFace, CubeFaceIndex, DEFAULT_ELEMENTS, DEFAULT_NAMESPACE, DEFAULT_ROOT, DEFAULT_UV, DISPLAY_POSITIONS, type DebugOptions, type DeepPartial, DefaultBlockStates, DisplayPosition, type Disposable, type DoubleArray, type ElementFace, type ElementRotation, Entities, type EntityModel, EntityModels, EntityObject, type EntityObjectOptions, Env, type EnvProvider, type ExtractableImageData, type FromTo, Geometries, GuiLight, GuiObject, type GuiObjectOptions, HostedAssetSource, type IModelTextures, ITEM_GENERATED, type ImageInfo, ImageLoader, type ImageSizeInfo, InstanceManager, InstanceReference, type Instanceable, type ItemModel, type ItemModelTextures, type ListAsset, MapControls, type MaterialKey, Materials, type Maybe, type MeshKey, Meshes, MineRenderError, MineRenderScene, type MineRenderSceneOptions, MineRenderWorld, type MinecraftAsset, MinecraftCubeTexture, MinecraftFaceUV, type MinecraftTextureMeta, type Model, type ModelDisplay, type ModelElement, type ModelFaces, ModelGenerator, ModelMerger, ModelObject, type ModelObjectOptions, type ModelPart, ModelTextures, Models, type MultiBlockBlock, type MultiBlockStructure, type MultipartCondition, type NBTAsset, NBTHelper, NodeCache, NodeEnv, OrbitControls, PersistentCache, type QuadArray, type RawImageKey, type RenderOptions, Renderer, type RendererOptions, Requests, type ResponseParser, SKIN_PARTS, SceneInspector, SceneObject, type SceneObjectOptions, SceneStats, SceneStatsDisplay, SchematicParser, type Serializable, type SkinGeometries, SkinObject, type SkinObjectOptions, SkinPart, type SkinTextureCoordinates, Skins, type StructureNBT, StructureParser, type TextureAsset, TextureAtlas, type TextureKey, TextureLoader, Textures, Ticker, type TickerFunction, TintColors, type Transformable, type TripleArray, UVMapper, WrappedImage, addBox3WireframeToObject, addWireframeToMesh, addWireframeToObject, applyElementRotation, applyGenericRotation, applyModelPartRotation, axisToVec3, base64decode, base64encode, captureException, changeEvent, clampRotationDegrees, classicSkinGeometries, classicSkinTextureCoordinates, computeMorphedAttributes, createCanvas, createImage, estimateBytesUsed, interleaveAttributes, isAssetKey, isBasicAssetKey, isBlockObject, isDisposable, isDoubleArray, isEntityObject, isInstanceManager, isInstanceReference, isInstanceable, isInstancedMesh, isMesh, isMineRenderScene, isModelObject, isObject3D, isOrthographicCamera, isPerspectiveCamera, isQuadArray, isSceneObject, isTransformable, isTripleArray, isVector3, md5, mergeBufferAttributes, mergeBufferGeometries, mergeVertices, prefix, registerNodeEnv, serializeBoxGeometryKey, serializeImageKey, serializeMaterialKey, serializeMeshKey, serializeTextureKey, sha1, sha256, sha512, shutdown, sleep, slimSkinGeometries, slimSkinTextureCoordinates, timingEnd, timingStart, toDegrees, toRadians, toTrianglesDrawMode };