@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.
Files changed (69) hide show
  1. package/package.json +1 -1
  2. package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
  3. package/src/core/bvh2/bvh3/BVH.js +19 -3
  4. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.d.ts.map +1 -1
  5. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.js +0 -1
  6. package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.d.ts.map +1 -1
  7. package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.js +12 -6
  8. package/src/core/bvh2/bvh3/ebvh_update_hierarchy_bounds.d.ts +8 -0
  9. package/src/core/bvh2/bvh3/ebvh_update_hierarchy_bounds.d.ts.map +1 -0
  10. package/src/core/bvh2/bvh3/ebvh_update_hierarchy_bounds.js +147 -0
  11. package/src/core/geom/2d/Rectangle.d.ts +8 -2
  12. package/src/core/geom/2d/Rectangle.d.ts.map +1 -1
  13. package/src/core/geom/ConicRay.d.ts +5 -1
  14. package/src/core/geom/ConicRay.d.ts.map +1 -1
  15. package/src/core/geom/Quaternion.d.ts +508 -100
  16. package/src/core/geom/Vector1.d.ts +177 -35
  17. package/src/core/geom/Vector2.d.ts +385 -60
  18. package/src/core/geom/Vector3.d.ts +569 -135
  19. package/src/core/graph/Edge.d.ts +0 -1
  20. package/src/core/graph/Edge.d.ts.map +1 -1
  21. package/src/core/graph/Edge.js +1 -1
  22. package/src/core/graph/v2/Graph.d.ts +24 -9
  23. package/src/core/graph/v2/Graph.d.ts.map +1 -1
  24. package/src/core/graph/v2/Graph.js +48 -10
  25. package/src/core/model/node-graph/visual/NodeVisualData.d.ts +8 -2
  26. package/src/core/model/node-graph/visual/NodeVisualData.d.ts.map +1 -1
  27. package/src/core/model/node-graph/visual/PortVisualData.d.ts +4 -1
  28. package/src/core/model/node-graph/visual/PortVisualData.d.ts.map +1 -1
  29. package/src/engine/ecs/animation/AnimationClip.d.ts +2 -2
  30. package/src/engine/ecs/components/Motion.d.ts +5 -1
  31. package/src/engine/ecs/components/Motion.d.ts.map +1 -1
  32. package/src/engine/ecs/fow/FogOfWarRevealer.d.ts +1 -1
  33. package/src/engine/ecs/gui/GUIElement.d.ts.map +1 -1
  34. package/src/engine/ecs/gui/hud/HeadsUpDisplay.d.ts +5 -1
  35. package/src/engine/ecs/gui/hud/HeadsUpDisplay.d.ts.map +1 -1
  36. package/src/engine/ecs/gui/position/ViewportPosition.d.ts +15 -6
  37. package/src/engine/ecs/gui/position/ViewportPosition.d.ts.map +1 -1
  38. package/src/engine/ecs/terrain/TerrainPreview.d.ts +8 -2
  39. package/src/engine/ecs/terrain/TerrainPreview.d.ts.map +1 -1
  40. package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
  41. package/src/engine/ecs/terrain/ecs/layers/TerrainLayer.d.ts +4 -1
  42. package/src/engine/ecs/terrain/ecs/layers/TerrainLayer.d.ts.map +1 -1
  43. package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.d.ts +4 -1
  44. package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.d.ts.map +1 -1
  45. package/src/engine/ecs/terrain/ecs/splat/SplatMapping.d.ts +4 -1
  46. package/src/engine/ecs/terrain/ecs/splat/SplatMapping.d.ts.map +1 -1
  47. package/src/engine/ecs/transform/Transform.d.ts +16 -3
  48. package/src/engine/ecs/transform/Transform.d.ts.map +1 -1
  49. package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts.map +1 -1
  50. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
  51. package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts +5 -1
  52. package/src/engine/graphics/ecs/trail2d/Trail2D.d.ts.map +1 -1
  53. package/src/engine/graphics/ecs/water/Water.d.ts +1 -1
  54. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
  55. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts +15 -3
  56. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts.map +1 -1
  57. package/src/engine/grid/grid2transform/GridPosition2Transform.d.ts +4 -1
  58. package/src/engine/grid/grid2transform/GridPosition2Transform.d.ts.map +1 -1
  59. package/src/engine/grid/obstacle/GridObstacle.d.ts +4 -1
  60. package/src/engine/grid/obstacle/GridObstacle.d.ts.map +1 -1
  61. package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.d.ts +7 -5
  62. package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.d.ts.map +1 -1
  63. package/src/engine/intelligence/behavior/ecs/WaitForEventBehavior.js +13 -12
  64. package/src/engine/intelligence/behavior/util/DelayBehavior.d.ts.map +1 -1
  65. package/src/engine/intelligence/behavior/util/DelayBehavior.js +12 -15
  66. package/src/engine/sound/ecs/emitter/SoundEmitter.d.ts +1 -1
  67. package/src/generation/theme/TerrainLayerDescription.d.ts +4 -1
  68. package/src/generation/theme/TerrainLayerDescription.d.ts.map +1 -1
  69. package/src/core/geom/Vector3.schema.json +0 -16
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "description": "Fully featured ECS game engine written in JavaScript",
6
6
  "type": "module",
7
7
  "author": "Alexander Goldring",
8
- "version": "2.122.3",
8
+ "version": "2.122.5",
9
9
  "main": "build/meep.module.js",
10
10
  "module": "build/meep.module.js",
11
11
  "exports": {
@@ -1 +1 @@
1
- {"version":3,"file":"BVH.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/BVH.js"],"names":[],"mappings":"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"}
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.node_set_child1(parent, child_1);
1057
- this.node_set_child2(parent, child_2);
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":"AAYA;;;;;;;;;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;sBAvIqB,6BAA6B"}
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":"AA0MA;;;;;;;;GAQG;AACH,gDAPW,GAAG,cACH,MAAM,EAAE,GAAC,WAAW,uBACpB,MAAM,EAAE,cACR,MAAM,kBACN,MAAM,EAAE,GACN,MAAM,CAiElB"}
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
- for (let idx = 0; idx < leaf_count - 1; idx++) // in parallel
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.node_assign_children(parent, childA, childB);
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: any;
136
- size: any;
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;;;MAKC;IAED,0BAGC;IAGL;;;OAGG;IACH,sBAFU,OAAO,CAEc;CAN9B;oBArSmB,eAAe"}
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"}
@@ -28,7 +28,11 @@ export class ConicRay {
28
28
  */
29
29
  angle: number;
30
30
  toJSON(): {
31
- direction: any;
31
+ direction: {
32
+ x: number;
33
+ y: number;
34
+ z: number;
35
+ };
32
36
  angle: number;
33
37
  };
34
38
  fromJSON(json: any): void;
@@ -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;;;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"}
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"}