incanto 0.25.4 → 0.26.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/dist/2d.js +1 -1
- package/dist/3d.d.ts +69 -2
- package/dist/3d.js +5 -5
- package/dist/{create-game-DyAPwm0j.js → create-game-B_qBR65J.js} +3 -3
- package/dist/{create-game-iYptFr-q.js → create-game-C0bPoURs.js} +1 -1
- package/dist/{gameplay-BFzBVqhr.js → gameplay-Ddk13pQ6.js} +229 -2
- package/dist/gameplay.js +1 -1
- package/dist/index.js +1 -1
- package/dist/{physics-3d-ob23XE0Y.js → physics-3d-Cd7Jl8w1.js} +2 -2
- package/dist/react.js +1 -1
- package/dist/{register-CmtGqGSS.js → register-CeWtdiCw.js} +2 -1
- package/dist/test.js +4 -4
- package/editor/assets/{agent8-DzaYTNiK.js → agent8-DW6yTjTv.js} +1 -1
- package/editor/assets/{index-BGtXxzJn.js → index-D4_I76v2.js} +118 -89
- package/editor/index.html +1 -1
- package/package.json +1 -1
- package/schemas/scene.schema.json +111 -0
- package/skills/incanto-environment.md +38 -0
- package/skills/incanto-node-reference.md +14 -0
- package/templates-app/beacon-isle-3d/package.json +1 -1
- package/templates-app/tps-3d/package.json +1 -1
- package/templates-app/village-quest-3d/package.json +1 -1
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-
|
|
8
|
+
<script type="module" crossorigin src="./assets/index-D4_I76v2.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
|
@@ -331,6 +331,9 @@
|
|
|
331
331
|
{
|
|
332
332
|
"$ref": "#/$defs/Water3D"
|
|
333
333
|
},
|
|
334
|
+
{
|
|
335
|
+
"$ref": "#/$defs/WaterCutout3D"
|
|
336
|
+
},
|
|
334
337
|
{
|
|
335
338
|
"$ref": "#/$defs/_instance"
|
|
336
339
|
}
|
|
@@ -6691,6 +6694,114 @@
|
|
|
6691
6694
|
}
|
|
6692
6695
|
},
|
|
6693
6696
|
"required": ["name", "type"]
|
|
6697
|
+
},
|
|
6698
|
+
"WaterCutout3D": {
|
|
6699
|
+
"type": "object",
|
|
6700
|
+
"properties": {
|
|
6701
|
+
"name": {
|
|
6702
|
+
"type": "string"
|
|
6703
|
+
},
|
|
6704
|
+
"uid": {
|
|
6705
|
+
"type": "string"
|
|
6706
|
+
},
|
|
6707
|
+
"type": {
|
|
6708
|
+
"const": "WaterCutout3D"
|
|
6709
|
+
},
|
|
6710
|
+
"groups": {
|
|
6711
|
+
"type": "array",
|
|
6712
|
+
"items": {
|
|
6713
|
+
"type": "string"
|
|
6714
|
+
}
|
|
6715
|
+
},
|
|
6716
|
+
"tags": {
|
|
6717
|
+
"type": "object"
|
|
6718
|
+
},
|
|
6719
|
+
"props": {
|
|
6720
|
+
"type": "object",
|
|
6721
|
+
"properties": {
|
|
6722
|
+
"position": {
|
|
6723
|
+
"type": "array",
|
|
6724
|
+
"items": {
|
|
6725
|
+
"type": "number"
|
|
6726
|
+
},
|
|
6727
|
+
"minItems": 3,
|
|
6728
|
+
"maxItems": 3,
|
|
6729
|
+
"default": [0, 0, 0]
|
|
6730
|
+
},
|
|
6731
|
+
"rotation": {
|
|
6732
|
+
"type": "array",
|
|
6733
|
+
"items": {
|
|
6734
|
+
"type": "number"
|
|
6735
|
+
},
|
|
6736
|
+
"minItems": 3,
|
|
6737
|
+
"maxItems": 3,
|
|
6738
|
+
"default": [0, 0, 0]
|
|
6739
|
+
},
|
|
6740
|
+
"static": {
|
|
6741
|
+
"type": "boolean",
|
|
6742
|
+
"default": false
|
|
6743
|
+
},
|
|
6744
|
+
"scale": {
|
|
6745
|
+
"type": "array",
|
|
6746
|
+
"items": {
|
|
6747
|
+
"type": "number"
|
|
6748
|
+
},
|
|
6749
|
+
"minItems": 3,
|
|
6750
|
+
"maxItems": 3,
|
|
6751
|
+
"default": [1, 1, 1]
|
|
6752
|
+
},
|
|
6753
|
+
"visible": {
|
|
6754
|
+
"type": "boolean",
|
|
6755
|
+
"default": true
|
|
6756
|
+
},
|
|
6757
|
+
"renderOrder": {
|
|
6758
|
+
"type": "number",
|
|
6759
|
+
"default": 0
|
|
6760
|
+
},
|
|
6761
|
+
"orderGroup": {
|
|
6762
|
+
"type": "string",
|
|
6763
|
+
"enum": ["background", "terrain", "default", "characters", "effects", "overlay"],
|
|
6764
|
+
"default": "default"
|
|
6765
|
+
},
|
|
6766
|
+
"size": {
|
|
6767
|
+
"type": "array",
|
|
6768
|
+
"items": {
|
|
6769
|
+
"type": "number"
|
|
6770
|
+
},
|
|
6771
|
+
"minItems": 3,
|
|
6772
|
+
"maxItems": 3,
|
|
6773
|
+
"default": [2, 1, 1]
|
|
6774
|
+
},
|
|
6775
|
+
"enabled": {
|
|
6776
|
+
"type": "boolean",
|
|
6777
|
+
"default": true
|
|
6778
|
+
}
|
|
6779
|
+
},
|
|
6780
|
+
"additionalProperties": false
|
|
6781
|
+
},
|
|
6782
|
+
"script": {
|
|
6783
|
+
"type": "object",
|
|
6784
|
+
"properties": {
|
|
6785
|
+
"name": {
|
|
6786
|
+
"type": "string"
|
|
6787
|
+
},
|
|
6788
|
+
"props": {
|
|
6789
|
+
"type": "object"
|
|
6790
|
+
}
|
|
6791
|
+
},
|
|
6792
|
+
"required": ["name"]
|
|
6793
|
+
},
|
|
6794
|
+
"network": {
|
|
6795
|
+
"type": "object"
|
|
6796
|
+
},
|
|
6797
|
+
"children": {
|
|
6798
|
+
"type": "array",
|
|
6799
|
+
"items": {
|
|
6800
|
+
"$ref": "#/$defs/node"
|
|
6801
|
+
}
|
|
6802
|
+
}
|
|
6803
|
+
},
|
|
6804
|
+
"required": ["name", "type"]
|
|
6694
6805
|
}
|
|
6695
6806
|
}
|
|
6696
6807
|
}
|
|
@@ -789,6 +789,44 @@ Swimming down is a different optical world, and the engine renders it as one:
|
|
|
789
789
|
"caustics": { "intensity": 0.6 } } } }
|
|
790
790
|
```
|
|
791
791
|
|
|
792
|
+
### `WaterCutout3D` — the thing that holds the water back
|
|
793
|
+
|
|
794
|
+
Water is ONE surface; it has no idea a boat has an inside. Float an open hull
|
|
795
|
+
and every crest that rises above its floor renders as sea sloshing through the
|
|
796
|
+
deck. Freeboard cannot promise otherwise — a big enough swell always wins for a
|
|
797
|
+
frame. So name the geometry that keeps the water out:
|
|
798
|
+
|
|
799
|
+
```json
|
|
800
|
+
{ "name": "Rowboat", "type": "RigidBody3D",
|
|
801
|
+
"script": { "name": "Buoyancy", "props": { "draft": 0.2 } },
|
|
802
|
+
"children": [
|
|
803
|
+
{ "name": "DryInside", "type": "WaterCutout3D",
|
|
804
|
+
"props": { "size": [2.55, 1.2, 0.95], "position": [-0.1, 0.4, 0] } },
|
|
805
|
+
… hull, seats, oars …
|
|
806
|
+
] }
|
|
807
|
+
```
|
|
808
|
+
|
|
809
|
+
It MUST be a CHILD of what it belongs to — a hull, a diving bell, a well under a
|
|
810
|
+
dock, a cave mouth. That parent is the mechanism, not a convenience: the water
|
|
811
|
+
re-draws it (the part inside the box) into the depth pre-pass at the near plane,
|
|
812
|
+
and then hides itself behind it exactly as it hides behind any solid thing. At
|
|
813
|
+
the scene root a cutout has nothing to stand in for, and the loader says so.
|
|
814
|
+
|
|
815
|
+
| prop | default | meaning |
|
|
816
|
+
|---|---|---|
|
|
817
|
+
| `size` | `[2, 1, 1]` | box extent in meters, centered on the node — which PART of the parent holds water back |
|
|
818
|
+
| `enabled` | `true` | live toggle — a scuttled hull can start letting the sea in |
|
|
819
|
+
|
|
820
|
+
**A cutout cannot punch a hole in open water**, because nothing is ever cut out
|
|
821
|
+
of the water. The mask is the parent's own silhouette, so water can only be
|
|
822
|
+
hidden behind geometry the player is already looking at. Overshoot the box and
|
|
823
|
+
more of that hull holds water back; undershoot and water stands in the bow. Size
|
|
824
|
+
it to the interior and err large.
|
|
825
|
+
|
|
826
|
+
Needs the depth pre-pass, so `"quality": "fancy"` (the default). Four cutouts per
|
|
827
|
+
water surface; each costs one extra draw of its parent in that pass. Skinned and
|
|
828
|
+
instanced meshes re-draw at their rest pose — hang cutouts on ordinary geometry.
|
|
829
|
+
|
|
792
830
|
### Where water meets ground
|
|
793
831
|
|
|
794
832
|
The waterline is the thing that gives game water away. Incanto fades it in
|
|
@@ -996,6 +996,20 @@ Signals: `blocksChanged`
|
|
|
996
996
|
|
|
997
997
|
Signals: `entered(body)` · `exited(body)`
|
|
998
998
|
|
|
999
|
+
## `WaterCutout3D` — `incanto/3d`
|
|
1000
|
+
|
|
1001
|
+
| Prop | Default | Kind |
|
|
1002
|
+
|---|---|---|
|
|
1003
|
+
| `position` | `[0,0,0]` | array |
|
|
1004
|
+
| `rotation` | `[0,0,0]` | array |
|
|
1005
|
+
| `static` | `false` | boolean |
|
|
1006
|
+
| `scale` | `[1,1,1]` | array |
|
|
1007
|
+
| `visible` | `true` | boolean |
|
|
1008
|
+
| `renderOrder` | `0` | number |
|
|
1009
|
+
| `orderGroup` | `"default"` | one of: `background` `terrain` `default` `characters` `effects` `overlay` |
|
|
1010
|
+
| `size` | `[2,1,1]` | array |
|
|
1011
|
+
| `enabled` | `true` | boolean |
|
|
1012
|
+
|
|
999
1013
|
## Gameplay behaviors — `incanto/gameplay`
|
|
1000
1014
|
|
|
1001
1015
|
Ready-made `Behavior`s auto-registered by `createGame2D`/`createGame3D` (opt out
|