incanto 0.7.1 → 0.9.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/bin/incanto-check.mjs +6 -4
- package/dist/2d.d.ts +91 -3
- package/dist/2d.js +4 -4
- package/dist/3d.d.ts +43 -4
- package/dist/3d.js +4 -4
- package/dist/{audio-player-C3bH_eZ5.d.ts → audio-player-Dyjg5k92.d.ts} +1 -1
- package/dist/audit-C6rMyict.js +58 -0
- package/dist/{behavior-q3cejJgs.d.ts → behavior-Bod1AyJS.d.ts} +31 -1
- package/dist/{create-game-rFulaS3s.js → create-game-Bydey3CZ.js} +4 -5
- package/dist/{create-game-DuDkqnjl.js → create-game-C7Zsqbko.js} +4 -5
- package/dist/debug.d.ts +1 -1
- package/dist/{errors-BMFaY68Q.d.ts → errors-1dXlIwoR.d.ts} +7 -1
- package/dist/{gameplay-CDFgSG6z.js → gameplay-DPMgZk9W.js} +108 -1
- package/dist/gameplay.d.ts +44 -3
- package/dist/gameplay.js +2 -2
- package/dist/index.d.ts +151 -9
- package/dist/index.js +189 -4
- package/dist/{loader-DnLMMRy8.d.ts → loader-BcUDfNHn.d.ts} +1 -1
- package/dist/net.d.ts +46 -2
- package/dist/net.js +54 -2
- package/dist/particle-sim-CyUU7HVU.js +281 -0
- package/dist/{physics-2d-CZM5Y90X.js → physics-2d-DweTURFt.js} +45 -4
- package/dist/{physics-3d-DT5e8izo.js → physics-3d-Clv1uFzk.js} +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/react.js +1 -1
- package/dist/{register-Cl3pAxX-.js → register-BD6zgrv_.js} +254 -4
- package/dist/{register-C35HDZpm.js → register-Cwc-yCYx.js} +1 -1
- package/dist/{particle-sim-m3CdTGSl.js → register-DJZXxwAn.js} +1178 -278
- package/dist/{register-CpXcMiEk.js → register-iUPtts7T.js} +141 -4
- package/dist/test.d.ts +4 -10
- package/dist/test.js +11 -16
- package/editor/assets/{agent8-N4bwVH7C.js → agent8-B0ZGx-N1.js} +1 -1
- package/editor/assets/index-BLzp8moy.js +7417 -0
- package/editor/assets/{index-DF3tMeKJ.css → index-D8QvwvOm.css} +1 -1
- package/editor/index.html +2 -2
- package/package.json +1 -1
- package/schemas/scene.schema.json +427 -0
- package/skills/incanto-3d-character.md +14 -0
- package/skills/incanto-audio.md +23 -0
- package/skills/incanto-building-2d-games.md +31 -0
- package/skills/incanto-building-3d-games.md +21 -0
- package/skills/incanto-editor.md +13 -0
- package/skills/incanto-gameplay-behaviors.md +28 -0
- package/skills/incanto-hud.md +24 -0
- package/skills/incanto-multiplayer.md +27 -0
- package/skills/incanto-node-reference.md +73 -0
- package/skills/incanto-physics-and-input.md +9 -0
- package/skills/incanto-verifying-your-game.md +31 -0
- package/dist/register-Dl_ixIJe.js +0 -834
- package/editor/assets/index-CXFNanuR.js +0 -7417
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--bg-0:#0b0d14;--bg-1:#10131d;--bg-2:#161a27;--bg-3:#1d2231;--line:#262c3e;--line-strong:#343c54;--text:#e2e6f0;--text-dim:#9aa3bd;--text-faint:#5d6680;--accent:#6ee7dc;--accent-deep:#14b8a6;--violet:#a78bfa;--amber:#fbbf24;--rose:#fb7185;--green:#86efac;--shadow:0 12px 40px #0000008c;--r-sm:6px;--r-md:10px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg-0);height:100%;color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font:13px/1.55 Inter,-apple-system,Segoe UI,system-ui,sans-serif;overflow:hidden}code,textarea,.mono{font-family:ui-monospace,SF Mono,Menlo,monospace}#topbar{background:linear-gradient(to bottom, var(--bg-2), var(--bg-1));border-bottom:1px solid var(--line);align-items:center;gap:10px;height:46px;padding:0 14px;display:flex}.brand{align-items:baseline;gap:7px;margin-right:6px;display:flex}.brand-mark{background:linear-gradient(135deg, var(--accent), var(--accent-deep));color:#07211d;border-radius:6px;align-self:center;place-items:center;width:22px;height:22px;font-size:11px;font-weight:800;display:inline-grid}.brand strong{letter-spacing:.2px;font-weight:700}.brand-sub{color:var(--text-faint);font-size:12px}#file-chip{border:1px solid var(--line);background:var(--bg-1);color:var(--text-dim);border-radius:999px;align-items:center;gap:6px;max-width:320px;padding:4px 10px;font-size:12px;display:flex}#file-path{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pill{background:var(--bg-3);color:var(--text-faint);border-radius:999px;padding:2px 9px;font-family:ui-monospace,Menlo,monospace;font-size:11px}.spacer{flex:1}button{font:inherit;border-radius:var(--r-sm);color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:6px;padding:6px 12px;font-size:12.5px;font-weight:600;transition:background .12s,border-color .12s,color .12s,opacity .12s;display:inline-flex}button:disabled{opacity:.35;cursor:default}button.ghost{border-color:var(--line);background:var(--bg-1);color:var(--text-dim)}button.ghost:not(:disabled):hover{border-color:var(--line-strong);color:var(--text)}button.ghost.danger:not(:disabled):hover{border-color:var(--rose);color:var(--rose)}button.primary{background:linear-gradient(135deg, var(--accent), var(--accent-deep));color:#06201c}button.primary:not(:disabled):hover{filter:brightness(1.1)}button.play{border-color:var(--green);color:var(--green);background:#86efac14}button.play:not(:disabled):hover{background:#86efac29}button.play.stop{border-color:var(--rose);color:var(--rose);background:#fb71851a}input,select,textarea{font:inherit;color:var(--text);background:var(--bg-0);border:1px solid var(--line);border-radius:var(--r-sm);min-width:0;padding:6px 9px;font-size:12.5px;transition:border-color .12s}select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239aa3bd' stroke-width='2.4'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 9px center;background-repeat:no-repeat;background-size:12px;padding-right:30px}input:focus,select:focus,textarea:focus{border-color:var(--accent-deep);outline:none}textarea{resize:vertical;font-size:12px;line-height:1.5}textarea.invalid{border-color:var(--rose);background:#fb71850d}#error-banner{color:var(--rose);white-space:pre-wrap;background:#fb71851a;border-bottom:1px solid #fb718559;max-height:110px;padding:8px 14px;font-family:ui-monospace,Menlo,monospace;font-size:12px;overflow:auto}#play-notice{color:var(--green);background:#86efac14;border-bottom:1px solid #86efac40;padding:7px 14px;font-size:12px}main{height:calc(100% - 46px);display:flex}#tree-pane{background:var(--bg-1);border-right:1px solid var(--line);flex-direction:column;width:256px;display:flex}#inspector-pane{background:var(--bg-1);border-left:1px solid var(--line);width:336px;overflow-y:auto}#viewport-pane{background:radial-gradient(1200px 500px at 50% -10%, #6ee7dc0d, transparent), var(--bg-0);flex:1;position:relative;overflow:hidden}#viewport,#overlay,#play-canvas{width:100%;height:100%;position:absolute;inset:0}#overlay{cursor:crosshair}#play-canvas{z-index:3}#hints-dock{z-index:4;align-items:center;gap:8px;display:flex;position:absolute;bottom:12px;right:16px}#hints-toggle{border:1px solid var(--line-strong);width:40px;height:40px;color:var(--text-dim);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#10131de0;border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}#hints-toggle:hover{color:var(--accent);border-color:var(--accent-deep)}#hints-dock.open #hints-toggle{color:var(--accent)}.hints{opacity:0;white-space:nowrap;max-width:0;color:var(--text-faint);pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#10131dd9;border:1px solid #0000;border-radius:999px;gap:14px;padding:5px 0;font-size:11px;transition:max-width .22s,opacity .18s,padding .22s;display:flex;overflow:hidden}.hints b{color:var(--text-dim);font-weight:600}.pane-title{letter-spacing:1.6px;text-transform:uppercase;color:var(--text-faint);border-bottom:1px solid var(--line);padding:9px 14px 7px;font-size:10.5px;font-weight:700}#tree{flex:1;padding:8px;overflow-y:auto}.tree-row{border-radius:var(--r-sm);cursor:pointer;white-space:nowrap;color:var(--text-dim);border:1px solid #0000;align-items:center;gap:6px;padding:3px 8px 3px 4px;display:flex;position:relative;overflow:hidden}.chevron{align-items:center;transition:transform .12s;display:inline-flex}.chevron.collapsed{transform:rotate(-90deg)}.chevron-legacy{text-align:center;width:14px;color:var(--text-faint);cursor:pointer;-webkit-user-select:none;user-select:none;flex:none;font-size:9px}.chevron.leaf{cursor:default;opacity:.35}.chevron:not(.leaf):hover{color:var(--accent)}.tree-children{border-left:1px solid var(--line);margin-left:11px;padding-left:8px}.tree-row.dragging{opacity:.4}.tree-row.drop-into{border-color:var(--accent);background:#6ee7dc24}.tree-row.drop-before:before,.tree-row.drop-after:after{content:"";background:var(--accent);border-radius:2px;height:2px;position:absolute;left:4px;right:4px}.tree-row.drop-before:before{top:-1px}.tree-row.drop-after:after{bottom:-1px}.tree-row:hover{background:var(--bg-2);color:var(--text)}.tree-row.selected{color:var(--accent);background:#6ee7dc1a;border-color:#6ee7dc4d}.tree-name{text-overflow:ellipsis;overflow:hidden}.tree-icon{cursor:help;border-radius:4px;flex:none;place-items:center;width:17px;height:17px;display:inline-grid}.tree-icon:hover{background:var(--bg-3)}.cat-core{color:var(--violet);background:#a78bfa26}.cat-2d{color:var(--accent);background:#6ee7dc1f}.cat-3d{color:var(--amber);background:#fbbf241f}.cat-body{color:var(--green);background:#86efac1f}.cat-net{color:var(--rose);background:#fb71851f}.scene-row{color:var(--text-faint);margin-bottom:6px}.scene-row.selected{color:var(--accent)}#tree-actions{border-top:1px solid var(--line);gap:7px;padding:10px;display:flex}#add-type{flex:1}#inspector{padding:12px 14px 40px}.section-title{letter-spacing:1.4px;text-transform:uppercase;color:var(--accent);align-items:center;gap:7px;margin:16px 0 8px;font-size:11px;font-weight:700;display:flex}.section-title:first-child{margin-top:2px}.section-title .rule{background:var(--line);flex:1;height:1px}.field{grid-template-columns:92px 1fr;align-items:center;gap:8px;margin-bottom:7px;display:grid}.field>span{color:var(--text-dim);text-overflow:ellipsis;align-items:center;gap:5px;font-size:11.5px;display:flex;overflow:hidden}.field.wide{grid-template-columns:1fr}.field.wide>span{margin-bottom:2px}.vector-row{gap:6px;display:flex}.vector-row input{width:100%}.help-btn{border:1px solid var(--line-strong);width:15px;height:15px;color:var(--text-faint);border-radius:50%;flex:none;justify-content:center;padding:0;font-size:10px;font-weight:700}.help-btn:hover{border-color:var(--accent);color:var(--accent)}.chips{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg-0);cursor:text;flex-wrap:wrap;gap:5px;padding:5px 7px;display:flex}.chip{color:var(--accent);background:#6ee7dc1f;border-radius:999px;align-items:center;gap:4px;padding:1px 8px;font-size:11.5px;display:inline-flex}.chip button{color:inherit;opacity:.7;padding:0;font-size:12px}.chips input{background:0 0;border:none;flex:1;min-width:70px;padding:2px}.chips input:focus{outline:none}.subcard{border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg-2);margin-bottom:10px;padding:10px}.subcard .field{grid-template-columns:78px 1fr}.subcard-head{color:var(--text-dim);align-items:center;gap:7px;margin-bottom:8px;font-size:11.5px;font-weight:600;display:flex}.subcard-head .spacer{flex:1}.linklike{color:var(--accent);padding:2px 6px;font-size:11px;font-weight:600}.linklike:hover{text-decoration:underline}.muted-note{color:var(--text-faint);margin:-2px 0 8px;font-size:11px}.asset-control{align-items:stretch;gap:6px;display:flex}.asset-control input{flex:1;min-width:0}.asset-toggle{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg-1);width:26px;color:var(--text-dim);flex:none;font-size:11px}.asset-toggle:hover{border-color:var(--accent);color:var(--accent)}.asset-panel{border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--bg-0);margin-top:6px;padding:6px}.asset-search{width:100%;margin-bottom:6px}.asset-options{flex-direction:column;gap:3px;max-height:220px;display:flex;overflow-y:auto}button.asset-option{text-align:left;border-radius:var(--r-sm);background:var(--bg-2);color:var(--text);border:1px solid #0000;flex-direction:column;align-items:flex-start;gap:1px;width:100%;padding:5px 8px;display:flex}button.asset-option:hover{border-color:var(--accent);background:var(--bg-3)}button.asset-option strong{font-size:11.5px;font-weight:600}button.asset-option small{color:var(--text-faint);white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:10px;overflow:hidden}.asset-empty{color:var(--text-faint);padding:4px 8px;font-size:11px}.asset-note{margin-top:5px}.varieties{cursor:default}.variety-opt{color:var(--text-dim);cursor:pointer;align-items:center;gap:5px;font-size:11.5px;display:inline-flex}.variety-opt input[type=checkbox]{width:auto}#popover{z-index:50;background:var(--bg-3);border:1px solid var(--line-strong);border-radius:var(--r-md);width:300px;box-shadow:var(--shadow);color:var(--text-dim);padding:12px 14px;font-size:12px;position:fixed}#popover h4{color:var(--text);margin:0 0 6px;font-size:12.5px}#popover code{background:var(--bg-0);color:var(--accent);border-radius:4px;padding:1px 5px;font-size:11px}#popover pre{background:var(--bg-0);border-radius:var(--r-sm);color:var(--text-dim);margin:8px 0 0;padding:8px 10px;font-size:11px;line-height:1.5;overflow-x:auto}#popover .pop-actions{justify-content:flex-end;margin-top:8px;display:flex}#picker{z-index:40;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#07090ec7;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#picker[hidden]{display:none}#picker-card{background:var(--bg-2);border:1px solid var(--line-strong);width:460px;max-height:72vh;box-shadow:var(--shadow);border-radius:14px;flex-direction:column;display:flex;overflow:hidden}#picker-list{flex:1;padding:10px;overflow-y:auto}#picker-list .tree-row{padding:9px 12px;font-family:ui-monospace,Menlo,monospace;font-size:12.5px}#picker-new{border-top:1px solid var(--line);gap:8px;padding:12px;display:flex}#picker-path{flex:1;font-family:ui-monospace,Menlo,monospace}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--line-strong);border:2px solid var(--bg-1);border-radius:99px}::-webkit-scrollbar-track{background:0 0}body.playing #tree-pane,body.playing #inspector-pane{pointer-events:none;opacity:.45;filter:saturate(.6);transition:opacity .2s}.rename-input{flex:1;min-width:0;padding:1px 6px;font-size:12.5px}.balloon{z-index:60;background:var(--bg-3);border:1px solid var(--line-strong);border-radius:var(--r-md);max-width:230px;box-shadow:var(--shadow);color:var(--text-dim);flex-direction:column;gap:2px;padding:8px 11px;font-size:11.5px;display:flex;position:fixed}.balloon .balloon-title{color:var(--accent);font-size:12px;font-weight:700}.context-menu{z-index:60;background:var(--bg-3);border:1px solid var(--line-strong);border-radius:var(--r-md);min-width:190px;box-shadow:var(--shadow);flex-direction:column;padding:5px;display:flex;position:fixed}.menu-item{border-radius:var(--r-sm);color:var(--text);justify-content:space-between;padding:6px 10px;font-weight:500}.menu-item:not(:disabled):hover{background:var(--bg-2)}.menu-item.danger:not(:disabled):hover{color:var(--rose)}.menu-item kbd{color:var(--text-faint);font-family:inherit;font-size:10px}.menu-divider{background:var(--line);height:1px;margin:4px 6px}.hints[hidden]{display:none}#hints-dock.open .hints:not([hidden]){opacity:1;border-color:var(--line);max-width:1100px;padding:5px 14px}body.playing #hints-dock{display:none}#gameview-btn{z-index:4;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#10131dcc;padding:4px 10px;font-size:11.5px;position:absolute;top:104px;right:18px}.field input[type=checkbox]{width:15px;height:15px;accent-color:var(--accent-deep);cursor:pointer;justify-self:start}.picker-title{justify-content:space-between;align-items:center;display:flex}#picker-close{color:var(--text-faint);background:0 0;border:none;padding:0 4px;font-size:12px}#picker-close:hover{color:var(--text)}.uid-row{gap:6px;display:flex}.uid-row input{flex:1;min-width:0;font-size:11.5px}.uid-row .ghost{padding:4px 8px}#confirm{z-index:70;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#07090ec7;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#confirm[hidden]{display:none}#confirm-card{background:var(--bg-2);border:1px solid var(--line-strong);width:480px;max-height:70vh;box-shadow:var(--shadow);border-radius:14px;flex-direction:column;display:flex;overflow:hidden}#confirm-body{color:var(--text-dim);padding:14px;font-size:12.5px;overflow-y:auto}#confirm-list:empty{display:none}#confirm-list{background:var(--bg-0);border-radius:var(--r-sm);flex-direction:column;gap:4px;margin:10px 0 0;padding:10px 12px;font-family:ui-monospace,Menlo,monospace;font-size:11.5px;display:flex}#confirm-actions{border-top:1px solid var(--line);justify-content:flex-end;gap:8px;padding:12px 14px;display:flex}#confirm-delete{border-color:var(--rose);color:var(--rose);background:#fb718514}#confirm-delete:hover{background:#fb718529}.color-row{align-items:center;gap:6px;display:flex}.color-row input[type=color]{cursor:pointer;width:30px;height:26px;padding:2px}.color-row input[type=text]{flex:1;min-width:0;font-size:11.5px}.slider-row{align-items:center;gap:8px;display:flex}.slider-row input[type=range]{accent-color:var(--accent-deep);background:0 0;border:none;flex:1;padding:0}.slider-row input[type=number]{width:64px}.asset-row{border-radius:var(--r-sm);cursor:pointer;align-items:center;gap:7px;padding:5px 8px;display:flex}.asset-row:hover,.asset-row.open{background:var(--bg-3)}.asset-key{color:var(--accent)}.asset-url{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-faint);flex:1;font-family:ui-monospace,Menlo,monospace;font-size:11px;overflow:hidden}.danger-link{color:var(--text-faint)}.danger-link:hover{color:var(--rose)}.asset-editor{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg-0);flex-direction:column;gap:4px;margin:2px 0 10px;padding:10px;display:flex}.asset-editor .field{grid-template-columns:52px 1fr;margin-bottom:4px}.meta-row{grid-template-columns:1fr 1fr 24px;align-items:center;gap:6px;display:grid}.meta-row input{padding:4px 7px;font-size:11.5px}#docs{z-index:60;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#07090ecc;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#docs[hidden]{display:none}#docs-card{background:var(--bg-2);border:1px solid var(--line-strong);width:min(920px,92vw);height:min(680px,88vh);box-shadow:var(--shadow);border-radius:14px;flex-direction:column;display:flex;overflow:hidden}#docs-layout{flex:1;min-height:0;display:flex}#docs-tabs{border-right:1px solid var(--line);flex-direction:column;gap:4px;width:168px;padding:10px;display:flex}.docs-tab{border-radius:var(--r-sm);color:var(--text-dim);justify-content:flex-start;padding:7px 12px;font-weight:500}.docs-tab:hover{background:var(--bg-3);color:var(--text)}.docs-tab.active{color:var(--accent);background:#6ee7dc1a;font-weight:700}#docs-body{flex:1;padding:18px 24px 40px;overflow-y:auto}#docs-body h2{margin:0 0 6px;font-size:18px}#docs-body h3{color:var(--accent);margin:18px 0 4px;font-size:13.5px}#docs-body p{color:var(--text-dim);margin:4px 0 10px;font-size:13px;line-height:1.7}.docs-intro{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-md);padding:10px 14px}.docs-node{border:1px solid var(--line);border-radius:var(--r-md);margin-bottom:8px;overflow:hidden}.docs-node.open{border-color:var(--line-strong)}.docs-node-head{text-align:left;border-radius:0;align-items:center;gap:9px;width:100%;padding:9px 12px;display:flex}.docs-node-head:hover{background:var(--bg-3)}.docs-node-head strong{font-size:13px}.docs-summary{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:400;overflow:hidden}.docs-detail{border-top:1px solid var(--line);background:var(--bg-1);padding:4px 14px 12px}.docs-props{border-collapse:collapse;width:100%;margin-top:8px;font-size:11.5px}.docs-props th{text-align:left;color:var(--text-faint);border-bottom:1px solid var(--line);padding:4px 8px;font-weight:600}.docs-props td{border-bottom:1px solid var(--line);color:var(--text-dim);padding:3px 8px}#mode-toolbar{z-index:4;border-radius:var(--r-md);border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#10131dd9;gap:4px;padding:4px;display:flex;position:absolute;top:12px;left:12px}.tool{border-radius:var(--r-sm);width:30px;height:28px;color:var(--text-faint);justify-content:center;padding:0}.tool:hover{color:var(--text);background:var(--bg-3)}.tool.active{color:var(--accent);background:#6ee7dc24}.lang-menu{min-width:130px}.lang-check{color:var(--accent);font-weight:700}.explorer-section{border-top:1px solid var(--line);justify-content:space-between;align-items:center;margin-top:4px;display:flex}.explorer-section .ghost{padding:1px 8px}#asset-tree{max-height:30%;padding:2px 8px 10px;overflow-y:auto}.explorer-empty{padding:4px 10px;font-size:11px}.asset-row .asset-key{color:var(--accent);font-family:ui-monospace,Menlo,monospace}.asset-icon-texture{color:#f0abfc}.asset-icon-spritesheet{color:#fbbf24}.asset-icon-model{color:#7aa2ff}.asset-icon-animation{color:#86efac}.uid-value{align-items:center;gap:7px;min-width:0;display:flex}.uid-value code{color:var(--text-dim);letter-spacing:.3px;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,Menlo,monospace;font-size:11px;overflow:hidden}.uid-copy{border-radius:var(--r-sm);color:var(--text-faint);background:0 0;border:none;padding:3px 5px;line-height:0}.uid-copy:hover{color:var(--text);background:var(--bg-3)}.uid-copy.copied{color:var(--accent);font-size:10px;line-height:1}.section-toggle{box-sizing:border-box;text-align:left;cursor:pointer;background:var(--bg-1);border:none;border-top:1px solid var(--line-strong);border-bottom:1px solid var(--line);border-radius:0;justify-content:flex-start;align-items:center;gap:6px;width:100%;height:30px;padding-top:0;padding-bottom:0;display:flex}.section-toggle:hover{color:var(--text)}.section-toggle .chev{color:var(--text-dim);transition:transform .12s;display:inline-flex}.section-toggle.collapsed .chev{transform:rotate(-90deg)}.section-add{min-width:24px;height:20px;color:var(--text-dim);border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--bg-2);justify-content:center;align-items:center;padding:0 6px;font-size:13px;display:inline-flex}.section-add:hover{background:var(--bg-3);color:var(--accent);border-color:var(--accent-deep)}[data-body][hidden],aside#tree-pane #scene-body[hidden]{display:none}#scene-body{flex-direction:column;flex:1;min-height:0;display:flex}.asset-folder{color:var(--text-dim);cursor:pointer;border-radius:var(--r-sm);align-items:center;gap:6px;padding:4px 8px;display:flex}.asset-folder:hover{background:var(--bg-3)}.asset-folder .chev{color:var(--text-dim);transition:transform .12s;display:inline-flex}.asset-folder.collapsed .chev{transform:rotate(-90deg)}.asset-folder svg{color:#e7c66a}.asset-row.grouped{margin-left:18px}.asset-folder .count{color:var(--text-faint);margin-left:auto;font-size:10.5px}.asset-folder.selected{color:var(--accent);background:#6ee7dc14}.asset-folder.drop-target,#asset-tree.drop-target{outline:1.5px dashed var(--accent);outline-offset:-2px;border-radius:var(--r-sm)}.asset-row[draggable=true]{cursor:grab}body.playing #mode-toolbar,body.playing #gameview-btn{display:none}.tool-divider{background:var(--line);align-self:center;width:1px;height:18px;margin:0 2px}#generate{z-index:70;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#07090ec7;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#generate[hidden]{display:none}#generate-card{background:var(--bg-2);border:1px solid var(--line-strong);width:420px;max-height:78vh;box-shadow:var(--shadow);border-radius:14px;flex-direction:column;display:flex;overflow:hidden}#generate-body{padding:14px;overflow-y:auto}#generate-body .gen-hint{color:var(--text-faint);margin:0 0 12px;font-size:11.5px}#generate-body .gen-desc{color:var(--text-dim);margin:2px 0 12px;font-size:11.5px}#generate-params{border-top:1px solid var(--line);padding-top:2px}#generate-params .field:first-child{margin-top:10px}.gen-seed-row{gap:6px;display:flex}.gen-seed-row input{flex:1;min-width:0}.gen-seed-row .ghost{padding:4px 9px}#generate-actions{border-top:1px solid var(--line);justify-content:flex-end;align-items:center;gap:8px;padding:12px 14px;display:flex}#generate-status{color:var(--rose);margin-right:auto;font-size:11px}.const-picker{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg-1);width:30px;color:var(--text-dim);flex:none;margin-left:6px;font-size:11px}.const-picker:hover{border-color:var(--accent);color:var(--accent)}.field.const-bound>span{color:var(--accent)}.const-row{align-items:stretch;gap:6px;display:flex}.const-row .field{flex:1;min-width:0}.const-del{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg-1);width:26px;color:var(--text-dim);flex:none;font-size:11px}.const-del:hover{border-color:var(--rose);color:var(--rose)}.const-add{align-items:stretch;gap:6px;margin-top:6px;display:flex}.const-add input{flex:1;min-width:0}
|
|
1
|
+
:root{--bg-0:#0b0d14;--bg-1:#10131d;--bg-2:#161a27;--bg-3:#1d2231;--line:#262c3e;--line-strong:#343c54;--text:#e2e6f0;--text-dim:#9aa3bd;--text-faint:#5d6680;--accent:#6ee7dc;--accent-deep:#14b8a6;--violet:#a78bfa;--amber:#fbbf24;--rose:#fb7185;--green:#86efac;--shadow:0 12px 40px #0000008c;--r-sm:6px;--r-md:10px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg-0);height:100%;color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font:13px/1.55 Inter,-apple-system,Segoe UI,system-ui,sans-serif;overflow:hidden}code,textarea,.mono{font-family:ui-monospace,SF Mono,Menlo,monospace}#topbar{background:linear-gradient(to bottom, var(--bg-2), var(--bg-1));border-bottom:1px solid var(--line);align-items:center;gap:10px;height:46px;padding:0 14px;display:flex}.brand{align-items:baseline;gap:7px;margin-right:6px;display:flex}.brand-mark{background:linear-gradient(135deg, var(--accent), var(--accent-deep));color:#07211d;border-radius:6px;align-self:center;place-items:center;width:22px;height:22px;font-size:11px;font-weight:800;display:inline-grid}.brand strong{letter-spacing:.2px;font-weight:700}.brand-sub{color:var(--text-faint);font-size:12px}#file-chip{border:1px solid var(--line);background:var(--bg-1);color:var(--text-dim);border-radius:999px;align-items:center;gap:6px;max-width:320px;padding:4px 10px;font-size:12px;display:flex}#file-path{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pill{background:var(--bg-3);color:var(--text-faint);border-radius:999px;padding:2px 9px;font-family:ui-monospace,Menlo,monospace;font-size:11px}.spacer{flex:1}button{font:inherit;border-radius:var(--r-sm);color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:6px;padding:6px 12px;font-size:12.5px;font-weight:600;transition:background .12s,border-color .12s,color .12s,opacity .12s;display:inline-flex}button:disabled{opacity:.35;cursor:default}button.ghost{border-color:var(--line);background:var(--bg-1);color:var(--text-dim)}button.ghost:not(:disabled):hover{border-color:var(--line-strong);color:var(--text)}button.ghost.danger:not(:disabled):hover{border-color:var(--rose);color:var(--rose)}button.primary{background:linear-gradient(135deg, var(--accent), var(--accent-deep));color:#06201c}button.primary:not(:disabled):hover{filter:brightness(1.1)}button.play{border-color:var(--green);color:var(--green);background:#86efac14}button.play:not(:disabled):hover{background:#86efac29}button.play.stop{border-color:var(--rose);color:var(--rose);background:#fb71851a}input,select,textarea{font:inherit;color:var(--text);background:var(--bg-0);border:1px solid var(--line);border-radius:var(--r-sm);min-width:0;padding:6px 9px;font-size:12.5px;transition:border-color .12s}select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239aa3bd' stroke-width='2.4'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 9px center;background-repeat:no-repeat;background-size:12px;padding-right:30px}input:focus,select:focus,textarea:focus{border-color:var(--accent-deep);outline:none}textarea{resize:vertical;font-size:12px;line-height:1.5}textarea.invalid{border-color:var(--rose);background:#fb71850d}#error-banner{color:var(--rose);white-space:pre-wrap;background:#fb71851a;border-bottom:1px solid #fb718559;max-height:110px;padding:8px 14px;font-family:ui-monospace,Menlo,monospace;font-size:12px;overflow:auto}#play-notice{color:var(--green);background:#86efac14;border-bottom:1px solid #86efac40;padding:7px 14px;font-size:12px}main{height:calc(100% - 46px);display:flex}#tree-pane{background:var(--bg-1);border-right:1px solid var(--line);flex-direction:column;width:256px;display:flex}#inspector-pane{background:var(--bg-1);border-left:1px solid var(--line);width:336px;overflow-y:auto}#viewport-pane{background:radial-gradient(1200px 500px at 50% -10%, #6ee7dc0d, transparent), var(--bg-0);flex:1;position:relative;overflow:hidden}#viewport,#overlay,#play-canvas{width:100%;height:100%;position:absolute;inset:0}#overlay{cursor:crosshair}#play-canvas{z-index:3}#hints-dock{z-index:4;align-items:center;gap:8px;display:flex;position:absolute;bottom:12px;right:16px}#hints-toggle{border:1px solid var(--line-strong);width:40px;height:40px;color:var(--text-dim);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#10131de0;border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}#hints-toggle:hover{color:var(--accent);border-color:var(--accent-deep)}#hints-dock.open #hints-toggle{color:var(--accent)}.hints{opacity:0;white-space:nowrap;max-width:0;color:var(--text-faint);pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#10131dd9;border:1px solid #0000;border-radius:999px;gap:14px;padding:5px 0;font-size:11px;transition:max-width .22s,opacity .18s,padding .22s;display:flex;overflow:hidden}.hints b{color:var(--text-dim);font-weight:600}.pane-title{letter-spacing:1.6px;text-transform:uppercase;color:var(--text-faint);border-bottom:1px solid var(--line);padding:9px 14px 7px;font-size:10.5px;font-weight:700}#tree{flex:1;padding:8px;overflow-y:auto}.tree-row{border-radius:var(--r-sm);cursor:pointer;white-space:nowrap;color:var(--text-dim);border:1px solid #0000;align-items:center;gap:6px;padding:3px 8px 3px 4px;display:flex;position:relative;overflow:hidden}.chevron{align-items:center;transition:transform .12s;display:inline-flex}.chevron.collapsed{transform:rotate(-90deg)}.chevron-legacy{text-align:center;width:14px;color:var(--text-faint);cursor:pointer;-webkit-user-select:none;user-select:none;flex:none;font-size:9px}.chevron.leaf{cursor:default;opacity:.35}.chevron:not(.leaf):hover{color:var(--accent)}.tree-children{border-left:1px solid var(--line);margin-left:11px;padding-left:8px}.tree-row.dragging{opacity:.4}.tree-row.drop-into{border-color:var(--accent);background:#6ee7dc24}.tree-row.drop-before:before,.tree-row.drop-after:after{content:"";background:var(--accent);border-radius:2px;height:2px;position:absolute;left:4px;right:4px}.tree-row.drop-before:before{top:-1px}.tree-row.drop-after:after{bottom:-1px}.tree-row:hover{background:var(--bg-2);color:var(--text)}.tree-row.selected{color:var(--accent);background:#6ee7dc1a;border-color:#6ee7dc4d}.tree-name{text-overflow:ellipsis;overflow:hidden}.tree-icon{cursor:help;border-radius:4px;flex:none;place-items:center;width:17px;height:17px;display:inline-grid}.tree-icon:hover{background:var(--bg-3)}.cat-core{color:var(--violet);background:#a78bfa26}.cat-2d{color:var(--accent);background:#6ee7dc1f}.cat-3d{color:var(--amber);background:#fbbf241f}.cat-body{color:var(--green);background:#86efac1f}.cat-net{color:var(--rose);background:#fb71851f}.scene-row{color:var(--text-faint);margin-bottom:6px}.scene-row.selected{color:var(--accent)}#tree-actions{border-top:1px solid var(--line);gap:7px;padding:10px;display:flex}#add-type{flex:1}#inspector{padding:12px 14px 40px}.section-title{letter-spacing:1.4px;text-transform:uppercase;color:var(--accent);align-items:center;gap:7px;margin:16px 0 8px;font-size:11px;font-weight:700;display:flex}.section-title:first-child{margin-top:2px}.section-title .rule{background:var(--line);flex:1;height:1px}.field{grid-template-columns:92px 1fr;align-items:center;gap:8px;margin-bottom:7px;display:grid}.field>span{color:var(--text-dim);text-overflow:ellipsis;align-items:center;gap:5px;font-size:11.5px;display:flex;overflow:hidden}.field.wide{grid-template-columns:1fr}.field.wide>span{margin-bottom:2px}.vector-row{gap:6px;display:flex}.vector-row input{width:100%}.help-btn{border:1px solid var(--line-strong);width:15px;height:15px;color:var(--text-faint);border-radius:50%;flex:none;justify-content:center;padding:0;font-size:10px;font-weight:700}.help-btn:hover{border-color:var(--accent);color:var(--accent)}.chips{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg-0);cursor:text;flex-wrap:wrap;gap:5px;padding:5px 7px;display:flex}.chip{color:var(--accent);background:#6ee7dc1f;border-radius:999px;align-items:center;gap:4px;padding:1px 8px;font-size:11.5px;display:inline-flex}.chip button{color:inherit;opacity:.7;padding:0;font-size:12px}.chips input{background:0 0;border:none;flex:1;min-width:70px;padding:2px}.chips input:focus{outline:none}.subcard{border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg-2);margin-bottom:10px;padding:10px}.subcard .field{grid-template-columns:78px 1fr}.subcard-head{color:var(--text-dim);align-items:center;gap:7px;margin-bottom:8px;font-size:11.5px;font-weight:600;display:flex}.subcard-head .spacer{flex:1}.linklike{color:var(--accent);padding:2px 6px;font-size:11px;font-weight:600}.linklike:hover{text-decoration:underline}.muted-note{color:var(--text-faint);margin:-2px 0 8px;font-size:11px}.asset-control{align-items:stretch;gap:6px;display:flex}.asset-control input{flex:1;min-width:0}.asset-toggle{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg-1);width:26px;color:var(--text-dim);flex:none;font-size:11px}.asset-toggle:hover{border-color:var(--accent);color:var(--accent)}.asset-panel{border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--bg-0);margin-top:6px;padding:6px}.asset-search{width:100%;margin-bottom:6px}.asset-options{flex-direction:column;gap:3px;max-height:220px;display:flex;overflow-y:auto}button.asset-option{text-align:left;border-radius:var(--r-sm);background:var(--bg-2);color:var(--text);border:1px solid #0000;flex-direction:column;align-items:flex-start;gap:1px;width:100%;padding:5px 8px;display:flex}button.asset-option:hover{border-color:var(--accent);background:var(--bg-3)}button.asset-option strong{font-size:11.5px;font-weight:600}button.asset-option small{color:var(--text-faint);white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:10px;overflow:hidden}.asset-empty{color:var(--text-faint);padding:4px 8px;font-size:11px}.asset-note{margin-top:5px}.varieties{cursor:default}.variety-opt{color:var(--text-dim);cursor:pointer;align-items:center;gap:5px;font-size:11.5px;display:inline-flex}.variety-opt input[type=checkbox]{width:auto}#popover{z-index:50;background:var(--bg-3);border:1px solid var(--line-strong);border-radius:var(--r-md);width:300px;box-shadow:var(--shadow);color:var(--text-dim);padding:12px 14px;font-size:12px;position:fixed}#popover h4{color:var(--text);margin:0 0 6px;font-size:12.5px}#popover code{background:var(--bg-0);color:var(--accent);border-radius:4px;padding:1px 5px;font-size:11px}#popover pre{background:var(--bg-0);border-radius:var(--r-sm);color:var(--text-dim);margin:8px 0 0;padding:8px 10px;font-size:11px;line-height:1.5;overflow-x:auto}#popover .pop-actions{justify-content:flex-end;margin-top:8px;display:flex}#picker{z-index:40;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#07090ec7;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#picker[hidden]{display:none}#picker-card{background:var(--bg-2);border:1px solid var(--line-strong);width:460px;max-height:72vh;box-shadow:var(--shadow);border-radius:14px;flex-direction:column;display:flex;overflow:hidden}#picker-list{flex:1;padding:10px;overflow-y:auto}#picker-list .tree-row{padding:9px 12px;font-family:ui-monospace,Menlo,monospace;font-size:12.5px}#picker-new{border-top:1px solid var(--line);gap:8px;padding:12px;display:flex}#picker-path{flex:1;font-family:ui-monospace,Menlo,monospace}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--line-strong);border:2px solid var(--bg-1);border-radius:99px}::-webkit-scrollbar-track{background:0 0}body.playing #tree-pane,body.playing #inspector-pane{pointer-events:none;opacity:.45;filter:saturate(.6);transition:opacity .2s}.rename-input{flex:1;min-width:0;padding:1px 6px;font-size:12.5px}.balloon{z-index:60;background:var(--bg-3);border:1px solid var(--line-strong);border-radius:var(--r-md);max-width:230px;box-shadow:var(--shadow);color:var(--text-dim);flex-direction:column;gap:2px;padding:8px 11px;font-size:11.5px;display:flex;position:fixed}.balloon .balloon-title{color:var(--accent);font-size:12px;font-weight:700}.context-menu{z-index:60;background:var(--bg-3);border:1px solid var(--line-strong);border-radius:var(--r-md);min-width:190px;box-shadow:var(--shadow);flex-direction:column;padding:5px;display:flex;position:fixed}.menu-item{border-radius:var(--r-sm);color:var(--text);justify-content:space-between;padding:6px 10px;font-weight:500}.menu-item:not(:disabled):hover{background:var(--bg-2)}.menu-item.danger:not(:disabled):hover{color:var(--rose)}.menu-item kbd{color:var(--text-faint);font-family:inherit;font-size:10px}.menu-divider{background:var(--line);height:1px;margin:4px 6px}.hints[hidden]{display:none}#hints-dock.open .hints:not([hidden]){opacity:1;border-color:var(--line);max-width:1100px;padding:5px 14px}body.playing #hints-dock{display:none}#gameview-btn{z-index:4;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#10131dcc;padding:4px 10px;font-size:11.5px;position:absolute;top:104px;right:18px}.field input[type=checkbox]{width:15px;height:15px;accent-color:var(--accent-deep);cursor:pointer;justify-self:start}.picker-title{justify-content:space-between;align-items:center;display:flex}#picker-close{color:var(--text-faint);background:0 0;border:none;padding:0 4px;font-size:12px}#picker-close:hover{color:var(--text)}.uid-row{gap:6px;display:flex}.uid-row input{flex:1;min-width:0;font-size:11.5px}.uid-row .ghost{padding:4px 8px}#confirm{z-index:70;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#07090ec7;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#confirm[hidden]{display:none}#confirm-card{background:var(--bg-2);border:1px solid var(--line-strong);width:480px;max-height:70vh;box-shadow:var(--shadow);border-radius:14px;flex-direction:column;display:flex;overflow:hidden}#confirm-body{color:var(--text-dim);padding:14px;font-size:12.5px;overflow-y:auto}#confirm-list:empty{display:none}#confirm-list{background:var(--bg-0);border-radius:var(--r-sm);flex-direction:column;gap:4px;margin:10px 0 0;padding:10px 12px;font-family:ui-monospace,Menlo,monospace;font-size:11.5px;display:flex}#confirm-actions{border-top:1px solid var(--line);justify-content:flex-end;gap:8px;padding:12px 14px;display:flex}#confirm-delete{border-color:var(--rose);color:var(--rose);background:#fb718514}#confirm-delete:hover{background:#fb718529}.color-row{align-items:center;gap:6px;display:flex}.color-row input[type=color]{cursor:pointer;width:30px;height:26px;padding:2px}.color-row input[type=text]{flex:1;min-width:0;font-size:11.5px}.slider-row{align-items:center;gap:8px;display:flex}.slider-row input[type=range]{accent-color:var(--accent-deep);background:0 0;border:none;flex:1;padding:0}.slider-row input[type=number]{width:64px}.asset-row{border-radius:var(--r-sm);cursor:pointer;align-items:center;gap:7px;padding:5px 8px;display:flex}.asset-row:hover,.asset-row.open{background:var(--bg-3)}.asset-key{color:var(--accent)}.asset-url{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-faint);flex:1;font-family:ui-monospace,Menlo,monospace;font-size:11px;overflow:hidden}.danger-link{color:var(--text-faint)}.danger-link:hover{color:var(--rose)}.asset-editor{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg-0);flex-direction:column;gap:4px;margin:2px 0 10px;padding:10px;display:flex}.asset-editor .field{grid-template-columns:52px 1fr;margin-bottom:4px}.meta-row{grid-template-columns:1fr 1fr 24px;align-items:center;gap:6px;display:grid}.meta-row input{padding:4px 7px;font-size:11.5px}#docs{z-index:60;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#07090ecc;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#docs[hidden]{display:none}#docs-card{background:var(--bg-2);border:1px solid var(--line-strong);width:min(920px,92vw);height:min(680px,88vh);box-shadow:var(--shadow);border-radius:14px;flex-direction:column;display:flex;overflow:hidden}#docs-layout{flex:1;min-height:0;display:flex}#docs-tabs{border-right:1px solid var(--line);flex-direction:column;gap:4px;width:168px;padding:10px;display:flex}.docs-tab{border-radius:var(--r-sm);color:var(--text-dim);justify-content:flex-start;padding:7px 12px;font-weight:500}.docs-tab:hover{background:var(--bg-3);color:var(--text)}.docs-tab.active{color:var(--accent);background:#6ee7dc1a;font-weight:700}#docs-body{flex:1;padding:18px 24px 40px;overflow-y:auto}#docs-body h2{margin:0 0 6px;font-size:18px}#docs-body h3{color:var(--accent);margin:18px 0 4px;font-size:13.5px}#docs-body p{color:var(--text-dim);margin:4px 0 10px;font-size:13px;line-height:1.7}.docs-intro{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-md);padding:10px 14px}.docs-node{border:1px solid var(--line);border-radius:var(--r-md);margin-bottom:8px;overflow:hidden}.docs-node.open{border-color:var(--line-strong)}.docs-node-head{text-align:left;border-radius:0;align-items:center;gap:9px;width:100%;padding:9px 12px;display:flex}.docs-node-head:hover{background:var(--bg-3)}.docs-node-head strong{font-size:13px}.docs-summary{color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:400;overflow:hidden}.docs-detail{border-top:1px solid var(--line);background:var(--bg-1);padding:4px 14px 12px}.docs-props{border-collapse:collapse;width:100%;margin-top:8px;font-size:11.5px}.docs-props th{text-align:left;color:var(--text-faint);border-bottom:1px solid var(--line);padding:4px 8px;font-weight:600}.docs-props td{border-bottom:1px solid var(--line);color:var(--text-dim);padding:3px 8px}#mode-toolbar{z-index:4;border-radius:var(--r-md);border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#10131dd9;gap:4px;padding:4px;display:flex;position:absolute;top:12px;left:12px}.tool{border-radius:var(--r-sm);width:30px;height:28px;color:var(--text-faint);justify-content:center;padding:0}.tool:hover{color:var(--text);background:var(--bg-3)}.tool.active{color:var(--accent);background:#6ee7dc24}.lang-menu{min-width:130px}.lang-check{color:var(--accent);font-weight:700}.explorer-section{border-top:1px solid var(--line);justify-content:space-between;align-items:center;margin-top:4px;display:flex}.explorer-section .ghost{padding:1px 8px}#asset-tree{max-height:30%;padding:2px 8px 10px;overflow-y:auto}.explorer-empty{padding:4px 10px;font-size:11px}.asset-row .asset-key{color:var(--accent);font-family:ui-monospace,Menlo,monospace}.asset-icon-texture{color:#f0abfc}.asset-icon-spritesheet{color:#fbbf24}.asset-icon-model{color:#7aa2ff}.asset-icon-animation{color:#86efac}.uid-value{align-items:center;gap:7px;min-width:0;display:flex}.uid-value code{color:var(--text-dim);letter-spacing:.3px;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,Menlo,monospace;font-size:11px;overflow:hidden}.uid-copy{border-radius:var(--r-sm);color:var(--text-faint);background:0 0;border:none;padding:3px 5px;line-height:0}.uid-copy:hover{color:var(--text);background:var(--bg-3)}.uid-copy.copied{color:var(--accent);font-size:10px;line-height:1}.section-toggle{box-sizing:border-box;text-align:left;cursor:pointer;background:var(--bg-1);border:none;border-top:1px solid var(--line-strong);border-bottom:1px solid var(--line);border-radius:0;justify-content:flex-start;align-items:center;gap:6px;width:100%;height:30px;padding-top:0;padding-bottom:0;display:flex}.section-toggle:hover{color:var(--text)}.section-toggle .chev{color:var(--text-dim);transition:transform .12s;display:inline-flex}.section-toggle.collapsed .chev{transform:rotate(-90deg)}.section-add{min-width:24px;height:20px;color:var(--text-dim);border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--bg-2);justify-content:center;align-items:center;padding:0 6px;font-size:13px;display:inline-flex}.section-add:hover{background:var(--bg-3);color:var(--accent);border-color:var(--accent-deep)}[data-body][hidden],aside#tree-pane #scene-body[hidden]{display:none}#scene-body{flex-direction:column;flex:1;min-height:0;display:flex}.asset-folder{color:var(--text-dim);cursor:pointer;border-radius:var(--r-sm);align-items:center;gap:6px;padding:4px 8px;display:flex}.asset-folder:hover{background:var(--bg-3)}.asset-folder .chev{color:var(--text-dim);transition:transform .12s;display:inline-flex}.asset-folder.collapsed .chev{transform:rotate(-90deg)}.asset-folder svg{color:#e7c66a}.asset-row.grouped{margin-left:18px}.asset-folder .count{color:var(--text-faint);margin-left:auto;font-size:10.5px}.asset-folder.selected{color:var(--accent);background:#6ee7dc14}.asset-folder.drop-target,#asset-tree.drop-target{outline:1.5px dashed var(--accent);outline-offset:-2px;border-radius:var(--r-sm)}.asset-row[draggable=true]{cursor:grab}body.playing #mode-toolbar,body.playing #gameview-btn{display:none}.tool-divider{background:var(--line);align-self:center;width:1px;height:18px;margin:0 2px}#generate{z-index:70;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#07090ec7;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#generate[hidden]{display:none}#generate-card{background:var(--bg-2);border:1px solid var(--line-strong);width:420px;max-height:78vh;box-shadow:var(--shadow);border-radius:14px;flex-direction:column;display:flex;overflow:hidden}#generate-body{padding:14px;overflow-y:auto}#generate-body .gen-hint{color:var(--text-faint);margin:0 0 12px;font-size:11.5px}#generate-body .gen-desc{color:var(--text-dim);margin:2px 0 12px;font-size:11.5px}#generate-params{border-top:1px solid var(--line);padding-top:2px}#generate-params .field:first-child{margin-top:10px}.gen-seed-row{gap:6px;display:flex}.gen-seed-row input{flex:1;min-width:0}.gen-seed-row .ghost{padding:4px 9px}#generate-actions{border-top:1px solid var(--line);justify-content:flex-end;align-items:center;gap:8px;padding:12px 14px;display:flex}#generate-status{color:var(--rose);margin-right:auto;font-size:11px}.const-picker{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg-1);width:30px;color:var(--text-dim);flex:none;margin-left:6px;font-size:11px}.const-picker:hover{border-color:var(--accent);color:var(--accent)}.field.const-bound>span{color:var(--accent)}.const-row{align-items:stretch;gap:6px;display:flex}.const-row .field{flex:1;min-width:0}.const-del{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg-1);width:26px;color:var(--text-dim);flex:none;font-size:11px}.const-del:hover{border-color:var(--rose);color:var(--rose)}.const-add{align-items:stretch;gap:6px;margin-top:6px;display:flex}.const-add input{flex:1;min-width:0}.tile-paint{flex-direction:column;gap:6px;display:flex}.paint-toggle{cursor:pointer;border:1px solid var(--border,#444);color:inherit;font:inherit;background:0 0;border-radius:6px;padding:6px 10px}.paint-toggle.on{color:#fff;background:#2e6b2e;border-color:#4a9e4a}.paint-palette{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.paint-chip{cursor:pointer;border:1px solid var(--border,#444);width:26px;height:26px;color:inherit;background:0 0;border-radius:5px;font:600 13px/1 monospace}.paint-chip.on{color:#fff;background:#3a5a8c;border-color:#6a9ae0}.paint-brush-input{text-align:center;width:32px;color:inherit;border:1px solid var(--border,#444);background:0 0;border-radius:5px;padding:4px;font:600 13px/1 monospace}.paint-hint{opacity:.6;font-size:11px}
|
package/editor/index.html
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
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-BLzp8moy.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="./assets/GameServer-C56iOUgF.js">
|
|
10
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
10
|
+
<link rel="stylesheet" crossorigin href="./assets/index-D8QvwvOm.css">
|
|
11
11
|
</head>
|
|
12
12
|
<body>
|
|
13
13
|
<header id="topbar">
|
package/package.json
CHANGED
|
@@ -283,9 +283,15 @@
|
|
|
283
283
|
{
|
|
284
284
|
"$ref": "#/$defs/Terrain3D"
|
|
285
285
|
},
|
|
286
|
+
{
|
|
287
|
+
"$ref": "#/$defs/TileMap2D"
|
|
288
|
+
},
|
|
286
289
|
{
|
|
287
290
|
"$ref": "#/$defs/Timer"
|
|
288
291
|
},
|
|
292
|
+
{
|
|
293
|
+
"$ref": "#/$defs/Trail3D"
|
|
294
|
+
},
|
|
289
295
|
{
|
|
290
296
|
"$ref": "#/$defs/Tree3D"
|
|
291
297
|
},
|
|
@@ -298,6 +304,12 @@
|
|
|
298
304
|
{
|
|
299
305
|
"$ref": "#/$defs/UiBar"
|
|
300
306
|
},
|
|
307
|
+
{
|
|
308
|
+
"$ref": "#/$defs/UiButton"
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"$ref": "#/$defs/UiDialogue"
|
|
312
|
+
},
|
|
301
313
|
{
|
|
302
314
|
"$ref": "#/$defs/UiText"
|
|
303
315
|
},
|
|
@@ -1753,6 +1765,10 @@
|
|
|
1753
1765
|
"skinYawOffset": {
|
|
1754
1766
|
"type": "number",
|
|
1755
1767
|
"default": 0
|
|
1768
|
+
},
|
|
1769
|
+
"animations": {
|
|
1770
|
+
"type": "object",
|
|
1771
|
+
"default": {}
|
|
1756
1772
|
}
|
|
1757
1773
|
},
|
|
1758
1774
|
"additionalProperties": false
|
|
@@ -4842,6 +4858,124 @@
|
|
|
4842
4858
|
},
|
|
4843
4859
|
"required": ["name", "type"]
|
|
4844
4860
|
},
|
|
4861
|
+
"TileMap2D": {
|
|
4862
|
+
"type": "object",
|
|
4863
|
+
"properties": {
|
|
4864
|
+
"name": {
|
|
4865
|
+
"type": "string"
|
|
4866
|
+
},
|
|
4867
|
+
"uid": {
|
|
4868
|
+
"type": "string"
|
|
4869
|
+
},
|
|
4870
|
+
"type": {
|
|
4871
|
+
"const": "TileMap2D"
|
|
4872
|
+
},
|
|
4873
|
+
"groups": {
|
|
4874
|
+
"type": "array",
|
|
4875
|
+
"items": {
|
|
4876
|
+
"type": "string"
|
|
4877
|
+
}
|
|
4878
|
+
},
|
|
4879
|
+
"tags": {
|
|
4880
|
+
"type": "object"
|
|
4881
|
+
},
|
|
4882
|
+
"props": {
|
|
4883
|
+
"type": "object",
|
|
4884
|
+
"properties": {
|
|
4885
|
+
"position": {
|
|
4886
|
+
"type": "array",
|
|
4887
|
+
"items": {
|
|
4888
|
+
"type": "number"
|
|
4889
|
+
},
|
|
4890
|
+
"minItems": 2,
|
|
4891
|
+
"maxItems": 2,
|
|
4892
|
+
"default": [0, 0]
|
|
4893
|
+
},
|
|
4894
|
+
"rotation": {
|
|
4895
|
+
"type": "number",
|
|
4896
|
+
"default": 0
|
|
4897
|
+
},
|
|
4898
|
+
"static": {
|
|
4899
|
+
"type": "boolean",
|
|
4900
|
+
"default": false
|
|
4901
|
+
},
|
|
4902
|
+
"scale": {
|
|
4903
|
+
"type": "array",
|
|
4904
|
+
"items": {
|
|
4905
|
+
"type": "number"
|
|
4906
|
+
},
|
|
4907
|
+
"minItems": 2,
|
|
4908
|
+
"maxItems": 2,
|
|
4909
|
+
"default": [1, 1]
|
|
4910
|
+
},
|
|
4911
|
+
"renderOrder": {
|
|
4912
|
+
"type": "number",
|
|
4913
|
+
"default": 0
|
|
4914
|
+
},
|
|
4915
|
+
"orderGroup": {
|
|
4916
|
+
"type": "string",
|
|
4917
|
+
"enum": ["background", "terrain", "default", "characters", "effects", "overlay"],
|
|
4918
|
+
"default": "default"
|
|
4919
|
+
},
|
|
4920
|
+
"visible": {
|
|
4921
|
+
"type": "boolean",
|
|
4922
|
+
"default": true
|
|
4923
|
+
},
|
|
4924
|
+
"texture": {
|
|
4925
|
+
"type": "string",
|
|
4926
|
+
"default": ""
|
|
4927
|
+
},
|
|
4928
|
+
"tileSize": {
|
|
4929
|
+
"type": "number",
|
|
4930
|
+
"default": 32
|
|
4931
|
+
},
|
|
4932
|
+
"columns": {
|
|
4933
|
+
"type": "number",
|
|
4934
|
+
"default": 0
|
|
4935
|
+
},
|
|
4936
|
+
"cells": {
|
|
4937
|
+
"type": "array",
|
|
4938
|
+
"default": []
|
|
4939
|
+
},
|
|
4940
|
+
"legend": {
|
|
4941
|
+
"type": "object",
|
|
4942
|
+
"default": {}
|
|
4943
|
+
},
|
|
4944
|
+
"solid": {
|
|
4945
|
+
"type": "array",
|
|
4946
|
+
"default": []
|
|
4947
|
+
},
|
|
4948
|
+
"opacity": {
|
|
4949
|
+
"type": "number",
|
|
4950
|
+
"default": 1
|
|
4951
|
+
}
|
|
4952
|
+
},
|
|
4953
|
+
"additionalProperties": false
|
|
4954
|
+
},
|
|
4955
|
+
"script": {
|
|
4956
|
+
"type": "object",
|
|
4957
|
+
"properties": {
|
|
4958
|
+
"name": {
|
|
4959
|
+
"type": "string"
|
|
4960
|
+
},
|
|
4961
|
+
"props": {
|
|
4962
|
+
"type": "object"
|
|
4963
|
+
}
|
|
4964
|
+
},
|
|
4965
|
+
"required": ["name"]
|
|
4966
|
+
},
|
|
4967
|
+
"network": {
|
|
4968
|
+
"type": "object"
|
|
4969
|
+
},
|
|
4970
|
+
"children": {
|
|
4971
|
+
"type": "array",
|
|
4972
|
+
"items": {
|
|
4973
|
+
"$ref": "#/$defs/node"
|
|
4974
|
+
}
|
|
4975
|
+
}
|
|
4976
|
+
},
|
|
4977
|
+
"required": ["name", "type"]
|
|
4978
|
+
},
|
|
4845
4979
|
"Timer": {
|
|
4846
4980
|
"type": "object",
|
|
4847
4981
|
"x-signals": ["timeout"],
|
|
@@ -4906,6 +5040,129 @@
|
|
|
4906
5040
|
},
|
|
4907
5041
|
"required": ["name", "type"]
|
|
4908
5042
|
},
|
|
5043
|
+
"Trail3D": {
|
|
5044
|
+
"type": "object",
|
|
5045
|
+
"properties": {
|
|
5046
|
+
"name": {
|
|
5047
|
+
"type": "string"
|
|
5048
|
+
},
|
|
5049
|
+
"uid": {
|
|
5050
|
+
"type": "string"
|
|
5051
|
+
},
|
|
5052
|
+
"type": {
|
|
5053
|
+
"const": "Trail3D"
|
|
5054
|
+
},
|
|
5055
|
+
"groups": {
|
|
5056
|
+
"type": "array",
|
|
5057
|
+
"items": {
|
|
5058
|
+
"type": "string"
|
|
5059
|
+
}
|
|
5060
|
+
},
|
|
5061
|
+
"tags": {
|
|
5062
|
+
"type": "object"
|
|
5063
|
+
},
|
|
5064
|
+
"props": {
|
|
5065
|
+
"type": "object",
|
|
5066
|
+
"properties": {
|
|
5067
|
+
"position": {
|
|
5068
|
+
"type": "array",
|
|
5069
|
+
"items": {
|
|
5070
|
+
"type": "number"
|
|
5071
|
+
},
|
|
5072
|
+
"minItems": 3,
|
|
5073
|
+
"maxItems": 3,
|
|
5074
|
+
"default": [0, 0, 0]
|
|
5075
|
+
},
|
|
5076
|
+
"rotation": {
|
|
5077
|
+
"type": "array",
|
|
5078
|
+
"items": {
|
|
5079
|
+
"type": "number"
|
|
5080
|
+
},
|
|
5081
|
+
"minItems": 3,
|
|
5082
|
+
"maxItems": 3,
|
|
5083
|
+
"default": [0, 0, 0]
|
|
5084
|
+
},
|
|
5085
|
+
"static": {
|
|
5086
|
+
"type": "boolean",
|
|
5087
|
+
"default": false
|
|
5088
|
+
},
|
|
5089
|
+
"scale": {
|
|
5090
|
+
"type": "array",
|
|
5091
|
+
"items": {
|
|
5092
|
+
"type": "number"
|
|
5093
|
+
},
|
|
5094
|
+
"minItems": 3,
|
|
5095
|
+
"maxItems": 3,
|
|
5096
|
+
"default": [1, 1, 1]
|
|
5097
|
+
},
|
|
5098
|
+
"visible": {
|
|
5099
|
+
"type": "boolean",
|
|
5100
|
+
"default": true
|
|
5101
|
+
},
|
|
5102
|
+
"renderOrder": {
|
|
5103
|
+
"type": "number",
|
|
5104
|
+
"default": 0
|
|
5105
|
+
},
|
|
5106
|
+
"orderGroup": {
|
|
5107
|
+
"type": "string",
|
|
5108
|
+
"enum": ["background", "terrain", "default", "characters", "effects", "overlay"],
|
|
5109
|
+
"default": "default"
|
|
5110
|
+
},
|
|
5111
|
+
"width": {
|
|
5112
|
+
"type": "number",
|
|
5113
|
+
"default": 0.3
|
|
5114
|
+
},
|
|
5115
|
+
"color": {
|
|
5116
|
+
"type": "string",
|
|
5117
|
+
"default": "#ffffff"
|
|
5118
|
+
},
|
|
5119
|
+
"opacity": {
|
|
5120
|
+
"type": "number",
|
|
5121
|
+
"default": 0.8
|
|
5122
|
+
},
|
|
5123
|
+
"seconds": {
|
|
5124
|
+
"type": "number",
|
|
5125
|
+
"default": 0.6
|
|
5126
|
+
},
|
|
5127
|
+
"emitting": {
|
|
5128
|
+
"type": "boolean",
|
|
5129
|
+
"default": true
|
|
5130
|
+
},
|
|
5131
|
+
"additive": {
|
|
5132
|
+
"type": "boolean",
|
|
5133
|
+
"default": false
|
|
5134
|
+
},
|
|
5135
|
+
"minDistance": {
|
|
5136
|
+
"type": "number",
|
|
5137
|
+
"default": 0.05
|
|
5138
|
+
}
|
|
5139
|
+
},
|
|
5140
|
+
"additionalProperties": false
|
|
5141
|
+
},
|
|
5142
|
+
"script": {
|
|
5143
|
+
"type": "object",
|
|
5144
|
+
"properties": {
|
|
5145
|
+
"name": {
|
|
5146
|
+
"type": "string"
|
|
5147
|
+
},
|
|
5148
|
+
"props": {
|
|
5149
|
+
"type": "object"
|
|
5150
|
+
}
|
|
5151
|
+
},
|
|
5152
|
+
"required": ["name"]
|
|
5153
|
+
},
|
|
5154
|
+
"network": {
|
|
5155
|
+
"type": "object"
|
|
5156
|
+
},
|
|
5157
|
+
"children": {
|
|
5158
|
+
"type": "array",
|
|
5159
|
+
"items": {
|
|
5160
|
+
"$ref": "#/$defs/node"
|
|
5161
|
+
}
|
|
5162
|
+
}
|
|
5163
|
+
},
|
|
5164
|
+
"required": ["name", "type"]
|
|
5165
|
+
},
|
|
4909
5166
|
"Tree3D": {
|
|
4910
5167
|
"type": "object",
|
|
4911
5168
|
"properties": {
|
|
@@ -5315,6 +5572,176 @@
|
|
|
5315
5572
|
},
|
|
5316
5573
|
"required": ["name", "type"]
|
|
5317
5574
|
},
|
|
5575
|
+
"UiButton": {
|
|
5576
|
+
"type": "object",
|
|
5577
|
+
"x-signals": ["pressed"],
|
|
5578
|
+
"properties": {
|
|
5579
|
+
"name": {
|
|
5580
|
+
"type": "string"
|
|
5581
|
+
},
|
|
5582
|
+
"uid": {
|
|
5583
|
+
"type": "string"
|
|
5584
|
+
},
|
|
5585
|
+
"type": {
|
|
5586
|
+
"const": "UiButton"
|
|
5587
|
+
},
|
|
5588
|
+
"groups": {
|
|
5589
|
+
"type": "array",
|
|
5590
|
+
"items": {
|
|
5591
|
+
"type": "string"
|
|
5592
|
+
}
|
|
5593
|
+
},
|
|
5594
|
+
"tags": {
|
|
5595
|
+
"type": "object"
|
|
5596
|
+
},
|
|
5597
|
+
"props": {
|
|
5598
|
+
"type": "object",
|
|
5599
|
+
"properties": {
|
|
5600
|
+
"anchor": {
|
|
5601
|
+
"type": "string",
|
|
5602
|
+
"enum": [
|
|
5603
|
+
"topLeft",
|
|
5604
|
+
"top",
|
|
5605
|
+
"topRight",
|
|
5606
|
+
"left",
|
|
5607
|
+
"center",
|
|
5608
|
+
"right",
|
|
5609
|
+
"bottomLeft",
|
|
5610
|
+
"bottom",
|
|
5611
|
+
"bottomRight"
|
|
5612
|
+
],
|
|
5613
|
+
"default": "topLeft"
|
|
5614
|
+
},
|
|
5615
|
+
"visible": {
|
|
5616
|
+
"type": "boolean",
|
|
5617
|
+
"default": true
|
|
5618
|
+
},
|
|
5619
|
+
"text": {
|
|
5620
|
+
"type": "string",
|
|
5621
|
+
"default": "OK"
|
|
5622
|
+
},
|
|
5623
|
+
"size": {
|
|
5624
|
+
"type": "number",
|
|
5625
|
+
"default": 16
|
|
5626
|
+
},
|
|
5627
|
+
"color": {
|
|
5628
|
+
"type": "string",
|
|
5629
|
+
"default": "#ffffff"
|
|
5630
|
+
},
|
|
5631
|
+
"background": {
|
|
5632
|
+
"type": "string",
|
|
5633
|
+
"default": "rgba(255,255,255,0.14)"
|
|
5634
|
+
},
|
|
5635
|
+
"disabled": {
|
|
5636
|
+
"type": "boolean",
|
|
5637
|
+
"default": false
|
|
5638
|
+
}
|
|
5639
|
+
},
|
|
5640
|
+
"additionalProperties": false
|
|
5641
|
+
},
|
|
5642
|
+
"script": {
|
|
5643
|
+
"type": "object",
|
|
5644
|
+
"properties": {
|
|
5645
|
+
"name": {
|
|
5646
|
+
"type": "string"
|
|
5647
|
+
},
|
|
5648
|
+
"props": {
|
|
5649
|
+
"type": "object"
|
|
5650
|
+
}
|
|
5651
|
+
},
|
|
5652
|
+
"required": ["name"]
|
|
5653
|
+
},
|
|
5654
|
+
"network": {
|
|
5655
|
+
"type": "object"
|
|
5656
|
+
},
|
|
5657
|
+
"children": {
|
|
5658
|
+
"type": "array",
|
|
5659
|
+
"items": {
|
|
5660
|
+
"$ref": "#/$defs/node"
|
|
5661
|
+
}
|
|
5662
|
+
}
|
|
5663
|
+
},
|
|
5664
|
+
"required": ["name", "type"]
|
|
5665
|
+
},
|
|
5666
|
+
"UiDialogue": {
|
|
5667
|
+
"type": "object",
|
|
5668
|
+
"x-signals": ["lineShown", "choiceMade", "dialogueFinished"],
|
|
5669
|
+
"properties": {
|
|
5670
|
+
"name": {
|
|
5671
|
+
"type": "string"
|
|
5672
|
+
},
|
|
5673
|
+
"uid": {
|
|
5674
|
+
"type": "string"
|
|
5675
|
+
},
|
|
5676
|
+
"type": {
|
|
5677
|
+
"const": "UiDialogue"
|
|
5678
|
+
},
|
|
5679
|
+
"groups": {
|
|
5680
|
+
"type": "array",
|
|
5681
|
+
"items": {
|
|
5682
|
+
"type": "string"
|
|
5683
|
+
}
|
|
5684
|
+
},
|
|
5685
|
+
"tags": {
|
|
5686
|
+
"type": "object"
|
|
5687
|
+
},
|
|
5688
|
+
"props": {
|
|
5689
|
+
"type": "object",
|
|
5690
|
+
"properties": {
|
|
5691
|
+
"anchor": {
|
|
5692
|
+
"type": "string",
|
|
5693
|
+
"enum": [
|
|
5694
|
+
"topLeft",
|
|
5695
|
+
"top",
|
|
5696
|
+
"topRight",
|
|
5697
|
+
"left",
|
|
5698
|
+
"center",
|
|
5699
|
+
"right",
|
|
5700
|
+
"bottomLeft",
|
|
5701
|
+
"bottom",
|
|
5702
|
+
"bottomRight"
|
|
5703
|
+
],
|
|
5704
|
+
"default": "bottom"
|
|
5705
|
+
},
|
|
5706
|
+
"visible": {
|
|
5707
|
+
"type": "boolean",
|
|
5708
|
+
"default": true
|
|
5709
|
+
},
|
|
5710
|
+
"charsPerSecond": {
|
|
5711
|
+
"type": "number",
|
|
5712
|
+
"default": 40
|
|
5713
|
+
},
|
|
5714
|
+
"width": {
|
|
5715
|
+
"type": "number",
|
|
5716
|
+
"default": 520
|
|
5717
|
+
}
|
|
5718
|
+
},
|
|
5719
|
+
"additionalProperties": false
|
|
5720
|
+
},
|
|
5721
|
+
"script": {
|
|
5722
|
+
"type": "object",
|
|
5723
|
+
"properties": {
|
|
5724
|
+
"name": {
|
|
5725
|
+
"type": "string"
|
|
5726
|
+
},
|
|
5727
|
+
"props": {
|
|
5728
|
+
"type": "object"
|
|
5729
|
+
}
|
|
5730
|
+
},
|
|
5731
|
+
"required": ["name"]
|
|
5732
|
+
},
|
|
5733
|
+
"network": {
|
|
5734
|
+
"type": "object"
|
|
5735
|
+
},
|
|
5736
|
+
"children": {
|
|
5737
|
+
"type": "array",
|
|
5738
|
+
"items": {
|
|
5739
|
+
"$ref": "#/$defs/node"
|
|
5740
|
+
}
|
|
5741
|
+
}
|
|
5742
|
+
},
|
|
5743
|
+
"required": ["name", "type"]
|
|
5744
|
+
},
|
|
5318
5745
|
"UiText": {
|
|
5319
5746
|
"type": "object",
|
|
5320
5747
|
"properties": {
|
|
@@ -97,6 +97,20 @@ shambling clip + glowing eyes for an enemy that reads as a different creature.
|
|
|
97
97
|
"animation": "$walk", "castShadow": true } }
|
|
98
98
|
```
|
|
99
99
|
|
|
100
|
+
## Animations without code
|
|
101
|
+
|
|
102
|
+
Map movement states straight in JSON — no behavior needed:
|
|
103
|
+
|
|
104
|
+
```json
|
|
105
|
+
{ "name": "Controller", "type": "CharacterController3D",
|
|
106
|
+
"props": { "view": "free",
|
|
107
|
+
"animations": { "idle": "$idle", "walk": "$walk", "run": "$run",
|
|
108
|
+
"fastRun": "$sprint", "airborne": "$jump" } } }
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
The controller writes `skin.animation` on every state change (crossfaded by
|
|
112
|
+
the model). The `movementStateChanged` signal still fires for extras.
|
|
113
|
+
|
|
100
114
|
The controller also yaw-rotates the sibling at `skinPath` ('../Skin') toward
|
|
101
115
|
the move direction at `turnSpeed` rad/s (100 = instant snap) — the body
|
|
102
116
|
itself never rotates. The skin MOUNTS at 180° (facing away from the default
|
package/skills/incanto-audio.md
CHANGED
|
@@ -98,6 +98,29 @@ something up, `hurt` when Health takes damage:
|
|
|
98
98
|
> same unlock listener that retries `src` players also resumes the SFX context
|
|
99
99
|
> (see §2).
|
|
100
100
|
|
|
101
|
+
### Continuous voices — engine hum, wind, thrusters (`startVoice`)
|
|
102
|
+
|
|
103
|
+
One-shot presets can't do a sound that **lasts and retunes** — a motor that
|
|
104
|
+
follows the RPM, wind that rises with speed. `engine.sfx.startVoice(preset)`
|
|
105
|
+
starts a live synth voice you retune every frame:
|
|
106
|
+
|
|
107
|
+
```ts
|
|
108
|
+
const motor = engine.sfx.startVoice('engine'); // presets: engine | wind | hum | noise
|
|
109
|
+
// per frame (e.g. in a script's update):
|
|
110
|
+
motor.set({ pitch: 0.8 + speed / maxSpeed, volume: throttle * 0.6 });
|
|
111
|
+
// on destroy / scene change:
|
|
112
|
+
motor.stop(); // fades out over 0.15s and frees the WebAudio nodes
|
|
113
|
+
motor.stop(1.2); // …or a slow custom fade
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
- **`pitch`** — 1 = the preset's base tone; drive it from speed/RPM/height.
|
|
117
|
+
- **`volume`** — 0..1; `startVoice(preset, gain)` sets an overall ceiling.
|
|
118
|
+
- Presets: `engine` (detuned-saw motor growl), `wind` (band-passed rush),
|
|
119
|
+
`hum` (soft pad — shields, auras, reactors), `noise` (thrusters, static).
|
|
120
|
+
- Headless the handle is **inert** (`set`/`stop` are no-ops) — keep the same
|
|
121
|
+
call sites, no `if (browser)` guards. Voices need the same first-gesture
|
|
122
|
+
unlock as everything else.
|
|
123
|
+
|
|
101
124
|
---
|
|
102
125
|
|
|
103
126
|
## 2. The AudioPlayer node (preset vs src file)
|