@edv4h/usketch-plugin-mode7 0.3.4 → 0.4.1

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/README.md CHANGED
@@ -38,6 +38,7 @@ createApp({
38
38
  camera: { pitch: 55, fov: 600 }, // 初期カメラ(部分指定可)
39
39
  look: { sky: "#0b1026", fog: 0.35 },
40
40
  // tiltLayerIds: [...], // 傾ける層を上書き
41
+ // depthLayerIds: [...], // 本当に奥行きを持たせる層(既定 DEFAULT_DEPTH_LAYER_IDS)
41
42
  // shortcuts: { toggle: "…" }, // キーバインド(opt-in・既定なし)
42
43
  // transition: { durationMs: 900, easing: "ease-in-out" }, // 切替アニメ(既定 0=即時)
43
44
  }),
@@ -89,6 +90,14 @@ createApp({
89
90
 
90
91
  ※ Shape は DOM 上には残る(コアのカリングではなく描画クリップ)ので、真のジオメトリ間引きは別途。
91
92
 
93
+ 3D 表示の開始・終了時には `usketch:stage-3d` イベント(`{ active }`、`STAGE_3D_EVENT`)を出す。map プラグインはこれを見て、段差(立体)を 3D 表示中だけ組み立てる。
94
+
95
+ **深度レイヤー(`depthLayerIds`)**: `clip-path` は傾き自体は保つが、配下の奥行き(`translateZ`)を
96
+ 平面に潰す。そこで深度レイヤーはこのクリップを外し、エンジンの内側ラッパーにも
97
+ `transform-style: preserve-3d` を付けて 3D 文脈を通す。既定 `DEFAULT_DEPTH_LAYER_IDS` は
98
+ `usketch-map:relief`(map プラグインの高いセルの崖と上面)と `character`(その上に立つキャラ)。
99
+ 深度レイヤーは描画距離のクリップを受けない。
100
+
92
101
  ## アクション(`mode7:<key>` で emit・HUD Controls に自動表示・サービス)
93
102
 
94
103
  `toggle` / `pitch-up` / `pitch-down` / `yaw-left` / `yaw-right` / `fov-narrow` / `fov-wide` / `reset` /
@@ -108,11 +117,24 @@ api?.setYaw(30);
108
117
  ```
109
118
 
110
119
  `Mode7Api`: `isActive` / `enable` / `disable` / `toggle`(各 `{ animate? }`)/ `isTransitioning` /
111
- `getTransitionAmount` / `getCamera` / `setPitch` / `setYaw` /
120
+ `getTransitionAmount` / `getCamera` / `getRenderedCamera` / `setPitch` / `setYaw` /
112
121
  `setFov` / `setHorizon` / `adjust` / `getLook` / `setSky` / `setFog` / `setFogColor` / `reset` /
113
122
  `getTiltLayers` / `setTiltLayers` / `toggleTiltLayer` / `getDrawDistance` / `setDrawDistance` /
114
123
  `isCaptureFrameVisible` / `setCaptureFrameVisible` / `toggleCaptureFrame` / `getCaptureRect` / `onChange`。
115
124
 
125
+ ## 地面上の点の投影
126
+
127
+ 地面の上に物を描く(車・スプライト・タイヤ痕)ときや、画面の点から地面の点を求めるときは、
128
+ CSS 変換を自前で組まずに次の純関数を使う。座標はキャンバス左上基準の px(傾ける前の平面 ↔ 画面)。
129
+
130
+ ```ts
131
+ import { getMode7Api, projectToGround, unprojectFromGround } from "@edv4h/usketch-plugin-mode7";
132
+ const cam = getMode7Api(app.services)?.getRenderedCamera(); // 遷移中は傾きが縮んだカメラ
133
+ const size = { width, height }; // キャンバスの px サイズ
134
+ projectToGround(sx, sy, cam, size); // → { x, y, depth, scale } | null(目の後ろ)
135
+ unprojectFromGround(x, y, cam, size); // → { x, y } | null(地平線より上)
136
+ ```
137
+
116
138
  ## スコープ外(v2 送り)
117
139
 
118
140
  3D 中の編集(perspective 逆投影して `screenToWorld` を補正)/WebGPU 真3D/Shape の billboard 立て起こし/
package/dist/index.d.ts CHANGED
@@ -1,7 +1,9 @@
1
1
  export { CAMERA_LIMITS, type Camera, DEFAULT_CAMERA, } from "./mode7-camera.js";
2
+ export { type GroundProjection, projectToGround, type StageSize, tiltOrigin, unprojectFromGround, } from "./mode7-projection.js";
3
+ export { STAGE_3D_EVENT } from "./mode7-runtime.js";
2
4
  export { getMode7Api, type Mode7Api, mode7Service } from "./mode7-service.js";
3
- export type { Look } from "./mode7-store.js";
4
- export { drawDistanceClip, drawDistanceOverscanPx, fogBackground, skyBackground, type TiltTransform, tiltTransform, } from "./mode7-transform.js";
5
+ export { DEFAULT_DEPTH_LAYER_IDS, DEFAULT_TILT_LAYER_IDS, type Look } from "./mode7-store.js";
6
+ export { drawDistanceClip, drawDistanceOverscanPx, fogBackground, skyBackground, type TiltRuleOptions, type TiltTransform, tiltLayerRules, tiltTransform, transitionCamera, } from "./mode7-transform.js";
5
7
  export { DEFAULT_TRANSITION_MS, type Mode7Easing, type Mode7SwitchOptions, type Mode7TransitionOptions, } from "./mode7-transition.js";
6
8
  export { createMode7Plugin, type Mode7PluginOptions } from "./plugin.js";
7
9
  export type { Mode7ActionKey, Mode7Shortcuts, } from "./register-mode7-actions.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,KAAK,MAAM,EACX,cAAc,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC9E,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACN,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,KAAK,aAAa,EAClB,aAAa,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,qBAAqB,EACrB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzE,YAAY,EACX,cAAc,EACd,cAAc,GACd,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,KAAK,MAAM,EACX,cAAc,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,KAAK,gBAAgB,EACrB,eAAe,EACf,KAAK,SAAS,EACd,UAAU,EACV,mBAAmB,GACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EACN,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,cAAc,EACd,aAAa,EACb,gBAAgB,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,qBAAqB,EACrB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzE,YAAY,EACX,cAAc,EACd,cAAc,GACd,MAAM,6BAA6B,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,9 @@
1
1
  export { CAMERA_LIMITS, DEFAULT_CAMERA, } from "./mode7-camera.js";
2
+ export { projectToGround, tiltOrigin, unprojectFromGround, } from "./mode7-projection.js";
3
+ export { STAGE_3D_EVENT } from "./mode7-runtime.js";
2
4
  export { getMode7Api, mode7Service } from "./mode7-service.js";
3
- export { drawDistanceClip, drawDistanceOverscanPx, fogBackground, skyBackground, tiltTransform, } from "./mode7-transform.js";
5
+ export { DEFAULT_DEPTH_LAYER_IDS, DEFAULT_TILT_LAYER_IDS } from "./mode7-store.js";
6
+ export { drawDistanceClip, drawDistanceOverscanPx, fogBackground, skyBackground, tiltLayerRules, tiltTransform, transitionCamera, } from "./mode7-transform.js";
4
7
  export { DEFAULT_TRANSITION_MS, } from "./mode7-transition.js";
5
8
  export { createMode7Plugin } from "./plugin.js";
6
9
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EAEb,cAAc,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAiB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EACN,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,aAAa,EAEb,aAAa,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,qBAAqB,GAIrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAA2B,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EAEb,cAAc,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEN,eAAe,EAEf,UAAU,EACV,mBAAmB,GACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAiB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAa,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EACN,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,aAAa,EAGb,cAAc,EACd,aAAa,EACb,gBAAgB,GAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,qBAAqB,GAIrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAA2B,MAAM,aAAa,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { Camera } from "./mode7-camera.js";
2
+ /** Canvas size in px (the stage the tilted layers fill). */
3
+ export interface StageSize {
4
+ width: number;
5
+ height: number;
6
+ }
7
+ /** A flat-canvas point as seen through the tilt. */
8
+ export interface GroundProjection {
9
+ /** Screen position, px from the canvas top-left. */
10
+ x: number;
11
+ y: number;
12
+ /** Height toward the viewer, px (larger = nearer). Use it for draw order. */
13
+ depth: number;
14
+ /** Apparent scale at this point (1 / w). 1 on a flat (pitch 0) view. */
15
+ scale: number;
16
+ }
17
+ /** The transform origin (pivot), px from the canvas top-left. */
18
+ export declare function tiltOrigin(cam: Camera, size: StageSize): {
19
+ x: number;
20
+ y: number;
21
+ };
22
+ /**
23
+ * Project a flat-canvas point (px, before the tilt) onto the screen. `null` when the
24
+ * point is at or behind the eye: very NEAR points far below the pivot (the ground
25
+ * tips up past the viewer). Far points only approach the vanishing line.
26
+ */
27
+ export declare function projectToGround(x: number, y: number, cam: Camera, size: StageSize): GroundProjection | null;
28
+ /**
29
+ * The flat-canvas point (px, before the tilt) drawn at a screen point — the inverse
30
+ * of `projectToGround`. `null` above the vanishing line (sky: no ground there).
31
+ */
32
+ export declare function unprojectFromGround(x: number, y: number, cam: Camera, size: StageSize): {
33
+ x: number;
34
+ y: number;
35
+ } | null;
36
+ //# sourceMappingURL=mode7-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode7-projection.d.ts","sourceRoot":"","sources":["../src/mode7-projection.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,4DAA4D;AAC5D,MAAM,WAAW,SAAS;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAED,oDAAoD;AACpD,MAAM,WAAW,gBAAgB;IAChC,oDAAoD;IACpD,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;CACd;AAID,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAEjF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC9B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,GACb,gBAAgB,GAAG,IAAI,CAazB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAClC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,GACb;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAajC"}
@@ -0,0 +1,45 @@
1
+ const rad = (deg) => (deg * Math.PI) / 180;
2
+ /** The transform origin (pivot), px from the canvas top-left. */
3
+ export function tiltOrigin(cam, size) {
4
+ return { x: size.width / 2, y: size.height * cam.horizon };
5
+ }
6
+ /**
7
+ * Project a flat-canvas point (px, before the tilt) onto the screen. `null` when the
8
+ * point is at or behind the eye: very NEAR points far below the pivot (the ground
9
+ * tips up past the viewer). Far points only approach the vanishing line.
10
+ */
11
+ export function projectToGround(x, y, cam, size) {
12
+ const o = tiltOrigin(cam, size);
13
+ const x0 = x - o.x;
14
+ const y0 = y - o.y;
15
+ const cosYaw = Math.cos(rad(cam.yaw));
16
+ const sinYaw = Math.sin(rad(cam.yaw));
17
+ const x1 = x0 * cosYaw - y0 * sinYaw;
18
+ const y1 = x0 * sinYaw + y0 * cosYaw;
19
+ const y2 = y1 * Math.cos(rad(cam.pitch));
20
+ const z2 = y1 * Math.sin(rad(cam.pitch));
21
+ const w = 1 - z2 / cam.fov;
22
+ if (w <= 0)
23
+ return null;
24
+ return { x: o.x + x1 / w, y: o.y + y2 / w, depth: z2, scale: 1 / w };
25
+ }
26
+ /**
27
+ * The flat-canvas point (px, before the tilt) drawn at a screen point — the inverse
28
+ * of `projectToGround`. `null` above the vanishing line (sky: no ground there).
29
+ */
30
+ export function unprojectFromGround(x, y, cam, size) {
31
+ const o = tiltOrigin(cam, size);
32
+ const px = x - o.x;
33
+ const py = y - o.y;
34
+ const cosPitch = Math.cos(rad(cam.pitch));
35
+ const sinPitch = Math.sin(rad(cam.pitch));
36
+ const denominator = cosPitch + (py * sinPitch) / cam.fov;
37
+ if (denominator <= 0)
38
+ return null;
39
+ const y1 = py / denominator;
40
+ const x1 = px * (1 - (y1 * sinPitch) / cam.fov);
41
+ const cosYaw = Math.cos(rad(cam.yaw));
42
+ const sinYaw = Math.sin(rad(cam.yaw));
43
+ return { x: o.x + x1 * cosYaw + y1 * sinYaw, y: o.y - x1 * sinYaw + y1 * cosYaw };
44
+ }
45
+ //# sourceMappingURL=mode7-projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode7-projection.js","sourceRoot":"","sources":["../src/mode7-projection.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,18 @@
1
1
  import type { PluginContext } from "@edv4h/usketch-shared";
2
- import type { Mode7Store } from "./mode7-store.js";
2
+ import { type Mode7Store } from "./mode7-store.js";
3
3
  /** The plugin's own layer ids (never tilted). */
4
4
  export declare const SKY_LAYER_ID = "mode7-sky";
5
5
  export declare const FOG_LAYER_ID = "mode7-fog";
6
6
  export declare const CAPTURE_LAYER_ID = "mode7-capture";
7
7
  export declare const CAPTURE_FRAME_LAYER_ID = "mode7-capture-frame";
8
+ /** Emitted with `{ active }` when the 3D stage starts / stops showing the board. */
9
+ export declare const STAGE_3D_EVENT = "usketch:stage-3d";
8
10
  /**
9
11
  * Wire the runtime to a store. The set of tilted layers is read live from the
10
12
  * store (user-selectable via the HUD). Returns a teardown that clears every
11
13
  * injected transform, unregisters the overlay layers, and drops all listeners.
12
14
  */
13
- export declare function setupMode7Runtime(ctx: PluginContext, store: Mode7Store): () => void;
15
+ export declare function setupMode7Runtime(ctx: PluginContext, store: Mode7Store, options?: {
16
+ depthLayerIds?: readonly string[];
17
+ }): () => void;
14
18
  //# sourceMappingURL=mode7-runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-runtime.d.ts","sourceRoot":"","sources":["../src/mode7-runtime.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAQnD,iDAAiD;AACjD,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAoC5D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,IAAI,CA+KnF"}
1
+ {"version":3,"file":"mode7-runtime.d.ts","sourceRoot":"","sources":["../src/mode7-runtime.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAS5E,iDAAiD;AACjD,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAK5D,oFAAoF;AACpF,eAAO,MAAM,cAAc,qBAAqB,CAAC;AAiCjD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAChC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAO,GACjD,MAAM,IAAI,CAiLZ"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { CaptureFrameLayer, CaptureLayer, FogLayer, SkyLayer } from "./mode7-layers.js";
3
- import { drawDistanceClip, drawDistanceOverscanPx, tiltTransform, transitionCamera, } from "./mode7-transform.js";
3
+ import { DEFAULT_DEPTH_LAYER_IDS } from "./mode7-store.js";
4
+ import { drawDistanceClip, drawDistanceOverscanPx, tiltLayerRules, tiltTransform, transitionCamera, } from "./mode7-transform.js";
4
5
  /** The plugin's own layer ids (never tilted). */
5
6
  export const SKY_LAYER_ID = "mode7-sky";
6
7
  export const FOG_LAYER_ID = "mode7-fog";
@@ -8,6 +9,8 @@ export const CAPTURE_LAYER_ID = "mode7-capture";
8
9
  export const CAPTURE_FRAME_LAYER_ID = "mode7-capture-frame";
9
10
  /** Wheel-zoom sensitivity (matches viewport-nav's deltaY-proportional feel). */
10
11
  const WHEEL_ZOOM = 0.0015;
12
+ /** Emitted with `{ active }` when the 3D stage starts / stops showing the board. */
13
+ export const STAGE_3D_EVENT = "usketch:stage-3d";
11
14
  /** Extra px added to the grid overscan so it comfortably covers the clip line (rounding). */
12
15
  const OVERSCAN_BUFFER = 16;
13
16
  /**
@@ -44,8 +47,9 @@ function mainContainer() {
44
47
  * store (user-selectable via the HUD). Returns a teardown that clears every
45
48
  * injected transform, unregisters the overlay layers, and drops all listeners.
46
49
  */
47
- export function setupMode7Runtime(ctx, store) {
50
+ export function setupMode7Runtime(ctx, store, options = {}) {
48
51
  const STAGE_ATTR = "data-mode7-stage";
52
+ const depthLayers = new Set(options.depthLayerIds ?? DEFAULT_DEPTH_LAYER_IDS);
49
53
  let styleEl = null;
50
54
  const ensureStyleEl = () => {
51
55
  if (styleEl || typeof document === "undefined")
@@ -54,8 +58,6 @@ export function setupMode7Runtime(ctx, store) {
54
58
  styleEl.setAttribute("data-mode7", "");
55
59
  document.head.appendChild(styleEl);
56
60
  };
57
- /** Keep an attribute-selector value valid (layer ids are simple, but be safe). */
58
- const attrValue = (id) => id.replace(/["\\]/g, "");
59
61
  // Drive the background grid's overscan (only re-emit on change) so it extends past the
60
62
  // viewport to stay under the far content a large draw distance reveals. No package
61
63
  // dependency on bg-grid — a plain event it listens for (a no-op if bg-grid is absent).
@@ -66,6 +68,15 @@ export function setupMode7Runtime(ctx, store) {
66
68
  lastOverscan = px;
67
69
  ctx.events.emit("bg-grid:set-overscan", { px });
68
70
  };
71
+ // Tell ground plugins when the 3D stage starts / stops showing the board (the map
72
+ // builds its raised relief only then). A plain event, like the overscan below.
73
+ let lastStage = false;
74
+ const announceStage = (active) => {
75
+ if (active === lastStage)
76
+ return;
77
+ lastStage = active;
78
+ ctx.events.emit(STAGE_3D_EVENT, { active });
79
+ };
69
80
  const applyTilt = () => {
70
81
  const container = mainContainer();
71
82
  if (!container)
@@ -81,25 +92,20 @@ export function setupMode7Runtime(ctx, store) {
81
92
  // grid); a finite draw distance tightens the top, one beyond the viewport lets it
82
93
  // extend (negative inset) with the grid overscanned to match. Distance is canvas
83
94
  // units → maps to px via zoom + container height, so this re-runs on viewport (zoom)
84
- // changes. clip-path keeps the tilt (overflow flattens).
95
+ // changes. clip-path keeps the tilt (overflow flattens) but flattens depth, so
96
+ // depth layers skip it (see `tiltLayerRules`).
85
97
  const zoom = ctx.store.getViewport().zoom;
86
98
  const heightPx = container.getBoundingClientRect().height;
87
99
  const clip = drawDistanceClip(drawDistance, zoom, heightPx, amount);
88
100
  const overscan = drawDistanceOverscanPx(drawDistance, zoom, heightPx);
89
101
  driveGridOverscan(overscan > 0 ? overscan + OVERSCAN_BUFFER : 0);
90
- const clipRule = `clip-path:${clip} !important;`;
91
- // `overflow:visible` + `transform-style:preserve-3d` are essential for layers
92
- // like `dom-shapes`: their wrapper has `overflow:hidden` (which the CSS spec
93
- // forces `transform-style` to `flat`) and an inner viewport-transform div that
94
- // Chrome composites separately — so without these the SHAPES render flat in
95
- // screen space while only the wrapper tilts. Overriding overflow keeps the
96
- // whole subtree in the 3D context; the canvas container still clips.
97
- // A DESCENDANT selector (space, not `>`) matches the wrapper regardless of nesting.
98
- const layerRules = store
99
- .getState()
100
- .tiltLayers.map((id) => `[${STAGE_ATTR}="on"] [data-layer-id="${attrValue(id)}"]{transform:${transform} !important;transform-origin:${transformOrigin} !important;overflow:visible !important;transform-style:preserve-3d !important;${clipRule}}`)
101
- .join("");
102
- styleEl.textContent = layerRules;
102
+ styleEl.textContent = tiltLayerRules(store.getState().tiltLayers, {
103
+ stageAttr: STAGE_ATTR,
104
+ transform,
105
+ transformOrigin,
106
+ clip,
107
+ depthLayerIds: depthLayers,
108
+ });
103
109
  };
104
110
  const clearAll = () => {
105
111
  if (styleEl)
@@ -147,10 +153,12 @@ export function setupMode7Runtime(ctx, store) {
147
153
  }
148
154
  };
149
155
  const sync = () => {
150
- if (store.getState().active)
156
+ const active = store.getState().active;
157
+ if (active)
151
158
  applyTilt();
152
159
  else
153
160
  clearAll();
161
+ announceStage(active);
154
162
  maybeCapture();
155
163
  };
156
164
  // Camera drive from the capture layer (reuse the affine viewport).
@@ -206,6 +214,7 @@ export function setupMode7Runtime(ctx, store) {
206
214
  sync();
207
215
  return () => {
208
216
  clearAll();
217
+ announceStage(false);
209
218
  styleEl?.remove();
210
219
  styleEl = null;
211
220
  unsubscribe();
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-runtime.js","sourceRoot":"","sources":["../src/mode7-runtime.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mode7-runtime.js","sourceRoot":"","sources":["../src/mode7-runtime.tsx"],"names":[],"mappings":"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"}
@@ -16,8 +16,14 @@ export interface Mode7Api {
16
16
  isTransitioning(): boolean;
17
17
  /** The rendered transition amount, 0 (flat/off) … 1 (fully 3D), eased. */
18
18
  getTransitionAmount(): number;
19
- /** The current camera geometry. */
19
+ /** The current camera geometry (the target; see `getRenderedCamera` mid-transition). */
20
20
  getCamera(): Camera;
21
+ /**
22
+ * The camera as drawn right now: `getCamera()` with pitch/yaw scaled by the
23
+ * transition amount (flat when off). Feed it to `projectToGround` /
24
+ * `unprojectFromGround` to line things up with the ground.
25
+ */
26
+ getRenderedCamera(): Camera;
21
27
  setPitch(deg: number): void;
22
28
  setYaw(deg: number): void;
23
29
  setFov(px: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-service.d.ts","sourceRoot":"","sources":["../src/mode7-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAiB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEjF,MAAM,WAAW,QAAQ;IACxB,uFAAuF;IACvF,QAAQ,IAAI,OAAO,CAAC;IACpB;4EACwE;IACxE,MAAM,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,iEAAiE;IACjE,OAAO,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACzC,wEAAwE;IACxE,MAAM,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,gFAAgF;IAChF,eAAe,IAAI,OAAO,CAAC;IAC3B,0EAA0E;IAC1E,mBAAmB,IAAI,MAAM,CAAC;IAC9B,mCAAmC;IACnC,SAAS,IAAI,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,kDAAkD;IAClD,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACrC,0CAA0C;IAC1C,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,qEAAqE;IACrE,KAAK,IAAI,IAAI,CAAC;IACd,8CAA8C;IAC9C,aAAa,IAAI,SAAS,MAAM,EAAE,CAAC;IACnC,iDAAiD;IACjD,aAAa,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5C,mDAAmD;IACnD,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,sEAAsE;IACtE,eAAe,IAAI,MAAM,CAAC;IAC1B,4FAA4F;IAC5F,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,4DAA4D;IAC5D,qBAAqB,IAAI,OAAO,CAAC;IACjC,2CAA2C;IAC3C,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,iDAAiD;IACjD,kBAAkB,IAAI,IAAI,CAAC;IAC3B,gEAAgE;IAChE,cAAc,IAAI,WAAW,GAAG,IAAI,CAAC;IACrC,iGAAiG;IACjG,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC3C;AAED,eAAO,MAAM,YAAY,yDAAkD,CAAC;AAE5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,GAAG,QAAQ,CA8BvF;AAED,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,QAAQ,GAAG,SAAS,CAE3E"}
1
+ {"version":3,"file":"mode7-service.d.ts","sourceRoot":"","sources":["../src/mode7-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAiB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEjF,MAAM,WAAW,QAAQ;IACxB,uFAAuF;IACvF,QAAQ,IAAI,OAAO,CAAC;IACpB;4EACwE;IACxE,MAAM,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,iEAAiE;IACjE,OAAO,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACzC,wEAAwE;IACxE,MAAM,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,gFAAgF;IAChF,eAAe,IAAI,OAAO,CAAC;IAC3B,0EAA0E;IAC1E,mBAAmB,IAAI,MAAM,CAAC;IAC9B,wFAAwF;IACxF,SAAS,IAAI,MAAM,CAAC;IACpB;;;;OAIG;IACH,iBAAiB,IAAI,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,kDAAkD;IAClD,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACrC,0CAA0C;IAC1C,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,qEAAqE;IACrE,KAAK,IAAI,IAAI,CAAC;IACd,8CAA8C;IAC9C,aAAa,IAAI,SAAS,MAAM,EAAE,CAAC;IACnC,iDAAiD;IACjD,aAAa,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5C,mDAAmD;IACnD,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,sEAAsE;IACtE,eAAe,IAAI,MAAM,CAAC;IAC1B,4FAA4F;IAC5F,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,4DAA4D;IAC5D,qBAAqB,IAAI,OAAO,CAAC;IACjC,2CAA2C;IAC3C,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,iDAAiD;IACjD,kBAAkB,IAAI,IAAI,CAAC;IAC3B,gEAAgE;IAChE,cAAc,IAAI,WAAW,GAAG,IAAI,CAAC;IACrC,iGAAiG;IACjG,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC3C;AAED,eAAO,MAAM,YAAY,yDAAkD,CAAC;AAE5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,GAAG,QAAQ,CA+BvF;AAED,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,QAAQ,GAAG,SAAS,CAE3E"}
@@ -2,6 +2,7 @@
2
2
  // system): thin, typed delegation to the reactive store so a host or another plugin
3
3
  // can drive the Mode 7 view without the HUD.
4
4
  import { defineService } from "@edv4h/usketch-shared";
5
+ import { transitionCamera } from "./mode7-transform.js";
5
6
  export const mode7Service = defineService("usketch-plugin-mode7");
6
7
  export function createMode7Api(store, transition) {
7
8
  return {
@@ -12,6 +13,7 @@ export function createMode7Api(store, transition) {
12
13
  isTransitioning: () => transition.isTransitioning(),
13
14
  getTransitionAmount: () => store.getState().amount,
14
15
  getCamera: () => store.getState().camera,
16
+ getRenderedCamera: () => transitionCamera(store.getState().camera, store.getState().amount),
15
17
  setPitch: (deg) => store.setCamera({ pitch: deg }),
16
18
  setYaw: (deg) => store.setCamera({ yaw: deg }),
17
19
  setFov: (px) => store.setCamera({ fov: px }),
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-service.js","sourceRoot":"","sources":["../src/mode7-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mode7-service.js","sourceRoot":"","sources":["../src/mode7-service.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,12 @@ export declare const DEFAULT_DRAW_DISTANCE = 1500;
21
21
  * this is only the starting selection. Ids not present on a given board are ignored.
22
22
  */
23
23
  export declare const DEFAULT_TILT_LAYER_IDS: readonly string[];
24
+ /**
25
+ * Tilted layers rendered with real DEPTH: they skip the draw-distance clip (a
26
+ * `clip-path` flattens 3D) so content can rise out of the ground — the map plugin's
27
+ * raised terrain (cliffs) and a character standing on it.
28
+ */
29
+ export declare const DEFAULT_DEPTH_LAYER_IDS: readonly string[];
24
30
  export interface Mode7State {
25
31
  /** Whether the 3D view is shown. Stays `true` while an exit transition plays, so the
26
32
  * capture layer keeps blocking edits until the board is flat again. */
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-store.d.ts","sourceRoot":"","sources":["../src/mode7-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mode7-store.d.ts","sourceRoot":"","sources":["../src/mode7-store.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,11 @@ export const DEFAULT_TILT_LAYER_IDS = [
20
20
  // backgrounds / content
21
21
  "bg-grid",
22
22
  "bg-dots",
23
+ // map plugin: flat terrain + base areas/icons, and the raised relief (a depth layer)
24
+ "usketch-map:terrain",
25
+ "usketch-map:relief",
26
+ "usketch-map:base",
27
+ "usketch-map:base-icons",
23
28
  "gpu-shapes",
24
29
  "dom-shapes",
25
30
  "usketch-plugin-dashboard:grid-overlay",
@@ -47,6 +52,12 @@ export const DEFAULT_TILT_LAYER_IDS = [
47
52
  // controllable characters (usketch-plugin-character) walk on the ground plane
48
53
  "character",
49
54
  ];
55
+ /**
56
+ * Tilted layers rendered with real DEPTH: they skip the draw-distance clip (a
57
+ * `clip-path` flattens 3D) so content can rise out of the ground — the map plugin's
58
+ * raised terrain (cliffs) and a character standing on it.
59
+ */
60
+ export const DEFAULT_DEPTH_LAYER_IDS = ["usketch-map:relief", "character"];
50
61
  export function createMode7Store(init = {}) {
51
62
  const baseCamera = clampCamera({ ...DEFAULT_CAMERA, ...init.camera });
52
63
  const baseLook = { ...DEFAULT_LOOK, ...init.look };
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-store.js","sourceRoot":"","sources":["../src/mode7-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mode7-store.js","sourceRoot":"","sources":["../src/mode7-store.ts"],"names":[],"mappings":"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"}
@@ -56,6 +56,33 @@ strength?: number): string;
56
56
  * driven into the grid via the `bg-grid:set-overscan` event so grid + shapes end together.
57
57
  */
58
58
  export declare function drawDistanceOverscanPx(distance: number, zoom: number, viewportHeightPx: number): number;
59
+ export interface TiltRuleOptions {
60
+ /** Attribute marking the main canvas container (rules are scoped to it). */
61
+ stageAttr: string;
62
+ transform: string;
63
+ transformOrigin: string;
64
+ /** The draw-distance `clip-path` (see {@link drawDistanceClip}). */
65
+ clip: string;
66
+ /** Layers rendered with real depth (see {@link DEFAULT_DEPTH_LAYER_IDS}). */
67
+ depthLayerIds: ReadonlySet<string>;
68
+ }
69
+ /**
70
+ * The injected stylesheet that tilts each selected layer wrapper.
71
+ *
72
+ * `overflow:visible` + `transform-style:preserve-3d` are essential for layers like
73
+ * `dom-shapes`: their wrapper has `overflow:hidden` (which the CSS spec forces
74
+ * `transform-style` to `flat`) and an inner viewport-transform div that Chrome
75
+ * composites separately — so without these the SHAPES render flat in screen space
76
+ * while only the wrapper tilts. A DESCENDANT selector (space, not `>`) matches the
77
+ * wrapper regardless of nesting.
78
+ *
79
+ * Plain layers get the draw-distance clip. A `clip-path` is a grouping property that
80
+ * FLATTENS its subtree onto the plane, so DEPTH layers skip it and instead keep the
81
+ * 3D context through the engine's inner wrappers (viewport-transform / pointer divs):
82
+ * content that sets its own depth (raised map terrain, a character standing on it) then
83
+ * rises out of the tilted ground instead of being painted onto it.
84
+ */
85
+ export declare function tiltLayerRules(layerIds: readonly string[], o: TiltRuleOptions): string;
59
86
  /**
60
87
  * Wrap a CSS color into an rgba() with the given alpha. Handles #rgb/#rrggbb; any
61
88
  * other color string is passed through `color-mix` with transparent so named/hsl
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-transform.d.ts","sourceRoot":"","sources":["../src/mode7-transform.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC7B,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,eAAe,EAAE,MAAM,CAAC;CACxB;AAED,gFAAgF;AAChF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIpE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAKxD;AAUD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKrF;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM;AACxB;6DAC6D;AAC7D,QAAQ,SAAI,GACV,MAAM,CAeR;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,GACtB,MAAM,CAIR;AAuBD;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAYzD"}
1
+ {"version":3,"file":"mode7-transform.d.ts","sourceRoot":"","sources":["../src/mode7-transform.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC7B,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,eAAe,EAAE,MAAM,CAAC;CACxB;AAED,gFAAgF;AAChF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIpE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAKxD;AAUD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKrF;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM;AACxB;6DAC6D;AAC7D,QAAQ,SAAI,GACV,MAAM,CAeR;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,GACtB,MAAM,CAIR;AAED,MAAM,WAAW,eAAe;IAC/B,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM,CAStF;AA4BD;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAYzD"}
@@ -99,6 +99,37 @@ export function drawDistanceOverscanPx(distance, zoom, viewportHeightPx) {
99
99
  const bandPx = distance * zoom;
100
100
  return bandPx > viewportHeightPx ? Math.ceil(bandPx - viewportHeightPx) : 0;
101
101
  }
102
+ /**
103
+ * The injected stylesheet that tilts each selected layer wrapper.
104
+ *
105
+ * `overflow:visible` + `transform-style:preserve-3d` are essential for layers like
106
+ * `dom-shapes`: their wrapper has `overflow:hidden` (which the CSS spec forces
107
+ * `transform-style` to `flat`) and an inner viewport-transform div that Chrome
108
+ * composites separately — so without these the SHAPES render flat in screen space
109
+ * while only the wrapper tilts. A DESCENDANT selector (space, not `>`) matches the
110
+ * wrapper regardless of nesting.
111
+ *
112
+ * Plain layers get the draw-distance clip. A `clip-path` is a grouping property that
113
+ * FLATTENS its subtree onto the plane, so DEPTH layers skip it and instead keep the
114
+ * 3D context through the engine's inner wrappers (viewport-transform / pointer divs):
115
+ * content that sets its own depth (raised map terrain, a character standing on it) then
116
+ * rises out of the tilted ground instead of being painted onto it.
117
+ */
118
+ export function tiltLayerRules(layerIds, o) {
119
+ return layerIds
120
+ .map((id) => {
121
+ const layer = `[${o.stageAttr}="on"] [data-layer-id="${attrValue(id)}"]`;
122
+ const base = `transform:${o.transform} !important;transform-origin:${o.transformOrigin} !important;overflow:visible !important;transform-style:preserve-3d !important;`;
123
+ if (!o.depthLayerIds.has(id))
124
+ return `${layer}{${base}clip-path:${o.clip} !important;}`;
125
+ return `${layer}{${base}}${layer}>div,${layer}>div>div{transform-style:preserve-3d}`;
126
+ })
127
+ .join("");
128
+ }
129
+ /** Keep an attribute-selector value valid (layer ids are simple, but be safe). */
130
+ function attrValue(id) {
131
+ return id.replace(/["\\]/g, "");
132
+ }
102
133
  // ── helpers ──
103
134
  function round(n) {
104
135
  return Math.round(n * 1000) / 1000;
@@ -1 +1 @@
1
- {"version":3,"file":"mode7-transform.js","sourceRoot":"","sources":["../src/mode7-transform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mode7-transform.js","sourceRoot":"","sources":["../src/mode7-transform.ts"],"names":[],"mappings":"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"}
package/dist/plugin.d.ts CHANGED
@@ -19,6 +19,12 @@ export interface Mode7PluginOptions {
19
19
  /** Ground draw distance in canvas (world) units (`0` = auto / clip to the viewport;
20
20
  * larger values extend the ground past it; default `1500`). */
21
21
  drawDistance?: number;
22
+ /**
23
+ * Tilted layers rendered with real depth (default `DEFAULT_DEPTH_LAYER_IDS`: the
24
+ * map's raised terrain + characters). They skip the draw-distance clip, which
25
+ * would flatten them.
26
+ */
27
+ depthLayerIds?: string[];
22
28
  /** Start with the flat-mode capture-frame overlay shown (default `false`). */
23
29
  showCaptureFrame?: boolean;
24
30
  /** Keyboard shortcut bindings (opt-in; no defaults). */
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAShD,OAAO,EAAoB,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAyB,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,6BAA6B,CAAC;AAGxF,MAAM,WAAW,kBAAkB;IAClC,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,sCAAsC;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB;+DAC2D;IAC3D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;4DACwD;IACxD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;oEACgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wDAAwD;IACxD,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,sBAAsB,CAAC;CACpC;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,aAAa,CAyCjF"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAShD,OAAO,EAAoB,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAyB,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,6BAA6B,CAAC;AAGxF,MAAM,WAAW,kBAAkB;IAClC,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,sCAAsC;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB;+DAC2D;IAC3D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;4DACwD;IACxD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;oEACgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wDAAwD;IACxD,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,sBAAsB,CAAC;CACpC;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,aAAa,CAyCjF"}
package/dist/plugin.js CHANGED
@@ -29,7 +29,7 @@ export function createMode7Plugin(options = {}) {
29
29
  id: "usketch-plugin-mode7",
30
30
  name: "Mode 7 (3D ビュー)",
31
31
  setup(ctx) {
32
- const stopRuntime = setupMode7Runtime(ctx, store);
32
+ const stopRuntime = setupMode7Runtime(ctx, store, { depthLayerIds: options.depthLayerIds });
33
33
  const stopActions = registerMode7Actions(ctx, api, options.shortcuts);
34
34
  const stopHud = registerMode7Hud(ctx, api, store, excludedLayerIds);
35
35
  // Provide the service LAST so a failed earlier step can't leak it.
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAQA,OAAO,EACN,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,iBAAiB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAa,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAA+B,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAuB,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AA+B3D,MAAM,UAAU,iBAAiB,CAAC,OAAO,GAAuB,EAAE;IACjE,MAAM,KAAK,GAAG,gBAAgB,CAAC;QAC9B,MAAM,EAAE,OAAO,CAAC,gBAAgB,IAAI,KAAK;QACzC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,OAAO,CAAC,YAAY;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;KAC1C,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC9C,+EAA+E;IAC/E,wEAAwE;IACxE,MAAM,gBAAgB,GAAG;QACxB,YAAY;QACZ,YAAY;QACZ,gBAAgB;QAChB,sBAAsB;QACtB,WAAW;QACX,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;KAC/B,CAAC;IAEF,OAAO;QACN,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,iBAAiB;QACvB,KAAK,CAAC,GAAkB;YACvB,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACtE,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;YACpE,mEAAmE;YACnE,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAEjE,OAAO,GAAG,EAAE;gBACX,gBAAgB,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,CAAC;gBACd,UAAU,CAAC,OAAO,EAAE,CAAC;gBACrB,WAAW,EAAE,CAAC;YACf,CAAC,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAQA,OAAO,EACN,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,iBAAiB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAa,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAA+B,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAuB,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAqC3D,MAAM,UAAU,iBAAiB,CAAC,OAAO,GAAuB,EAAE;IACjE,MAAM,KAAK,GAAG,gBAAgB,CAAC;QAC9B,MAAM,EAAE,OAAO,CAAC,gBAAgB,IAAI,KAAK;QACzC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,OAAO,CAAC,YAAY;QAChC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;KAC1C,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC9C,+EAA+E;IAC/E,wEAAwE;IACxE,MAAM,gBAAgB,GAAG;QACxB,YAAY;QACZ,YAAY;QACZ,gBAAgB;QAChB,sBAAsB;QACtB,WAAW;QACX,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;KAC/B,CAAC;IAEF,OAAO;QACN,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,iBAAiB;QACvB,KAAK,CAAC,GAAkB;YACvB,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;YAC5F,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACtE,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;YACpE,mEAAmE;YACnE,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAEjE,OAAO,GAAG,EAAE;gBACX,gBAAgB,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,CAAC;gBACd,UAAU,CAAC,OAAO,EAAE,CAAC;gBACrB,WAAW,EAAE,CAAC;YACf,CAAC,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edv4h/usketch-plugin-mode7",
3
- "version": "0.3.4",
3
+ "version": "0.4.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -12,8 +12,8 @@
12
12
  }
13
13
  },
14
14
  "dependencies": {
15
- "@edv4h/usketch-shared": "4.17.0",
16
- "@edv4h/usketch-store": "3.9.1"
15
+ "@edv4h/usketch-shared": "4.19.0",
16
+ "@edv4h/usketch-store": "3.10.0"
17
17
  },
18
18
  "peerDependencies": {
19
19
  "react": ">=19"