@woosh/meep-engine 2.134.4 → 2.135.0

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 (156) hide show
  1. package/build/bundle-worker-image-decoder.js +1 -1
  2. package/build/bundle-worker-terrain.js +1 -1
  3. package/editor/tools/v2/TransformControlsGizmo.js +1 -1
  4. package/editor/view/node-graph/NodeGraphEditorView.js +2 -2
  5. package/package.json +1 -1
  6. package/src/core/assert.d.ts +0 -2
  7. package/src/core/assert.d.ts.map +1 -1
  8. package/src/core/assert.js +0 -6
  9. package/src/core/color/Color.d.ts +0 -5
  10. package/src/core/color/Color.d.ts.map +1 -1
  11. package/src/core/color/Color.js +1 -7
  12. package/src/core/geom/2d/hash-grid/SpatialHashGrid.js +386 -386
  13. package/src/core/geom/2d/line/line_segment_compute_line_segment_intersection_2d.js +1 -1
  14. package/src/core/geom/2d/quad-tree-binary/QuadTree.js +714 -714
  15. package/src/core/geom/3d/triangle/computeTriangleRayIntersection.js +160 -160
  16. package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentric.js +96 -96
  17. package/src/core/geom/packing/max-rect/MaxRectanglesPacker.js +1 -1
  18. package/src/core/geom/packing/max-rect/findBestContainer.js +4 -4
  19. package/src/core/geom/packing/max-rect/packOneBox.js +2 -2
  20. package/src/core/geom/vec3/v3_rigid_align_paired_unit_vectors.d.ts +23 -0
  21. package/src/core/geom/vec3/v3_rigid_align_paired_unit_vectors.d.ts.map +1 -0
  22. package/src/core/geom/vec3/v3_rigid_align_paired_unit_vectors.js +96 -0
  23. package/src/core/graph/layout/box/BoxLayouter.js +7 -7
  24. package/src/core/graph/layout/box/position_box_next_to_box.js +6 -6
  25. package/src/core/math/computeWholeDivisorLow.js +33 -33
  26. package/src/core/math/linalg/eigen/eigen_values_find_spectral_gap.d.ts.map +1 -0
  27. package/src/core/math/linalg/eigen/matrix_eigenvalues_in_place.d.ts +10 -0
  28. package/src/core/math/linalg/eigen/matrix_eigenvalues_in_place.d.ts.map +1 -0
  29. package/src/core/{graph → math/linalg}/eigen/matrix_eigenvalues_in_place.js +8 -7
  30. package/src/core/math/linalg/eigen/matrix_householder_in_place.d.ts.map +1 -0
  31. package/src/core/{graph → math/linalg}/eigen/matrix_householder_in_place.js +11 -5
  32. package/src/core/math/linalg/eigen/matrix_qr_in_place.d.ts +15 -0
  33. package/src/core/math/linalg/eigen/matrix_qr_in_place.d.ts.map +1 -0
  34. package/src/core/{graph → math/linalg}/eigen/matrix_qr_in_place.js +8 -2
  35. package/src/core/math/linalg/eigen/matrix_top_eigenvector_power_iteration.d.ts +17 -0
  36. package/src/core/math/linalg/eigen/matrix_top_eigenvector_power_iteration.d.ts.map +1 -0
  37. package/src/core/math/linalg/eigen/matrix_top_eigenvector_power_iteration.js +107 -0
  38. package/src/core/math/linalg/polynomial_complex_roots_aberth_ehrlich.d.ts +19 -0
  39. package/src/core/math/linalg/polynomial_complex_roots_aberth_ehrlich.d.ts.map +1 -0
  40. package/src/core/math/linalg/polynomial_complex_roots_aberth_ehrlich.js +161 -0
  41. package/src/core/math/linalg/polynomial_real_roots_in_interval.d.ts +15 -0
  42. package/src/core/math/linalg/polynomial_real_roots_in_interval.d.ts.map +1 -0
  43. package/src/core/math/linalg/polynomial_real_roots_in_interval.js +200 -0
  44. package/src/core/math/solveCubic.d.ts +15 -0
  45. package/src/core/math/solveCubic.d.ts.map +1 -0
  46. package/src/core/math/solveCubic.js +82 -0
  47. package/src/core/math/spline/spline3_hermite_bounds_t.d.ts +23 -0
  48. package/src/core/math/spline/spline3_hermite_bounds_t.d.ts.map +1 -0
  49. package/src/core/math/spline/spline3_hermite_bounds_t.js +109 -0
  50. package/src/core/math/spline/spline3_hermite_intersection_spline3_hermite.d.ts +25 -0
  51. package/src/core/math/spline/spline3_hermite_intersection_spline3_hermite.d.ts.map +1 -0
  52. package/src/core/math/spline/spline3_hermite_intersection_spline3_hermite.js +44 -0
  53. package/src/core/math/spline/spline3_hermite_intersection_spline3_hermite_1d.d.ts +16 -0
  54. package/src/core/math/spline/spline3_hermite_intersection_spline3_hermite_1d.d.ts.map +1 -0
  55. package/src/core/math/spline/spline3_hermite_intersection_spline3_hermite_1d.js +120 -0
  56. package/src/core/math/spline/spline3_hermite_intersection_spline3_hermite_2d.d.ts +11 -0
  57. package/src/core/math/spline/spline3_hermite_intersection_spline3_hermite_2d.d.ts.map +1 -0
  58. package/src/core/math/spline/spline3_hermite_intersection_spline3_hermite_2d.js +451 -0
  59. package/src/core/math/spline/spline3_hermite_intersection_spline3_hermite_nd.d.ts +12 -0
  60. package/src/core/math/spline/spline3_hermite_intersection_spline3_hermite_nd.d.ts.map +1 -0
  61. package/src/core/math/spline/spline3_hermite_intersection_spline3_hermite_nd.js +339 -0
  62. package/src/core/math/spline/spline3_hermite_intersects_spline3_hermite.d.ts +15 -0
  63. package/src/core/math/spline/spline3_hermite_intersects_spline3_hermite.d.ts.map +1 -0
  64. package/src/core/math/spline/spline3_hermite_intersects_spline3_hermite.js +21 -0
  65. package/src/core/math/spline/spline3_hermite_to_monomial.d.ts +24 -0
  66. package/src/core/math/spline/spline3_hermite_to_monomial.d.ts.map +1 -0
  67. package/src/core/math/spline/spline3_hermite_to_monomial.js +37 -0
  68. package/src/core/math/spline/v3_computeCatmullRomSplineUniformDistance.js +1 -1
  69. package/src/core/model/node-graph/visual/NodeGraphVisualData.js +1 -1
  70. package/src/core/model/reactive/model/util/createRandomReactiveExpression.js +185 -185
  71. package/src/core/process/delay.js +16 -16
  72. package/src/engine/animation/async/TimeSeries.js +300 -300
  73. package/src/engine/animation/curve/AnimationCurve.d.ts +3 -2
  74. package/src/engine/animation/curve/AnimationCurve.d.ts.map +1 -1
  75. package/src/engine/animation/curve/AnimationCurve.js +3 -2
  76. package/src/engine/animation/curve/draw/position_canvas_to_curve.js +2 -2
  77. package/src/engine/animation/curve/draw/position_curve_to_canvas.js +2 -2
  78. package/src/engine/ecs/fow/shader/FogOfWarRenderer.js +145 -145
  79. package/src/engine/ecs/gui/position/ViewportPositionSystem.js +2 -2
  80. package/src/engine/ecs/parent/entity_node_compute_bounding_box.js +1 -1
  81. package/src/engine/ecs/transform/Transform.d.ts +0 -10
  82. package/src/engine/ecs/transform/Transform.d.ts.map +1 -1
  83. package/src/engine/ecs/transform/Transform.js +0 -12
  84. package/src/engine/graphics/composit/CompositLayer.js +254 -254
  85. package/src/engine/graphics/ecs/mesh-v2/sg_hierarchy_compute_bounding_box_via_parent_entity.js +1 -1
  86. package/src/engine/graphics/ecs/path/tube/build/build_geometry_linear.js +2 -2
  87. package/src/engine/graphics/material/optimization/MaterialOptimizationContext.js +3 -3
  88. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.js +201 -201
  89. package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +1 -1
  90. package/src/engine/graphics/render/buffer/slot/parameter/ProgramValueSlotParameterSet.js +2 -2
  91. package/src/engine/graphics/render/forward_plus/LightManager.js +1226 -1226
  92. package/src/engine/graphics/render/forward_plus/model/PointLight.js +1 -1
  93. package/src/engine/graphics/sh3/lpv/lpv_obtain_storage_cached_volume.js +1 -1
  94. package/src/engine/graphics/sh3/path_tracer/texture/sample_material.js +2 -2
  95. package/src/engine/graphics/texture/atlas/TextureAtlasDebugger.js +1 -1
  96. package/src/engine/graphics/texture/sampler/HarmonicDiffusionGrid.js +145 -145
  97. package/src/engine/graphics/texture/sampler/serialization/TextureBinaryBufferSerializer.js +2 -2
  98. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts +2 -6
  99. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts.map +1 -1
  100. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.js +0 -10
  101. package/src/engine/intelligence/mcts/MonteCarlo.js +275 -275
  102. package/src/engine/navigation/ecs/path_following/PathFollower.js +222 -222
  103. package/src/generation/grid/GridData.js +220 -220
  104. package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.js +385 -385
  105. package/src/view/elements/image/SvgImageView.js +1 -1
  106. package/src/view/elements/windrose/WindRoseDiagram.js +369 -369
  107. package/src/view/minimap/gl/MinimapFogOfWar.js +3 -3
  108. package/src/view/util/DomSizeObserver.js +1 -1
  109. package/src/core/binary/clz32.d.ts +0 -6
  110. package/src/core/binary/clz32.d.ts.map +0 -1
  111. package/src/core/binary/clz32.js +0 -5
  112. package/src/core/binary/type/dataTypeFromTypedArray.d.ts +0 -8
  113. package/src/core/binary/type/dataTypeFromTypedArray.d.ts.map +0 -1
  114. package/src/core/binary/type/dataTypeFromTypedArray.js +0 -11
  115. package/src/core/collection/array/computeHashIntegerArray.d.ts +0 -1
  116. package/src/core/collection/array/computeHashIntegerArray.d.ts.map +0 -1
  117. package/src/core/collection/array/computeHashIntegerArray.js +0 -7
  118. package/src/core/collection/array/typed/typedArrayToDataType.d.ts +0 -6
  119. package/src/core/collection/array/typed/typedArrayToDataType.d.ts.map +0 -1
  120. package/src/core/collection/array/typed/typedArrayToDataType.js +0 -6
  121. package/src/core/geom/3d/mat4/MATRIX_4_IDENTITY.d.ts +0 -6
  122. package/src/core/geom/3d/mat4/MATRIX_4_IDENTITY.d.ts.map +0 -1
  123. package/src/core/geom/3d/mat4/MATRIX_4_IDENTITY.js +0 -7
  124. package/src/core/graph/eigen/eigen_values_find_spectral_gap.d.ts.map +0 -1
  125. package/src/core/graph/eigen/matrix_eigenvalues_in_place.d.ts +0 -8
  126. package/src/core/graph/eigen/matrix_eigenvalues_in_place.d.ts.map +0 -1
  127. package/src/core/graph/eigen/matrix_householder_in_place.d.ts.map +0 -1
  128. package/src/core/graph/eigen/matrix_qr_in_place.d.ts +0 -9
  129. package/src/core/graph/eigen/matrix_qr_in_place.d.ts.map +0 -1
  130. package/src/core/math/spline/cubicCurve.d.ts +0 -6
  131. package/src/core/math/spline/cubicCurve.d.ts.map +0 -1
  132. package/src/core/math/spline/cubicCurve.js +0 -6
  133. package/src/core/math/spline/spline_bezier2.d.ts +0 -6
  134. package/src/core/math/spline/spline_bezier2.d.ts.map +0 -1
  135. package/src/core/math/spline/spline_bezier2.js +0 -6
  136. package/src/core/math/spline/spline_bezier3.d.ts +0 -6
  137. package/src/core/math/spline/spline_bezier3.d.ts.map +0 -1
  138. package/src/core/math/spline/spline_bezier3.js +0 -6
  139. package/src/core/math/spline/spline_bezier3_bounds.d.ts +0 -6
  140. package/src/core/math/spline/spline_bezier3_bounds.d.ts.map +0 -1
  141. package/src/core/math/spline/spline_bezier3_bounds.js +0 -6
  142. package/src/core/math/spline/spline_hermite3.d.ts +0 -6
  143. package/src/core/math/spline/spline_hermite3.d.ts.map +0 -1
  144. package/src/core/math/spline/spline_hermite3.js +0 -6
  145. package/src/core/math/spline/spline_hermite3_bounds.d.ts +0 -6
  146. package/src/core/math/spline/spline_hermite3_bounds.d.ts.map +0 -1
  147. package/src/core/math/spline/spline_hermite3_bounds.js +0 -6
  148. package/src/core/math/spline/spline_hermite3_to_bezier.d.ts +0 -2
  149. package/src/core/math/spline/spline_hermite3_to_bezier.d.ts.map +0 -1
  150. package/src/core/math/spline/spline_hermite3_to_bezier.js +0 -6
  151. package/src/engine/intelligence/behavior/decorator/RepeatUntilFailureBehavior.d.ts +0 -37
  152. package/src/engine/intelligence/behavior/decorator/RepeatUntilFailureBehavior.d.ts.map +0 -1
  153. package/src/engine/intelligence/behavior/decorator/RepeatUntilFailureBehavior.js +0 -70
  154. /package/src/core/{graph → math/linalg}/eigen/eigen_values_find_spectral_gap.d.ts +0 -0
  155. /package/src/core/{graph → math/linalg}/eigen/eigen_values_find_spectral_gap.js +0 -0
  156. /package/src/core/{graph → math/linalg}/eigen/matrix_householder_in_place.d.ts +0 -0
@@ -1,254 +1,254 @@
1
- import {
2
- AddEquation,
3
- CustomBlending,
4
- Mesh,
5
- OneFactor,
6
- OneMinusSrcAlphaFactor,
7
- RedFormat,
8
- RGBAFormat,
9
- ShaderMaterial
10
- } from "three";
11
- import Vector2 from "../../../core/geom/Vector2.js";
12
- import { assert } from "../../../core/assert.js";
13
- import { blendingType2three } from "../texture/sampler/blendingType2Three.js";
14
- import { ScreenSpaceQuadShader } from "../shaders/ScreenSpaceQuadShader.js";
15
- import { BlendingType } from "../texture/sampler/BlendingType.js";
16
- import { FULL_SCREEN_TRIANGLE_GEOMETRY } from "../geometry/FULL_SCREEN_TRIANGLE_GEOMETRY.js";
17
- import Signal from "../../../core/events/signal/Signal.js";
18
-
19
- /**
20
- *
21
- * @param {Material} material
22
- * @param {BlendingType} blending
23
- */
24
- function assignMaterialBlending(material, blending) {
25
-
26
- if (blending === BlendingType.MultiplyAdd) {
27
- material.blending = CustomBlending;
28
- material.blendEquation = AddEquation;
29
- material.blendSrc = OneFactor;
30
- material.blendDst = OneMinusSrcAlphaFactor;
31
- } else {
32
- const threeBlending = blendingType2three(blending);
33
-
34
- material.blending = threeBlending;
35
- }
36
-
37
- }
38
-
39
- export class CompositLayer {
40
- /**
41
- *
42
- * @param {THREE.WebGLRenderTarget} renderTarget
43
- * @param {BlendingType} blending
44
- * @param {number} renderTargetScale
45
- */
46
- constructor({
47
- renderTarget,
48
- blending,
49
- renderTargetScale = 1
50
- }) {
51
- /**
52
- * Human-readable name, useful for debugging
53
- * @type {string}
54
- */
55
- this.name = "";
56
-
57
- /**
58
- *
59
- * @type {BlendingType}
60
- */
61
- this.__blending = blending;
62
- /**
63
- *
64
- * @type {WebGLRenderTarget}
65
- */
66
- this.renderTarget = renderTarget;
67
-
68
- /**
69
- *
70
- * @type {number}
71
- */
72
- this.renderTargetScale = renderTargetScale;
73
-
74
- this.object = new Mesh(FULL_SCREEN_TRIANGLE_GEOMETRY, this.buildMaterial());
75
-
76
- /**
77
- * Which compositing stage this layer belongs to, stages are rendered independently
78
- * @type {number}
79
- */
80
- this.stage = 0;
81
-
82
- this.size = new Vector2();
83
-
84
- /**
85
- *
86
- * @type {boolean}
87
- */
88
- this.__enabled = true;
89
-
90
- /**
91
- * Layers are composited in order from lowest to highest
92
- * @type {number}
93
- */
94
- this.__order = 0;
95
-
96
- this.on = {
97
- preRender: new Signal()
98
- };
99
- }
100
-
101
- get blending() {
102
- return this.__blending;
103
- }
104
-
105
- set blending(v) {
106
- if (v === this.__blending) {
107
- return;
108
- }
109
-
110
- this.__blending = v;
111
-
112
- assignMaterialBlending(this.object.material, v);
113
- }
114
-
115
- /**
116
- *
117
- * @param {number} v
118
- */
119
- set order(v) {
120
- this.__order = v;
121
-
122
- this.object.renderOrder = v;
123
- }
124
-
125
- /**
126
- *
127
- * @return {number}
128
- */
129
- get order() {
130
- return this.__order;
131
- }
132
-
133
- /**
134
- *
135
- * @param {number} v
136
- */
137
- set enabled(v) {
138
- if (!this.__enabled && v) {
139
- this.enable();
140
- } else if (this.__enabled && !v) {
141
- this.disable();
142
- }
143
- }
144
-
145
- /**
146
- *
147
- * @returns {boolean}
148
- */
149
- get enabled() {
150
- return this.__enabled;
151
- }
152
-
153
- enable() {
154
- if (!this.__enabled) {
155
- this.__enabled = true;
156
- this.object.visible = true;
157
- }
158
- }
159
-
160
- disable() {
161
- if (this.__enabled) {
162
- this.__enabled = false;
163
- this.object.visible = false;
164
- }
165
- }
166
-
167
- /**
168
- *
169
- * @param {number} x
170
- * @param {number} y
171
- */
172
- setSize(x, y) {
173
- this.size.set(x, y);
174
- this.updateRenderTargetSize();
175
- }
176
-
177
- updateRenderTargetSize() {
178
-
179
- if (this.renderTarget !== null) {
180
- const scale = this.renderTargetScale;
181
-
182
- const size = this.size;
183
-
184
- const width = size.x * scale;
185
- const height = size.y * scale;
186
-
187
- this.renderTarget.setSize(width, height);
188
- }
189
- }
190
-
191
- /**
192
- *
193
- * @param {number} scale
194
- */
195
- setRenderTargetScale(scale) {
196
- assert.isNumber(scale, 'v');
197
- assert.isFiniteNumber(scale, 'v');
198
-
199
- this.renderTargetScale = scale;
200
-
201
- this.updateRenderTargetSize();
202
- }
203
-
204
- /**
205
- * Override screen-space material of the layer. This allows you to render directly into the output buffer, bypassing the need to create an intermediate buffer
206
- * NOTE: Please make sure you know what you're doing if you use this method
207
- * @param {Material} material
208
- */
209
- setCustomMaterial(material) {
210
- assignMaterialBlending(material, this.blending);
211
-
212
- // override material
213
- this.object.material = material;
214
- }
215
-
216
-
217
- buildMaterial() {
218
-
219
-
220
- const uniforms = {
221
- tTexture: {
222
- type: 't',
223
- value: this.renderTarget.texture
224
- }
225
- };
226
-
227
- // determine swizzle for the material
228
- let swizzle;
229
- const texture_format = this.renderTarget.texture.format;
230
- if (texture_format === RedFormat) {
231
- swizzle = ['r', 'r', 'r', 1];
232
- } else if (texture_format === RGBAFormat) {
233
- swizzle = ['r', 'g', 'b', 'a'];
234
- } else {
235
- throw new Error('Unsupported format');
236
- }
237
-
238
- const material = new ShaderMaterial({
239
- uniforms,
240
- vertexShader: ScreenSpaceQuadShader.vertexShader(),
241
- fragmentShader: ScreenSpaceQuadShader.fragmentShader(swizzle),
242
- lights: false,
243
- fog: false,
244
- depthTest: false,
245
- depthWrite: false,
246
- transparent: true,
247
- vertexColors: false
248
- });
249
-
250
- assignMaterialBlending(material, this.blending);
251
-
252
- return material;
253
- }
254
- }
1
+ import {
2
+ AddEquation,
3
+ CustomBlending,
4
+ Mesh,
5
+ OneFactor,
6
+ OneMinusSrcAlphaFactor,
7
+ RedFormat,
8
+ RGBAFormat,
9
+ ShaderMaterial
10
+ } from "three";
11
+ import Vector2 from "../../../core/geom/Vector2.js";
12
+ import { assert } from "../../../core/assert.js";
13
+ import { blendingType2three } from "../texture/sampler/blendingType2Three.js";
14
+ import { ScreenSpaceQuadShader } from "../shaders/ScreenSpaceQuadShader.js";
15
+ import { BlendingType } from "../texture/sampler/BlendingType.js";
16
+ import { FULL_SCREEN_TRIANGLE_GEOMETRY } from "../geometry/FULL_SCREEN_TRIANGLE_GEOMETRY.js";
17
+ import Signal from "../../../core/events/signal/Signal.js";
18
+
19
+ /**
20
+ *
21
+ * @param {Material} material
22
+ * @param {BlendingType} blending
23
+ */
24
+ function assignMaterialBlending(material, blending) {
25
+
26
+ if (blending === BlendingType.MultiplyAdd) {
27
+ material.blending = CustomBlending;
28
+ material.blendEquation = AddEquation;
29
+ material.blendSrc = OneFactor;
30
+ material.blendDst = OneMinusSrcAlphaFactor;
31
+ } else {
32
+ const threeBlending = blendingType2three(blending);
33
+
34
+ material.blending = threeBlending;
35
+ }
36
+
37
+ }
38
+
39
+ export class CompositLayer {
40
+ /**
41
+ *
42
+ * @param {THREE.WebGLRenderTarget} renderTarget
43
+ * @param {BlendingType} blending
44
+ * @param {number} renderTargetScale
45
+ */
46
+ constructor({
47
+ renderTarget,
48
+ blending,
49
+ renderTargetScale = 1
50
+ }) {
51
+ /**
52
+ * Human-readable name, useful for debugging
53
+ * @type {string}
54
+ */
55
+ this.name = "";
56
+
57
+ /**
58
+ *
59
+ * @type {BlendingType}
60
+ */
61
+ this.__blending = blending;
62
+ /**
63
+ *
64
+ * @type {WebGLRenderTarget}
65
+ */
66
+ this.renderTarget = renderTarget;
67
+
68
+ /**
69
+ *
70
+ * @type {number}
71
+ */
72
+ this.renderTargetScale = renderTargetScale;
73
+
74
+ this.object = new Mesh(FULL_SCREEN_TRIANGLE_GEOMETRY, this.buildMaterial());
75
+
76
+ /**
77
+ * Which compositing stage this layer belongs to, stages are rendered independently
78
+ * @type {number}
79
+ */
80
+ this.stage = 0;
81
+
82
+ this.size = new Vector2();
83
+
84
+ /**
85
+ *
86
+ * @type {boolean}
87
+ */
88
+ this.__enabled = true;
89
+
90
+ /**
91
+ * Layers are composited in order from lowest to highest
92
+ * @type {number}
93
+ */
94
+ this.__order = 0;
95
+
96
+ this.on = {
97
+ preRender: new Signal()
98
+ };
99
+ }
100
+
101
+ get blending() {
102
+ return this.__blending;
103
+ }
104
+
105
+ set blending(v) {
106
+ if (v === this.__blending) {
107
+ return;
108
+ }
109
+
110
+ this.__blending = v;
111
+
112
+ assignMaterialBlending(this.object.material, v);
113
+ }
114
+
115
+ /**
116
+ *
117
+ * @param {number} v
118
+ */
119
+ set order(v) {
120
+ this.__order = v;
121
+
122
+ this.object.renderOrder = v;
123
+ }
124
+
125
+ /**
126
+ *
127
+ * @return {number}
128
+ */
129
+ get order() {
130
+ return this.__order;
131
+ }
132
+
133
+ /**
134
+ *
135
+ * @param {number} v
136
+ */
137
+ set enabled(v) {
138
+ if (!this.__enabled && v) {
139
+ this.enable();
140
+ } else if (this.__enabled && !v) {
141
+ this.disable();
142
+ }
143
+ }
144
+
145
+ /**
146
+ *
147
+ * @returns {boolean}
148
+ */
149
+ get enabled() {
150
+ return this.__enabled;
151
+ }
152
+
153
+ enable() {
154
+ if (!this.__enabled) {
155
+ this.__enabled = true;
156
+ this.object.visible = true;
157
+ }
158
+ }
159
+
160
+ disable() {
161
+ if (this.__enabled) {
162
+ this.__enabled = false;
163
+ this.object.visible = false;
164
+ }
165
+ }
166
+
167
+ /**
168
+ *
169
+ * @param {number} x
170
+ * @param {number} y
171
+ */
172
+ setSize(x, y) {
173
+ this.size.set(x, y);
174
+ this.updateRenderTargetSize();
175
+ }
176
+
177
+ updateRenderTargetSize() {
178
+
179
+ if (this.renderTarget !== null) {
180
+ const scale = this.renderTargetScale;
181
+
182
+ const size = this.size;
183
+
184
+ const width = size.x * scale;
185
+ const height = size.y * scale;
186
+
187
+ this.renderTarget.setSize(width, height);
188
+ }
189
+ }
190
+
191
+ /**
192
+ *
193
+ * @param {number} scale
194
+ */
195
+ setRenderTargetScale(scale) {
196
+ assert.isNumber(scale, 'v');
197
+ assert.isFinite(scale, 'v');
198
+
199
+ this.renderTargetScale = scale;
200
+
201
+ this.updateRenderTargetSize();
202
+ }
203
+
204
+ /**
205
+ * Override screen-space material of the layer. This allows you to render directly into the output buffer, bypassing the need to create an intermediate buffer
206
+ * NOTE: Please make sure you know what you're doing if you use this method
207
+ * @param {Material} material
208
+ */
209
+ setCustomMaterial(material) {
210
+ assignMaterialBlending(material, this.blending);
211
+
212
+ // override material
213
+ this.object.material = material;
214
+ }
215
+
216
+
217
+ buildMaterial() {
218
+
219
+
220
+ const uniforms = {
221
+ tTexture: {
222
+ type: 't',
223
+ value: this.renderTarget.texture
224
+ }
225
+ };
226
+
227
+ // determine swizzle for the material
228
+ let swizzle;
229
+ const texture_format = this.renderTarget.texture.format;
230
+ if (texture_format === RedFormat) {
231
+ swizzle = ['r', 'r', 'r', 1];
232
+ } else if (texture_format === RGBAFormat) {
233
+ swizzle = ['r', 'g', 'b', 'a'];
234
+ } else {
235
+ throw new Error('Unsupported format');
236
+ }
237
+
238
+ const material = new ShaderMaterial({
239
+ uniforms,
240
+ vertexShader: ScreenSpaceQuadShader.vertexShader(),
241
+ fragmentShader: ScreenSpaceQuadShader.fragmentShader(swizzle),
242
+ lights: false,
243
+ fog: false,
244
+ depthTest: false,
245
+ depthWrite: false,
246
+ transparent: true,
247
+ vertexColors: false
248
+ });
249
+
250
+ assignMaterialBlending(material, this.blending);
251
+
252
+ return material;
253
+ }
254
+ }
@@ -21,7 +21,7 @@ export function sg_hierarchy_compute_bounding_box_via_parent_entity(result, root
21
21
  if (sg !== undefined) {
22
22
  sg.getBoundingBox(scratch_aabb3);
23
23
 
24
- result.expandToFit(scratch_aabb3);
24
+ result.union(scratch_aabb3);
25
25
  }
26
26
  }
27
27
 
@@ -37,7 +37,7 @@ export function build_geometry_linear(
37
37
  if (scratch_array_0[1] !== 0) {
38
38
  path.sample_linear(scratch_v3, segment_start * path_length);
39
39
 
40
- scratch_v3.writeToArray(points, points_added * 3);
40
+ scratch_v3.toArray(points, points_added * 3);
41
41
  points_added++;
42
42
 
43
43
  // offset first sampled point, we're already past it
@@ -54,7 +54,7 @@ export function build_geometry_linear(
54
54
  //add end
55
55
  path.sample_linear(scratch_v3, segment_end * path_length);
56
56
 
57
- scratch_v3.writeToArray(points, points_added * 3);
57
+ scratch_v3.toArray(points, points_added * 3);
58
58
  points_added++;
59
59
  }
60
60
 
@@ -612,7 +612,7 @@ export class MaterialOptimizationContext {
612
612
  atlas_sampler,
613
613
  source_sampler,
614
614
  0, 0,
615
- patch.x0, patch.y0, patch.getWidth(), patch.getHeight()
615
+ patch.x0, patch.y0, patch.width, patch.height
616
616
  );
617
617
  }
618
618
  }
@@ -853,8 +853,8 @@ export class MaterialOptimizationContext {
853
853
  matrix3.setUvTransform(
854
854
  patch.x0 / atlas_width,
855
855
  patch.y0 / atlas_height,
856
- patch.getWidth() / atlas_width,
857
- patch.getHeight() / atlas_height,
856
+ patch.width / atlas_width,
857
+ patch.height / atlas_height,
858
858
  0,
859
859
  0, 0
860
860
  );