@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.
- package/dist/AutoMesher-CK47F6AV.js +17 -0
- package/dist/GPUBuffers-2LHBCD7X.js +9 -0
- package/dist/WebGPUContext-TNEUYU2Y.js +11 -0
- package/dist/animation/index.cjs +38 -38
- package/dist/animation/index.d.cts +1 -1
- package/dist/animation/index.d.ts +1 -1
- package/dist/animation/index.js +1 -1
- package/dist/audio/index.cjs +16 -6
- package/dist/audio/index.d.cts +1 -1
- package/dist/audio/index.d.ts +1 -1
- package/dist/audio/index.js +1 -1
- package/dist/camera/index.cjs +23 -23
- package/dist/camera/index.d.cts +1 -1
- package/dist/camera/index.d.ts +1 -1
- package/dist/camera/index.js +1 -1
- package/dist/character/index.cjs +6 -4
- package/dist/character/index.js +1 -1
- package/dist/choreography/index.cjs +1194 -0
- package/dist/choreography/index.d.cts +687 -0
- package/dist/choreography/index.d.ts +687 -0
- package/dist/choreography/index.js +1156 -0
- package/dist/chunk-2CSNRI2N.js +217 -0
- package/dist/chunk-33T2WINR.js +266 -0
- package/dist/chunk-35R73OFM.js +1257 -0
- package/dist/chunk-4MMDSUNP.js +1256 -0
- package/dist/chunk-5V6HOU72.js +319 -0
- package/dist/chunk-6QOP6PYF.js +1038 -0
- package/dist/chunk-7KMJVHIL.js +8944 -0
- package/dist/chunk-7VPUC62U.js +1106 -0
- package/dist/chunk-A2Y6RCAT.js +1878 -0
- package/dist/chunk-AHM42MK6.js +8944 -0
- package/dist/chunk-BL7IDTHE.js +218 -0
- package/dist/chunk-CITOMSWL.js +10462 -0
- package/dist/chunk-CXDPKW2K.js +8944 -0
- package/dist/chunk-CXZPLD4S.js +223 -0
- package/dist/chunk-CZYJE7IH.js +5169 -0
- package/dist/chunk-D2OP7YC7.js +6325 -0
- package/dist/chunk-EDRVQHUU.js +1544 -0
- package/dist/chunk-EJSLOOW2.js +3589 -0
- package/dist/chunk-F53SFGW5.js +1878 -0
- package/dist/chunk-HCFPELPY.js +919 -0
- package/dist/chunk-HNEE36PY.js +93 -0
- package/dist/chunk-HYXNV36F.js +1256 -0
- package/dist/chunk-IB7KHVFY.js +821 -0
- package/dist/chunk-IBBO7YYG.js +690 -0
- package/dist/chunk-ILIBGINU.js +5470 -0
- package/dist/chunk-IS4MHLKN.js +5479 -0
- package/dist/chunk-JT2PFKWD.js +5479 -0
- package/dist/chunk-K4CUB4NY.js +1038 -0
- package/dist/chunk-KATDQXRJ.js +10462 -0
- package/dist/chunk-KBQE6ZFJ.js +8944 -0
- package/dist/chunk-KBVD5K7E.js +560 -0
- package/dist/chunk-KCDPVQRY.js +4088 -0
- package/dist/chunk-KN4QJPKN.js +8944 -0
- package/dist/chunk-KWJ3ROSI.js +8944 -0
- package/dist/chunk-L45VF6DD.js +919 -0
- package/dist/chunk-LY4T37YK.js +307 -0
- package/dist/chunk-MDN5WZXA.js +1544 -0
- package/dist/chunk-MGCDP6VU.js +928 -0
- package/dist/chunk-NCX7X6G2.js +8681 -0
- package/dist/chunk-OF54BPVD.js +913 -0
- package/dist/chunk-OWSN2Q3Q.js +690 -0
- package/dist/chunk-PRRB5TTA.js +406 -0
- package/dist/chunk-PXWVQF76.js +4086 -0
- package/dist/chunk-PYCOIDT2.js +812 -0
- package/dist/chunk-PZCSADOV.js +928 -0
- package/dist/chunk-Q2XBVS2K.js +1038 -0
- package/dist/chunk-QDZRXWN5.js +1776 -0
- package/dist/chunk-RNWOZ6WQ.js +913 -0
- package/dist/chunk-ROLFT4CJ.js +1693 -0
- package/dist/chunk-SLTJRZ2N.js +266 -0
- package/dist/chunk-SRUS5XSU.js +4088 -0
- package/dist/chunk-TKCA3WZ5.js +5409 -0
- package/dist/chunk-TNRMXYI2.js +1650 -0
- package/dist/chunk-TQB3GJGM.js +9763 -0
- package/dist/chunk-TUFGXG6K.js +510 -0
- package/dist/chunk-U6KMTGQJ.js +632 -0
- package/dist/chunk-VMGJQST6.js +8681 -0
- package/dist/chunk-X4F4TCG4.js +5470 -0
- package/dist/chunk-ZIFROE75.js +1544 -0
- package/dist/chunk-ZIJQYHSQ.js +1204 -0
- package/dist/combat/index.cjs +4 -4
- package/dist/combat/index.d.cts +1 -1
- package/dist/combat/index.d.ts +1 -1
- package/dist/combat/index.js +1 -1
- package/dist/ecs/index.cjs +1 -1
- package/dist/ecs/index.js +1 -1
- package/dist/environment/index.cjs +14 -14
- package/dist/environment/index.d.cts +1 -1
- package/dist/environment/index.d.ts +1 -1
- package/dist/environment/index.js +1 -1
- package/dist/gpu/index.cjs +4810 -0
- package/dist/gpu/index.js +3714 -0
- package/dist/hologram/index.cjs +27 -1
- package/dist/hologram/index.js +1 -1
- package/dist/index-B2PIsAmR.d.cts +2180 -0
- package/dist/index-B2PIsAmR.d.ts +2180 -0
- package/dist/index-BHySEPX7.d.cts +2921 -0
- package/dist/index-BJV21zuy.d.cts +341 -0
- package/dist/index-BJV21zuy.d.ts +341 -0
- package/dist/index-BQutTphC.d.cts +790 -0
- package/dist/index-ByIq2XrS.d.cts +3910 -0
- package/dist/index-BysHjDSO.d.cts +224 -0
- package/dist/index-BysHjDSO.d.ts +224 -0
- package/dist/index-CKwAJGck.d.ts +455 -0
- package/dist/index-CUl3QstQ.d.cts +3006 -0
- package/dist/index-CUl3QstQ.d.ts +3006 -0
- package/dist/index-CmYtNiI-.d.cts +953 -0
- package/dist/index-CmYtNiI-.d.ts +953 -0
- package/dist/index-CnRzWxi_.d.cts +522 -0
- package/dist/index-CnRzWxi_.d.ts +522 -0
- package/dist/index-CwRWbSC7.d.ts +2921 -0
- package/dist/index-CxKIBstO.d.ts +790 -0
- package/dist/index-DJ6-R8vh.d.cts +455 -0
- package/dist/index-DQKisbcI.d.cts +4968 -0
- package/dist/index-DQKisbcI.d.ts +4968 -0
- package/dist/index-DRT2zJez.d.ts +3910 -0
- package/dist/index-DfNLiAka.d.cts +192 -0
- package/dist/index-DfNLiAka.d.ts +192 -0
- package/dist/index-nMvkoRm8.d.cts +405 -0
- package/dist/index-nMvkoRm8.d.ts +405 -0
- package/dist/index-s9yOFU37.d.cts +604 -0
- package/dist/index-s9yOFU37.d.ts +604 -0
- package/dist/index.cjs +22966 -6960
- package/dist/index.d.cts +864 -20
- package/dist/index.d.ts +864 -20
- package/dist/index.js +3062 -48
- package/dist/input/index.cjs +1 -1
- package/dist/input/index.js +1 -1
- package/dist/orbital/index.cjs +3 -3
- package/dist/orbital/index.d.cts +1 -1
- package/dist/orbital/index.d.ts +1 -1
- package/dist/orbital/index.js +1 -1
- package/dist/particles/index.cjs +16 -16
- package/dist/particles/index.d.cts +1 -1
- package/dist/particles/index.d.ts +1 -1
- package/dist/particles/index.js +1 -1
- package/dist/physics/index.cjs +2377 -21
- package/dist/physics/index.d.cts +1 -1
- package/dist/physics/index.d.ts +1 -1
- package/dist/physics/index.js +35 -1
- package/dist/postfx/index.cjs +3491 -0
- package/dist/postfx/index.js +93 -0
- package/dist/procedural/index.cjs +1 -1
- package/dist/procedural/index.js +1 -1
- package/dist/puppeteer-5VF6KDVO.js +52197 -0
- package/dist/puppeteer-IZVZ3SG4.js +52197 -0
- package/dist/rendering/index.cjs +33 -32
- package/dist/rendering/index.d.cts +1 -1
- package/dist/rendering/index.d.ts +1 -1
- package/dist/rendering/index.js +8 -6
- package/dist/runtime/index.cjs +23 -13
- package/dist/runtime/index.d.cts +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.js +8 -6
- package/dist/runtime/protocols/index.cjs +349 -0
- package/dist/runtime/protocols/index.js +15 -0
- package/dist/scene/index.cjs +8 -8
- package/dist/scene/index.d.cts +1 -1
- package/dist/scene/index.d.ts +1 -1
- package/dist/scene/index.js +1 -1
- package/dist/shader/index.cjs +3087 -0
- package/dist/shader/index.js +3044 -0
- package/dist/simulation/index.cjs +10680 -0
- package/dist/simulation/index.d.cts +3 -0
- package/dist/simulation/index.d.ts +3 -0
- package/dist/simulation/index.js +307 -0
- package/dist/spatial/index.cjs +2443 -0
- package/dist/spatial/index.d.cts +1545 -0
- package/dist/spatial/index.d.ts +1545 -0
- package/dist/spatial/index.js +2400 -0
- package/dist/terrain/index.cjs +1 -1
- package/dist/terrain/index.d.cts +1 -1
- package/dist/terrain/index.d.ts +1 -1
- package/dist/terrain/index.js +1 -1
- package/dist/transformers.node-4NKAPD5U.js +45620 -0
- package/dist/vm/index.cjs +7 -8
- package/dist/vm/index.d.cts +1 -1
- package/dist/vm/index.d.ts +1 -1
- package/dist/vm/index.js +1 -1
- package/dist/vm-bridge/index.cjs +2 -2
- package/dist/vm-bridge/index.d.cts +2 -2
- package/dist/vm-bridge/index.d.ts +2 -2
- package/dist/vm-bridge/index.js +1 -1
- package/dist/vr/index.cjs +6 -6
- package/dist/vr/index.js +1 -1
- package/dist/world/index.cjs +3 -3
- package/dist/world/index.d.cts +1 -1
- package/dist/world/index.d.ts +1 -1
- package/dist/world/index.js +1 -1
- package/package.json +53 -21
- 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 };
|