@tolokoban/tgd 2.0.100 → 2.0.103
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/lib/dist/canvas/gizmo/painter/tips.d.ts +1 -1
- package/lib/dist/canvas/gizmo/painter/tips.d.ts.map +1 -1
- package/lib/dist/canvas/gizmo/painter/tips.js +1 -1
- package/lib/dist/color/color.d.ts +4 -0
- package/lib/dist/color/color.d.ts.map +1 -1
- package/lib/dist/color/color.js +21 -1
- package/lib/dist/context/context.d.ts +3 -0
- package/lib/dist/context/context.d.ts.map +1 -1
- package/lib/dist/context/context.js +10 -7
- package/lib/dist/context/logic.d.ts +2 -2
- package/lib/dist/context/logic.js +2 -2
- package/lib/dist/context/ubo-manager.d.ts +10 -0
- package/lib/dist/context/ubo-manager.d.ts.map +1 -0
- package/lib/dist/context/ubo-manager.js +23 -0
- package/lib/dist/dataset/dataset.d.ts +8 -3
- package/lib/dist/dataset/dataset.d.ts.map +1 -1
- package/lib/dist/dataset/dataset.js +35 -12
- package/lib/dist/filter/blur.d.ts +1 -0
- package/lib/dist/filter/blur.d.ts.map +1 -1
- package/lib/dist/filter/blur.js +3 -1
- package/lib/dist/filter/filter.d.ts +4 -1
- package/lib/dist/filter/filter.d.ts.map +1 -1
- package/lib/dist/filter/filter.js +4 -1
- package/lib/dist/filter/hue-rotation.d.ts +2 -1
- package/lib/dist/filter/hue-rotation.d.ts.map +1 -1
- package/lib/dist/filter/hue-rotation.js +3 -2
- package/lib/dist/index.d.ts +2 -0
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +3 -1
- package/lib/dist/interface/transformable.d.ts +1 -1
- package/lib/dist/loader/image.d.ts +3 -3
- package/lib/dist/loader/image.d.ts.map +1 -1
- package/lib/dist/loader/image.js +10 -22
- package/lib/dist/material/glass.js +3 -3
- package/lib/dist/material/material.d.ts +3 -7
- package/lib/dist/material/material.d.ts.map +1 -1
- package/lib/dist/material/material.js +1 -1
- package/lib/dist/painter/background-with-depth/background-with-depth.d.ts +2 -2
- package/lib/dist/painter/background-with-depth/background-with-depth.d.ts.map +1 -1
- package/lib/dist/painter/background-with-depth/background-with-depth.js +3 -3
- package/lib/dist/painter/debug/point/point.d.ts +1 -1
- package/lib/dist/painter/debug/point/point.d.ts.map +1 -1
- package/lib/dist/painter/debug/point/point.js +1 -1
- package/lib/dist/painter/debug/stencil/stencil.d.ts +1 -1
- package/lib/dist/painter/debug/stencil/stencil.d.ts.map +1 -1
- package/lib/dist/painter/debug/stencil/stencil.js +1 -1
- package/lib/dist/painter/filter/filter.d.ts +8 -10
- package/lib/dist/painter/filter/filter.d.ts.map +1 -1
- package/lib/dist/painter/filter/filter.js +41 -47
- package/lib/dist/painter/fragment-shader/fragment-shader.d.ts +3 -3
- package/lib/dist/painter/fragment-shader/fragment-shader.d.ts.map +1 -1
- package/lib/dist/painter/fragment-shader/fragment-shader.js +3 -3
- package/lib/dist/painter/framebuffer-msaa.d.ts +24 -13
- package/lib/dist/painter/framebuffer-msaa.d.ts.map +1 -1
- package/lib/dist/painter/framebuffer-msaa.js +60 -9
- package/lib/dist/painter/framebuffer.d.ts +20 -19
- package/lib/dist/painter/framebuffer.d.ts.map +1 -1
- package/lib/dist/painter/framebuffer.js +76 -19
- package/lib/dist/painter/gizmo/gizmo.d.ts +31 -0
- package/lib/dist/painter/gizmo/gizmo.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/gizmo.js +186 -0
- package/lib/dist/painter/gizmo/index.d.ts +2 -0
- package/lib/dist/painter/gizmo/index.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/index.js +2 -0
- package/lib/dist/painter/gizmo/painters/axes.1.d.ts +14 -0
- package/lib/dist/painter/gizmo/painters/axes.1.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/painters/axes.1.js +50 -0
- package/lib/dist/painter/gizmo/painters/axes.d.ts +16 -0
- package/lib/dist/painter/gizmo/painters/axes.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/painters/axes.js +81 -0
- package/lib/dist/painter/gizmo/painters/consts.d.ts +4 -0
- package/lib/dist/painter/gizmo/painters/consts.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/painters/consts.js +4 -0
- package/lib/dist/painter/gizmo/painters/mask.d.ts +14 -0
- package/lib/dist/painter/gizmo/painters/mask.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/painters/mask.js +90 -0
- package/lib/dist/painter/gizmo/painters/normal.1.d.ts +21 -0
- package/lib/dist/painter/gizmo/painters/normal.1.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/painters/normal.1.js +111 -0
- package/lib/dist/painter/gizmo/painters/normal.d.ts +17 -0
- package/lib/dist/painter/gizmo/painters/normal.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/painters/normal.js +87 -0
- package/lib/dist/painter/gizmo/painters/tips.d.ts +18 -0
- package/lib/dist/painter/gizmo/painters/tips.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/painters/tips.js +44 -0
- package/lib/dist/painter/gizmo/tips.d.ts +22 -0
- package/lib/dist/painter/gizmo/tips.d.ts.map +1 -0
- package/lib/dist/painter/gizmo/tips.js +51 -0
- package/lib/dist/painter/group-camera.d.ts +5 -3
- package/lib/dist/painter/group-camera.d.ts.map +1 -1
- package/lib/dist/painter/group-camera.js +7 -3
- package/lib/dist/painter/group.d.ts +6 -6
- package/lib/dist/painter/group.d.ts.map +1 -1
- package/lib/dist/painter/group.js +19 -13
- package/lib/dist/painter/index.d.ts +3 -0
- package/lib/dist/painter/index.d.ts.map +1 -1
- package/lib/dist/painter/index.js +4 -1
- package/lib/dist/painter/lod/lod.d.ts +1 -1
- package/lib/dist/painter/lod/lod.js +2 -2
- package/lib/dist/painter/logic.d.ts +2 -2
- package/lib/dist/painter/logic.js +2 -2
- package/lib/dist/painter/mesh/gltf/gltf.d.ts +2 -8
- package/lib/dist/painter/mesh/gltf/gltf.d.ts.map +1 -1
- package/lib/dist/painter/mesh/gltf/gltf.js +1 -1
- package/lib/dist/painter/mesh/mesh/mesh.d.ts +7 -16
- package/lib/dist/painter/mesh/mesh/mesh.d.ts.map +1 -1
- package/lib/dist/painter/mesh/mesh/mesh.js +21 -9
- package/lib/dist/painter/mesh/normals/normals.d.ts +1 -1
- package/lib/dist/painter/mesh/normals/normals.d.ts.map +1 -1
- package/lib/dist/painter/mesh/normals/normals.js +1 -1
- package/lib/dist/painter/node/node.d.ts +3 -3
- package/lib/dist/painter/node/node.js +4 -4
- package/lib/dist/painter/overlay/index.d.ts +2 -0
- package/lib/dist/painter/overlay/index.d.ts.map +1 -0
- package/lib/dist/painter/overlay/index.js +2 -0
- package/lib/dist/painter/overlay/overlay.d.ts +77 -0
- package/lib/dist/painter/overlay/overlay.d.ts.map +1 -0
- package/lib/dist/painter/overlay/overlay.js +196 -0
- package/lib/dist/painter/painter.d.ts +1 -1
- package/lib/dist/painter/program.d.ts +70 -0
- package/lib/dist/painter/program.d.ts.map +1 -0
- package/lib/dist/painter/program.js +250 -0
- package/lib/dist/painter/scissor.d.ts +1 -1
- package/lib/dist/painter/scissor.js +2 -2
- package/lib/dist/painter/segments/segments-morphing.d.ts +4 -13
- package/lib/dist/painter/segments/segments-morphing.d.ts.map +1 -1
- package/lib/dist/painter/segments/segments-morphing.js +3 -3
- package/lib/dist/painter/segments/segments.d.ts +4 -13
- package/lib/dist/painter/segments/segments.d.ts.map +1 -1
- package/lib/dist/painter/segments/segments.js +3 -3
- package/lib/dist/painter/skybox/skybox.d.ts +1 -1
- package/lib/dist/painter/skybox/skybox.d.ts.map +1 -1
- package/lib/dist/painter/skybox/skybox.js +1 -1
- package/lib/dist/painter/sprites/sprites.d.ts +5 -0
- package/lib/dist/painter/sprites/sprites.d.ts.map +1 -1
- package/lib/dist/painter/sprites/sprites.js +20 -9
- package/lib/dist/painter/state/state.js +4 -4
- package/lib/dist/painter/tubes/tubes.d.ts +4 -13
- package/lib/dist/painter/tubes/tubes.d.ts.map +1 -1
- package/lib/dist/painter/tubes/tubes.js +2 -2
- package/lib/dist/painter/x-ray/x-ray.d.ts +4 -12
- package/lib/dist/painter/x-ray/x-ray.d.ts.map +1 -1
- package/lib/dist/painter/x-ray/x-ray.js +3 -3
- package/lib/dist/parser/gltf/gltf.d.ts +2 -5
- package/lib/dist/parser/gltf/gltf.d.ts.map +1 -1
- package/lib/dist/parser/gltf/gltf.js +1 -1
- package/lib/dist/program/program.d.ts +2 -0
- package/lib/dist/program/program.d.ts.map +1 -1
- package/lib/dist/program/program.js +43 -8
- package/lib/dist/shader/fragment.d.ts.map +1 -1
- package/lib/dist/shader/fragment.js +3 -3
- package/lib/dist/shader/vertex.d.ts +3 -1
- package/lib/dist/shader/vertex.d.ts.map +1 -1
- package/lib/dist/shader/vertex.js +8 -6
- package/lib/dist/texture/texture-depth.d.ts +3 -11
- package/lib/dist/texture/texture-depth.d.ts.map +1 -1
- package/lib/dist/texture/texture-depth.js +1 -1
- package/lib/dist/texture/texture2d.d.ts +5 -11
- package/lib/dist/texture/texture2d.d.ts.map +1 -1
- package/lib/dist/texture/texture2d.js +3 -3
- package/lib/dist/time/interval/interval.d.ts +3 -3
- package/lib/dist/time/interval/interval.js +6 -6
- package/lib/dist/types/painter.d.ts +1 -1
- package/lib/dist/types/program.d.ts +3 -2
- package/lib/dist/types/program.d.ts.map +1 -1
- package/lib/dist/uniform/index.d.ts +3 -0
- package/lib/dist/uniform/index.d.ts.map +1 -0
- package/lib/dist/uniform/index.js +3 -0
- package/lib/dist/uniform/ubo-camera.d.ts +9 -0
- package/lib/dist/uniform/ubo-camera.d.ts.map +1 -0
- package/lib/dist/uniform/ubo-camera.js +20 -0
- package/lib/dist/uniform/uniform-buffer-object.d.ts +56 -0
- package/lib/dist/uniform/uniform-buffer-object.d.ts.map +1 -0
- package/lib/dist/uniform/uniform-buffer-object.js +347 -0
- package/lib/dist/utils/array.d.ts +2 -0
- package/lib/dist/utils/array.d.ts.map +1 -0
- package/lib/dist/utils/array.js +6 -0
- package/lib/dist/utils/index.d.ts +1 -0
- package/lib/dist/utils/index.d.ts.map +1 -1
- package/lib/dist/utils/index.js +2 -1
- package/lib/dist/version.d.ts +2 -0
- package/lib/dist/version.d.ts.map +1 -0
- package/lib/dist/version.js +2 -0
- package/package.json +4 -4
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
import { TgdVec2, TgdVec3, TgdVec4 } from "./../math/index.js";
|
|
2
|
+
import { TgdProgram } from "./../program/index.js";
|
|
3
|
+
import { tgdCodeStringify } from "./../shader/index.js";
|
|
4
|
+
import { TgdConsole } from "./../debug/index.js";
|
|
5
|
+
export class TgdUniformBufferObject {
|
|
6
|
+
constructor(context, { uniforms, values }) {
|
|
7
|
+
this.context = context;
|
|
8
|
+
this.values = {};
|
|
9
|
+
this.dirty = true;
|
|
10
|
+
this.bindingPoint = context.uniformBufferObjects.add(this);
|
|
11
|
+
this.uniforms = uniforms;
|
|
12
|
+
// Offset in floats (not bytes).
|
|
13
|
+
let offsetInFloats = 0;
|
|
14
|
+
for (const name of Object.keys(uniforms)) {
|
|
15
|
+
const type = uniforms[name];
|
|
16
|
+
const { modulo, length } = LAYOUTS[type];
|
|
17
|
+
// Word alignment.
|
|
18
|
+
while (offsetInFloats % modulo !== 0)
|
|
19
|
+
offsetInFloats++;
|
|
20
|
+
this.makeAccessor(name, type, offsetInFloats);
|
|
21
|
+
offsetInFloats += length;
|
|
22
|
+
}
|
|
23
|
+
const bytesLength = Float32Array.BYTES_PER_ELEMENT * 4 * Math.ceil(offsetInFloats / 4);
|
|
24
|
+
this.data = new ArrayBuffer(bytesLength);
|
|
25
|
+
this.view = new DataView(this.data);
|
|
26
|
+
if (values) {
|
|
27
|
+
const keys = Object.keys(values);
|
|
28
|
+
for (const key of keys) {
|
|
29
|
+
const val = values[key];
|
|
30
|
+
if (val === undefined)
|
|
31
|
+
continue;
|
|
32
|
+
this.values[key] = val;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const { gl } = context;
|
|
36
|
+
this.buffer = gl.createBuffer();
|
|
37
|
+
gl.bindBufferBase(gl.UNIFORM_BUFFER, this.bindingPoint, this.buffer);
|
|
38
|
+
gl.bufferData(gl.UNIFORM_BUFFER, this.data.byteLength, gl.DYNAMIC_DRAW);
|
|
39
|
+
context.checkError("TgdUniformBufferObject");
|
|
40
|
+
}
|
|
41
|
+
get names() {
|
|
42
|
+
return Object.keys(this.uniforms);
|
|
43
|
+
}
|
|
44
|
+
delete() {
|
|
45
|
+
const { context } = this;
|
|
46
|
+
context.uniformBufferObjects.remove(this);
|
|
47
|
+
const { gl } = context;
|
|
48
|
+
gl.deleteBuffer(this.buffer);
|
|
49
|
+
}
|
|
50
|
+
bindToProgram(program, blockName) {
|
|
51
|
+
const { gl } = this.context;
|
|
52
|
+
const glPrg = program instanceof TgdProgram ? program.program : program;
|
|
53
|
+
gl.uniformBlockBinding(glPrg, gl.getUniformBlockIndex(glPrg, blockName), this.bindingPoint);
|
|
54
|
+
}
|
|
55
|
+
updateData() {
|
|
56
|
+
if (!this.dirty)
|
|
57
|
+
return;
|
|
58
|
+
const { data } = this;
|
|
59
|
+
const { gl } = this.context;
|
|
60
|
+
gl.bindBuffer(gl.UNIFORM_BUFFER, this.buffer);
|
|
61
|
+
gl.bufferSubData(gl.UNIFORM_BUFFER, 0, data);
|
|
62
|
+
this.dirty = false;
|
|
63
|
+
}
|
|
64
|
+
toShaderCode(blockName, instanceName) {
|
|
65
|
+
const { uniforms } = this;
|
|
66
|
+
return [
|
|
67
|
+
`/* Binding point: ${this.bindingPoint} */`,
|
|
68
|
+
`layout(std140) uniform ${blockName} {`,
|
|
69
|
+
Object.keys(uniforms).map((key) => `${uniforms[key]} ${key};`),
|
|
70
|
+
instanceName ? `} ${instanceName};` : "};",
|
|
71
|
+
];
|
|
72
|
+
}
|
|
73
|
+
debug(caption) {
|
|
74
|
+
const out = new TgdConsole({ text: caption !== null && caption !== void 0 ? caption : "TgdUniformBufferObject", bold: true });
|
|
75
|
+
out.add(tgdCodeStringify(this.toShaderCode("myUniformBlock")));
|
|
76
|
+
const array = new Float32Array(this.data);
|
|
77
|
+
for (let i = 0; i < array.length; i++) {
|
|
78
|
+
if (i % 4 === 0)
|
|
79
|
+
out.nl();
|
|
80
|
+
out.add(`${array[i]}`.slice(0, 8).padStart(10, " "));
|
|
81
|
+
}
|
|
82
|
+
out.nl();
|
|
83
|
+
out.debug();
|
|
84
|
+
}
|
|
85
|
+
makeAccessor(name, type, offsetInFloats) {
|
|
86
|
+
const { values } = this;
|
|
87
|
+
const byteOffset = offsetInFloats * 4;
|
|
88
|
+
switch (type) {
|
|
89
|
+
case "bool":
|
|
90
|
+
Object.defineProperty(values, name, {
|
|
91
|
+
set: (value) => {
|
|
92
|
+
this.view.setUint8(byteOffset, value ? 1 : 0);
|
|
93
|
+
this.dirty = true;
|
|
94
|
+
},
|
|
95
|
+
get: () => this.view.getUint8(byteOffset) !== 0,
|
|
96
|
+
});
|
|
97
|
+
break;
|
|
98
|
+
case "int":
|
|
99
|
+
Object.defineProperty(values, name, {
|
|
100
|
+
set: (value) => {
|
|
101
|
+
this.view.setInt32(byteOffset, value, true);
|
|
102
|
+
this.dirty = true;
|
|
103
|
+
},
|
|
104
|
+
get: () => this.view.getInt32(byteOffset, true),
|
|
105
|
+
});
|
|
106
|
+
break;
|
|
107
|
+
case "uint":
|
|
108
|
+
Object.defineProperty(values, name, {
|
|
109
|
+
set: (value) => {
|
|
110
|
+
this.view.setUint32(byteOffset, value, true);
|
|
111
|
+
this.dirty = true;
|
|
112
|
+
},
|
|
113
|
+
get: () => this.view.getUint32(byteOffset, true),
|
|
114
|
+
});
|
|
115
|
+
break;
|
|
116
|
+
case "float":
|
|
117
|
+
Object.defineProperty(values, name, {
|
|
118
|
+
set: (value) => {
|
|
119
|
+
this.view.setFloat32(byteOffset, value, true);
|
|
120
|
+
this.dirty = true;
|
|
121
|
+
},
|
|
122
|
+
get: () => this.view.getFloat32(byteOffset, true),
|
|
123
|
+
});
|
|
124
|
+
break;
|
|
125
|
+
case "double":
|
|
126
|
+
Object.defineProperty(values, name, {
|
|
127
|
+
set: (value) => {
|
|
128
|
+
this.view.setFloat64(byteOffset, value, true);
|
|
129
|
+
this.dirty = true;
|
|
130
|
+
},
|
|
131
|
+
get: () => this.view.getFloat64(byteOffset, true),
|
|
132
|
+
});
|
|
133
|
+
break;
|
|
134
|
+
case "vec2":
|
|
135
|
+
Object.defineProperty(values, name, {
|
|
136
|
+
set: ([x, y]) => {
|
|
137
|
+
this.view.setFloat32(byteOffset, x, true);
|
|
138
|
+
this.view.setFloat32(byteOffset + 4, y, true);
|
|
139
|
+
this.dirty = true;
|
|
140
|
+
},
|
|
141
|
+
get: () => new TgdVec2(this.view.getFloat32(byteOffset, true), this.view.getFloat32(byteOffset + 4, true)),
|
|
142
|
+
});
|
|
143
|
+
break;
|
|
144
|
+
case "vec3":
|
|
145
|
+
Object.defineProperty(values, name, {
|
|
146
|
+
set: ([x, y, z]) => {
|
|
147
|
+
this.view.setFloat32(byteOffset, x, true);
|
|
148
|
+
this.view.setFloat32(byteOffset + 4, y, true);
|
|
149
|
+
this.view.setFloat32(byteOffset + 8, z, true);
|
|
150
|
+
this.dirty = true;
|
|
151
|
+
},
|
|
152
|
+
get: () => new TgdVec3(this.view.getFloat32(byteOffset, true), this.view.getFloat32(byteOffset + 4, true), this.view.getFloat32(byteOffset + 8, true)),
|
|
153
|
+
});
|
|
154
|
+
break;
|
|
155
|
+
case "vec4":
|
|
156
|
+
Object.defineProperty(values, name, {
|
|
157
|
+
set: ([x, y, z, w]) => {
|
|
158
|
+
this.view.setFloat32(byteOffset, x, true);
|
|
159
|
+
this.view.setFloat32(byteOffset + 4, y, true);
|
|
160
|
+
this.view.setFloat32(byteOffset + 8, z, true);
|
|
161
|
+
this.view.setFloat32(byteOffset + 12, z, true);
|
|
162
|
+
this.dirty = true;
|
|
163
|
+
},
|
|
164
|
+
get: () => new TgdVec4(this.view.getFloat32(byteOffset, true), this.view.getFloat32(byteOffset + 4, true), this.view.getFloat32(byteOffset + 8, true), this.view.getFloat32(byteOffset + 12, true)),
|
|
165
|
+
});
|
|
166
|
+
break;
|
|
167
|
+
case "dvec2":
|
|
168
|
+
Object.defineProperty(values, name, {
|
|
169
|
+
set: ([x, y]) => {
|
|
170
|
+
this.view.setFloat64(byteOffset, x, true);
|
|
171
|
+
this.view.setFloat64(byteOffset + 4, y, true);
|
|
172
|
+
this.dirty = true;
|
|
173
|
+
},
|
|
174
|
+
get: () => new TgdVec2(this.view.getFloat64(byteOffset, true), this.view.getFloat64(byteOffset + 4, true)),
|
|
175
|
+
});
|
|
176
|
+
break;
|
|
177
|
+
case "dvec3":
|
|
178
|
+
Object.defineProperty(values, name, {
|
|
179
|
+
set: ([x, y, z]) => {
|
|
180
|
+
this.view.setFloat64(byteOffset, x, true);
|
|
181
|
+
this.view.setFloat64(byteOffset + 4, y, true);
|
|
182
|
+
this.view.setFloat64(byteOffset + 8, z, true);
|
|
183
|
+
this.dirty = true;
|
|
184
|
+
},
|
|
185
|
+
get: () => new TgdVec3(this.view.getFloat64(byteOffset, true), this.view.getFloat64(byteOffset + 4, true), this.view.getFloat64(byteOffset + 8, true)),
|
|
186
|
+
});
|
|
187
|
+
break;
|
|
188
|
+
case "dvec4":
|
|
189
|
+
Object.defineProperty(values, name, {
|
|
190
|
+
set: ([x, y, z, w]) => {
|
|
191
|
+
this.view.setFloat64(byteOffset, x, true);
|
|
192
|
+
this.view.setFloat64(byteOffset + 4, y, true);
|
|
193
|
+
this.view.setFloat64(byteOffset + 8, z, true);
|
|
194
|
+
this.view.setFloat64(byteOffset + 12, w, true);
|
|
195
|
+
this.dirty = true;
|
|
196
|
+
},
|
|
197
|
+
get: () => new TgdVec4(this.view.getFloat64(byteOffset, true), this.view.getFloat64(byteOffset + 4, true), this.view.getFloat64(byteOffset + 8, true), this.view.getFloat64(byteOffset + 12, true)),
|
|
198
|
+
});
|
|
199
|
+
break;
|
|
200
|
+
case "ivec2":
|
|
201
|
+
Object.defineProperty(values, name, {
|
|
202
|
+
set: ([x, y]) => {
|
|
203
|
+
this.view.setInt32(byteOffset, x, true);
|
|
204
|
+
this.view.setInt32(byteOffset + 4, y, true);
|
|
205
|
+
this.dirty = true;
|
|
206
|
+
},
|
|
207
|
+
get: () => new TgdVec2(this.view.getInt32(byteOffset, true), this.view.getInt32(byteOffset + 4, true)),
|
|
208
|
+
});
|
|
209
|
+
break;
|
|
210
|
+
case "ivec3":
|
|
211
|
+
Object.defineProperty(values, name, {
|
|
212
|
+
set: ([x, y, z]) => {
|
|
213
|
+
this.view.setInt32(byteOffset, x, true);
|
|
214
|
+
this.view.setInt32(byteOffset + 4, y, true);
|
|
215
|
+
this.view.setInt32(byteOffset + 8, z, true);
|
|
216
|
+
this.dirty = true;
|
|
217
|
+
},
|
|
218
|
+
get: () => new TgdVec3(this.view.getInt32(byteOffset, true), this.view.getInt32(byteOffset + 4, true), this.view.getInt32(byteOffset + 8, true)),
|
|
219
|
+
});
|
|
220
|
+
break;
|
|
221
|
+
case "ivec4":
|
|
222
|
+
Object.defineProperty(values, name, {
|
|
223
|
+
set: ([x, y, z, w]) => {
|
|
224
|
+
this.view.setInt32(byteOffset, x, true);
|
|
225
|
+
this.view.setInt32(byteOffset + 4, y, true);
|
|
226
|
+
this.view.setInt32(byteOffset + 8, z, true);
|
|
227
|
+
this.view.setInt32(byteOffset + 12, z, true);
|
|
228
|
+
this.dirty = true;
|
|
229
|
+
},
|
|
230
|
+
get: () => new TgdVec4(this.view.getInt32(byteOffset, true), this.view.getInt32(byteOffset + 4, true), this.view.getInt32(byteOffset + 8, true), this.view.getInt32(byteOffset + 12, true)),
|
|
231
|
+
});
|
|
232
|
+
break;
|
|
233
|
+
case "uvec2":
|
|
234
|
+
Object.defineProperty(values, name, {
|
|
235
|
+
set: ([x, y]) => {
|
|
236
|
+
this.view.setUint32(byteOffset, x, true);
|
|
237
|
+
this.view.setUint32(byteOffset + 4, y, true);
|
|
238
|
+
this.dirty = true;
|
|
239
|
+
},
|
|
240
|
+
get: () => new TgdVec2(this.view.getUint32(byteOffset, true), this.view.getUint32(byteOffset + 4, true)),
|
|
241
|
+
});
|
|
242
|
+
break;
|
|
243
|
+
case "uvec3":
|
|
244
|
+
Object.defineProperty(values, name, {
|
|
245
|
+
set: ([x, y, z]) => {
|
|
246
|
+
this.view.setUint32(byteOffset, x, true);
|
|
247
|
+
this.view.setUint32(byteOffset + 4, y, true);
|
|
248
|
+
this.view.setUint32(byteOffset + 8, z, true);
|
|
249
|
+
this.dirty = true;
|
|
250
|
+
},
|
|
251
|
+
get: () => new TgdVec3(this.view.getUint32(byteOffset, true), this.view.getUint32(byteOffset + 4, true), this.view.getUint32(byteOffset + 8, true)),
|
|
252
|
+
});
|
|
253
|
+
break;
|
|
254
|
+
case "uvec4":
|
|
255
|
+
Object.defineProperty(values, name, {
|
|
256
|
+
set: ([x, y, z, w]) => {
|
|
257
|
+
this.view.setUint32(byteOffset, x, true);
|
|
258
|
+
this.view.setUint32(byteOffset + 4, y, true);
|
|
259
|
+
this.view.setUint32(byteOffset + 8, z, true);
|
|
260
|
+
this.view.setUint32(byteOffset + 12, w, true);
|
|
261
|
+
this.dirty = true;
|
|
262
|
+
},
|
|
263
|
+
get: () => new TgdVec4(this.view.getUint32(byteOffset, true), this.view.getUint32(byteOffset + 4, true), this.view.getUint32(byteOffset + 8, true), this.view.getUint32(byteOffset + 12, true)),
|
|
264
|
+
});
|
|
265
|
+
break;
|
|
266
|
+
case "mat2":
|
|
267
|
+
Object.defineProperty(values, name, {
|
|
268
|
+
set: (mat2) => {
|
|
269
|
+
let src = 0;
|
|
270
|
+
let dst = byteOffset;
|
|
271
|
+
for (let row = 0; row < 2; row++) {
|
|
272
|
+
for (let col = 0; col < 2; col++) {
|
|
273
|
+
this.view.setFloat32(dst, mat2[src++], true);
|
|
274
|
+
dst += 4;
|
|
275
|
+
}
|
|
276
|
+
dst += 8;
|
|
277
|
+
}
|
|
278
|
+
this.dirty = true;
|
|
279
|
+
},
|
|
280
|
+
});
|
|
281
|
+
break;
|
|
282
|
+
case "mat3":
|
|
283
|
+
Object.defineProperty(values, name, {
|
|
284
|
+
set: (mat3) => {
|
|
285
|
+
let src = 0;
|
|
286
|
+
let dst = byteOffset;
|
|
287
|
+
for (let row = 0; row < 3; row++) {
|
|
288
|
+
for (let col = 0; col < 3; col++) {
|
|
289
|
+
this.view.setFloat32(dst, mat3[src++], true);
|
|
290
|
+
dst += 4;
|
|
291
|
+
}
|
|
292
|
+
dst += 4;
|
|
293
|
+
}
|
|
294
|
+
this.dirty = true;
|
|
295
|
+
},
|
|
296
|
+
});
|
|
297
|
+
break;
|
|
298
|
+
case "mat4":
|
|
299
|
+
Object.defineProperty(values, name, {
|
|
300
|
+
set: (mat4) => {
|
|
301
|
+
let src = 0;
|
|
302
|
+
let dst = byteOffset;
|
|
303
|
+
for (let row = 0; row < 4; row++) {
|
|
304
|
+
for (let col = 0; col < 4; col++) {
|
|
305
|
+
this.view.setFloat32(dst, mat4[src++], true);
|
|
306
|
+
dst += 4;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
this.dirty = true;
|
|
310
|
+
},
|
|
311
|
+
});
|
|
312
|
+
break;
|
|
313
|
+
default:
|
|
314
|
+
throw new Error(`[TgdUniformBufferObject] Type "${type}" has been implemented yet!`);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Modulo is used for the padding necessary with Layout std140.
|
|
320
|
+
* The length is in floats.
|
|
321
|
+
*/
|
|
322
|
+
const LAYOUTS = {
|
|
323
|
+
bool: { modulo: 1, length: 1, rows: 1 },
|
|
324
|
+
int: { modulo: 1, length: 1, rows: 1 },
|
|
325
|
+
uint: { modulo: 1, length: 1, rows: 1 },
|
|
326
|
+
float: { modulo: 1, length: 1, rows: 1 },
|
|
327
|
+
double: { modulo: 2, length: 2, rows: 1 },
|
|
328
|
+
vec2: { modulo: 2, length: 2, rows: 1 },
|
|
329
|
+
bvec2: { modulo: 2, length: 2, rows: 1 },
|
|
330
|
+
ivec2: { modulo: 2, length: 2, rows: 1 },
|
|
331
|
+
uvec2: { modulo: 2, length: 2, rows: 1 },
|
|
332
|
+
dvec2: { modulo: 2, length: 2, rows: 1 },
|
|
333
|
+
vec3: { modulo: 4, length: 3, rows: 1 },
|
|
334
|
+
bvec3: { modulo: 4, length: 3, rows: 1 },
|
|
335
|
+
ivec3: { modulo: 4, length: 3, rows: 1 },
|
|
336
|
+
uvec3: { modulo: 4, length: 3, rows: 1 },
|
|
337
|
+
dvec3: { modulo: 4, length: 3, rows: 1 },
|
|
338
|
+
vec4: { modulo: 4, length: 4, rows: 1 },
|
|
339
|
+
bvec4: { modulo: 4, length: 4, rows: 1 },
|
|
340
|
+
ivec4: { modulo: 4, length: 4, rows: 1 },
|
|
341
|
+
uvec4: { modulo: 4, length: 4, rows: 1 },
|
|
342
|
+
dvec4: { modulo: 4, length: 4, rows: 1 },
|
|
343
|
+
mat2: { modulo: 4, length: 8, rows: 2 },
|
|
344
|
+
mat3: { modulo: 4, length: 12, rows: 3 },
|
|
345
|
+
mat4: { modulo: 4, length: 16, rows: 4 },
|
|
346
|
+
};
|
|
347
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pZm9ybS1idWZmZXItb2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3VuaWZvcm0vdW5pZm9ybS1idWZmZXItb2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDL0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQW9CLE1BQU0sYUFBYSxDQUFBO0FBRWhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFvQ3ZDLE1BQU0sT0FBTyxzQkFBc0I7SUFjL0IsWUFDb0IsT0FBbUIsRUFDbkMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFvQztRQUR0QyxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBWHZCLFdBQU0sR0FBRyxFQUV4QixDQUFBO1FBTU8sVUFBSyxHQUFHLElBQUksQ0FBQTtRQU1oQixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDMUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDeEIsZ0NBQWdDO1FBQ2hDLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQTtRQUN0QixLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDM0IsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDeEMsa0JBQWtCO1lBQ2xCLE9BQU8sY0FBYyxHQUFHLE1BQU0sS0FBSyxDQUFDO2dCQUFFLGNBQWMsRUFBRSxDQUFBO1lBQ3RELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQTtZQUM3QyxjQUFjLElBQUksTUFBTSxDQUFBO1FBQzVCLENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ3RGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDeEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbkMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULE1BQU0sSUFBSSxHQUFtQixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2hELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDdkIsSUFBSSxHQUFHLEtBQUssU0FBUztvQkFBRSxTQUFRO2dCQUUvQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtZQUMxQixDQUFDO1FBQ0wsQ0FBQztRQUNELE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDL0IsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3BFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDdkUsT0FBTyxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO0lBQ2hELENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDTCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFFRCxNQUFNO1FBQ0YsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQTtRQUN4QixPQUFPLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFDdEIsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDaEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFrQyxFQUFFLFNBQWlCO1FBQy9ELE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFBO1FBQzNCLE1BQU0sS0FBSyxHQUFHLE9BQU8sWUFBWSxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtRQUN2RSxFQUFFLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQy9GLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTTtRQUV2QixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFBO1FBQ3JCLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFBO1FBQzNCLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDN0MsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM1QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUN0QixDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQWlCLEVBQUUsWUFBcUI7UUFDakQsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQTtRQUN6QixPQUFPO1lBQ0gscUJBQXFCLElBQUksQ0FBQyxZQUFZLEtBQUs7WUFDM0MsMEJBQTBCLFNBQVMsSUFBSTtZQUN2QyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7WUFDOUQsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQzdDLENBQUE7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWdCO1FBQ2xCLE1BQU0sR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sYUFBUCxPQUFPLGNBQVAsT0FBTyxHQUFJLHdCQUF3QixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ3JGLEdBQUcsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM5RCxNQUFNLEtBQUssR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDekMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUE7WUFDekIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ3hELENBQUM7UUFDRCxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUE7UUFDUixHQUFHLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDZixDQUFDO0lBRU8sWUFBWSxDQUFDLElBQVksRUFBRSxJQUFZLEVBQUUsY0FBc0I7UUFDbkUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQTtRQUN2QixNQUFNLFVBQVUsR0FBRyxjQUFjLEdBQUcsQ0FBQyxDQUFBO1FBQ3JDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDWCxLQUFLLE1BQU07Z0JBQ1AsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO29CQUNoQyxHQUFHLEVBQUUsQ0FBQyxLQUFjLEVBQUUsRUFBRTt3QkFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTt3QkFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUE7b0JBQ3JCLENBQUM7b0JBQ0QsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7aUJBQ2xELENBQUMsQ0FBQTtnQkFDRixNQUFLO1lBQ1QsS0FBSyxLQUFLO2dCQUNOLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtvQkFDaEMsR0FBRyxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUU7d0JBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7d0JBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFBO29CQUNyQixDQUFDO29CQUNELEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO2lCQUNsRCxDQUFDLENBQUE7Z0JBQ0YsTUFBSztZQUNULEtBQUssTUFBTTtnQkFDUCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUU7b0JBQ2hDLEdBQUcsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFO3dCQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO3dCQUM1QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtvQkFDckIsQ0FBQztvQkFDRCxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztpQkFDbkQsQ0FBQyxDQUFBO2dCQUNGLE1BQUs7WUFDVCxLQUFLLE9BQU87Z0JBQ1IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO29CQUNoQyxHQUFHLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRTt3QkFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTt3QkFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUE7b0JBQ3JCLENBQUM7b0JBQ0QsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7aUJBQ3BELENBQUMsQ0FBQTtnQkFDRixNQUFLO1lBQ1QsS0FBSyxRQUFRO2dCQUNULE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtvQkFDaEMsR0FBRyxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUU7d0JBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7d0JBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFBO29CQUNyQixDQUFDO29CQUNELEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO2lCQUNwRCxDQUFDLENBQUE7Z0JBQ0YsTUFBSztZQUNULEtBQUssTUFBTTtnQkFDUCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUU7b0JBQ2hDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBVSxFQUFFLEVBQUU7d0JBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7d0JBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO3dCQUM3QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtvQkFDckIsQ0FBQztvQkFDRCxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQ04sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ3RHLENBQUMsQ0FBQTtnQkFDRixNQUFLO1lBQ1QsS0FBSyxNQUFNO2dCQUNQLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtvQkFDaEMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBVSxFQUFFLEVBQUU7d0JBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7d0JBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO3dCQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTt3QkFDN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUE7b0JBQ3JCLENBQUM7b0JBQ0QsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUNOLElBQUksT0FBTyxDQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsRUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FDN0M7aUJBQ1IsQ0FBQyxDQUFBO2dCQUNGLE1BQUs7WUFDVCxLQUFLLE1BQU07Z0JBQ1AsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO29CQUNoQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBVSxFQUFFLEVBQUU7d0JBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7d0JBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO3dCQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTt3QkFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7d0JBQzlDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFBO29CQUNyQixDQUFDO29CQUNELEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FDTixJQUFJLE9BQU8sQ0FDUCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQzlDO2lCQUNSLENBQUMsQ0FBQTtnQkFDRixNQUFLO1lBQ1QsS0FBSyxPQUFPO2dCQUNSLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtvQkFDaEMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFVLEVBQUUsRUFBRTt3QkFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTt3QkFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7d0JBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFBO29CQUNyQixDQUFDO29CQUNELEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FDTixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDdEcsQ0FBQyxDQUFBO2dCQUNGLE1BQUs7WUFDVCxLQUFLLE9BQU87Z0JBQ1IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO29CQUNoQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFVLEVBQUUsRUFBRTt3QkFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTt3QkFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7d0JBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO3dCQUM3QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtvQkFDckIsQ0FBQztvQkFDRCxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQ04sSUFBSSxPQUFPLENBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUM3QztpQkFDUixDQUFDLENBQUE7Z0JBQ0YsTUFBSztZQUNULEtBQUssT0FBTztnQkFDUixNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUU7b0JBQ2hDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFVLEVBQUUsRUFBRTt3QkFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTt3QkFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7d0JBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO3dCQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTt3QkFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUE7b0JBQ3JCLENBQUM7b0JBQ0QsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUNOLElBQUksT0FBTyxDQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsRUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsRUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FDOUM7aUJBQ1IsQ0FBQyxDQUFBO2dCQUNGLE1BQUs7WUFDVCxLQUFLLE9BQU87Z0JBQ1IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO29CQUNoQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQVUsRUFBRSxFQUFFO3dCQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO3dCQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTt3QkFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUE7b0JBQ3JCLENBQUM7b0JBQ0QsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUNOLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUNsRyxDQUFDLENBQUE7Z0JBQ0YsTUFBSztZQUNULEtBQUssT0FBTztnQkFDUixNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUU7b0JBQ2hDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQVUsRUFBRSxFQUFFO3dCQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO3dCQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTt3QkFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7d0JBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFBO29CQUNyQixDQUFDO29CQUNELEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FDTixJQUFJLE9BQU8sQ0FDUCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQzNDO2lCQUNSLENBQUMsQ0FBQTtnQkFDRixNQUFLO1lBQ1QsS0FBSyxPQUFPO2dCQUNSLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtvQkFDaEMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQVUsRUFBRSxFQUFFO3dCQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO3dCQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTt3QkFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7d0JBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO3dCQUM1QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtvQkFDckIsQ0FBQztvQkFDRCxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQ04sSUFBSSxPQUFPLENBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUM1QztpQkFDUixDQUFDLENBQUE7Z0JBQ0YsTUFBSztZQUNULEtBQUssT0FBTztnQkFDUixNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUU7b0JBQ2hDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBVSxFQUFFLEVBQUU7d0JBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7d0JBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO3dCQUM1QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtvQkFDckIsQ0FBQztvQkFDRCxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQ04sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ3BHLENBQUMsQ0FBQTtnQkFDRixNQUFLO1lBQ1QsS0FBSyxPQUFPO2dCQUNSLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtvQkFDaEMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBVSxFQUFFLEVBQUU7d0JBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7d0JBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO3dCQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTt3QkFDNUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUE7b0JBQ3JCLENBQUM7b0JBQ0QsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUNOLElBQUksT0FBTyxDQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsRUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FDNUM7aUJBQ1IsQ0FBQyxDQUFBO2dCQUNGLE1BQUs7WUFDVCxLQUFLLE9BQU87Z0JBQ1IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO29CQUNoQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBVSxFQUFFLEVBQUU7d0JBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7d0JBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO3dCQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTt3QkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7d0JBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFBO29CQUNyQixDQUFDO29CQUNELEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FDTixJQUFJLE9BQU8sQ0FDUCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQzdDO2lCQUNSLENBQUMsQ0FBQTtnQkFDRixNQUFLO1lBQ1QsS0FBSyxNQUFNO2dCQUNQLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtvQkFDaEMsR0FBRyxFQUFFLENBQUMsSUFBYSxFQUFFLEVBQUU7d0JBQ25CLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQTt3QkFDWCxJQUFJLEdBQUcsR0FBRyxVQUFVLENBQUE7d0JBQ3BCLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQzs0QkFDL0IsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO2dDQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0NBQzVDLEdBQUcsSUFBSSxDQUFDLENBQUE7NEJBQ1osQ0FBQzs0QkFDRCxHQUFHLElBQUksQ0FBQyxDQUFBO3dCQUNaLENBQUM7d0JBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUE7b0JBQ3JCLENBQUM7aUJBQ0osQ0FBQyxDQUFBO2dCQUNGLE1BQUs7WUFDVCxLQUFLLE1BQU07Z0JBQ1AsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO29CQUNoQyxHQUFHLEVBQUUsQ0FBQyxJQUFhLEVBQUUsRUFBRTt3QkFDbkIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFBO3dCQUNYLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQTt3QkFDcEIsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDOzRCQUMvQixLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0NBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQ0FDNUMsR0FBRyxJQUFJLENBQUMsQ0FBQTs0QkFDWixDQUFDOzRCQUNELEdBQUcsSUFBSSxDQUFDLENBQUE7d0JBQ1osQ0FBQzt3QkFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtvQkFDckIsQ0FBQztpQkFDSixDQUFDLENBQUE7Z0JBQ0YsTUFBSztZQUNULEtBQUssTUFBTTtnQkFDUCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUU7b0JBQ2hDLEdBQUcsRUFBRSxDQUFDLElBQWEsRUFBRSxFQUFFO3dCQUNuQixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUE7d0JBQ1gsSUFBSSxHQUFHLEdBQUcsVUFBVSxDQUFBO3dCQUNwQixLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7NEJBQy9CLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQ0FDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO2dDQUM1QyxHQUFHLElBQUksQ0FBQyxDQUFBOzRCQUNaLENBQUM7d0JBQ0wsQ0FBQzt3QkFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtvQkFDckIsQ0FBQztpQkFDSixDQUFDLENBQUE7Z0JBQ0YsTUFBSztZQUNUO2dCQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLElBQUksNkJBQTZCLENBQUMsQ0FBQTtRQUM1RixDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBNEJEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxHQUFzRjtJQUMvRixJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN2QyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN0QyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN2QyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN4QyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN6QyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN2QyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN4QyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN4QyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN4QyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN4QyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN2QyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN4QyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN4QyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN4QyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN4QyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN2QyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN4QyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN4QyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN4QyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN4QyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN2QyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN4QyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtDQUMzQyxDQUFBIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/utils/array.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,GAAG,CAAC,EAAE,CAG9D"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export function ensureArray(items) {
|
|
2
|
+
if (items === undefined)
|
|
3
|
+
return [];
|
|
4
|
+
return Array.isArray(items) ? items : [items];
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvYXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFdBQVcsQ0FBSSxLQUEwQjtJQUN4RCxJQUFJLEtBQUssS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLENBQUE7SUFDbEMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDOUMsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
|
package/lib/dist/utils/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from "./action/index.js";
|
|
2
2
|
export * from "./animation/index.js";
|
|
3
|
+
export * from "./array.js";
|
|
3
4
|
export * from "./assert.js";
|
|
4
5
|
export * from "./bbox.js";
|
|
5
6
|
export * from "./canvas.js";
|
|
@@ -10,4 +11,4 @@ export * from "./fullscreen.js";
|
|
|
10
11
|
export * from "./pbo.js";
|
|
11
12
|
export * from "./state/index.js";
|
|
12
13
|
export * from "./webgl.js";
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyxTQUFTLENBQUE7QUFDdkIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxRQUFRLENBQUE7QUFDdEIsY0FBYyxVQUFVLENBQUE7QUFDeEIsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsZUFBZSxDQUFBO0FBQzdCLGNBQWMsY0FBYyxDQUFBO0FBQzVCLGNBQWMsT0FBTyxDQUFBO0FBQ3JCLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsU0FBUyxDQUFBIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,YAAY,CAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const version = "2.0.103";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUEifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tolokoban/tgd",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.103",
|
|
4
4
|
"description": "ToloGameDev library for WebGL2",
|
|
5
5
|
"homepage": "https://tolokoban.github.io/tgd2",
|
|
6
6
|
"main": "./lib/dist/index.js",
|
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
"ci": "cd lib && npm install && npm run build && npm run doc",
|
|
15
15
|
"doc": "cd lib && npm run doc && cd ../doc && npm run deploy",
|
|
16
16
|
"test": "cd lib && npm test",
|
|
17
|
-
"build": "clear && cd lib && npm run
|
|
17
|
+
"build": "clear && cd lib && npm run dev && cd ../doc && npm run dev",
|
|
18
18
|
"predeploy": "npm run ci && cd doc",
|
|
19
19
|
"deploy": "npm run ci && npm publish --access=public",
|
|
20
20
|
"deploy:lib": "cd lib && npm install && npm run build && cd .. && npm publish --access=public",
|
|
21
|
-
"minor": "npm version minor --no-git-tag-version &&
|
|
22
|
-
"patch": "npm version patch --no-git-tag-version &&
|
|
21
|
+
"minor": "npm version minor --no-git-tag-version && node version.mjs",
|
|
22
|
+
"patch": "npm version patch --no-git-tag-version && node version.mjs",
|
|
23
23
|
"prestart": "npm run build",
|
|
24
24
|
"start": "http-server doc/build/ -p 0 -o"
|
|
25
25
|
},
|