@woosh/meep-engine 2.122.3 → 2.122.5
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/package.json +1 -1
- package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/BVH.js +19 -3
- package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.js +0 -1
- package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.js +12 -6
- package/src/core/bvh2/bvh3/ebvh_update_hierarchy_bounds.d.ts +8 -0
- package/src/core/bvh2/bvh3/ebvh_update_hierarchy_bounds.d.ts.map +1 -0
- package/src/core/bvh2/bvh3/ebvh_update_hierarchy_bounds.js +147 -0
- package/src/core/geom/2d/Rectangle.d.ts +8 -2
- package/src/core/geom/2d/Rectangle.d.ts.map +1 -1
- package/src/core/geom/ConicRay.d.ts +5 -1
- package/src/core/geom/ConicRay.d.ts.map +1 -1
- package/src/core/geom/Quaternion.d.ts +508 -100
- package/src/core/geom/Vector1.d.ts +177 -35
- package/src/core/geom/Vector2.d.ts +385 -60
- package/src/core/geom/Vector3.d.ts +569 -135
- package/src/core/graph/Edge.d.ts +0 -1
- package/src/core/graph/Edge.d.ts.map +1 -1
- package/src/core/graph/Edge.js +1 -1
- package/src/core/graph/v2/Graph.d.ts +24 -9
- package/src/core/graph/v2/Graph.d.ts.map +1 -1
- package/src/core/graph/v2/Graph.js +48 -10
- package/src/core/model/node-graph/visual/NodeVisualData.d.ts +8 -2
- package/src/core/model/node-graph/visual/NodeVisualData.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/PortVisualData.d.ts +4 -1
- package/src/core/model/node-graph/visual/PortVisualData.d.ts.map +1 -1
- package/src/engine/ecs/animation/AnimationClip.d.ts +2 -2
- package/src/engine/ecs/components/Motion.d.ts +5 -1
- package/src/engine/ecs/components/Motion.d.ts.map +1 -1
- package/src/engine/ecs/fow/FogOfWarRevealer.d.ts +1 -1
- package/src/engine/ecs/gui/GUIElement.d.ts.map +1 -1
- package/src/engine/ecs/gui/hud/HeadsUpDisplay.d.ts +5 -1
- package/src/engine/ecs/gui/hud/HeadsUpDisplay.d.ts.map +1 -1
- package/src/engine/ecs/gui/position/ViewportPosition.d.ts +15 -6
- package/src/engine/ecs/gui/position/ViewportPosition.d.ts.map +1 -1
- package/src/engine/ecs/terrain/TerrainPreview.d.ts +8 -2
- package/src/engine/ecs/terrain/TerrainPreview.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/layers/TerrainLayer.d.ts +4 -1
- package/src/engine/ecs/terrain/ecs/layers/TerrainLayer.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.d.ts +4 -1
- package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/splat/SplatMapping.d.ts +4 -1
- package/src/engine/ecs/terrain/ecs/splat/SplatMapping.d.ts.map +1 -1
- package/src/engine/ecs/transform/Transform.d.ts +16 -3
- package/src/engine/ecs/transform/Transform.d.ts.map +1 -1
- package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
- package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts +5 -1
- package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/Water.d.ts +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts +15 -3
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts.map +1 -1
- package/src/engine/grid/grid2transform/GridPosition2Transform.d.ts +4 -1
- package/src/engine/grid/grid2transform/GridPosition2Transform.d.ts.map +1 -1
- package/src/engine/grid/obstacle/GridObstacle.d.ts +4 -1
- package/src/engine/grid/obstacle/GridObstacle.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.d.ts +7 -5
- package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.js +13 -12
- package/src/engine/intelligence/behavior/util/DelayBehavior.d.ts.map +1 -1
- package/src/engine/intelligence/behavior/util/DelayBehavior.js +12 -15
- package/src/engine/sound/ecs/emitter/SoundEmitter.d.ts +1 -1
- package/src/generation/theme/TerrainLayerDescription.d.ts +4 -1
- package/src/generation/theme/TerrainLayerDescription.d.ts.map +1 -1
- package/src/core/geom/Vector3.schema.json +0 -16
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BVH.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/BVH.js"],"names":[],"mappings":"AASA,4BAA6B,CAAC,CAAC;AAC/B,6BAA8B,CAAC,CAAC;AAChC,6BAA8B,CAAC,CAAC;AAChC,4BAA6B,CAAC,CAAC;AAE/B;;;;;GAKG;AACH,+BAFU,MAAM,CAE+B;AAE/C;;;GAGG;AACH,wBAFU,MAAM,CAEoB;AAcpC;;;;;GAKG;AACH,iCAFU,MAAM,CAEqB;AAiBrC;;;;;;GAMG;AACH;IAEI;;;;OAIG;IACH,sBAA2E;IAE3E;;;;;OAKG;IACH,mBAFa,WAAW,CAIvB;IAED;;;;OAIG;IACH,uBAAsD;IAEtD;;;OAGG;IACH,oBAFY,YAAY,CAIvB;IAED;;;;OAIG;IACH,sBAAoD;IAEpD;;;;OAIG;IACH,mBAA8B;IAE9B;;;;OAIG;IACH,eAAW;IAEX;;;;OAIG;IACH,eAAY;IAEZ;;;;OAIG;IACH,uBAAmB;IAEnB;;;;OAIG;IACH,eAAmB;IAUnB;;;OAGG;IACH,YAFW,MAAM,EAIhB;IAdD;;;OAGG;IACH,YAFa,MAAM,CAIlB;IAUD;;;;OAIG;IACH,YAFY,MAAM,CAIjB;IAUD;;;OAGG;IACH,qBAFW,MAAM,EAQhB;IAlBD;;;OAGG;IACH,qBAFa,MAAM,CAIlB;IAcD,wBAgBC;IAED;;;;OAIG;IACH,uBA6BC;IAED;;OAEG;IACH,aAIC;IAED;;;OAGG;IACH,iBAFa,MAAM,CAqDlB;IAED;;;;OAIG;IACH,iBAFW,MAAM,QAMhB;IAED;;;;OAIG;IACH,iBAHW,MAAM,GACJ,OAAO,CAOnB;IAED;;;;OAIG;IACH,uBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,uBAHW,MAAM,SACN,MAAM,QAOhB;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,sBAHW,MAAM,UACN,MAAM,QAIhB;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,sBAHW,MAAM,UACN,MAAM,QAIhB;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,sBAHW,MAAM,UACN,MAAM,QAIhB;IAGD;;;;OAIG;IACH,oBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;;OAIG;IACH,oBAHW,MAAM,UACN,MAAM,QAKhB;IAED;;;;OAIG;IACH,kBAHW,MAAM,UACN,MAAM,EAAE,GAAC,YAAY,QAe/B;IAED;;;;OAIG;IACH,kBAHW,MAAM,QACN,MAAM,EAAE,GAAC,SAAS,CAAC,MAAM,CAAC,GAAC,KAAK,QAsB1C;IAED;;;;OAIG;IACH,mBAHW,MAAM,QACN,MAAM,EAAE,QAWlB;IAED;;;;;;;;;OASG;IACH,4BARW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAmBhB;IAED;;;;OAIG;IACH,0BAHW,MAAM,GACJ,MAAM,CAoBlB;IAED;;;;;OAKG;IACH,wCAJW,MAAM,WACN,MAAM,GACJ,MAAM,CAoClB;IAED;;;;;OAKG;IACH,oCAJW,MAAM,WACN,MAAM,WACN,MAAM,QAgBhB;IAED;;;;OAIG;IACH,kBAHW,MAAM,GACJ,IAAI,CA0GhB;IAED;;;;;OAKG;IACH,wBAqBC;IAED;;;;OAIG;IACH,yBA4BC;IAED;;;;OAIG;IACH,kBAHW,MAAM,GACJ,IAAI,CA6ChB;IAED;;;;;;OAMG;IACH,gBAoMC;IAED;;;;;;OAMG;IACH,6BAJW,MAAM,WACN,MAAM,WACN,MAAM,
|
|
1
|
+
{"version":3,"file":"BVH.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/BVH.js"],"names":[],"mappings":"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"}
|
|
@@ -1053,14 +1053,30 @@ export class BVH {
|
|
|
1053
1053
|
node_assign_children(parent, child_1, child_2) {
|
|
1054
1054
|
this.node_set_combined_aabb(parent, child_1, child_2);
|
|
1055
1055
|
|
|
1056
|
-
this.
|
|
1057
|
-
|
|
1056
|
+
this.node_assign_children_only(parent, child_1, child_2);
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1059
|
+
/**
|
|
1060
|
+
* Utility method for assigning both children at once
|
|
1061
|
+
* Children must be valid nodes (non-null)
|
|
1062
|
+
* Does not update bounds.
|
|
1063
|
+
* @param {number} parent
|
|
1064
|
+
* @param {number} child_1
|
|
1065
|
+
* @param {number} child_2
|
|
1066
|
+
*/
|
|
1067
|
+
node_assign_children_only(parent, child_1, child_2) {
|
|
1068
|
+
assert.isNonNegativeInteger(parent, 'parent');
|
|
1069
|
+
assert.isNonNegativeInteger(child_1, 'child_1');
|
|
1070
|
+
assert.isNonNegativeInteger(child_2, 'child_2');
|
|
1058
1071
|
|
|
1059
1072
|
this.node_set_parent(child_1, parent);
|
|
1060
1073
|
this.node_set_parent(child_2, parent);
|
|
1061
1074
|
|
|
1075
|
+
this.node_set_child1(parent, child_1);
|
|
1076
|
+
this.node_set_child2(parent, child_2);
|
|
1077
|
+
|
|
1062
1078
|
this.node_set_height(parent,
|
|
1063
|
-
1+ Math.max(
|
|
1079
|
+
1 + Math.max(
|
|
1064
1080
|
this.node_get_height(child_1),
|
|
1065
1081
|
this.node_get_height(child_2),
|
|
1066
1082
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ebvh_build_for_geometry_morton.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ebvh_build_for_geometry_morton.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.js"],"names":[],"mappings":"AAWA;;;;;;;;;GASG;AACH,oDAPW,GAAG,eACH,MAAM,EAAE,GAAC,WAAW,GAAC,WAAW,kBAChC,MAAM,EAAE,GAAC,YAAY,GAAC,YAAY,iBAClC,WAAW,WACX,KAAK,YACL,MAAM,QAsHhB;sBAtIqB,6BAA6B"}
|
|
@@ -8,7 +8,6 @@ import { max2 } from "../../math/max2.js";
|
|
|
8
8
|
import { build_triangle_morton_codes } from "./build_triangle_morton_codes.js";
|
|
9
9
|
import { COLUMN_CHILD_1, COLUMN_HEIGHT, COLUMN_USER_DATA, ELEMENT_WORD_COUNT, NULL_NODE } from "./BVH.js";
|
|
10
10
|
import { ebvh_build_hierarchy } from "./ebvh_build_hierarchy.js";
|
|
11
|
-
import { ebvh_nodes_sort_sah_local4 } from "./ebvh_nodes_sort_sah_local4.js";
|
|
12
11
|
|
|
13
12
|
/**
|
|
14
13
|
* Build the BVH bottom-up using spatial hash sorting
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ebvh_build_hierarchy_radix.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ebvh_build_hierarchy_radix.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.js"],"names":[],"mappings":"AA4MA;;;;;;;;GAQG;AACH,gDAPW,GAAG,cACH,MAAM,EAAE,GAAC,WAAW,uBACpB,MAAM,EAAE,cACR,MAAM,kBACN,MAAM,EAAE,GACN,MAAM,CAqElB"}
|
|
@@ -2,6 +2,7 @@ import { assert } from "../../assert.js";
|
|
|
2
2
|
import { clz32 } from "../../binary/clz32.js";
|
|
3
3
|
import { clamp } from "../../math/clamp.js";
|
|
4
4
|
import { NULL_NODE } from "./BVH.js";
|
|
5
|
+
import { ebvh_update_hierarchy_bounds } from "./ebvh_update_hierarchy_bounds.js";
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
*
|
|
@@ -57,10 +58,10 @@ function find_split(
|
|
|
57
58
|
|
|
58
59
|
/**
|
|
59
60
|
*
|
|
60
|
-
* @param indexA
|
|
61
|
-
* @param indexB
|
|
62
|
-
* @param elementCount
|
|
63
|
-
* @param mortonCodes
|
|
61
|
+
* @param {number} indexA
|
|
62
|
+
* @param {number} indexB
|
|
63
|
+
* @param {number} elementCount
|
|
64
|
+
* @param {number[]} mortonCodes
|
|
64
65
|
* @return {number}
|
|
65
66
|
* @see https://github.com/turanszkij/WickedEngine/blob/506749de321c2ab66fd33fbe41efb95afbbb7ff8/WickedEngine/shaders/bvh_hierarchyCS.hlsl#L28C1-L48C2
|
|
66
67
|
*/
|
|
@@ -122,6 +123,7 @@ function determineRangeW(output, sortedMortonCodes, numTriangles, idx) {
|
|
|
122
123
|
|
|
123
124
|
}
|
|
124
125
|
|
|
126
|
+
|
|
125
127
|
/**
|
|
126
128
|
* @see https://github.com/mbartling/cuda-bvh/blob/7f2f98d9d29956c3559632e59104ba66f31f80b8/kernels/bvh.cu#L276C1-L352C2
|
|
127
129
|
* @param {number[]|Uint32Array} output
|
|
@@ -227,7 +229,8 @@ export function ebvh_build_hierarchy_radix(
|
|
|
227
229
|
const range = new Uint32Array(2);
|
|
228
230
|
|
|
229
231
|
// Construct internal nodes.
|
|
230
|
-
|
|
232
|
+
const intermediate_node_count = leaf_count - 1;
|
|
233
|
+
for (let idx = 0; idx < intermediate_node_count; idx++) // in parallel
|
|
231
234
|
{
|
|
232
235
|
// Find out which range of objects the node corresponds to.
|
|
233
236
|
// (This is where the magic happens!)
|
|
@@ -263,7 +266,7 @@ export function ebvh_build_hierarchy_radix(
|
|
|
263
266
|
// Record parent-child relationships.
|
|
264
267
|
const parent = internal_nodes[idx];
|
|
265
268
|
|
|
266
|
-
bvh.
|
|
269
|
+
bvh.node_assign_children_only(parent, childA, childB);
|
|
267
270
|
}
|
|
268
271
|
|
|
269
272
|
// Node 0 is the root.
|
|
@@ -271,5 +274,8 @@ export function ebvh_build_hierarchy_radix(
|
|
|
271
274
|
|
|
272
275
|
bvh.node_set_parent(root, NULL_NODE);
|
|
273
276
|
|
|
277
|
+
// update bounds
|
|
278
|
+
ebvh_update_hierarchy_bounds(bvh, root);
|
|
279
|
+
|
|
274
280
|
return root;
|
|
275
281
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Traverses the tree bottom-up, updating bounds as it goes
|
|
3
|
+
* @param {BVH} bvh
|
|
4
|
+
* @param {number} root
|
|
5
|
+
* @returns {void}
|
|
6
|
+
*/
|
|
7
|
+
export function ebvh_update_hierarchy_bounds(bvh: BVH, root?: number): void;
|
|
8
|
+
//# sourceMappingURL=ebvh_update_hierarchy_bounds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ebvh_update_hierarchy_bounds.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/ebvh_update_hierarchy_bounds.js"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,kDAJW,GAAG,SACH,MAAM,GACJ,IAAI,CAuIhB"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { assert } from "../../assert.js";
|
|
2
|
+
import { NULL_NODE } from "./BVH.js";
|
|
3
|
+
|
|
4
|
+
const CAME_FROM_TYPE_PARENT = 0;
|
|
5
|
+
const CAME_FROM_TYPE_CHILD_1 = 1;
|
|
6
|
+
const CAME_FROM_TYPE_CHILD_2 = 2;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Traverses the tree bottom-up, updating bounds as it goes
|
|
10
|
+
* @param {BVH} bvh
|
|
11
|
+
* @param {number} root
|
|
12
|
+
* @returns {void}
|
|
13
|
+
*/
|
|
14
|
+
export function ebvh_update_hierarchy_bounds(bvh, root = bvh.root) {
|
|
15
|
+
assert.isNonNegativeInteger(root, 'root');
|
|
16
|
+
|
|
17
|
+
if (root === NULL_NODE) {
|
|
18
|
+
// special case
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (bvh.node_is_leaf(root)) {
|
|
23
|
+
// special case
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// we traverse depth-first using stack-less scheme
|
|
28
|
+
let came_from_node = root;
|
|
29
|
+
|
|
30
|
+
let came_from_type = CAME_FROM_TYPE_PARENT;
|
|
31
|
+
|
|
32
|
+
let node = bvh.node_get_child1(came_from_node);
|
|
33
|
+
if (node === NULL_NODE) {
|
|
34
|
+
node = bvh.node_get_child2(came_from_node);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (node === NULL_NODE) {
|
|
38
|
+
// no children, done
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// do a stackless traversal
|
|
43
|
+
while (true) {
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
if (
|
|
47
|
+
came_from_type === CAME_FROM_TYPE_CHILD_2
|
|
48
|
+
) {
|
|
49
|
+
// moving up last time, lets calculate
|
|
50
|
+
const child_1 = bvh.node_get_child1(node);
|
|
51
|
+
const child_2 = bvh.node_get_child2(node);
|
|
52
|
+
|
|
53
|
+
bvh.node_set_combined_aabb(node, child_1, child_2);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// only add to treelet when traversing up, not down
|
|
57
|
+
|
|
58
|
+
if (bvh.node_is_leaf(node)) {
|
|
59
|
+
|
|
60
|
+
assert.equal(came_from_type, CAME_FROM_TYPE_PARENT);
|
|
61
|
+
|
|
62
|
+
const parent = came_from_node;
|
|
63
|
+
const parent_child_1 = bvh.node_get_child1(parent);
|
|
64
|
+
|
|
65
|
+
if (parent_child_1 === node) {
|
|
66
|
+
came_from_type = CAME_FROM_TYPE_CHILD_1;
|
|
67
|
+
} else {
|
|
68
|
+
came_from_type = CAME_FROM_TYPE_CHILD_2;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
came_from_node = node;
|
|
72
|
+
|
|
73
|
+
node = parent;
|
|
74
|
+
} else if (came_from_type === CAME_FROM_TYPE_CHILD_2) {
|
|
75
|
+
// finishing traversal of this branch
|
|
76
|
+
came_from_node = node;
|
|
77
|
+
const parent = bvh.node_get_parent(node);
|
|
78
|
+
|
|
79
|
+
if (bvh.node_get_child1(parent) === node) {
|
|
80
|
+
came_from_type = CAME_FROM_TYPE_CHILD_1;
|
|
81
|
+
} else {
|
|
82
|
+
came_from_type = CAME_FROM_TYPE_CHILD_2;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (node === root) {
|
|
86
|
+
// traversed all the way back up
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
node = parent;
|
|
91
|
+
|
|
92
|
+
} else if (came_from_type === CAME_FROM_TYPE_CHILD_1) {
|
|
93
|
+
// traversing up from left child
|
|
94
|
+
const child2 = bvh.node_get_child2(node);
|
|
95
|
+
|
|
96
|
+
came_from_node = node;
|
|
97
|
+
|
|
98
|
+
if (child2 === NULL_NODE) {
|
|
99
|
+
// no right child, finish this branch
|
|
100
|
+
came_from_type = CAME_FROM_TYPE_CHILD_2; // indicate end
|
|
101
|
+
|
|
102
|
+
node = bvh.node_get_parent(node);
|
|
103
|
+
} else {
|
|
104
|
+
came_from_type = CAME_FROM_TYPE_PARENT;
|
|
105
|
+
node = child2;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
} else if (came_from_type === CAME_FROM_TYPE_PARENT) {
|
|
109
|
+
const child1 = bvh.node_get_child1(node);
|
|
110
|
+
const child2 = bvh.node_get_child1(node);
|
|
111
|
+
|
|
112
|
+
if (child1 !== NULL_NODE) {
|
|
113
|
+
came_from_type = CAME_FROM_TYPE_PARENT;
|
|
114
|
+
came_from_node = node;
|
|
115
|
+
node = child1;
|
|
116
|
+
} else if (child2 !== NULL_NODE) {
|
|
117
|
+
came_from_type = CAME_FROM_TYPE_PARENT;
|
|
118
|
+
came_from_node = node;
|
|
119
|
+
node = child2;
|
|
120
|
+
} else {
|
|
121
|
+
// this should not happen, as this would mean that node is empty and completely pointless
|
|
122
|
+
// we remove the node and traverse up
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
const parent_child1 = bvh.node_get_child1(came_from_node);
|
|
126
|
+
|
|
127
|
+
bvh.release_node(node);
|
|
128
|
+
|
|
129
|
+
if (parent_child1 === node) {
|
|
130
|
+
// we are left child
|
|
131
|
+
bvh.node_set_child1(came_from_node, NULL_NODE);
|
|
132
|
+
came_from_node = NULL_NODE;
|
|
133
|
+
came_from_type = CAME_FROM_TYPE_CHILD_1;
|
|
134
|
+
} else {
|
|
135
|
+
bvh.node_set_child2(came_from_node, NULL_NODE);
|
|
136
|
+
came_from_node = NULL_NODE;
|
|
137
|
+
came_from_type = CAME_FROM_TYPE_CHILD_2;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
node = came_from_node;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
}
|
|
147
|
+
}
|
|
@@ -132,8 +132,14 @@ declare class Rectangle {
|
|
|
132
132
|
*/
|
|
133
133
|
toArray(target: Array<number> | Float32Array | Float64Array | Uint8Array, targetOffset?: number): void;
|
|
134
134
|
toJSON(): {
|
|
135
|
-
position:
|
|
136
|
-
|
|
135
|
+
position: {
|
|
136
|
+
x: number;
|
|
137
|
+
y: number;
|
|
138
|
+
};
|
|
139
|
+
size: {
|
|
140
|
+
x: number;
|
|
141
|
+
y: number;
|
|
142
|
+
};
|
|
137
143
|
};
|
|
138
144
|
fromJSON(json: any): void;
|
|
139
145
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rectangle.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/2d/Rectangle.js"],"names":[],"mappings":";AAOA;IACI;;;;;;;OAOG;IACH,gBANW,MAAM,MACN,MAAM,UACN,MAAM,WACN,MAAM,EAgBhB;IAXG;;;OAGG;IACH,mBAFU,OAAO,CAEgB;IAEjC;;;OAGG;IACH,eAFU,OAAO,CAEqB;IAG1C;;;OAGG;IACH,UAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,UAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,UAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,UAFY,MAAM,CAIjB;IAED;;;;;;OAMG;IACH,OALW,MAAM,KACN,MAAM,SACN,MAAM,UACN,MAAM,QAKhB;IAED;;;OAGG;IACH,SAFa,SAAS,CAUrB;IAED;;;OAGG;IACH,YAFW,SAAS,QAKnB;IAED;;;;;;;OAOG;IACH,gBANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAUnB;IAED;;;;OAIG;IACH,kBAHW,SAAS,GACP,OAAO,CAQnB;IAED;;;;;;;OAOG;IACH,cANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAenB;IAED;;;;OAIG;IACH,gBAHW,SAAS,GACP,OAAO,CASnB;IAED;;;;;;OAMG;IACH,iBALW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAyBhB;IAED;;;OAGG;IACH,mBAFW,SAAS,QASnB;IAED;;;;;;;OAOG;IACH,cANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAiBnB;IAED;;;;OAIG;IACH,gBAHW,SAAS,GACP,OAAO,CAUnB;IAED;;;OAGG;IACH,sBAFW,OAAO,QAUjB;IAED;;;OAGG;IACH,eAFY,MAAM,CAIjB;IAED;;;;OAIG;IACH,gBAHW,KAAK,CAAE,MAAM,CAAC,GAAC,YAAY,GAAC,YAAY,GAAC,UAAU,iBACnD,MAAM,QAOhB;IAED
|
|
1
|
+
{"version":3,"file":"Rectangle.d.ts","sourceRoot":"","sources":["../../../../../src/core/geom/2d/Rectangle.js"],"names":[],"mappings":";AAOA;IACI;;;;;;;OAOG;IACH,gBANW,MAAM,MACN,MAAM,UACN,MAAM,WACN,MAAM,EAgBhB;IAXG;;;OAGG;IACH,mBAFU,OAAO,CAEgB;IAEjC;;;OAGG;IACH,eAFU,OAAO,CAEqB;IAG1C;;;OAGG;IACH,UAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,UAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,UAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,UAFY,MAAM,CAIjB;IAED;;;;;;OAMG;IACH,OALW,MAAM,KACN,MAAM,SACN,MAAM,UACN,MAAM,QAKhB;IAED;;;OAGG;IACH,SAFa,SAAS,CAUrB;IAED;;;OAGG;IACH,YAFW,SAAS,QAKnB;IAED;;;;;;;OAOG;IACH,gBANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAUnB;IAED;;;;OAIG;IACH,kBAHW,SAAS,GACP,OAAO,CAQnB;IAED;;;;;;;OAOG;IACH,cANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAenB;IAED;;;;OAIG;IACH,gBAHW,SAAS,GACP,OAAO,CASnB;IAED;;;;;;OAMG;IACH,iBALW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAyBhB;IAED;;;OAGG;IACH,mBAFW,SAAS,QASnB;IAED;;;;;;;OAOG;IACH,cANW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAiBnB;IAED;;;;OAIG;IACH,gBAHW,SAAS,GACP,OAAO,CAUnB;IAED;;;OAGG;IACH,sBAFW,OAAO,QAUjB;IAED;;;OAGG;IACH,eAFY,MAAM,CAIjB;IAED;;;;OAIG;IACH,gBAHW,KAAK,CAAE,MAAM,CAAC,GAAC,YAAY,GAAC,YAAY,GAAC,UAAU,iBACnD,MAAM,QAOhB;IAED;;;;;;;;;MAKC;IAED,0BAGC;IAGL;;;OAGG;IACH,sBAFU,OAAO,CAEc;CAN9B;oBArSmB,eAAe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConicRay.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/ConicRay.js"],"names":[],"mappings":"AAQA;;;;;;GAMG;AACH;IAkLI;;;;;;;OAOG;IACH,sBANW,MAAM,KACN,MAAM,KACN,MAAM,cACN,MAAM,GACJ,QAAQ,CAkBpB;IAxMD;;;;OAIG;IACH,oBAFU,OAAO,CAEgB;IAEjC;;;;OAIG;IACH,OAFU,MAAM,CAEN;IAEV
|
|
1
|
+
{"version":3,"file":"ConicRay.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/ConicRay.js"],"names":[],"mappings":"AAQA;;;;;;GAMG;AACH;IAkLI;;;;;;;OAOG;IACH,sBANW,MAAM,KACN,MAAM,KACN,MAAM,cACN,MAAM,GACJ,QAAQ,CAkBpB;IAxMD;;;;OAIG;IACH,oBAFU,OAAO,CAEgB;IAEjC;;;;OAIG;IACH,OAFU,MAAM,CAEN;IAEV;;;;;;;MAKC;IAED,0BAGC;IAED;;;OAGG;IACH,uBAFW,YAAY,QAKtB;IAED;;;OAGG;IACH,yBAFW,YAAY,QAQtB;IAED;;;;OAIG;IACH,cAHW,QAAQ,GACN,OAAO,CAMnB;IAED;;;;;OAKG;IACH,qBAJW,QAAQ,cACR,MAAM,GACJ,OAAO,CAKnB;IAED;;;OAGG;IACH,QAFY,MAAM,CAOjB;IAED;;;OAGG;IACH,YAFW,QAAQ,QAKlB;IAED;;;;OAIG;IACH,4BAHW,OAAO,GACL,OAAO,CAMnB;IAED;;;;;OAKG;IACH,gDAFW,OAAO,QAsEjB;IA6BL;;;OAGG;IACH,qBAFU,OAAO,CAEY;CAN5B;;kBAUS,MAAM;;oBA/NI,cAAc"}
|