@xviewer.js/core 1.0.4-alpha.0 → 1.0.4-alpha.10

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 (50) hide show
  1. package/dist/main.cjs +4076 -3234
  2. package/dist/main.cjs.map +1 -1
  3. package/dist/module.js +4064 -3229
  4. package/dist/module.js.map +1 -1
  5. package/package.json +2 -2
  6. package/types/Component.d.ts +11 -8
  7. package/types/ComponentManager.d.ts +10 -5
  8. package/types/ComponentScheduler.d.ts +3 -3
  9. package/types/Context.d.ts +6 -0
  10. package/types/DeviceInput.d.ts +41 -11
  11. package/types/PropertyManager.d.ts +3 -11
  12. package/types/TaskManager.d.ts +4 -4
  13. package/types/Viewer.d.ts +81 -64
  14. package/types/WebGL.d.ts +1 -1
  15. package/types/asset/Loader.d.ts +4 -3
  16. package/types/asset/ResourceManager.d.ts +6 -2
  17. package/types/bmfont/BMFontAtlas.d.ts +44 -0
  18. package/types/bmfont/BMFontTextGeometry.d.ts +9 -0
  19. package/types/bmfont/BMFontTextLayout.d.ts +93 -0
  20. package/types/bmfont/index.d.ts +3 -0
  21. package/types/bmfont/utils.d.ts +2 -0
  22. package/types/bmfont/wordwrap.d.ts +8 -0
  23. package/types/cinestation/FreelookVirtualCamera.d.ts +2 -1
  24. package/types/cinestation/VirtualCamera.d.ts +2 -0
  25. package/types/components/BoxProjection.d.ts +15 -0
  26. package/types/components/DropFile.d.ts +29 -0
  27. package/types/components/Environment.d.ts +37 -0
  28. package/types/components/FreelookVirtualCamera.d.ts +110 -0
  29. package/types/components/Label.d.ts +26 -0
  30. package/types/components/PerformanceMonitor.d.ts +48 -0
  31. package/types/components/Reflector.d.ts +6 -5
  32. package/types/components/RenderTexture.d.ts +7 -0
  33. package/types/components/Renderer.d.ts +6 -0
  34. package/types/components/UI.d.ts +30 -0
  35. package/types/components/index.d.ts +9 -1
  36. package/types/enums/index.d.ts +9 -0
  37. package/types/index.d.ts +3 -4
  38. package/types/loaders/KTX2Loader.d.ts +6 -0
  39. package/types/loaders/SVGLoader.d.ts +8 -0
  40. package/types/loaders/index.d.ts +2 -0
  41. package/types/materials/MSDFMaterial.d.ts +20 -0
  42. package/types/materials/ReflectorMaterial.d.ts +13 -3
  43. package/types/plugins/BoxProjection.d.ts +2 -2
  44. package/types/plugins/DropFile.d.ts +16 -7
  45. package/types/plugins/Environment.d.ts +2 -2
  46. package/types/plugins/Exporter.d.ts +7 -0
  47. package/types/plugins/PerformanceMonitor.d.ts +2 -2
  48. package/types/plugins/UI.d.ts +2 -2
  49. package/types/plugins/index.d.ts +0 -4
  50. package/types/types.d.ts +6 -11
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xviewer.js/core",
3
- "version": "1.0.4-alpha.0",
3
+ "version": "1.0.4-alpha.10",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -13,7 +13,7 @@
13
13
  "types/**/*"
14
14
  ],
15
15
  "peerDependencies": {
16
- "three": ">= 0.164.0"
16
+ "three": ">= 0.179.0"
17
17
  },
18
18
  "scripts": {
19
19
  "b:types": "tsc"
@@ -1,14 +1,18 @@
1
1
  import { Object3D } from "three";
2
2
  import { Viewer } from "./Viewer";
3
+ import { Context } from "./Context";
3
4
  import { ComponentManager } from "./ComponentManager";
4
5
  import { ObjectInstance } from "./ObjectInstance";
5
6
  export declare class Component<T extends Object3D = Object3D> extends ObjectInstance {
6
7
  private _enabled;
8
+ name: string;
9
+ type: string;
10
+ isComponent: boolean;
11
+ order: number;
7
12
  node: T;
8
13
  viewer: Viewer;
14
+ context: Context;
9
15
  manager: ComponentManager;
10
- isComponent: boolean;
11
- type: string;
12
16
  onLoad?(): void;
13
17
  onEnable?(): void;
14
18
  onDisable?(): void;
@@ -19,12 +23,11 @@ export declare class Component<T extends Object3D = Object3D> extends ObjectInst
19
23
  render?(dt: number): void;
20
24
  resize?(width: number, height: number): void;
21
25
  flags: {
22
- Destroyed?: boolean;
23
- OnLoadCalled?: boolean;
24
- OnEnableCalled?: boolean;
25
- StartCalled?: boolean;
26
- Deactivating?: boolean;
27
- IsStartCalled?: boolean;
26
+ destroyed?: boolean;
27
+ onLoadCalled?: boolean;
28
+ onEnableCalled?: boolean;
29
+ startCalled?: boolean;
30
+ deActivating?: boolean;
28
31
  };
29
32
  get enabled(): boolean;
30
33
  set enabled(v: boolean);
@@ -4,9 +4,10 @@ import { Component } from "./Component";
4
4
  import { ComponentScheduler } from "./ComponentScheduler";
5
5
  import { Viewer } from "./Viewer";
6
6
  type ComponentConstructor = new (...args: any[]) => Component;
7
- interface DependentInfo {
8
- mode: DependentMode;
9
- components: ComponentConstructor[];
7
+ interface ComponentInfo {
8
+ mode?: DependentMode;
9
+ components?: ComponentConstructor[];
10
+ single?: boolean;
10
11
  }
11
12
  export declare enum DependentMode {
12
13
  /** Check only, throw error if dependent components do not exist. */
@@ -15,8 +16,9 @@ export declare enum DependentMode {
15
16
  AutoAdd = 1
16
17
  }
17
18
  export declare function dependencies(componentOrComponents: ComponentConstructor | ComponentConstructor[], mode?: DependentMode): <T extends ComponentConstructor>(target: T) => void;
19
+ export declare function single(): <T extends ComponentConstructor>(target: T) => void;
18
20
  export declare class ComponentManager {
19
- static _infoMap: Map<ComponentConstructor, DependentInfo>;
21
+ static _infoMap: Map<ComponentConstructor, ComponentInfo>;
20
22
  private _viewer;
21
23
  private _scheduler;
22
24
  private _componentScheduler;
@@ -38,7 +40,10 @@ export declare class ComponentManager {
38
40
  removeComponent(node: Object3D, component: Component): this;
39
41
  getComponent<T extends Component>(node: Object3D, constructor: {
40
42
  new (...args: any[]): T;
41
- }, autoAdd?: boolean): T;
43
+ }): T;
44
+ getComponentInChildren<T extends Component>(node: Object3D, constructor: {
45
+ new (): T;
46
+ }): Component<Object3D<import("three").Object3DEventMap>>;
42
47
  getComponentsInChidren<T extends Component>(node: Object3D, constructor: {
43
48
  new (): T;
44
49
  }, out?: T[]): T[];
@@ -1,10 +1,10 @@
1
1
  import { Component } from "./Component";
2
- declare class Invoker<T> {
2
+ declare class Invoker<T extends Component> {
3
3
  protected _targets: T[];
4
4
  protected _callback: (target: T, ...args: any[]) => any;
5
5
  constructor(callback: (target: T, ...args: any[]) => any);
6
- add(target: any): void;
7
- remove(target: any): void;
6
+ add(target: T): void;
7
+ remove(target: T): void;
8
8
  invoke(...args: any[]): void;
9
9
  }
10
10
  export declare class ComponentScheduler {
@@ -0,0 +1,6 @@
1
+ import { Camera, Scene, WebGLRenderer } from "three";
2
+ export interface Context {
3
+ scene: Scene;
4
+ camera: Camera;
5
+ renderer: WebGLRenderer;
6
+ }
@@ -1,8 +1,22 @@
1
1
  import { Vector2 } from "three";
2
2
  import { ConnTarget } from "./Pressability";
3
- import { Viewer } from "./Viewer";
4
- export declare class DeviceInput {
5
- viewer: Viewer;
3
+ import { Component } from "./Component";
4
+ export interface InputTarget {
5
+ on?(event: string, cb: (...args: any[]) => void, target: Object, once?: boolean): any;
6
+ off?(event: string, cb: (...args: any[]) => void, target: Object): any;
7
+ removeEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
8
+ addEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
9
+ }
10
+ export interface InputOption {
11
+ source: HTMLElement | Document;
12
+ normalizeWheel?: (e: WheelEvent) => {
13
+ spinX: number;
14
+ spinY: number;
15
+ pixelX: number;
16
+ pixelY: number;
17
+ };
18
+ }
19
+ export declare class DeviceInput extends Component {
6
20
  static readonly CLICK = "click";
7
21
  static readonly MOUSE_WHEEL = "mousewheel";
8
22
  static readonly TOUCH_START = "touchstart";
@@ -16,19 +30,34 @@ export declare class DeviceInput {
16
30
  static readonly KEYDOWN = "keydown";
17
31
  static readonly KEYPRESS = "keypress";
18
32
  static readonly KEYUP = "keyup";
33
+ private _target;
34
+ private _normalizeWheel;
19
35
  private _listeners;
20
- private _mouseWheel;
21
36
  private _touches;
22
37
  private _touchCount;
23
- private _pointerButton;
24
- private _pointerPosition;
38
+ private _touchStart;
39
+ private _touchMoving;
25
40
  private _pointer;
41
+ private _pointerPixel;
42
+ private _pointerButton;
43
+ private _prePointer;
44
+ private _prePointerPixel;
45
+ private _preTouches;
46
+ private _mouseWheel;
26
47
  private _keys;
27
48
  private _pressability;
28
- get pointerButton(): number;
29
49
  get pointer(): Vector2;
30
- get pointerPosition(): Vector2;
50
+ get pointerPixel(): Vector2;
51
+ get pointerButton(): number;
52
+ get prePointer(): Vector2;
53
+ get prePointerPixel(): Vector2;
54
+ get preTouches(): {
55
+ id: number;
56
+ position: Vector2;
57
+ }[];
31
58
  get mouseWheel(): number;
59
+ get touchStart(): boolean;
60
+ get touchMoving(): boolean;
32
61
  get touchCount(): number;
33
62
  get touches(): {
34
63
  id: number;
@@ -37,9 +66,10 @@ export declare class DeviceInput {
37
66
  get keys(): {
38
67
  [k: string]: boolean;
39
68
  };
40
- constructor(viewer: Viewer);
41
- addEventListeners(): void;
42
- removeAllListeners(): void;
69
+ constructor(option: InputOption);
70
+ onEnable(): void;
71
+ onDisable(): void;
72
+ lastUpdate(dt: number): void;
43
73
  connect(target: ConnTarget, event: string): void;
44
74
  disconnect(target: ConnTarget): void;
45
75
  private _addEventListener;
@@ -1,18 +1,10 @@
1
- declare class ClassProperties {
2
- clsName: string;
3
- private _properties;
4
- constructor(clsName: string);
5
- property(propertyKey: string, options?: Object): this;
6
- applyProperties(target: object): object;
7
- }
8
1
  export declare class PropertyManager {
9
- static _classMap: Map<String, ClassProperties>;
2
+ static _classMap: Map<String, Object>;
10
3
  static _propertyMap: Map<Object, Object>;
11
4
  static _hasProperties(constructor: Function): boolean;
12
- static _getProperties(constructor: Function, autoAdd?: boolean): Object;
5
+ static _getProperties(constructor: Function, initProps?: Object): Object;
13
6
  static _getMergedProperties(constructor: Function): any;
14
- static _getClassProperties(clsName: string, autoAdd?: boolean): ClassProperties;
15
- static _applyClassProperties(clsName: string, constructor: Function): object;
7
+ static _getClassProperties(clsName: string, initProps?: Object): Object;
16
8
  }
17
9
  export interface IPropertyOptions {
18
10
  dir?: string;
@@ -1,13 +1,13 @@
1
1
  import { Task } from "./Task";
2
- import { EventEmitter } from "./base";
3
- export declare class TaskManager extends EventEmitter {
2
+ export declare class TaskManager {
4
3
  onComplete?: () => void;
5
4
  onProgress?: (task: Task, loaded: number, total: number) => void;
6
5
  onError?: (task: Task) => void;
7
6
  private _tasks;
8
7
  private _taskIndex;
9
- private _percent;
10
- get percent(): number;
8
+ private _interval;
9
+ private _onstartCalled;
10
+ onStart?: () => void;
11
11
  constructor(onComplete?: () => void, onProgress?: (task: Task, loaded: number, total: number) => void, onError?: (task: Task) => void);
12
12
  destroy(): void;
13
13
  add(task: Task): void;
package/types/Viewer.d.ts CHANGED
@@ -1,44 +1,35 @@
1
- import { BufferGeometry, Camera, ColorSpace, DataTexture, DirectionalLightShadow, Euler, LoadingManager, Material, Mesh, Object3D, OrthographicCamera, PerspectiveCamera, Scene, ShadowMapType, Texture, TextureDataType, ToneMapping, Vector3, WebGLCubeRenderTarget, WebGLRenderer, WebGLRendererParameters, WebGLRenderTarget } from "three";
1
+ import { BufferGeometry, Camera, Color, ColorRepresentation, ColorSpace, DataTexture, LoadingManager, Material, Mesh, Object3D, OrthographicCamera, PerspectiveCamera, Scene, ShaderMaterial, ShadowMapType, Texture, TextureDataType, ToneMapping, Vector3, WebGLCubeRenderTarget, WebGLRenderer, WebGLRendererParameters, WebGLRenderTarget } from "three";
2
2
  import { EventEmitter } from "./base";
3
- import { TaskManager } from "./TaskManager";
4
- import { DeviceInput } from "./DeviceInput";
5
- import { Orientation } from "./enums/Orientation";
6
- import { AssetProperties, LoaderConstructor, ResourceManager } from "./asset/ResourceManager";
7
- import { __C, __P } from "./types";
3
+ import { ComponentManager } from "./ComponentManager";
4
+ import { DeviceInput, InputOption } from "./DeviceInput";
5
+ import { Orientation, ResizeMode } from "./enums";
6
+ import { AssetProperties, LoaderConstructor } from "./asset/ResourceManager";
7
+ import { __C, __P, __Properties } from "./types";
8
8
  import { Component } from "./Component";
9
9
  import { Task } from "./Task";
10
- import { Mount } from "./Mount";
10
+ import { Context } from "./Context";
11
+ type SizeFunction = () => number[];
11
12
  export declare class Viewer extends EventEmitter {
12
- static __target: Vector3;
13
- static __worldPos: Vector3;
14
- static _shadowCameraKeys: string[];
15
- static _setDirectLightShadow(shadow: DirectionalLightShadow, props: number[]): DirectionalLightShadow;
16
- static CompileMaterial(renderer: WebGLRenderer, scene: Scene, camera: Camera, target: Material | Material[]): void;
17
- static CompileObject3D(renderer: WebGLRenderer, scene: Scene, camera: Camera, target: Object3D): void;
18
- static CompileTexture(renderer: WebGLRenderer, target: Texture | Texture[]): void;
19
- static Blit(renderer: WebGLRenderer, renderTarget: WebGLRenderTarget | null, material: Material, lod?: number, face?: number): void;
20
- static CreateFullscreenTriangle(): BufferGeometry<import("three").NormalBufferAttributes>;
21
- static fullscreenMesh: Mesh;
22
- static fullscreenCamera: OrthographicCamera;
23
13
  static instanceCount: number;
14
+ static target: Vector3;
15
+ static worldPos: Vector3;
16
+ static clearColor: Color;
24
17
  private _instanceId;
25
18
  private _root;
26
19
  private _canvas;
27
- private _container;
28
20
  private _gl;
29
21
  private _RENDER_TARGET_FLOAT_TYPE;
30
22
  private _DATA_FLOAT_TYPE;
31
- private _scene;
32
- private _camera;
33
23
  private _mount;
34
- private _renderer;
35
24
  private _input;
36
25
  private _dpr;
37
26
  private _width;
38
27
  private _height;
39
28
  private _viewport;
40
- private _orientation;
41
- private _defaultProps;
29
+ private _resourceOptions;
30
+ private _scene;
31
+ private _camera;
32
+ private _renderer;
42
33
  private _running;
43
34
  private _rootRotated;
44
35
  private _time;
@@ -46,17 +37,14 @@ export declare class Viewer extends EventEmitter {
46
37
  private _lastFrameTime;
47
38
  private _targetFrameRate;
48
39
  private _fixedFrameTime;
49
- private _autoResize;
40
+ private _windowSize;
41
+ private _orientation;
50
42
  private _taskManager;
51
43
  private _resourceManager;
52
44
  private _componentManager;
53
45
  private _loadingManager;
54
46
  get root(): HTMLElement;
55
- get container(): HTMLElement;
56
47
  get time(): number;
57
- get scene(): Scene;
58
- get camera(): PerspectiveCamera;
59
- get renderer(): WebGLRenderer;
60
48
  get canvas(): HTMLCanvasElement;
61
49
  get gl(): WebGL2RenderingContext | WebGLRenderingContext;
62
50
  get RENDER_TARGET_FLOAT_TYPE(): TextureDataType;
@@ -74,78 +62,107 @@ export declare class Viewer extends EventEmitter {
74
62
  get targetFrameRate(): number;
75
63
  set targetFrameRate(v: number);
76
64
  get instanceId(): number;
77
- get loadingManager(): LoadingManager;
78
- get resourceManager(): ResourceManager;
79
- get taskManager(): TaskManager;
80
- constructor({ root, canvas, container, autoStart, autoResize, shadows, camera, targetFrameRate, fixedFrameTime, colorSpace, toneMapping, toneMappingExposure, maxDPR, path, resourcePath, dracoPath, orientation, loader, tasker, ...webglOpts }?: {
65
+ get componentManager(): ComponentManager;
66
+ get scene(): Scene;
67
+ get camera(): Camera;
68
+ get renderer(): WebGLRenderer;
69
+ constructor({ root, canvas, input, shadows, sortObjects, resize, orthographic, camera, targetFrameRate, fixedFrameTime, colorSpace, toneMapping, toneMappingExposure, maxDPR, path, resourcePath, dracoPath, transcoderPath, orientation, loader, tasker, ...webglOpts }?: {
70
+ /** 根节点,用于屏幕旋转 */
81
71
  root?: HTMLElement;
72
+ /** 渲染用的 canvas 元素,如果不提供,默认获取 id 为 "canvas" 的元素 */
82
73
  canvas?: HTMLCanvasElement;
83
- container?: HTMLDivElement;
74
+ /** 设备输入容器,默认使用canvas */
75
+ input?: InputOption;
76
+ /** 是否开启阴影或阴影类型,true/false 表示默认 PCFSoftShadowMap */
77
+ shadows?: boolean | ShadowMapType;
78
+ /** 渲染是否开启排序,默认 True */
79
+ sortObjects?: boolean;
80
+ /** 渲染目标帧率 (FPS),-1 表示无限制帧率 */
84
81
  targetFrameRate?: number;
82
+ /** 是否固定帧时间,true 使用固定 delta 时间 */
85
83
  fixedFrameTime?: boolean;
86
- autoStart?: boolean;
87
- autoResize?: boolean;
88
- shadows?: boolean | ShadowMapType;
84
+ /** 调整大小模式,AUTO: 自动 resize,MUNUAL: 手动控制 */
85
+ resize?: ResizeMode | SizeFunction;
86
+ /** 渲染器输出的色彩空间,默认 SRGBColorSpace */
89
87
  colorSpace?: ColorSpace;
88
+ /** 渲染器的色调映射类型,默认 LinearToneMapping */
90
89
  toneMapping?: ToneMapping;
90
+ /** 色调映射曝光值,默认 1 */
91
91
  toneMappingExposure?: number;
92
+ /** 最大设备像素比,用于控制高分屏渲染精度 */
92
93
  maxDPR?: number;
94
+ /** 模型路径,通常用于加载主模型文件(如 glTF、FBX 等)的基础路径 */
93
95
  path?: string;
96
+ /** 资源路径,模型引用的其他资源(如贴图、材质等)的路径 */
94
97
  resourcePath?: string;
98
+ /** Draco 压缩解码器路径,默认 Google CDN 地址 */
95
99
  dracoPath?: string;
100
+ /** The WASM transcoder and JS wrapper are available from the examples/jsm/libs/basis directory. */
101
+ transcoderPath?: string;
102
+ /** 页面方向,AUTO: 自动,LANDSCAPE: 横屏,PORTRAIT: 竖屏 */
96
103
  orientation?: Orientation;
97
- camera?: {
98
- fov?: number;
99
- aspect?: number;
100
- near?: number;
101
- far?: number;
102
- position?: Vector3;
103
- rotation?: Euler;
104
- };
104
+ /** Creates an orthographic camera */
105
+ orthographic?: boolean;
106
+ /** A `THREE.Camera` instance or props that go into the default camera */
107
+ camera?: (Camera | __Properties<PerspectiveCamera & OrthographicCamera>);
108
+ /** 加载管理器 */
105
109
  loader?: {
106
- onLoad?: () => void;
110
+ onComplete?: () => void;
107
111
  onProgress?: (url: string, loaded: number, total: number) => void;
108
112
  onError?: (url: string) => void;
109
113
  };
114
+ /** 任务管理器 */
110
115
  tasker?: {
111
116
  onComplete?: () => void;
112
- onProgress?: (target: Object, loaded: number, total: number) => void;
113
- onError?: (target: Object) => void;
117
+ onProgress?: (task: Task, loaded: number, total: number) => void;
118
+ onError?: (task: Task) => void;
114
119
  };
115
120
  } & WebGLRendererParameters);
116
121
  destroy(): void;
117
- private _addDefaultLoaders;
122
+ context(context?: Context): Context;
118
123
  private _frame;
119
124
  loop(dt: number): void;
120
- update(dt: number): void;
121
- render(dt: number): void;
122
- _rendering(dt: number): void;
123
- _resizing(width: number, height: number): void;
124
125
  start(): this;
125
126
  stop(): this;
126
127
  rotate(): void;
127
128
  resize(width?: number, height?: number): void;
129
+ setURLModifier(callback?: (url: string) => string): LoadingManager;
128
130
  loadAsset(props: AssetProperties): Promise<any>;
129
131
  getLoader(ext: string): import(".").Loader;
130
132
  addLoader(Loader: LoaderConstructor): import(".").Loader;
131
- traverseMaterials(callback: (mat: Material) => void): void;
132
- traverseComponents(callback: (comp: Component) => void): void;
133
- mount<T extends Mount>(constructor: {
133
+ getComponent<T extends Component>(constructor: {
134
134
  new (...args: any[]): T;
135
- }, autoAdd?: boolean): T;
136
- task(task: Task): void;
135
+ }, node?: Object3D): T;
136
+ task<T extends Object3D | Scene | Material | Texture | Function>(target?: T): T;
137
+ task<T extends Material[]>(target?: Material[]): T;
137
138
  add<T extends Object3D | Component, K extends __C<T>>(object: T | K & __C<T>, props?: __P<T, K>): T;
138
139
  remove<T extends Object3D | Component>(ins: T): T;
139
140
  createRenderTarget(width: number, height: number, nearest?: boolean, floatType?: boolean | TextureDataType, msaa?: number, mipmap?: boolean, depth?: boolean): WebGLRenderTarget<Texture>;
140
141
  createCubeRenderTarget(size: number, nearest?: boolean, floatType?: boolean | TextureDataType, msaa?: number, mipmap?: boolean, depth?: boolean): WebGLCubeRenderTarget;
141
142
  createDataTexture(data: ArrayBufferView, width: number, height: number, floatType?: boolean, nearest?: boolean): DataTexture;
142
- /**
143
- * 传送门,得到一个全新的场景
144
- * @param callback 禁止使用异步函数,会导致状态错误
145
- * @returns
146
- */
147
- portal<T = any>(callback: () => T, sceneNew?: Scene): T;
148
143
  blit(renderTarget: WebGLRenderTarget, material: Material, lod?: number, face?: number): void;
144
+ copy(src: WebGLRenderTarget | Texture, dest: WebGLRenderTarget): void;
145
+ clearColor(renderTarget: WebGLRenderTarget, color: ColorRepresentation, alpha?: number): void;
146
+ stash(renderTarget: WebGLRenderTarget | null, callback: (renderer: WebGLRenderer) => void, clearColor?: ColorRepresentation, clearAlpha?: number): void;
147
+ blur(blurLevel: number, shadingScale: number, inputBuffer: WebGLRenderTarget, tempBuffer: WebGLRenderTarget, outputBuffer?: WebGLRenderTarget, fixedOutput?: boolean): void;
148
+ render(renderTarget: WebGLRenderTarget | null, node: Object3D, camera: Camera, clearColor?: ColorRepresentation, clearAlpha?: number): void;
149
149
  compile(target?: Object3D | Scene | Material | Texture): void;
150
150
  compile(target?: Material[]): void;
151
+ static fullscreenMesh: Mesh;
152
+ static fullscreenCamera: OrthographicCamera;
153
+ static copyMaterial: ShaderMaterial;
154
+ static clearMaterial: ShaderMaterial;
155
+ static blur9Material: ShaderMaterial;
156
+ static blur9VaryingMaterial: ShaderMaterial;
157
+ static CompileMaterial(renderer: WebGLRenderer, scene: Scene, camera: Camera, target: Material | Material[]): void;
158
+ static CompileObject3D(renderer: WebGLRenderer, scene: Scene, camera: Camera, target: Object3D): void;
159
+ static CompileTexture(renderer: WebGLRenderer, target: Texture | Texture[]): void;
160
+ static Blur(renderer: WebGLRenderer, blurLevel: number, shadingScale: number, inputBuffer: WebGLRenderTarget, tempBuffer: WebGLRenderTarget, outputBuffer?: WebGLRenderTarget, fixedOutput?: boolean): void;
161
+ static Blit(renderer: WebGLRenderer, renderTarget: WebGLRenderTarget | null, material: Material, lod?: number, face?: number): void;
162
+ static Copy(renderer: WebGLRenderer, src: WebGLRenderTarget | Texture, dest: WebGLRenderTarget): void;
163
+ static ClearColor(renderer: WebGLRenderer, renderTarget: WebGLRenderTarget | null, clearColor: ColorRepresentation, clearAlpha?: number): void;
164
+ static Render(renderer: WebGLRenderer, renderTarget: WebGLRenderTarget | null, node: Object3D, camera: Camera, clearColor?: ColorRepresentation, clearAlpha?: number): void;
165
+ static Stash(renderer: WebGLRenderer, renderTarget: WebGLRenderTarget | null, callback: (renderer: WebGLRenderer) => void, clearColor?: ColorRepresentation, clearAlpha?: number): void;
166
+ static CreateFullscreenTriangle(): BufferGeometry<import("three").NormalBufferAttributes, import("three").BufferGeometryEventMap>;
151
167
  }
168
+ export {};
package/types/WebGL.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { WebGLRendererParameters } from "three";
2
- export declare function parepareWebGL(canvas: HTMLCanvasElement, props: WebGLRendererParameters): {
2
+ export declare function checkWebGL(canvas: HTMLCanvasElement, props: WebGLRendererParameters): {
3
3
  gl: WebGL2RenderingContext;
4
4
  RENDER_TARGET_FLOAT_TYPE: 1016;
5
5
  DATA_FLOAT_TYPE: 1015;
@@ -1,6 +1,6 @@
1
1
  import { LoadingManager, Object3D } from "three";
2
- import { ResourceManager } from "./ResourceManager";
3
2
  import { TextureSettings } from "../TextureSettings";
3
+ import type { Viewer } from "../Viewer";
4
4
  export interface LoadProperties {
5
5
  url: string;
6
6
  buffer?: string | ArrayBuffer;
@@ -8,16 +8,17 @@ export interface LoadProperties {
8
8
  path?: string;
9
9
  resourcePath?: string;
10
10
  dracoPath?: string;
11
+ transcoderPath?: string;
11
12
  manager?: LoadingManager;
12
13
  onLoad: (asset: any) => void;
13
14
  onProgress?: (event: ProgressEvent) => void;
14
15
  onError?: (event: ErrorEvent) => void;
15
16
  }
16
17
  export declare abstract class Loader {
17
- manager: ResourceManager;
18
+ viewer: Viewer;
18
19
  static _texKeys: string[];
19
20
  static _setUserData(node: Object3D): Object3D<import("three").Object3DEventMap>;
20
- constructor(manager: ResourceManager);
21
+ constructor(viewer: Viewer);
21
22
  abstract extension: string[];
22
23
  abstract load(props: LoadProperties): void;
23
24
  }
@@ -1,6 +1,8 @@
1
1
  import { LoadingManager } from "three";
2
2
  import { TextureSettings } from "../TextureSettings";
3
3
  import { Loader } from "./Loader";
4
+ import type { Viewer } from "../Viewer";
5
+ export type LoaderConstructor = new (viewer: Viewer) => Loader;
4
6
  export interface AssetProperties extends TextureSettings {
5
7
  url?: string;
6
8
  ext?: string;
@@ -8,10 +10,10 @@ export interface AssetProperties extends TextureSettings {
8
10
  path?: string;
9
11
  resourcePath?: string;
10
12
  dracoPath?: string;
13
+ transcoderPath?: string;
11
14
  manager?: LoadingManager;
12
15
  onProgress?: (event: ProgressEvent) => void;
13
16
  }
14
- export type LoaderConstructor = new (manager: ResourceManager) => Loader;
15
17
  export declare class ResourceManager {
16
18
  static extension(path: string): string;
17
19
  static dirname(path: string): string;
@@ -20,9 +22,11 @@ export declare class ResourceManager {
20
22
  static _splitTextureSettings(props: TextureSettings & {
21
23
  [k: string]: any;
22
24
  }): {};
25
+ private _viewer;
23
26
  private _loaders;
27
+ constructor(viewer: Viewer);
24
28
  destroy(): void;
25
29
  getLoader(ext: string): Loader;
26
30
  addLoader(Loader: LoaderConstructor): Loader;
27
- loadAsset<T = any>({ url, buffer, ext, path, resourcePath, dracoPath, manager, onProgress, ...props }: AssetProperties): Promise<T>;
31
+ loadAsset<T = any>({ url, ext, onProgress, ...props }: AssetProperties): Promise<T>;
28
32
  }
@@ -0,0 +1,44 @@
1
+ import { Color, ShaderMaterial, ShaderMaterialParameters, Texture, Vector2 } from "three";
2
+ import { BMFontInfo, BMFontTextLayout, LayoutSetting } from "./BMFontTextLayout";
3
+ export declare class BMFontAtlas {
4
+ info: BMFontInfo;
5
+ material: ShaderMaterial;
6
+ uniforms: {
7
+ u_color: {
8
+ value: Color;
9
+ };
10
+ u_opacity: {
11
+ value: number;
12
+ };
13
+ u_weight: {
14
+ value: number;
15
+ };
16
+ u_strokeColor: {
17
+ value: Color;
18
+ };
19
+ u_strokeWidth: {
20
+ value: number;
21
+ };
22
+ u_shadowColor: {
23
+ value: Color;
24
+ };
25
+ u_shadowBlur: {
26
+ value: number;
27
+ };
28
+ u_shadowOffset: {
29
+ value: Vector2;
30
+ };
31
+ u_fontTexture: {
32
+ value: any;
33
+ };
34
+ };
35
+ constructor({ info, texture, uniforms, ...props }: {
36
+ info: BMFontInfo;
37
+ texture: Texture;
38
+ } & ShaderMaterialParameters);
39
+ build(layout: BMFontTextLayout, setting: LayoutSetting): {
40
+ position: Float32Array<ArrayBuffer>;
41
+ uv: Float32Array<ArrayBuffer>;
42
+ indice: Uint16Array<ArrayBuffer>;
43
+ };
44
+ }
@@ -0,0 +1,9 @@
1
+ import { BufferGeometry } from "three";
2
+ import { BMFontAtlas } from "./BMFontAtlas";
3
+ import { LayoutSetting, BMFontTextLayout } from "./BMFontTextLayout";
4
+ export declare class BMFontTextGeometry extends BufferGeometry {
5
+ layout: BMFontTextLayout;
6
+ update(fontAtlas: BMFontAtlas, text: string, setting: LayoutSetting): void;
7
+ computeBoundingSphere(): void;
8
+ computeBoundingBox(): void;
9
+ }