bg2e-js 2.3.12 → 2.3.13
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.
- package/dist/bg2e-js.js +350 -326
- package/dist/bg2e-js.js.map +1 -1
- package/package.json +56 -56
- package/src/app/AppController.ts +39 -39
- package/src/app/Bg2KeyboardEvent.ts +54 -54
- package/src/app/Bg2MouseEvent.ts +82 -82
- package/src/app/Bg2TouchEvent.ts +18 -18
- package/src/app/Canvas.ts +108 -108
- package/src/app/EventBase.ts +10 -10
- package/src/app/MainLoop.ts +273 -273
- package/src/app/index.ts +24 -24
- package/src/base/Color.ts +134 -134
- package/src/base/Environment.ts +183 -183
- package/src/base/Light.ts +192 -192
- package/src/base/Material.ts +620 -620
- package/src/base/PolyList.ts +365 -365
- package/src/base/Texture.ts +620 -620
- package/src/base/index.ts +81 -81
- package/src/db/Bg2LoaderPlugin.ts +143 -143
- package/src/db/DBPluginApi.ts +48 -48
- package/src/db/Loader.ts +116 -116
- package/src/db/LoaderPlugin.ts +34 -34
- package/src/db/MtlParser.ts +7 -7
- package/src/db/ObjLoaderPlugin.ts +54 -54
- package/src/db/ObjParser.ts +252 -252
- package/src/db/ObjWriterPlugin.ts +18 -18
- package/src/db/VitscnjLoaderPlugin.ts +112 -112
- package/src/db/Writer.ts +52 -52
- package/src/db/WriterPlugin.ts +22 -22
- package/src/db/index.ts +44 -44
- package/src/debug/DebugRenderer.ts +173 -173
- package/src/debug/WebGLTextureViewer.ts +75 -75
- package/src/debug/index.ts +6 -6
- package/src/index.html +11 -11
- package/src/index.ts +33 -33
- package/src/manipulation/SelectionBuffer.ts +81 -81
- package/src/manipulation/SelectionHighlight.ts +105 -84
- package/src/manipulation/SelectionIdAssignVisitor.ts +96 -96
- package/src/manipulation/SelectionManager.ts +196 -196
- package/src/manipulation/SelectionMode.ts +6 -6
- package/src/math/Mat3.ts +259 -259
- package/src/math/Mat4.ts +710 -710
- package/src/math/MatrixStrategy.ts +25 -25
- package/src/math/Quat.ts +65 -65
- package/src/math/Vec.ts +753 -753
- package/src/math/constants.ts +46 -46
- package/src/math/functions.ts +103 -103
- package/src/math/index.ts +74 -74
- package/src/phsics/joint.ts +137 -137
- package/src/primitives/arrow.ts +57 -57
- package/src/primitives/cone.ts +138 -138
- package/src/primitives/cube.ts +60 -60
- package/src/primitives/cylinder.ts +216 -216
- package/src/primitives/index.ts +13 -13
- package/src/primitives/plane.ts +31 -31
- package/src/primitives/sphere.ts +809 -809
- package/src/react/useBg2e.ts +69 -69
- package/src/render/BRDFIntegrationMap.ts +4 -4
- package/src/render/Environment.ts +135 -135
- package/src/render/FrameBuffer.ts +35 -35
- package/src/render/MaterialRenderer.ts +34 -34
- package/src/render/Pipeline.ts +108 -108
- package/src/render/PolyListRenderer.ts +47 -47
- package/src/render/RenderBuffer.ts +197 -197
- package/src/render/RenderQueue.ts +198 -198
- package/src/render/RenderState.ts +116 -116
- package/src/render/Renderer.ts +248 -248
- package/src/render/SceneAppController.ts +250 -250
- package/src/render/SceneRenderer.ts +387 -387
- package/src/render/Shader.ts +32 -32
- package/src/render/ShadowRenderer.ts +176 -176
- package/src/render/SkyCube.ts +105 -105
- package/src/render/SkySphere.ts +117 -117
- package/src/render/TextureMergerRenderer.ts +70 -70
- package/src/render/TextureRenderer.ts +34 -34
- package/src/render/index.ts +67 -67
- package/src/render/webgl/FrameBuffer.ts +9 -9
- package/src/render/webgl/MaterialRenderer.ts +112 -112
- package/src/render/webgl/Pipeline.ts +88 -88
- package/src/render/webgl/PolyListRenderer.ts +260 -260
- package/src/render/webgl/RenderBuffer.ts +226 -226
- package/src/render/webgl/Renderer.ts +262 -262
- package/src/render/webgl/SceneRenderer.ts +67 -67
- package/src/render/webgl/ShaderProgram.ts +424 -424
- package/src/render/webgl/ShadowRenderer.ts +6 -6
- package/src/render/webgl/SkyCube.ts +15 -15
- package/src/render/webgl/SkySphere.ts +15 -15
- package/src/render/webgl/State.ts +152 -152
- package/src/render/webgl/TextureRenderer.ts +167 -167
- package/src/render/webgl/VertexBuffer.ts +137 -137
- package/src/render/webgl/index.ts +35 -35
- package/src/scene/Camera.ts +458 -458
- package/src/scene/Chain.ts +44 -44
- package/src/scene/ChainJoint.ts +58 -58
- package/src/scene/Component.ts +177 -177
- package/src/scene/ComponentMap.ts +106 -106
- package/src/scene/Drawable.ts +154 -154
- package/src/scene/EnvironmentComponent.ts +141 -141
- package/src/scene/FindNodeVisitor.ts +59 -59
- package/src/scene/LightComponent.ts +154 -154
- package/src/scene/MatrixState.ts +46 -46
- package/src/scene/Node.ts +328 -328
- package/src/scene/NodeVisitor.ts +15 -15
- package/src/scene/OrbitCameraController.ts +450 -450
- package/src/scene/SmoothOrbitCameraController.ts +99 -99
- package/src/scene/Transform.ts +73 -73
- package/src/scene/index.ts +60 -60
- package/src/shaders/BasicDiffuseColorShader.ts +111 -111
- package/src/shaders/BasicPBRLightShader.ts +276 -276
- package/src/shaders/DebugRenderShader.ts +97 -97
- package/src/shaders/DepthRenderShader.ts +127 -127
- package/src/shaders/IrradianceMapCubeShader.ts +115 -115
- package/src/shaders/PBRLightIBLShader.ts +486 -486
- package/src/shaders/PickSelectionShader.ts +101 -101
- package/src/shaders/PresentDebugFramebufferShader.ts +118 -118
- package/src/shaders/PresentTextureShader.ts +99 -99
- package/src/shaders/SelectionHighlightShader.ts +143 -127
- package/src/shaders/ShaderFunction.ts +318 -318
- package/src/shaders/SkyCubeShader.ts +93 -93
- package/src/shaders/SkySphereShader.ts +102 -102
- package/src/shaders/SpecularMapCubeShader.ts +164 -164
- package/src/shaders/TextureMergerShader.ts +171 -171
- package/src/shaders/index.ts +36 -36
- package/src/shaders/webgl/color_correction.glsl +47 -47
- package/src/shaders/webgl/constants.glsl +6 -6
- package/src/shaders/webgl/index.ts +70 -70
- package/src/shaders/webgl/normal_map.glsl +9 -9
- package/src/shaders/webgl/pbr.glsl +173 -173
- package/src/shaders/webgl/uniforms.glsl +91 -91
- package/src/shaders/webgl_shader_lib.ts +213 -213
- package/src/tools/BinaryResourceProvider.ts +14 -14
- package/src/tools/ImageResourceProvider.ts +66 -66
- package/src/tools/MaterialModifier.ts +446 -446
- package/src/tools/Resource.ts +203 -203
- package/src/tools/ResourceProvider.ts +69 -69
- package/src/tools/TextResourceProvider.ts +24 -24
- package/src/tools/TextureCache.ts +51 -51
- package/src/tools/TextureResourceDatabase.ts +100 -100
- package/src/tools/UserAgent.ts +362 -362
- package/src/tools/VideoResourceProvider.ts +50 -50
- package/src/tools/WriteStrategy.ts +22 -22
- package/src/tools/base64.ts +11 -11
- package/src/tools/crypto.ts +19 -19
- package/src/tools/endiantess.ts +13 -13
- package/src/tools/image.ts +18 -18
- package/src/tools/index.ts +41 -41
- package/src/tools/processType.ts +39 -39
- package/src/vite-env.d.ts +12 -12
package/src/app/Canvas.ts
CHANGED
|
@@ -1,108 +1,108 @@
|
|
|
1
|
-
import { generateUUID } from "../tools/crypto";
|
|
2
|
-
|
|
3
|
-
export const getMouseEventOffset = (evt: any, canvas: Canvas): { x: number; y: number } => {
|
|
4
|
-
const offset = canvas.domElement.getBoundingClientRect();
|
|
5
|
-
return {
|
|
6
|
-
x: evt.clientX - offset.left,
|
|
7
|
-
y: evt.clientY - offset.top
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export const getEventTouches = (evt: any, canvas: Canvas): any[] => {
|
|
12
|
-
const offset = canvas.domElement.getBoundingClientRect();
|
|
13
|
-
const touches = Array.from(evt.touches).map((touch: any) => {
|
|
14
|
-
return {
|
|
15
|
-
identifier: touch.identifier,
|
|
16
|
-
x: touch.clientX - offset.left,
|
|
17
|
-
y: touch.clientY - offset.top,
|
|
18
|
-
force: touch.force,
|
|
19
|
-
rotationAngle: touch.rotationAngle,
|
|
20
|
-
radiusX: touch.radiusX,
|
|
21
|
-
radiusY: touch.radiusY
|
|
22
|
-
};
|
|
23
|
-
});
|
|
24
|
-
return touches;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
let g_firstCanvas: Canvas | null = null;
|
|
28
|
-
|
|
29
|
-
export default class Canvas {
|
|
30
|
-
private _renderer: any;
|
|
31
|
-
private _domElement: HTMLCanvasElement;
|
|
32
|
-
_mainLoop: any;
|
|
33
|
-
|
|
34
|
-
static FirstCanvas(): Canvas {
|
|
35
|
-
if (!g_firstCanvas) {
|
|
36
|
-
throw new Error("No Canvas instance has been created yet.");
|
|
37
|
-
}
|
|
38
|
-
return g_firstCanvas;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
constructor(domElement: HTMLCanvasElement, renderer: any) {
|
|
42
|
-
this._renderer = renderer;
|
|
43
|
-
this._domElement = domElement;
|
|
44
|
-
(this._domElement as any)._bg2e_id = generateUUID();
|
|
45
|
-
|
|
46
|
-
g_firstCanvas = g_firstCanvas || this;
|
|
47
|
-
|
|
48
|
-
// Initialized in mainLoop constructor
|
|
49
|
-
this._mainLoop = null;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
get id(): string {
|
|
53
|
-
return (this._domElement as any)._bg2e_id;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
async init(): Promise<void> {
|
|
57
|
-
await this._renderer.init(this);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
get mainLoop(): any { return this._mainLoop; }
|
|
61
|
-
|
|
62
|
-
get renderer(): any { return this._renderer; }
|
|
63
|
-
|
|
64
|
-
get domElement(): HTMLCanvasElement { return this._domElement; }
|
|
65
|
-
|
|
66
|
-
get width(): number { return this._domElement.clientWidth; }
|
|
67
|
-
|
|
68
|
-
get height(): number { return this._domElement.clientHeight; }
|
|
69
|
-
|
|
70
|
-
get viewport(): { width: number; height: number; aspectRatio: number } { return { width: this.width, height: this.height, aspectRatio: this.width / this.height }; }
|
|
71
|
-
|
|
72
|
-
updateViewportSize(): void {
|
|
73
|
-
const sizeInPx = { w: this.domElement.clientWidth, h: this.domElement.clientHeight };
|
|
74
|
-
this.domElement.width = sizeInPx.w * window.devicePixelRatio;
|
|
75
|
-
this.domElement.height = sizeInPx.h * window.devicePixelRatio;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
screenshot(format?: string, width?: number, height?: number): string {
|
|
79
|
-
let canvasStyle = "";
|
|
80
|
-
const prevSize = {
|
|
81
|
-
width: 0,
|
|
82
|
-
height: 0
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
if (width) {
|
|
86
|
-
height = height ? height : width;
|
|
87
|
-
canvasStyle = this.domElement.style.cssText;
|
|
88
|
-
prevSize.width = this.domElement.width;
|
|
89
|
-
prevSize.height = this.domElement.height;
|
|
90
|
-
|
|
91
|
-
this.domElement.style.cssText = `top:auto;left:auto;bottom:auto;right:auto;width:${width}px;height:${height}px;`;
|
|
92
|
-
this.domElement.width = width;
|
|
93
|
-
this.domElement.height = height;
|
|
94
|
-
this.mainLoop.appController.reshape(width, height);
|
|
95
|
-
this.mainLoop.appController.display();
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
const data = this.domElement.toDataURL(format);
|
|
99
|
-
if (width) {
|
|
100
|
-
this.domElement.style.cssText = canvasStyle;
|
|
101
|
-
this.domElement.width = prevSize.width;
|
|
102
|
-
this.domElement.height = prevSize.height;
|
|
103
|
-
this.mainLoop.appController.reshape(prevSize.width, prevSize.height);
|
|
104
|
-
this.mainLoop.appController.display();
|
|
105
|
-
}
|
|
106
|
-
return data;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
1
|
+
import { generateUUID } from "../tools/crypto";
|
|
2
|
+
|
|
3
|
+
export const getMouseEventOffset = (evt: any, canvas: Canvas): { x: number; y: number } => {
|
|
4
|
+
const offset = canvas.domElement.getBoundingClientRect();
|
|
5
|
+
return {
|
|
6
|
+
x: evt.clientX - offset.left,
|
|
7
|
+
y: evt.clientY - offset.top
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const getEventTouches = (evt: any, canvas: Canvas): any[] => {
|
|
12
|
+
const offset = canvas.domElement.getBoundingClientRect();
|
|
13
|
+
const touches = Array.from(evt.touches).map((touch: any) => {
|
|
14
|
+
return {
|
|
15
|
+
identifier: touch.identifier,
|
|
16
|
+
x: touch.clientX - offset.left,
|
|
17
|
+
y: touch.clientY - offset.top,
|
|
18
|
+
force: touch.force,
|
|
19
|
+
rotationAngle: touch.rotationAngle,
|
|
20
|
+
radiusX: touch.radiusX,
|
|
21
|
+
radiusY: touch.radiusY
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
return touches;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
let g_firstCanvas: Canvas | null = null;
|
|
28
|
+
|
|
29
|
+
export default class Canvas {
|
|
30
|
+
private _renderer: any;
|
|
31
|
+
private _domElement: HTMLCanvasElement;
|
|
32
|
+
_mainLoop: any;
|
|
33
|
+
|
|
34
|
+
static FirstCanvas(): Canvas {
|
|
35
|
+
if (!g_firstCanvas) {
|
|
36
|
+
throw new Error("No Canvas instance has been created yet.");
|
|
37
|
+
}
|
|
38
|
+
return g_firstCanvas;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
constructor(domElement: HTMLCanvasElement, renderer: any) {
|
|
42
|
+
this._renderer = renderer;
|
|
43
|
+
this._domElement = domElement;
|
|
44
|
+
(this._domElement as any)._bg2e_id = generateUUID();
|
|
45
|
+
|
|
46
|
+
g_firstCanvas = g_firstCanvas || this;
|
|
47
|
+
|
|
48
|
+
// Initialized in mainLoop constructor
|
|
49
|
+
this._mainLoop = null;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
get id(): string {
|
|
53
|
+
return (this._domElement as any)._bg2e_id;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
async init(): Promise<void> {
|
|
57
|
+
await this._renderer.init(this);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
get mainLoop(): any { return this._mainLoop; }
|
|
61
|
+
|
|
62
|
+
get renderer(): any { return this._renderer; }
|
|
63
|
+
|
|
64
|
+
get domElement(): HTMLCanvasElement { return this._domElement; }
|
|
65
|
+
|
|
66
|
+
get width(): number { return this._domElement.clientWidth; }
|
|
67
|
+
|
|
68
|
+
get height(): number { return this._domElement.clientHeight; }
|
|
69
|
+
|
|
70
|
+
get viewport(): { width: number; height: number; aspectRatio: number } { return { width: this.width, height: this.height, aspectRatio: this.width / this.height }; }
|
|
71
|
+
|
|
72
|
+
updateViewportSize(): void {
|
|
73
|
+
const sizeInPx = { w: this.domElement.clientWidth, h: this.domElement.clientHeight };
|
|
74
|
+
this.domElement.width = sizeInPx.w * window.devicePixelRatio;
|
|
75
|
+
this.domElement.height = sizeInPx.h * window.devicePixelRatio;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
screenshot(format?: string, width?: number, height?: number): string {
|
|
79
|
+
let canvasStyle = "";
|
|
80
|
+
const prevSize = {
|
|
81
|
+
width: 0,
|
|
82
|
+
height: 0
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
if (width) {
|
|
86
|
+
height = height ? height : width;
|
|
87
|
+
canvasStyle = this.domElement.style.cssText;
|
|
88
|
+
prevSize.width = this.domElement.width;
|
|
89
|
+
prevSize.height = this.domElement.height;
|
|
90
|
+
|
|
91
|
+
this.domElement.style.cssText = `top:auto;left:auto;bottom:auto;right:auto;width:${width}px;height:${height}px;`;
|
|
92
|
+
this.domElement.width = width;
|
|
93
|
+
this.domElement.height = height;
|
|
94
|
+
this.mainLoop.appController.reshape(width, height);
|
|
95
|
+
this.mainLoop.appController.display();
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const data = this.domElement.toDataURL(format);
|
|
99
|
+
if (width) {
|
|
100
|
+
this.domElement.style.cssText = canvasStyle;
|
|
101
|
+
this.domElement.width = prevSize.width;
|
|
102
|
+
this.domElement.height = prevSize.height;
|
|
103
|
+
this.mainLoop.appController.reshape(prevSize.width, prevSize.height);
|
|
104
|
+
this.mainLoop.appController.display();
|
|
105
|
+
}
|
|
106
|
+
return data;
|
|
107
|
+
}
|
|
108
|
+
}
|
package/src/app/EventBase.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
export default class EventBase {
|
|
3
|
-
private _stopPropagation: boolean = false;
|
|
4
|
-
|
|
5
|
-
stopPropagation() {
|
|
6
|
-
this._stopPropagation = true;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
get isEventPropagationStopped() { return this._stopPropagation; }
|
|
10
|
-
}
|
|
1
|
+
|
|
2
|
+
export default class EventBase {
|
|
3
|
+
private _stopPropagation: boolean = false;
|
|
4
|
+
|
|
5
|
+
stopPropagation() {
|
|
6
|
+
this._stopPropagation = true;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
get isEventPropagationStopped() { return this._stopPropagation; }
|
|
10
|
+
}
|