@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 +23 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/mode7-projection.d.ts +36 -0
- package/dist/mode7-projection.d.ts.map +1 -0
- package/dist/mode7-projection.js +45 -0
- package/dist/mode7-projection.js.map +1 -0
- package/dist/mode7-runtime.d.ts +6 -2
- package/dist/mode7-runtime.d.ts.map +1 -1
- package/dist/mode7-runtime.js +28 -19
- package/dist/mode7-runtime.js.map +1 -1
- package/dist/mode7-service.d.ts +7 -1
- package/dist/mode7-service.d.ts.map +1 -1
- package/dist/mode7-service.js +2 -0
- package/dist/mode7-service.js.map +1 -1
- package/dist/mode7-store.d.ts +6 -0
- package/dist/mode7-store.d.ts.map +1 -1
- package/dist/mode7-store.js +11 -0
- package/dist/mode7-store.js.map +1 -1
- package/dist/mode7-transform.d.ts +27 -0
- package/dist/mode7-transform.d.ts.map +1 -1
- package/dist/mode7-transform.js +31 -0
- package/dist/mode7-transform.js.map +1 -1
- package/dist/plugin.d.ts +6 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +1 -1
- package/dist/plugin.js.map +1 -1
- package/package.json +3 -3
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
|
|
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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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 {
|
|
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;
|
|
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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"}
|
package/dist/mode7-runtime.d.ts
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import type { PluginContext } from "@edv4h/usketch-shared";
|
|
2
|
-
import type
|
|
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
|
|
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,
|
|
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"}
|
package/dist/mode7-runtime.js
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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
|
-
|
|
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":";AAaA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"mode7-runtime.js","sourceRoot":"","sources":["../src/mode7-runtime.tsx"],"names":[],"mappings":"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"}
|
package/dist/mode7-service.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/mode7-service.js
CHANGED
|
@@ -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":"AAAA,mFAAmF;AACnF,oFAAoF;AACpF,6CAA6C;AAC7C,OAAO,EAAoB,aAAa,EAAwB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"mode7-service.js","sourceRoot":"","sources":["../src/mode7-service.ts"],"names":[],"mappings":"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"}
|
package/dist/mode7-store.d.ts
CHANGED
|
@@ -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":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAA6C,MAAM,mBAAmB,CAAC;AAE3F,+DAA+D;AAC/D,MAAM,WAAW,IAAI;IACpB,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,EAAE,IAAyD,CAAC;AAErF;mFACmF;AACnF,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAQ1C;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"mode7-store.d.ts","sourceRoot":"","sources":["../src/mode7-store.ts"],"names":[],"mappings":"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"}
|
package/dist/mode7-store.js
CHANGED
|
@@ -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 };
|
package/dist/mode7-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mode7-store.js","sourceRoot":"","sources":["../src/mode7-store.ts"],"names":[],"mappings":"AAKA,OAAO,EAAe,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAY3F,MAAM,CAAC,MAAM,YAAY,GAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAErF;mFACmF;AACnF,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,2FAA2F;AAC3F,SAAS,aAAa,CAAC,CAAS;IAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC;AACV,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACxD,wBAAwB;IACxB,SAAS;IACT,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,uCAAuC;IACvC,+EAA+E;IAC/E,gBAAgB;IAChB,0BAA0B;IAC1B,wBAAwB;IACxB,qBAAqB;IACrB,wBAAwB;IACxB,yCAAyC;IACzC,6BAA6B;IAC7B,4BAA4B;IAC5B,wDAAwD;IACxD,aAAa;IACb,aAAa;IACb,OAAO;IACP,iBAAiB;IACjB,WAAW;IACX,eAAe;IACf,mBAAmB;IACnB,uBAAuB;IACvB,WAAW;IACX,QAAQ;IACR,2BAA2B;IAC3B,8EAA8E;IAC9E,WAAW;CACX,CAAC;
|
|
1
|
+
{"version":3,"file":"mode7-store.js","sourceRoot":"","sources":["../src/mode7-store.ts"],"names":[],"mappings":"AAKA,OAAO,EAAe,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAY3F,MAAM,CAAC,MAAM,YAAY,GAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAErF;mFACmF;AACnF,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,2FAA2F;AAC3F,SAAS,aAAa,CAAC,CAAS;IAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC;AACV,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACxD,wBAAwB;IACxB,SAAS;IACT,SAAS;IACT,qFAAqF;IACrF,qBAAqB;IACrB,oBAAoB;IACpB,kBAAkB;IAClB,wBAAwB;IACxB,YAAY;IACZ,YAAY;IACZ,uCAAuC;IACvC,+EAA+E;IAC/E,gBAAgB;IAChB,0BAA0B;IAC1B,wBAAwB;IACxB,qBAAqB;IACrB,wBAAwB;IACxB,yCAAyC;IACzC,6BAA6B;IAC7B,4BAA4B;IAC5B,wDAAwD;IACxD,aAAa;IACb,aAAa;IACb,OAAO;IACP,iBAAiB;IACjB,WAAW;IACX,eAAe;IACf,mBAAmB;IACnB,uBAAuB;IACvB,WAAW;IACX,QAAQ;IACR,2BAA2B;IAC3B,8EAA8E;IAC9E,WAAW;CACX,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAsB,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;AAwE9F,MAAM,UAAU,gBAAgB,CAAC,IAAI,GAAc,EAAE;IACpD,MAAM,UAAU,GAAG,WAAW,CAAC,EAAE,GAAG,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAS,EAAE,GAAG,YAAY,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACzD,IAAI,KAAK,GAAe;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;QAC5B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,aAAa,EAAE,KAAK;QACpB,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,sBAAsB,CAAC,CAAC;QAC5D,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,YAAY,IAAI,qBAAqB,CAAC;QACvE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,KAAK;QAChD,WAAW,EAAE,IAAI;KACjB,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;IACxC,MAAM,MAAM,GAAG,GAAG,EAAE;QACnB,KAAK,MAAM,CAAC,IAAI,SAAS;YAAE,CAAC,EAAE,CAAC;IAChC,CAAC,CAAC;IAEF,OAAO;QACN,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK;QACrB,SAAS,CAAC,EAAE;YACX,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,GAAG,EAAE;gBACX,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtB,CAAC,CAAC;QACH,CAAC;QACD,SAAS,CAAC,MAAM;YACf,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa;gBAAE,OAAO;YACpF,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;YAC3E,MAAM,EAAE,CAAC;QACV,CAAC;QACD,MAAM;YACL,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;YAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;YAC3E,MAAM,EAAE,CAAC;QACV,CAAC;QACD,eAAe,CAAC,CAAC;YAChB,IACC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;gBACzB,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;gBAC7B,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;gBACzB,KAAK,CAAC,aAAa,KAAK,CAAC,CAAC,aAAa,EACtC,CAAC;gBACF,OAAO;YACR,CAAC;YACD,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,EAAE,CAAC;QACV,CAAC;QACD,SAAS,CAAC,KAAK;YACd,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YAChE,MAAM,EAAE,CAAC;QACV,CAAC;QACD,YAAY,CAAC,KAAK;YACjB,KAAK,GAAG;gBACP,GAAG,KAAK;gBACR,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE;oBAClC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;oBAC9C,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;oBACxC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;oBACxC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;iBACpD,CAAC;aACF,CAAC;YACF,MAAM,EAAE,CAAC;QACV,CAAC;QACD,OAAO,CAAC,KAAK;YACZ,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC;YACxD,MAAM,EAAE,CAAC;QACV,CAAC;QACD,aAAa,CAAC,GAAG;YAChB,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACpD,MAAM,EAAE,CAAC;QACV,CAAC;QACD,eAAe,CAAC,EAAE;YACjB,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC1C,KAAK,GAAG;gBACP,GAAG,KAAK;gBACR,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;aACtF,CAAC;YACF,MAAM,EAAE,CAAC;QACV,CAAC;QACD,eAAe,CAAC,QAAQ;YACvB,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC;gBAAE,OAAO;YACrC,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;YACtC,MAAM,EAAE,CAAC;QACV,CAAC;QACD,eAAe,CAAC,IAAI;YACnB,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI;gBAAE,OAAO;YAC5C,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;YAC7C,MAAM,EAAE,CAAC;QACV,CAAC;QACD,kBAAkB;YACjB,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAChE,MAAM,EAAE,CAAC;QACV,CAAC;QACD,cAAc,CAAC,IAAI;YAClB,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YACxC,MAAM,EAAE,CAAC;QACV,CAAC;QACD,KAAK;YACJ,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YACzD,MAAM,EAAE,CAAC;QACV,CAAC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -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;
|
|
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"}
|
package/dist/mode7-transform.js
CHANGED
|
@@ -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":"AAsBA,gFAAgF;AAChF;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,MAAc;IAC3D,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACxB,OAAO,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW;IACxC,OAAO;QACN,SAAS,EAAE,eAAe,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM;QAC3G,eAAe,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG;KACnD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,OAAe;IACzD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,OAAO,8BAA8B,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,kBAAkB,WAAW,IAAI,CAAC;AACvH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,OAAe,EAAE,OAAe;IAC5E,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACzD,OAAO,0CAA0C,SAAS,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC;AAC3G,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,UAAU,CAAC,OAAe;IACzC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAC/B,QAAgB,EAChB,IAAY,EACZ,gBAAwB;AACxB;6DAC6D;AAC7D,QAAQ,GAAG,CAAC;IAEZ,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,oBAAoB,CAAC,CAAC,yBAAyB;IACvD,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC/B,IAAI,MAAM,IAAI,gBAAgB,EAAE,CAAC;QAChC,uEAAuE;QACvE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC7C,OAAO,SAAS,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,gBAAgB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,aAAa,CAAC;IAC/E,CAAC;IACD,8EAA8E;IAC9E,iFAAiF;IACjF,qFAAqF;IACrF,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;IAC9C,OAAO,SAAS,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;AAC7D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACrC,QAAgB,EAChB,IAAY,EACZ,gBAAwB;IAExB,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC/B,OAAO,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,gBAAgB;AAEhB,SAAS,KAAK,CAAC,CAAS;IACvB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AACpC,CAAC;AAED,SAAS,OAAO,CAAC,CAAS;IACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,KAAK,CAAC,CAAS,EAAE,EAAU,EAAE,EAAU;IAC/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,wEAAwE;AACxE,SAAS,IAAI,CAAC,GAAW;IACxB,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,KAAa,EAAE,KAAa;IAChD,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACzB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACrE,IAAI,GAAG,EAAE,CAAC;QACT,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChD,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;IACvC,CAAC;IACD,OAAO,sBAAsB,KAAK,IAAI,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,iBAAiB,CAAC;AACvE,CAAC"}
|
|
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). */
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -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.
|
package/dist/plugin.js.map
CHANGED
|
@@ -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;
|
|
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
|
+
"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.
|
|
16
|
-
"@edv4h/usketch-store": "3.
|
|
15
|
+
"@edv4h/usketch-shared": "4.19.0",
|
|
16
|
+
"@edv4h/usketch-store": "3.10.0"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
19
|
"react": ">=19"
|