@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,341 @@
1
+ /**
2
+ * TerrainBrush — Sculpting brushes (raise/lower/smooth/flatten/paint)
3
+ *
4
+ * Applies heightmap modifications with configurable radius, strength,
5
+ * and falloff curves.
6
+ *
7
+ * @version 1.0.0
8
+ */
9
+ type BrushMode = 'raise' | 'lower' | 'smooth' | 'flatten' | 'paint' | 'erode';
10
+ type FalloffCurve = 'linear' | 'smooth' | 'sphere' | 'tip' | 'flat';
11
+ interface BrushConfig {
12
+ mode: BrushMode;
13
+ radius: number;
14
+ strength: number;
15
+ falloff: FalloffCurve;
16
+ opacity: number;
17
+ }
18
+ interface TerrainCell {
19
+ height: number;
20
+ paintLayer: number;
21
+ locked: boolean;
22
+ }
23
+ declare class TerrainBrush {
24
+ private grid;
25
+ private strokes;
26
+ private undoStack;
27
+ private config;
28
+ private gridSize;
29
+ constructor(gridSize?: number, config?: Partial<BrushConfig>);
30
+ /**
31
+ * Apply brush at a position
32
+ */
33
+ apply(cx: number, cz: number, overrides?: Partial<BrushConfig>): number;
34
+ /**
35
+ * Paint a layer at a position
36
+ */
37
+ paint(cx: number, cz: number, layerIndex: number): number;
38
+ /**
39
+ * Undo last stroke
40
+ */
41
+ undo(): boolean;
42
+ /**
43
+ * Get height at a grid position
44
+ */
45
+ getHeight(x: number, z: number): number;
46
+ /**
47
+ * Get cell data
48
+ */
49
+ getCell(x: number, z: number): TerrainCell | undefined;
50
+ /**
51
+ * Lock/unlock cells
52
+ */
53
+ setLocked(x: number, z: number, locked: boolean): void;
54
+ /**
55
+ * Get current config
56
+ */
57
+ getConfig(): BrushConfig;
58
+ /**
59
+ * Set config
60
+ */
61
+ setConfig(cfg: Partial<BrushConfig>): void;
62
+ /**
63
+ * Get stroke count
64
+ */
65
+ getStrokeCount(): number;
66
+ /**
67
+ * Get grid size
68
+ */
69
+ getGridSize(): number;
70
+ /**
71
+ * Get undo count
72
+ */
73
+ getUndoCount(): number;
74
+ /**
75
+ * Get height range
76
+ */
77
+ getHeightRange(): {
78
+ min: number;
79
+ max: number;
80
+ };
81
+ }
82
+
83
+ /**
84
+ * TerrainLOD.ts
85
+ *
86
+ * Quadtree-based terrain LOD: distance-based chunking,
87
+ * seamless stitching, morph factors, and streaming.
88
+ *
89
+ * @module terrain
90
+ */
91
+ interface TerrainChunk {
92
+ id: string;
93
+ level: number;
94
+ x: number;
95
+ z: number;
96
+ size: number;
97
+ resolution: number;
98
+ heightData: Float32Array;
99
+ morphFactor: number;
100
+ active: boolean;
101
+ children: string[];
102
+ }
103
+ interface TerrainLODConfig {
104
+ totalSize: number;
105
+ maxLOD: number;
106
+ baseResolution: number;
107
+ lodDistances: number[];
108
+ morphRange: number;
109
+ }
110
+ declare class TerrainLOD {
111
+ private config;
112
+ private chunks;
113
+ private activeChunks;
114
+ constructor(config?: Partial<TerrainLODConfig>);
115
+ generateQuadtree(heightSampler: (x: number, z: number) => number): void;
116
+ private subdivide;
117
+ selectLOD(cameraX: number, cameraZ: number): void;
118
+ getStitchEdges(chunkId: string): {
119
+ north: boolean;
120
+ south: boolean;
121
+ east: boolean;
122
+ west: boolean;
123
+ };
124
+ private overlapsX;
125
+ private overlapsZ;
126
+ getChunk(id: string): TerrainChunk | undefined;
127
+ getActiveChunks(): TerrainChunk[];
128
+ getActiveChunkCount(): number;
129
+ getTotalChunkCount(): number;
130
+ sampleHeight(x: number, z: number): number;
131
+ }
132
+
133
+ /**
134
+ * TerrainPaintLayer — Splat map layers for terrain texturing
135
+ *
136
+ * Manages per-vertex paint weights across multiple texture layers
137
+ * with blending, undo, and normalization.
138
+ *
139
+ * @version 1.0.0
140
+ */
141
+ interface PaintLayer {
142
+ id: string;
143
+ name: string;
144
+ textureId: string;
145
+ tiling: number;
146
+ metallic: number;
147
+ roughness: number;
148
+ }
149
+ declare class TerrainPaintLayer {
150
+ private layers;
151
+ private splatMap;
152
+ private gridSize;
153
+ private undoStack;
154
+ constructor(gridSize?: number);
155
+ /**
156
+ * Add a texture layer
157
+ */
158
+ addLayer(layer: PaintLayer): number;
159
+ /**
160
+ * Remove a layer by index
161
+ */
162
+ removeLayer(index: number): boolean;
163
+ /**
164
+ * Paint a layer at a position with given weight
165
+ */
166
+ paintAt(x: number, z: number, layerIndex: number, weight: number, radius?: number): number;
167
+ /**
168
+ * Get weights at a position
169
+ */
170
+ getWeights(x: number, z: number): number[];
171
+ /**
172
+ * Get dominant layer at a position
173
+ */
174
+ getDominantLayer(x: number, z: number): number;
175
+ /**
176
+ * Undo last paint operation
177
+ */
178
+ undo(): boolean;
179
+ /**
180
+ * Normalize weights to sum to 1
181
+ */
182
+ private normalizeWeights;
183
+ /**
184
+ * Get layer definitions
185
+ */
186
+ getLayers(): PaintLayer[];
187
+ getLayerCount(): number;
188
+ getUndoCount(): number;
189
+ }
190
+
191
+ /**
192
+ * TerrainTexturing.ts
193
+ *
194
+ * Splatmap blending: multi-layer texturing, triplanar mapping,
195
+ * detail layers, and texture weights.
196
+ *
197
+ * @module terrain
198
+ */
199
+ interface TerrainLayer {
200
+ id: string;
201
+ textureId: string;
202
+ normalMapId?: string;
203
+ tiling: {
204
+ x: number;
205
+ y: number;
206
+ };
207
+ metallic: number;
208
+ roughness: number;
209
+ heightBlend: boolean;
210
+ }
211
+ interface SplatmapData {
212
+ width: number;
213
+ height: number;
214
+ channels: Float32Array[];
215
+ }
216
+ interface TriplanarConfig {
217
+ sharpness: number;
218
+ tiling: number;
219
+ enabled: boolean;
220
+ }
221
+ declare class TerrainTexturing {
222
+ private layers;
223
+ private splatmap;
224
+ private triplanar;
225
+ private detailLayers;
226
+ addLayer(layer: TerrainLayer): void;
227
+ getLayer(index: number): TerrainLayer | undefined;
228
+ getLayerCount(): number;
229
+ removeLayer(id: string): void;
230
+ createSplatmap(width: number, height: number, channelCount?: number): SplatmapData;
231
+ paintSplatmap(channel: number, x: number, z: number, radius: number, strength: number, _heightMap?: Float32Array): void;
232
+ private normalizeSplatAt;
233
+ getSplatWeights(x: number, z: number): number[];
234
+ setTriplanar(config: Partial<TriplanarConfig>): void;
235
+ getTriplanar(): TriplanarConfig;
236
+ computeTriplanarWeights(normal: {
237
+ x: number;
238
+ y: number;
239
+ z: number;
240
+ }): {
241
+ x: number;
242
+ y: number;
243
+ z: number;
244
+ };
245
+ addDetailLayer(layerIndex: number, distance: number, tiling: number): void;
246
+ getDetailLayers(): typeof this.detailLayers;
247
+ }
248
+
249
+ /**
250
+ * ErosionBrush — Interactive hydraulic/thermal erosion brushes
251
+ *
252
+ * Applies localized erosion simulation as a painting tool.
253
+ *
254
+ * @version 1.0.0
255
+ */
256
+ type ErosionType = 'hydraulic' | 'thermal' | 'wind';
257
+ interface ErosionConfig$1 {
258
+ type: ErosionType;
259
+ radius: number;
260
+ strength: number;
261
+ iterations: number;
262
+ sedimentCapacity: number;
263
+ thermalAngle: number;
264
+ }
265
+ interface ErosionResult$1 {
266
+ cellsAffected: number;
267
+ totalErosion: number;
268
+ totalDeposition: number;
269
+ iterations: number;
270
+ }
271
+ declare class ErosionBrush {
272
+ private heightmap;
273
+ private config;
274
+ private gridSize;
275
+ constructor(gridSize?: number, config?: Partial<ErosionConfig$1>);
276
+ /**
277
+ * Set heightmap data
278
+ */
279
+ setHeight(x: number, z: number, h: number): void;
280
+ getHeight(x: number, z: number): number;
281
+ /**
282
+ * Apply erosion at a center position
283
+ */
284
+ erode(cx: number, cz: number, overrides?: Partial<ErosionConfig$1>): ErosionResult$1;
285
+ private getNeighborHeights;
286
+ getConfig(): ErosionConfig$1;
287
+ setConfig(cfg: Partial<ErosionConfig$1>): void;
288
+ getGridSize(): number;
289
+ }
290
+
291
+ /**
292
+ * ErosionSim.ts
293
+ *
294
+ * Terrain erosion: hydraulic erosion (raindrop simulation),
295
+ * thermal erosion, sediment transport, and iteration control.
296
+ *
297
+ * @module terrain
298
+ */
299
+ interface ErosionConfig {
300
+ iterations: number;
301
+ rainAmount: number;
302
+ solubility: number;
303
+ evaporationRate: number;
304
+ depositionRate: number;
305
+ gravity: number;
306
+ thermalAngle: number;
307
+ thermalRate: number;
308
+ seed: number;
309
+ }
310
+ interface ErosionResult {
311
+ totalEroded: number;
312
+ totalDeposited: number;
313
+ iterations: number;
314
+ maxDepthChange: number;
315
+ }
316
+ declare class ErosionSim {
317
+ private config;
318
+ constructor(config?: Partial<ErosionConfig>);
319
+ hydraulicErode(heightmap: Float32Array, width: number, height: number): ErosionResult;
320
+ thermalErode(heightmap: Float32Array, width: number, height: number, iterations?: number): ErosionResult;
321
+ setConfig(config: Partial<ErosionConfig>): void;
322
+ getConfig(): ErosionConfig;
323
+ }
324
+
325
+ type index_ErosionBrush = ErosionBrush;
326
+ declare const index_ErosionBrush: typeof ErosionBrush;
327
+ type index_ErosionSim = ErosionSim;
328
+ declare const index_ErosionSim: typeof ErosionSim;
329
+ type index_TerrainBrush = TerrainBrush;
330
+ declare const index_TerrainBrush: typeof TerrainBrush;
331
+ type index_TerrainLOD = TerrainLOD;
332
+ declare const index_TerrainLOD: typeof TerrainLOD;
333
+ type index_TerrainPaintLayer = TerrainPaintLayer;
334
+ declare const index_TerrainPaintLayer: typeof TerrainPaintLayer;
335
+ type index_TerrainTexturing = TerrainTexturing;
336
+ declare const index_TerrainTexturing: typeof TerrainTexturing;
337
+ declare namespace index {
338
+ export { index_ErosionBrush as ErosionBrush, index_ErosionSim as ErosionSim, index_TerrainBrush as TerrainBrush, index_TerrainLOD as TerrainLOD, index_TerrainPaintLayer as TerrainPaintLayer, index_TerrainTexturing as TerrainTexturing };
339
+ }
340
+
341
+ export { ErosionBrush as E, TerrainBrush as T, ErosionSim as a, TerrainLOD as b, TerrainPaintLayer as c, TerrainTexturing as d, index as i };
@@ -0,0 +1,341 @@
1
+ /**
2
+ * TerrainBrush — Sculpting brushes (raise/lower/smooth/flatten/paint)
3
+ *
4
+ * Applies heightmap modifications with configurable radius, strength,
5
+ * and falloff curves.
6
+ *
7
+ * @version 1.0.0
8
+ */
9
+ type BrushMode = 'raise' | 'lower' | 'smooth' | 'flatten' | 'paint' | 'erode';
10
+ type FalloffCurve = 'linear' | 'smooth' | 'sphere' | 'tip' | 'flat';
11
+ interface BrushConfig {
12
+ mode: BrushMode;
13
+ radius: number;
14
+ strength: number;
15
+ falloff: FalloffCurve;
16
+ opacity: number;
17
+ }
18
+ interface TerrainCell {
19
+ height: number;
20
+ paintLayer: number;
21
+ locked: boolean;
22
+ }
23
+ declare class TerrainBrush {
24
+ private grid;
25
+ private strokes;
26
+ private undoStack;
27
+ private config;
28
+ private gridSize;
29
+ constructor(gridSize?: number, config?: Partial<BrushConfig>);
30
+ /**
31
+ * Apply brush at a position
32
+ */
33
+ apply(cx: number, cz: number, overrides?: Partial<BrushConfig>): number;
34
+ /**
35
+ * Paint a layer at a position
36
+ */
37
+ paint(cx: number, cz: number, layerIndex: number): number;
38
+ /**
39
+ * Undo last stroke
40
+ */
41
+ undo(): boolean;
42
+ /**
43
+ * Get height at a grid position
44
+ */
45
+ getHeight(x: number, z: number): number;
46
+ /**
47
+ * Get cell data
48
+ */
49
+ getCell(x: number, z: number): TerrainCell | undefined;
50
+ /**
51
+ * Lock/unlock cells
52
+ */
53
+ setLocked(x: number, z: number, locked: boolean): void;
54
+ /**
55
+ * Get current config
56
+ */
57
+ getConfig(): BrushConfig;
58
+ /**
59
+ * Set config
60
+ */
61
+ setConfig(cfg: Partial<BrushConfig>): void;
62
+ /**
63
+ * Get stroke count
64
+ */
65
+ getStrokeCount(): number;
66
+ /**
67
+ * Get grid size
68
+ */
69
+ getGridSize(): number;
70
+ /**
71
+ * Get undo count
72
+ */
73
+ getUndoCount(): number;
74
+ /**
75
+ * Get height range
76
+ */
77
+ getHeightRange(): {
78
+ min: number;
79
+ max: number;
80
+ };
81
+ }
82
+
83
+ /**
84
+ * TerrainLOD.ts
85
+ *
86
+ * Quadtree-based terrain LOD: distance-based chunking,
87
+ * seamless stitching, morph factors, and streaming.
88
+ *
89
+ * @module terrain
90
+ */
91
+ interface TerrainChunk {
92
+ id: string;
93
+ level: number;
94
+ x: number;
95
+ z: number;
96
+ size: number;
97
+ resolution: number;
98
+ heightData: Float32Array;
99
+ morphFactor: number;
100
+ active: boolean;
101
+ children: string[];
102
+ }
103
+ interface TerrainLODConfig {
104
+ totalSize: number;
105
+ maxLOD: number;
106
+ baseResolution: number;
107
+ lodDistances: number[];
108
+ morphRange: number;
109
+ }
110
+ declare class TerrainLOD {
111
+ private config;
112
+ private chunks;
113
+ private activeChunks;
114
+ constructor(config?: Partial<TerrainLODConfig>);
115
+ generateQuadtree(heightSampler: (x: number, z: number) => number): void;
116
+ private subdivide;
117
+ selectLOD(cameraX: number, cameraZ: number): void;
118
+ getStitchEdges(chunkId: string): {
119
+ north: boolean;
120
+ south: boolean;
121
+ east: boolean;
122
+ west: boolean;
123
+ };
124
+ private overlapsX;
125
+ private overlapsZ;
126
+ getChunk(id: string): TerrainChunk | undefined;
127
+ getActiveChunks(): TerrainChunk[];
128
+ getActiveChunkCount(): number;
129
+ getTotalChunkCount(): number;
130
+ sampleHeight(x: number, z: number): number;
131
+ }
132
+
133
+ /**
134
+ * TerrainPaintLayer — Splat map layers for terrain texturing
135
+ *
136
+ * Manages per-vertex paint weights across multiple texture layers
137
+ * with blending, undo, and normalization.
138
+ *
139
+ * @version 1.0.0
140
+ */
141
+ interface PaintLayer {
142
+ id: string;
143
+ name: string;
144
+ textureId: string;
145
+ tiling: number;
146
+ metallic: number;
147
+ roughness: number;
148
+ }
149
+ declare class TerrainPaintLayer {
150
+ private layers;
151
+ private splatMap;
152
+ private gridSize;
153
+ private undoStack;
154
+ constructor(gridSize?: number);
155
+ /**
156
+ * Add a texture layer
157
+ */
158
+ addLayer(layer: PaintLayer): number;
159
+ /**
160
+ * Remove a layer by index
161
+ */
162
+ removeLayer(index: number): boolean;
163
+ /**
164
+ * Paint a layer at a position with given weight
165
+ */
166
+ paintAt(x: number, z: number, layerIndex: number, weight: number, radius?: number): number;
167
+ /**
168
+ * Get weights at a position
169
+ */
170
+ getWeights(x: number, z: number): number[];
171
+ /**
172
+ * Get dominant layer at a position
173
+ */
174
+ getDominantLayer(x: number, z: number): number;
175
+ /**
176
+ * Undo last paint operation
177
+ */
178
+ undo(): boolean;
179
+ /**
180
+ * Normalize weights to sum to 1
181
+ */
182
+ private normalizeWeights;
183
+ /**
184
+ * Get layer definitions
185
+ */
186
+ getLayers(): PaintLayer[];
187
+ getLayerCount(): number;
188
+ getUndoCount(): number;
189
+ }
190
+
191
+ /**
192
+ * TerrainTexturing.ts
193
+ *
194
+ * Splatmap blending: multi-layer texturing, triplanar mapping,
195
+ * detail layers, and texture weights.
196
+ *
197
+ * @module terrain
198
+ */
199
+ interface TerrainLayer {
200
+ id: string;
201
+ textureId: string;
202
+ normalMapId?: string;
203
+ tiling: {
204
+ x: number;
205
+ y: number;
206
+ };
207
+ metallic: number;
208
+ roughness: number;
209
+ heightBlend: boolean;
210
+ }
211
+ interface SplatmapData {
212
+ width: number;
213
+ height: number;
214
+ channels: Float32Array[];
215
+ }
216
+ interface TriplanarConfig {
217
+ sharpness: number;
218
+ tiling: number;
219
+ enabled: boolean;
220
+ }
221
+ declare class TerrainTexturing {
222
+ private layers;
223
+ private splatmap;
224
+ private triplanar;
225
+ private detailLayers;
226
+ addLayer(layer: TerrainLayer): void;
227
+ getLayer(index: number): TerrainLayer | undefined;
228
+ getLayerCount(): number;
229
+ removeLayer(id: string): void;
230
+ createSplatmap(width: number, height: number, channelCount?: number): SplatmapData;
231
+ paintSplatmap(channel: number, x: number, z: number, radius: number, strength: number, _heightMap?: Float32Array): void;
232
+ private normalizeSplatAt;
233
+ getSplatWeights(x: number, z: number): number[];
234
+ setTriplanar(config: Partial<TriplanarConfig>): void;
235
+ getTriplanar(): TriplanarConfig;
236
+ computeTriplanarWeights(normal: {
237
+ x: number;
238
+ y: number;
239
+ z: number;
240
+ }): {
241
+ x: number;
242
+ y: number;
243
+ z: number;
244
+ };
245
+ addDetailLayer(layerIndex: number, distance: number, tiling: number): void;
246
+ getDetailLayers(): typeof this.detailLayers;
247
+ }
248
+
249
+ /**
250
+ * ErosionBrush — Interactive hydraulic/thermal erosion brushes
251
+ *
252
+ * Applies localized erosion simulation as a painting tool.
253
+ *
254
+ * @version 1.0.0
255
+ */
256
+ type ErosionType = 'hydraulic' | 'thermal' | 'wind';
257
+ interface ErosionConfig$1 {
258
+ type: ErosionType;
259
+ radius: number;
260
+ strength: number;
261
+ iterations: number;
262
+ sedimentCapacity: number;
263
+ thermalAngle: number;
264
+ }
265
+ interface ErosionResult$1 {
266
+ cellsAffected: number;
267
+ totalErosion: number;
268
+ totalDeposition: number;
269
+ iterations: number;
270
+ }
271
+ declare class ErosionBrush {
272
+ private heightmap;
273
+ private config;
274
+ private gridSize;
275
+ constructor(gridSize?: number, config?: Partial<ErosionConfig$1>);
276
+ /**
277
+ * Set heightmap data
278
+ */
279
+ setHeight(x: number, z: number, h: number): void;
280
+ getHeight(x: number, z: number): number;
281
+ /**
282
+ * Apply erosion at a center position
283
+ */
284
+ erode(cx: number, cz: number, overrides?: Partial<ErosionConfig$1>): ErosionResult$1;
285
+ private getNeighborHeights;
286
+ getConfig(): ErosionConfig$1;
287
+ setConfig(cfg: Partial<ErosionConfig$1>): void;
288
+ getGridSize(): number;
289
+ }
290
+
291
+ /**
292
+ * ErosionSim.ts
293
+ *
294
+ * Terrain erosion: hydraulic erosion (raindrop simulation),
295
+ * thermal erosion, sediment transport, and iteration control.
296
+ *
297
+ * @module terrain
298
+ */
299
+ interface ErosionConfig {
300
+ iterations: number;
301
+ rainAmount: number;
302
+ solubility: number;
303
+ evaporationRate: number;
304
+ depositionRate: number;
305
+ gravity: number;
306
+ thermalAngle: number;
307
+ thermalRate: number;
308
+ seed: number;
309
+ }
310
+ interface ErosionResult {
311
+ totalEroded: number;
312
+ totalDeposited: number;
313
+ iterations: number;
314
+ maxDepthChange: number;
315
+ }
316
+ declare class ErosionSim {
317
+ private config;
318
+ constructor(config?: Partial<ErosionConfig>);
319
+ hydraulicErode(heightmap: Float32Array, width: number, height: number): ErosionResult;
320
+ thermalErode(heightmap: Float32Array, width: number, height: number, iterations?: number): ErosionResult;
321
+ setConfig(config: Partial<ErosionConfig>): void;
322
+ getConfig(): ErosionConfig;
323
+ }
324
+
325
+ type index_ErosionBrush = ErosionBrush;
326
+ declare const index_ErosionBrush: typeof ErosionBrush;
327
+ type index_ErosionSim = ErosionSim;
328
+ declare const index_ErosionSim: typeof ErosionSim;
329
+ type index_TerrainBrush = TerrainBrush;
330
+ declare const index_TerrainBrush: typeof TerrainBrush;
331
+ type index_TerrainLOD = TerrainLOD;
332
+ declare const index_TerrainLOD: typeof TerrainLOD;
333
+ type index_TerrainPaintLayer = TerrainPaintLayer;
334
+ declare const index_TerrainPaintLayer: typeof TerrainPaintLayer;
335
+ type index_TerrainTexturing = TerrainTexturing;
336
+ declare const index_TerrainTexturing: typeof TerrainTexturing;
337
+ declare namespace index {
338
+ export { index_ErosionBrush as ErosionBrush, index_ErosionSim as ErosionSim, index_TerrainBrush as TerrainBrush, index_TerrainLOD as TerrainLOD, index_TerrainPaintLayer as TerrainPaintLayer, index_TerrainTexturing as TerrainTexturing };
339
+ }
340
+
341
+ export { ErosionBrush as E, TerrainBrush as T, ErosionSim as a, TerrainLOD as b, TerrainPaintLayer as c, TerrainTexturing as d, index as i };