@holoscript/engine 6.0.3 → 6.0.4

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 (192) hide show
  1. package/dist/AutoMesher-CK47F6AV.js +17 -0
  2. package/dist/GPUBuffers-2LHBCD7X.js +9 -0
  3. package/dist/WebGPUContext-TNEUYU2Y.js +11 -0
  4. package/dist/animation/index.cjs +38 -38
  5. package/dist/animation/index.d.cts +1 -1
  6. package/dist/animation/index.d.ts +1 -1
  7. package/dist/animation/index.js +1 -1
  8. package/dist/audio/index.cjs +16 -6
  9. package/dist/audio/index.d.cts +1 -1
  10. package/dist/audio/index.d.ts +1 -1
  11. package/dist/audio/index.js +1 -1
  12. package/dist/camera/index.cjs +23 -23
  13. package/dist/camera/index.d.cts +1 -1
  14. package/dist/camera/index.d.ts +1 -1
  15. package/dist/camera/index.js +1 -1
  16. package/dist/character/index.cjs +6 -4
  17. package/dist/character/index.js +1 -1
  18. package/dist/choreography/index.cjs +1194 -0
  19. package/dist/choreography/index.d.cts +687 -0
  20. package/dist/choreography/index.d.ts +687 -0
  21. package/dist/choreography/index.js +1156 -0
  22. package/dist/chunk-2CSNRI2N.js +217 -0
  23. package/dist/chunk-33T2WINR.js +266 -0
  24. package/dist/chunk-35R73OFM.js +1257 -0
  25. package/dist/chunk-4MMDSUNP.js +1256 -0
  26. package/dist/chunk-5V6HOU72.js +319 -0
  27. package/dist/chunk-6QOP6PYF.js +1038 -0
  28. package/dist/chunk-7KMJVHIL.js +8944 -0
  29. package/dist/chunk-7VPUC62U.js +1106 -0
  30. package/dist/chunk-A2Y6RCAT.js +1878 -0
  31. package/dist/chunk-AHM42MK6.js +8944 -0
  32. package/dist/chunk-BL7IDTHE.js +218 -0
  33. package/dist/chunk-CITOMSWL.js +10462 -0
  34. package/dist/chunk-CXDPKW2K.js +8944 -0
  35. package/dist/chunk-CXZPLD4S.js +223 -0
  36. package/dist/chunk-CZYJE7IH.js +5169 -0
  37. package/dist/chunk-D2OP7YC7.js +6325 -0
  38. package/dist/chunk-EDRVQHUU.js +1544 -0
  39. package/dist/chunk-EJSLOOW2.js +3589 -0
  40. package/dist/chunk-F53SFGW5.js +1878 -0
  41. package/dist/chunk-HCFPELPY.js +919 -0
  42. package/dist/chunk-HNEE36PY.js +93 -0
  43. package/dist/chunk-HYXNV36F.js +1256 -0
  44. package/dist/chunk-IB7KHVFY.js +821 -0
  45. package/dist/chunk-IBBO7YYG.js +690 -0
  46. package/dist/chunk-ILIBGINU.js +5470 -0
  47. package/dist/chunk-IS4MHLKN.js +5479 -0
  48. package/dist/chunk-JT2PFKWD.js +5479 -0
  49. package/dist/chunk-K4CUB4NY.js +1038 -0
  50. package/dist/chunk-KATDQXRJ.js +10462 -0
  51. package/dist/chunk-KBQE6ZFJ.js +8944 -0
  52. package/dist/chunk-KBVD5K7E.js +560 -0
  53. package/dist/chunk-KCDPVQRY.js +4088 -0
  54. package/dist/chunk-KN4QJPKN.js +8944 -0
  55. package/dist/chunk-KWJ3ROSI.js +8944 -0
  56. package/dist/chunk-L45VF6DD.js +919 -0
  57. package/dist/chunk-LY4T37YK.js +307 -0
  58. package/dist/chunk-MDN5WZXA.js +1544 -0
  59. package/dist/chunk-MGCDP6VU.js +928 -0
  60. package/dist/chunk-NCX7X6G2.js +8681 -0
  61. package/dist/chunk-OF54BPVD.js +913 -0
  62. package/dist/chunk-OWSN2Q3Q.js +690 -0
  63. package/dist/chunk-PRRB5TTA.js +406 -0
  64. package/dist/chunk-PXWVQF76.js +4086 -0
  65. package/dist/chunk-PYCOIDT2.js +812 -0
  66. package/dist/chunk-PZCSADOV.js +928 -0
  67. package/dist/chunk-Q2XBVS2K.js +1038 -0
  68. package/dist/chunk-QDZRXWN5.js +1776 -0
  69. package/dist/chunk-RNWOZ6WQ.js +913 -0
  70. package/dist/chunk-ROLFT4CJ.js +1693 -0
  71. package/dist/chunk-SLTJRZ2N.js +266 -0
  72. package/dist/chunk-SRUS5XSU.js +4088 -0
  73. package/dist/chunk-TKCA3WZ5.js +5409 -0
  74. package/dist/chunk-TNRMXYI2.js +1650 -0
  75. package/dist/chunk-TQB3GJGM.js +9763 -0
  76. package/dist/chunk-TUFGXG6K.js +510 -0
  77. package/dist/chunk-U6KMTGQJ.js +632 -0
  78. package/dist/chunk-VMGJQST6.js +8681 -0
  79. package/dist/chunk-X4F4TCG4.js +5470 -0
  80. package/dist/chunk-ZIFROE75.js +1544 -0
  81. package/dist/chunk-ZIJQYHSQ.js +1204 -0
  82. package/dist/combat/index.cjs +4 -4
  83. package/dist/combat/index.d.cts +1 -1
  84. package/dist/combat/index.d.ts +1 -1
  85. package/dist/combat/index.js +1 -1
  86. package/dist/ecs/index.cjs +1 -1
  87. package/dist/ecs/index.js +1 -1
  88. package/dist/environment/index.cjs +14 -14
  89. package/dist/environment/index.d.cts +1 -1
  90. package/dist/environment/index.d.ts +1 -1
  91. package/dist/environment/index.js +1 -1
  92. package/dist/gpu/index.cjs +4810 -0
  93. package/dist/gpu/index.js +3714 -0
  94. package/dist/hologram/index.cjs +27 -1
  95. package/dist/hologram/index.js +1 -1
  96. package/dist/index-B2PIsAmR.d.cts +2180 -0
  97. package/dist/index-B2PIsAmR.d.ts +2180 -0
  98. package/dist/index-BHySEPX7.d.cts +2921 -0
  99. package/dist/index-BJV21zuy.d.cts +341 -0
  100. package/dist/index-BJV21zuy.d.ts +341 -0
  101. package/dist/index-BQutTphC.d.cts +790 -0
  102. package/dist/index-ByIq2XrS.d.cts +3910 -0
  103. package/dist/index-BysHjDSO.d.cts +224 -0
  104. package/dist/index-BysHjDSO.d.ts +224 -0
  105. package/dist/index-CKwAJGck.d.ts +455 -0
  106. package/dist/index-CUl3QstQ.d.cts +3006 -0
  107. package/dist/index-CUl3QstQ.d.ts +3006 -0
  108. package/dist/index-CmYtNiI-.d.cts +953 -0
  109. package/dist/index-CmYtNiI-.d.ts +953 -0
  110. package/dist/index-CnRzWxi_.d.cts +522 -0
  111. package/dist/index-CnRzWxi_.d.ts +522 -0
  112. package/dist/index-CwRWbSC7.d.ts +2921 -0
  113. package/dist/index-CxKIBstO.d.ts +790 -0
  114. package/dist/index-DJ6-R8vh.d.cts +455 -0
  115. package/dist/index-DQKisbcI.d.cts +4968 -0
  116. package/dist/index-DQKisbcI.d.ts +4968 -0
  117. package/dist/index-DRT2zJez.d.ts +3910 -0
  118. package/dist/index-DfNLiAka.d.cts +192 -0
  119. package/dist/index-DfNLiAka.d.ts +192 -0
  120. package/dist/index-nMvkoRm8.d.cts +405 -0
  121. package/dist/index-nMvkoRm8.d.ts +405 -0
  122. package/dist/index-s9yOFU37.d.cts +604 -0
  123. package/dist/index-s9yOFU37.d.ts +604 -0
  124. package/dist/index.cjs +22966 -6960
  125. package/dist/index.d.cts +864 -20
  126. package/dist/index.d.ts +864 -20
  127. package/dist/index.js +3062 -48
  128. package/dist/input/index.cjs +1 -1
  129. package/dist/input/index.js +1 -1
  130. package/dist/orbital/index.cjs +3 -3
  131. package/dist/orbital/index.d.cts +1 -1
  132. package/dist/orbital/index.d.ts +1 -1
  133. package/dist/orbital/index.js +1 -1
  134. package/dist/particles/index.cjs +16 -16
  135. package/dist/particles/index.d.cts +1 -1
  136. package/dist/particles/index.d.ts +1 -1
  137. package/dist/particles/index.js +1 -1
  138. package/dist/physics/index.cjs +2377 -21
  139. package/dist/physics/index.d.cts +1 -1
  140. package/dist/physics/index.d.ts +1 -1
  141. package/dist/physics/index.js +35 -1
  142. package/dist/postfx/index.cjs +3491 -0
  143. package/dist/postfx/index.js +93 -0
  144. package/dist/procedural/index.cjs +1 -1
  145. package/dist/procedural/index.js +1 -1
  146. package/dist/puppeteer-5VF6KDVO.js +52197 -0
  147. package/dist/puppeteer-IZVZ3SG4.js +52197 -0
  148. package/dist/rendering/index.cjs +33 -32
  149. package/dist/rendering/index.d.cts +1 -1
  150. package/dist/rendering/index.d.ts +1 -1
  151. package/dist/rendering/index.js +8 -6
  152. package/dist/runtime/index.cjs +23 -13
  153. package/dist/runtime/index.d.cts +1 -1
  154. package/dist/runtime/index.d.ts +1 -1
  155. package/dist/runtime/index.js +8 -6
  156. package/dist/runtime/protocols/index.cjs +349 -0
  157. package/dist/runtime/protocols/index.js +15 -0
  158. package/dist/scene/index.cjs +8 -8
  159. package/dist/scene/index.d.cts +1 -1
  160. package/dist/scene/index.d.ts +1 -1
  161. package/dist/scene/index.js +1 -1
  162. package/dist/shader/index.cjs +3087 -0
  163. package/dist/shader/index.js +3044 -0
  164. package/dist/simulation/index.cjs +10680 -0
  165. package/dist/simulation/index.d.cts +3 -0
  166. package/dist/simulation/index.d.ts +3 -0
  167. package/dist/simulation/index.js +307 -0
  168. package/dist/spatial/index.cjs +2443 -0
  169. package/dist/spatial/index.d.cts +1545 -0
  170. package/dist/spatial/index.d.ts +1545 -0
  171. package/dist/spatial/index.js +2400 -0
  172. package/dist/terrain/index.cjs +1 -1
  173. package/dist/terrain/index.d.cts +1 -1
  174. package/dist/terrain/index.d.ts +1 -1
  175. package/dist/terrain/index.js +1 -1
  176. package/dist/transformers.node-4NKAPD5U.js +45620 -0
  177. package/dist/vm/index.cjs +7 -8
  178. package/dist/vm/index.d.cts +1 -1
  179. package/dist/vm/index.d.ts +1 -1
  180. package/dist/vm/index.js +1 -1
  181. package/dist/vm-bridge/index.cjs +2 -2
  182. package/dist/vm-bridge/index.d.cts +2 -2
  183. package/dist/vm-bridge/index.d.ts +2 -2
  184. package/dist/vm-bridge/index.js +1 -1
  185. package/dist/vr/index.cjs +6 -6
  186. package/dist/vr/index.js +1 -1
  187. package/dist/world/index.cjs +3 -3
  188. package/dist/world/index.d.cts +1 -1
  189. package/dist/world/index.d.ts +1 -1
  190. package/dist/world/index.js +1 -1
  191. package/package.json +53 -21
  192. package/LICENSE +0 -21
@@ -0,0 +1,218 @@
1
+ // src/simulation/AutoMesher.ts
2
+ function meshBox(options) {
3
+ const origin = options.origin ?? [0, 0, 0];
4
+ const [lx, ly, lz] = options.size;
5
+ const [nx, ny, nz] = options.divisions ?? [4, 4, 4];
6
+ if (nx < 1 || ny < 1 || nz < 1) {
7
+ throw new Error(`Divisions must be >= 1, got [${nx}, ${ny}, ${nz}]`);
8
+ }
9
+ if (lx <= 0 || ly <= 0 || lz <= 0) {
10
+ throw new Error(`Size must be positive, got [${lx}, ${ly}, ${lz}]`);
11
+ }
12
+ const nodeCount = (nx + 1) * (ny + 1) * (nz + 1);
13
+ const vertices = new Float64Array(nodeCount * 3);
14
+ let idx = 0;
15
+ for (let k = 0; k <= nz; k++) {
16
+ for (let j = 0; j <= ny; j++) {
17
+ for (let i = 0; i <= nx; i++) {
18
+ vertices[idx++] = origin[0] + i * lx / nx;
19
+ vertices[idx++] = origin[1] + j * ly / ny;
20
+ vertices[idx++] = origin[2] + k * lz / nz;
21
+ }
22
+ }
23
+ }
24
+ function nodeIndex(i, j, k) {
25
+ return k * (nx + 1) * (ny + 1) + j * (nx + 1) + i;
26
+ }
27
+ const elementCount = nx * ny * nz * 5;
28
+ const tetrahedra = new Uint32Array(elementCount * 4);
29
+ let tetIdx = 0;
30
+ for (let k = 0; k < nz; k++) {
31
+ for (let j = 0; j < ny; j++) {
32
+ for (let i = 0; i < nx; i++) {
33
+ const v0 = nodeIndex(i, j, k);
34
+ const v1 = nodeIndex(i + 1, j, k);
35
+ const v2 = nodeIndex(i + 1, j + 1, k);
36
+ const v3 = nodeIndex(i, j + 1, k);
37
+ const v4 = nodeIndex(i, j, k + 1);
38
+ const v5 = nodeIndex(i + 1, j, k + 1);
39
+ const v6 = nodeIndex(i + 1, j + 1, k + 1);
40
+ const v7 = nodeIndex(i, j + 1, k + 1);
41
+ if ((i + j + k) % 2 === 0) {
42
+ tetrahedra[tetIdx++] = v0;
43
+ tetrahedra[tetIdx++] = v1;
44
+ tetrahedra[tetIdx++] = v3;
45
+ tetrahedra[tetIdx++] = v4;
46
+ tetrahedra[tetIdx++] = v1;
47
+ tetrahedra[tetIdx++] = v2;
48
+ tetrahedra[tetIdx++] = v3;
49
+ tetrahedra[tetIdx++] = v6;
50
+ tetrahedra[tetIdx++] = v4;
51
+ tetrahedra[tetIdx++] = v5;
52
+ tetrahedra[tetIdx++] = v1;
53
+ tetrahedra[tetIdx++] = v6;
54
+ tetrahedra[tetIdx++] = v4;
55
+ tetrahedra[tetIdx++] = v7;
56
+ tetrahedra[tetIdx++] = v6;
57
+ tetrahedra[tetIdx++] = v3;
58
+ tetrahedra[tetIdx++] = v1;
59
+ tetrahedra[tetIdx++] = v4;
60
+ tetrahedra[tetIdx++] = v6;
61
+ tetrahedra[tetIdx++] = v3;
62
+ } else {
63
+ tetrahedra[tetIdx++] = v1;
64
+ tetrahedra[tetIdx++] = v0;
65
+ tetrahedra[tetIdx++] = v5;
66
+ tetrahedra[tetIdx++] = v2;
67
+ tetrahedra[tetIdx++] = v3;
68
+ tetrahedra[tetIdx++] = v0;
69
+ tetrahedra[tetIdx++] = v2;
70
+ tetrahedra[tetIdx++] = v7;
71
+ tetrahedra[tetIdx++] = v4;
72
+ tetrahedra[tetIdx++] = v5;
73
+ tetrahedra[tetIdx++] = v0;
74
+ tetrahedra[tetIdx++] = v7;
75
+ tetrahedra[tetIdx++] = v6;
76
+ tetrahedra[tetIdx++] = v5;
77
+ tetrahedra[tetIdx++] = v7;
78
+ tetrahedra[tetIdx++] = v2;
79
+ tetrahedra[tetIdx++] = v0;
80
+ tetrahedra[tetIdx++] = v5;
81
+ tetrahedra[tetIdx++] = v2;
82
+ tetrahedra[tetIdx++] = v7;
83
+ }
84
+ }
85
+ }
86
+ }
87
+ return { vertices, tetrahedra, nodeCount, elementCount };
88
+ }
89
+ function findNodesOnFace(mesh, face, tolerance = 1e-10) {
90
+ const verts = mesh.vertices;
91
+ const nodeCount = mesh.nodeCount;
92
+ let minX = Infinity, maxX = -Infinity;
93
+ let minY = Infinity, maxY = -Infinity;
94
+ let minZ = Infinity, maxZ = -Infinity;
95
+ for (let i = 0; i < nodeCount; i++) {
96
+ const x = verts[i * 3], y = verts[i * 3 + 1], z = verts[i * 3 + 2];
97
+ if (x < minX) minX = x;
98
+ if (x > maxX) maxX = x;
99
+ if (y < minY) minY = y;
100
+ if (y > maxY) maxY = y;
101
+ if (z < minZ) minZ = z;
102
+ if (z > maxZ) maxZ = z;
103
+ }
104
+ const targets = {
105
+ "x-": { axis: 0, value: minX },
106
+ "x+": { axis: 0, value: maxX },
107
+ "y-": { axis: 1, value: minY },
108
+ "y+": { axis: 1, value: maxY },
109
+ "z-": { axis: 2, value: minZ },
110
+ "z+": { axis: 2, value: maxZ }
111
+ };
112
+ const { axis, value } = targets[face];
113
+ const nodes = [];
114
+ for (let i = 0; i < nodeCount; i++) {
115
+ if (Math.abs(verts[i * 3 + axis] - value) < tolerance) {
116
+ nodes.push(i);
117
+ }
118
+ }
119
+ return nodes;
120
+ }
121
+ function findNodesInSphere(mesh, center, radius) {
122
+ const verts = mesh.vertices;
123
+ const r2 = radius * radius;
124
+ const nodes = [];
125
+ for (let i = 0; i < mesh.nodeCount; i++) {
126
+ const dx = verts[i * 3] - center[0];
127
+ const dy = verts[i * 3 + 1] - center[1];
128
+ const dz = verts[i * 3 + 2] - center[2];
129
+ if (dx * dx + dy * dy + dz * dz <= r2) {
130
+ nodes.push(i);
131
+ }
132
+ }
133
+ return nodes;
134
+ }
135
+ var registeredMesher = null;
136
+ function registerWasmMesher(mesher) {
137
+ registeredMesher = mesher;
138
+ }
139
+ async function meshSurface(surface, options) {
140
+ if (registeredMesher) {
141
+ return registeredMesher.tetrahedralize(surface, options);
142
+ }
143
+ const verts = surface.vertices;
144
+ const nodeCount = verts.length / 3;
145
+ let minX = Infinity, maxX = -Infinity;
146
+ let minY = Infinity, maxY = -Infinity;
147
+ let minZ = Infinity, maxZ = -Infinity;
148
+ for (let i = 0; i < nodeCount; i++) {
149
+ const x = verts[i * 3], y = verts[i * 3 + 1], z = verts[i * 3 + 2];
150
+ if (x < minX) minX = x;
151
+ if (x > maxX) maxX = x;
152
+ if (y < minY) minY = y;
153
+ if (y > maxY) maxY = y;
154
+ if (z < minZ) minZ = z;
155
+ if (z > maxZ) maxZ = z;
156
+ }
157
+ const lx = maxX - minX || 1;
158
+ const ly = maxY - minY || 1;
159
+ const lz = maxZ - minZ || 1;
160
+ const targetEdge = options?.maxEdgeLength ?? Math.min(lx, ly, lz) / 4;
161
+ const nx = Math.max(2, Math.round(lx / targetEdge));
162
+ const ny = Math.max(2, Math.round(ly / targetEdge));
163
+ const nz = Math.max(2, Math.round(lz / targetEdge));
164
+ return meshBox({
165
+ origin: [minX, minY, minZ],
166
+ size: [lx, ly, lz],
167
+ divisions: [nx, ny, nz]
168
+ });
169
+ }
170
+ function meshQuality(mesh) {
171
+ const verts = mesh.vertices;
172
+ const tets = mesh.tetrahedra;
173
+ let minVol = Infinity, maxVol = -Infinity, sumVol = 0;
174
+ let minAR = Infinity;
175
+ let inverted = 0;
176
+ for (let e = 0; e < mesh.elementCount; e++) {
177
+ const base = e * 4;
178
+ const n0 = tets[base], n1 = tets[base + 1], n2 = tets[base + 2], n3 = tets[base + 3];
179
+ const dx1 = verts[n1 * 3] - verts[n0 * 3], dy1 = verts[n1 * 3 + 1] - verts[n0 * 3 + 1], dz1 = verts[n1 * 3 + 2] - verts[n0 * 3 + 2];
180
+ const dx2 = verts[n2 * 3] - verts[n0 * 3], dy2 = verts[n2 * 3 + 1] - verts[n0 * 3 + 1], dz2 = verts[n2 * 3 + 2] - verts[n0 * 3 + 2];
181
+ const dx3 = verts[n3 * 3] - verts[n0 * 3], dy3 = verts[n3 * 3 + 1] - verts[n0 * 3 + 1], dz3 = verts[n3 * 3 + 2] - verts[n0 * 3 + 2];
182
+ const det = dx1 * (dy2 * dz3 - dz2 * dy3) - dy1 * (dx2 * dz3 - dz2 * dx3) + dz1 * (dx2 * dy3 - dy2 * dx3);
183
+ const vol = det / 6;
184
+ if (vol < 0) inverted++;
185
+ const absVol = Math.abs(vol);
186
+ if (absVol < minVol) minVol = absVol;
187
+ if (absVol > maxVol) maxVol = absVol;
188
+ sumVol += absVol;
189
+ const edges = [
190
+ Math.sqrt(dx1 * dx1 + dy1 * dy1 + dz1 * dz1),
191
+ Math.sqrt(dx2 * dx2 + dy2 * dy2 + dz2 * dz2),
192
+ Math.sqrt(dx3 * dx3 + dy3 * dy3 + dz3 * dz3),
193
+ Math.sqrt((dx2 - dx1) ** 2 + (dy2 - dy1) ** 2 + (dz2 - dz1) ** 2),
194
+ Math.sqrt((dx3 - dx1) ** 2 + (dy3 - dy1) ** 2 + (dz3 - dz1) ** 2),
195
+ Math.sqrt((dx3 - dx2) ** 2 + (dy3 - dy2) ** 2 + (dz3 - dz2) ** 2)
196
+ ];
197
+ const minE = Math.min(...edges);
198
+ const maxE = Math.max(...edges);
199
+ const ar = minE > 0 ? minE / maxE : 0;
200
+ if (ar < minAR) minAR = ar;
201
+ }
202
+ return {
203
+ minVolume: minVol === Infinity ? 0 : minVol,
204
+ maxVolume: maxVol === -Infinity ? 0 : maxVol,
205
+ avgVolume: mesh.elementCount > 0 ? sumVol / mesh.elementCount : 0,
206
+ minAspectRatio: minAR === Infinity ? 0 : minAR,
207
+ invertedCount: inverted
208
+ };
209
+ }
210
+
211
+ export {
212
+ meshBox,
213
+ findNodesOnFace,
214
+ findNodesInSphere,
215
+ registerWasmMesher,
216
+ meshSurface,
217
+ meshQuality
218
+ };