incanto 0.17.3 → 0.19.0

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/editor/index.html CHANGED
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Incanto Scene Editor</title>
7
7
  <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><rect width='16' height='16' rx='3' fill='%236ee7dc'/><text x='8' y='12' text-anchor='middle' font-size='11' font-family='monospace' fill='%230e1018'>i</text></svg>" />
8
- <script type="module" crossorigin src="./assets/index-CLqRCrOl.js"></script>
8
+ <script type="module" crossorigin src="./assets/index-B7gj1VII.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="./assets/GameServer-C56iOUgF.js">
10
10
  <link rel="stylesheet" crossorigin href="./assets/index-D8QvwvOm.css">
11
11
  </head>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "incanto",
3
- "version": "0.17.3",
3
+ "version": "0.19.0",
4
4
  "description": "Vibe-coding-first web game engine SDK — JSON-driven scenes on three.js",
5
5
  "keywords": [
6
6
  "game-engine",
@@ -5197,6 +5197,9 @@
5197
5197
  "basins": {
5198
5198
  "type": "array",
5199
5199
  "default": []
5200
+ },
5201
+ "wetline": {
5202
+ "default": null
5200
5203
  }
5201
5204
  },
5202
5205
  "additionalProperties": false
@@ -553,7 +553,39 @@ is radians of `atan(|∇h|)`. Default textures stream from the live agent8 CDN
553
553
  | `islandEdge` | `null` | `null` = theme decides; force the rim wrap on/off with a boolean |
554
554
  | `layers` | `[]` | custom splat layers (theme `custom` only) |
555
555
  | `textureBase` | agent8 CDN | base URL: `<base>/<name>.png` + `<base>/<name>_normal.png` |
556
- | `basins` | `[]` | lake/pond bowls — `[{ x, z, radius, depth }]` (centered meters) carved into the surface (smooth, 0-slope rim); `heightAt`, the collider AND draped grass all see them |
556
+ | `basins` | `[]` | lake/pond bowls — `[{ x, z, radius, depth }]` (centered meters) carved into the surface (smooth, 0-slope rim); **negative `depth` RAISES a smooth dome mound instead** (a hill, an islet); `heightAt`, the collider AND draped grass all see them |
557
+ | `wetline` | `null` | WET SAND band — `{ y, band? }` darkens + glosses the splat in a noisy, breathing band just above height `y` (a waterline): the trace of the last swash runup. `band` (default `1.1` m) caps how high above `y` reads wet. `null` = off |
558
+
559
+ **Wet sand at a shoreline.** Set `wetline.y` to the SAME world height as the
560
+ adjoining `Water3D` surface and the beach keeps a damp, glossy apron that
561
+ breathes with the swash — sell any beach/lakeshore in one prop:
562
+ ```ts
563
+ // Sea sits at y = 10 → the sand within ~1 m above the waterline reads wet
564
+ "wetline": { "y": 10, "band": 1.0 }
565
+ ```
566
+ On a near-flat sandbar remember the band is VERTICAL meters: a 1 m band on a
567
+ 1:50 slope is a ~50 m apron — drop `band` to `0.4–0.6` if only a narrow strip
568
+ should read wet.
569
+
570
+ **A round sand islet in the open sea** (the postcard drone shot): don't hunt
571
+ for a dune that pokes out — SHAPE the island with nested negative-depth
572
+ basins on a low desert field, then flood to just below the dome top:
573
+ ```ts
574
+ // all-sand splat, ~0.5 m of noise so the waterline contour stays organic
575
+ { theme: 'desert', size: 150, maxHeight: 0.1, islandEdge: true,
576
+ flatThreshold: 20, // disable the flat-snap — at tiny maxHeight the ±0.6 m
577
+ // band swallows the field and its per-vertex boundary
578
+ // rips a sawtooth across the underwater flat
579
+ basins: [
580
+ { x: 0, z: 0, radius: 55, depth: -3 }, // broad shield → turquoise ring
581
+ { x: 0, z: 0, radius: 30, depth: -4.2 }, // dome → the sand cap (max nests)
582
+ ] }
583
+ // water at domeTop − 0.9: a ~20 m round cap, glowing shallows, rim wraps deep
584
+ ```
585
+ The sea cuts the dome's CURVED flank, so the waterline is a round organic
586
+ contour — a flat bar's waterline slices along the desert lows' planar patches
587
+ and reads as long straight cellophane edges. Pair with a second deep Terrain3D
588
+ (e.g. 12 m down) so the surround reads saturated blue, not endless pale flat.
557
589
 
558
590
  **Carving a lake.** A flat Water3D plane on rolling/dome terrain reads as a wet
559
591
  patch, not a lake. Carve a `basins` bowl so water fills a real depression with a
@@ -764,6 +764,7 @@ Signals: `triggerEnter(other)` · `triggerExit(other)`
764
764
  | `layers` | `[]` | array |
765
765
  | `textureBase` | `"https://agent8-games.verse8.io/assets/3D/default/textures/terrain"` | string |
766
766
  | `basins` | `[]` | array |
767
+ | `wetline` | `null` | null |
767
768
 
768
769
  ## `TileMap2D` — `incanto/2d`
769
770
 
@@ -14,7 +14,7 @@
14
14
  "@dimforge/rapier2d-compat": "0.19.3",
15
15
  "@dimforge/rapier3d-compat": "0.19.3",
16
16
  "@pixiv/three-vrm": "^3.5.3",
17
- "incanto": "^0.17.3",
17
+ "incanto": "^0.19.0",
18
18
  "three": "^0.184.0"
19
19
  },
20
20
  "devDependencies": {
@@ -13,7 +13,7 @@
13
13
  "@dimforge/rapier2d-compat": "0.19.3",
14
14
  "@dimforge/rapier3d-compat": "0.19.3",
15
15
  "@pixiv/three-vrm": "^3.5.3",
16
- "incanto": "^0.17.3",
16
+ "incanto": "^0.19.0",
17
17
  "three": "^0.184.0"
18
18
  },
19
19
  "devDependencies": {
@@ -13,7 +13,7 @@
13
13
  "@dimforge/rapier2d-compat": "0.19.3",
14
14
  "@dimforge/rapier3d-compat": "0.19.3",
15
15
  "@pixiv/three-vrm": "^3.5.3",
16
- "incanto": "^0.17.3",
16
+ "incanto": "^0.19.0",
17
17
  "three": "^0.184.0"
18
18
  },
19
19
  "devDependencies": {