@aura3d/controls 2.0.3 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ArcballControls.d.ts +92 -0
- package/dist/ArcballControls.d.ts.map +1 -0
- package/dist/ArcballControls.js +286 -0
- package/dist/ArcballControls.js.map +1 -0
- package/dist/DragControls.d.ts +13 -0
- package/dist/DragControls.d.ts.map +1 -1
- package/dist/DragControls.js +24 -1
- package/dist/DragControls.js.map +1 -1
- package/dist/FlyControls.d.ts +9 -0
- package/dist/FlyControls.d.ts.map +1 -1
- package/dist/FlyControls.js +20 -2
- package/dist/FlyControls.js.map +1 -1
- package/dist/FocusFrame.d.ts +34 -0
- package/dist/FocusFrame.d.ts.map +1 -0
- package/dist/FocusFrame.js +82 -0
- package/dist/FocusFrame.js.map +1 -0
- package/dist/HoverOutline.d.ts +46 -0
- package/dist/HoverOutline.d.ts.map +1 -0
- package/dist/HoverOutline.js +87 -0
- package/dist/HoverOutline.js.map +1 -0
- package/dist/InteractionControls.d.ts +7 -0
- package/dist/InteractionControls.d.ts.map +1 -1
- package/dist/InteractionControls.js +12 -1
- package/dist/InteractionControls.js.map +1 -1
- package/dist/NativeControlTypes.d.ts +17 -0
- package/dist/NativeControlTypes.d.ts.map +1 -1
- package/dist/NativeControlTypes.js.map +1 -1
- package/dist/OrbitControls.d.ts +9 -0
- package/dist/OrbitControls.d.ts.map +1 -1
- package/dist/OrbitControls.js +26 -6
- package/dist/OrbitControls.js.map +1 -1
- package/dist/Picking.d.ts +15 -0
- package/dist/Picking.d.ts.map +1 -1
- package/dist/Picking.js +62 -23
- package/dist/Picking.js.map +1 -1
- package/dist/PointerLockControls.d.ts.map +1 -1
- package/dist/PointerLockControls.js +4 -0
- package/dist/PointerLockControls.js.map +1 -1
- package/dist/SelectionManager.d.ts +8 -0
- package/dist/SelectionManager.d.ts.map +1 -1
- package/dist/SelectionManager.js +11 -0
- package/dist/SelectionManager.js.map +1 -1
- package/dist/TrackballControls.d.ts +7 -0
- package/dist/TrackballControls.d.ts.map +1 -1
- package/dist/TrackballControls.js +19 -5
- package/dist/TrackballControls.js.map +1 -1
- package/dist/TransformControls.d.ts +8 -0
- package/dist/TransformControls.d.ts.map +1 -1
- package/dist/TransformControls.js +15 -2
- package/dist/TransformControls.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Focus framing for editor/viewport selection (F4).
|
|
3
|
+
*
|
|
4
|
+
* Computes the orbit target and camera distance that frames a set of picked
|
|
5
|
+
* objects given a vertical field of view: the bounding sphere of the object
|
|
6
|
+
* centers (expanded by each object's pick radius) is placed at `target`, and
|
|
7
|
+
* `distance` fits that sphere with `margin` headroom. Pure math — a viewport
|
|
8
|
+
* applies the result to its own camera, and the browser proof asserts the
|
|
9
|
+
* framed object lands centered with the expected apparent size.
|
|
10
|
+
*/
|
|
11
|
+
export function frameSelection(objects, options = {}) {
|
|
12
|
+
const fovDegrees = options.fovDegrees ?? 45;
|
|
13
|
+
const margin = options.margin ?? 1.25;
|
|
14
|
+
const minDistance = options.minDistance ?? 0.5;
|
|
15
|
+
const maxDistance = options.maxDistance ?? 100;
|
|
16
|
+
if (!Number.isFinite(fovDegrees) || fovDegrees <= 1 || fovDegrees >= 179) {
|
|
17
|
+
throw new RangeError("FocusFrame fovDegrees must be within (1, 179).");
|
|
18
|
+
}
|
|
19
|
+
if (!Number.isFinite(margin) || margin < 1) {
|
|
20
|
+
throw new RangeError("FocusFrame margin must be >= 1.");
|
|
21
|
+
}
|
|
22
|
+
if (!Number.isFinite(minDistance) || minDistance <= 0) {
|
|
23
|
+
throw new RangeError("FocusFrame minDistance must be positive and finite.");
|
|
24
|
+
}
|
|
25
|
+
if (!Number.isFinite(maxDistance) || maxDistance < minDistance) {
|
|
26
|
+
throw new RangeError("FocusFrame maxDistance must be >= minDistance.");
|
|
27
|
+
}
|
|
28
|
+
if (objects.length === 0)
|
|
29
|
+
return undefined;
|
|
30
|
+
let minX = Number.POSITIVE_INFINITY;
|
|
31
|
+
let minY = Number.POSITIVE_INFINITY;
|
|
32
|
+
let minZ = Number.POSITIVE_INFINITY;
|
|
33
|
+
let maxX = Number.NEGATIVE_INFINITY;
|
|
34
|
+
let maxY = Number.NEGATIVE_INFINITY;
|
|
35
|
+
let maxZ = Number.NEGATIVE_INFINITY;
|
|
36
|
+
for (const object of objects) {
|
|
37
|
+
const radius = focusRadiusOf(object);
|
|
38
|
+
minX = Math.min(minX, object.position.x - radius);
|
|
39
|
+
minY = Math.min(minY, object.position.y - radius);
|
|
40
|
+
minZ = Math.min(minZ, object.position.z - radius);
|
|
41
|
+
maxX = Math.max(maxX, object.position.x + radius);
|
|
42
|
+
maxY = Math.max(maxY, object.position.y + radius);
|
|
43
|
+
maxZ = Math.max(maxZ, object.position.z + radius);
|
|
44
|
+
}
|
|
45
|
+
const target = {
|
|
46
|
+
x: (minX + maxX) / 2,
|
|
47
|
+
y: (minY + maxY) / 2,
|
|
48
|
+
z: (minZ + maxZ) / 2
|
|
49
|
+
};
|
|
50
|
+
const radius = Math.max((maxX - minX) / 2, (maxY - minY) / 2, (maxZ - minZ) / 2, 1e-6);
|
|
51
|
+
const halfFov = ((fovDegrees * Math.PI) / 180) / 2;
|
|
52
|
+
const distance = Math.min(maxDistance, Math.max(minDistance, ((radius * margin) / Math.tan(halfFov)) || minDistance));
|
|
53
|
+
return { target, distance, radius, objectCount: objects.length };
|
|
54
|
+
}
|
|
55
|
+
/** Builds a focus target from an explicit center/radius pair (e.g. bounds math). */
|
|
56
|
+
export function frameTarget(target, options = {}) {
|
|
57
|
+
const proxy = {
|
|
58
|
+
position: { x: target.center.x, y: target.center.y, z: target.center.z },
|
|
59
|
+
picking: { pickRadius: target.radius }
|
|
60
|
+
};
|
|
61
|
+
const result = frameSelection([proxy], options);
|
|
62
|
+
if (!result)
|
|
63
|
+
throw new Error("FocusFrame frameTarget unexpectedly produced no result.");
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
function focusRadiusOf(object) {
|
|
67
|
+
const explicit = object.pickRadius ?? object.picking?.pickRadius;
|
|
68
|
+
if (explicit !== undefined) {
|
|
69
|
+
if (!Number.isFinite(explicit) || explicit <= 0) {
|
|
70
|
+
throw new RangeError("FocusFrame pickRadius must be finite and positive.");
|
|
71
|
+
}
|
|
72
|
+
return explicit;
|
|
73
|
+
}
|
|
74
|
+
const scale = object.scale;
|
|
75
|
+
if (scale) {
|
|
76
|
+
const radius = Math.max(Math.abs(scale.x), Math.abs(scale.y), Math.abs(scale.z)) * 0.5;
|
|
77
|
+
if (Number.isFinite(radius) && radius > 0)
|
|
78
|
+
return radius;
|
|
79
|
+
}
|
|
80
|
+
return 0.5;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=FocusFrame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FocusFrame.js","sourceRoot":"","sources":["../../../../packages/controls/src/FocusFrame.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { ControlObject3DLike } from "./NativeControlTypes.js";
|
|
2
|
+
export type HoverOutlineTone = "hover" | "selected" | "hover-selected";
|
|
3
|
+
export interface HoverOutlineStyle {
|
|
4
|
+
readonly color: readonly [number, number, number, number];
|
|
5
|
+
readonly width: number;
|
|
6
|
+
}
|
|
7
|
+
export interface HoverOutlineOptions {
|
|
8
|
+
readonly hover?: Partial<HoverOutlineStyle>;
|
|
9
|
+
readonly selected?: Partial<HoverOutlineStyle>;
|
|
10
|
+
readonly hoverSelected?: Partial<HoverOutlineStyle>;
|
|
11
|
+
}
|
|
12
|
+
export interface HoverOutlineEntry {
|
|
13
|
+
readonly object: ControlObject3DLike;
|
|
14
|
+
readonly tone: HoverOutlineTone;
|
|
15
|
+
readonly style: HoverOutlineStyle;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Hover/selection highlight state for the editor outline pass (A3).
|
|
19
|
+
*
|
|
20
|
+
* This class owns the *decision* — which objects request an outline and with
|
|
21
|
+
* which tone — while the renderer owns the pixels. A viewport feeds pointer
|
|
22
|
+
* picks (`setHovered`) and selection commits (`setSelected`) and reads
|
|
23
|
+
* `entries()` to submit outline geometry; the browser proof asserts the
|
|
24
|
+
* submitted outline changes rendered pixels.
|
|
25
|
+
*/
|
|
26
|
+
export declare class HoverOutline {
|
|
27
|
+
private readonly hoverStyle;
|
|
28
|
+
private readonly selectedStyle;
|
|
29
|
+
private readonly hoverSelectedStyle;
|
|
30
|
+
private hovered;
|
|
31
|
+
private readonly selectedObjects;
|
|
32
|
+
private disposed;
|
|
33
|
+
constructor(options?: HoverOutlineOptions);
|
|
34
|
+
/** True after `dispose()`; setters are no-ops past this point. */
|
|
35
|
+
get isDisposed(): boolean;
|
|
36
|
+
setHovered(object: ControlObject3DLike | null): void;
|
|
37
|
+
setSelected(objects: readonly ControlObject3DLike[]): void;
|
|
38
|
+
clear(): void;
|
|
39
|
+
entries(): readonly HoverOutlineEntry[];
|
|
40
|
+
/**
|
|
41
|
+
* F1-standard disposal: drops hover/selection references and owns zero DOM
|
|
42
|
+
* listeners, so nothing can leak. Idempotent.
|
|
43
|
+
*/
|
|
44
|
+
dispose(): void;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=HoverOutline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HoverOutline.d.ts","sourceRoot":"","sources":["../../../../packages/controls/src/HoverOutline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,gBAAgB,CAAC;AAEvE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/C,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;CACnC;AAiBD;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkC;IAClE,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,GAAE,mBAAwB;IAM7C,kEAAkE;IAClE,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,GAAG,IAAI;IAKpD,WAAW,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,GAAG,IAAI;IAM1D,KAAK,IAAI,IAAI;IAMb,OAAO,IAAI,SAAS,iBAAiB,EAAE;IAmBvC;;;OAGG;IACH,OAAO,IAAI,IAAI;CAMhB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
const DEFAULT_HOVER_STYLE = {
|
|
2
|
+
color: [0.4, 0.75, 1, 1],
|
|
3
|
+
width: 2
|
|
4
|
+
};
|
|
5
|
+
const DEFAULT_SELECTED_STYLE = {
|
|
6
|
+
color: [1, 0.62, 0.16, 1],
|
|
7
|
+
width: 3
|
|
8
|
+
};
|
|
9
|
+
const DEFAULT_HOVER_SELECTED_STYLE = {
|
|
10
|
+
color: [1, 0.85, 0.4, 1],
|
|
11
|
+
width: 4
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Hover/selection highlight state for the editor outline pass (A3).
|
|
15
|
+
*
|
|
16
|
+
* This class owns the *decision* — which objects request an outline and with
|
|
17
|
+
* which tone — while the renderer owns the pixels. A viewport feeds pointer
|
|
18
|
+
* picks (`setHovered`) and selection commits (`setSelected`) and reads
|
|
19
|
+
* `entries()` to submit outline geometry; the browser proof asserts the
|
|
20
|
+
* submitted outline changes rendered pixels.
|
|
21
|
+
*/
|
|
22
|
+
export class HoverOutline {
|
|
23
|
+
hoverStyle;
|
|
24
|
+
selectedStyle;
|
|
25
|
+
hoverSelectedStyle;
|
|
26
|
+
hovered = null;
|
|
27
|
+
selectedObjects = new Set();
|
|
28
|
+
disposed = false;
|
|
29
|
+
constructor(options = {}) {
|
|
30
|
+
this.hoverStyle = { ...DEFAULT_HOVER_STYLE, ...options.hover };
|
|
31
|
+
this.selectedStyle = { ...DEFAULT_SELECTED_STYLE, ...options.selected };
|
|
32
|
+
this.hoverSelectedStyle = { ...DEFAULT_HOVER_SELECTED_STYLE, ...options.hoverSelected };
|
|
33
|
+
}
|
|
34
|
+
/** True after `dispose()`; setters are no-ops past this point. */
|
|
35
|
+
get isDisposed() {
|
|
36
|
+
return this.disposed;
|
|
37
|
+
}
|
|
38
|
+
setHovered(object) {
|
|
39
|
+
if (this.disposed)
|
|
40
|
+
return;
|
|
41
|
+
this.hovered = object;
|
|
42
|
+
}
|
|
43
|
+
setSelected(objects) {
|
|
44
|
+
if (this.disposed)
|
|
45
|
+
return;
|
|
46
|
+
this.selectedObjects.clear();
|
|
47
|
+
for (const object of objects)
|
|
48
|
+
this.selectedObjects.add(object);
|
|
49
|
+
}
|
|
50
|
+
clear() {
|
|
51
|
+
if (this.disposed)
|
|
52
|
+
return;
|
|
53
|
+
this.hovered = null;
|
|
54
|
+
this.selectedObjects.clear();
|
|
55
|
+
}
|
|
56
|
+
entries() {
|
|
57
|
+
const entries = [];
|
|
58
|
+
const seen = new Set();
|
|
59
|
+
if (this.hovered) {
|
|
60
|
+
const selected = this.selectedObjects.has(this.hovered);
|
|
61
|
+
entries.push({
|
|
62
|
+
object: this.hovered,
|
|
63
|
+
tone: selected ? "hover-selected" : "hover",
|
|
64
|
+
style: selected ? this.hoverSelectedStyle : this.hoverStyle
|
|
65
|
+
});
|
|
66
|
+
seen.add(this.hovered);
|
|
67
|
+
}
|
|
68
|
+
for (const object of this.selectedObjects) {
|
|
69
|
+
if (seen.has(object))
|
|
70
|
+
continue;
|
|
71
|
+
entries.push({ object, tone: "selected", style: this.selectedStyle });
|
|
72
|
+
}
|
|
73
|
+
return entries;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* F1-standard disposal: drops hover/selection references and owns zero DOM
|
|
77
|
+
* listeners, so nothing can leak. Idempotent.
|
|
78
|
+
*/
|
|
79
|
+
dispose() {
|
|
80
|
+
if (this.disposed)
|
|
81
|
+
return;
|
|
82
|
+
this.disposed = true;
|
|
83
|
+
this.hovered = null;
|
|
84
|
+
this.selectedObjects.clear();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=HoverOutline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HoverOutline.js","sourceRoot":"","sources":["../../../../packages/controls/src/HoverOutline.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,6 +63,8 @@ export declare class InteractionControls {
|
|
|
63
63
|
private readonly flyMoveSpeed;
|
|
64
64
|
constructor(options?: InteractionControlsOptions);
|
|
65
65
|
get mode(): InteractionControlMode;
|
|
66
|
+
/** True after `dispose()`; `update`/`setMode` stay silent past this point. */
|
|
67
|
+
get isDisposed(): boolean;
|
|
66
68
|
setMode(mode: InteractionControlMode, snapshot?: InputSnapshot): void;
|
|
67
69
|
setRoot(root: ControlObject3DLike | InteractionRootProvider | undefined): void;
|
|
68
70
|
setRayProvider(provider: InteractionRayProvider | undefined): void;
|
|
@@ -71,6 +73,11 @@ export declare class InteractionControls {
|
|
|
71
73
|
onHotspot(id: string, handler: HotspotHandler): () => void;
|
|
72
74
|
update(snapshot: InputSnapshot): InteractionControlsUpdate;
|
|
73
75
|
pick(snapshot: InputSnapshot): PickingReport | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* F1-standard disposal: marks the instance disposed, drops every listener
|
|
78
|
+
* and hotspot handler, and clears hover state so `update()` stays silent.
|
|
79
|
+
* Idempotent. Owns zero DOM listeners, so nothing can leak.
|
|
80
|
+
*/
|
|
74
81
|
dispose(): void;
|
|
75
82
|
private updateOrbit;
|
|
76
83
|
private updateFly;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InteractionControls.d.ts","sourceRoot":"","sources":["../../../../packages/controls/src/InteractionControls.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"InteractionControls.d.ts","sourceRoot":"","sources":["../../../../packages/controls/src/InteractionControls.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,8 +40,12 @@ export class InteractionControls {
|
|
|
40
40
|
get mode() {
|
|
41
41
|
return this.controlMode;
|
|
42
42
|
}
|
|
43
|
+
/** True after `dispose()`; `update`/`setMode` stay silent past this point. */
|
|
44
|
+
get isDisposed() {
|
|
45
|
+
return this.disposed;
|
|
46
|
+
}
|
|
43
47
|
setMode(mode, snapshot = new InputSnapshot()) {
|
|
44
|
-
if (this.controlMode === mode)
|
|
48
|
+
if (this.disposed || this.controlMode === mode)
|
|
45
49
|
return;
|
|
46
50
|
this.controlMode = mode;
|
|
47
51
|
this.emit({ type: "mode-change", mode, snapshot });
|
|
@@ -90,7 +94,14 @@ export class InteractionControls {
|
|
|
90
94
|
const ray = this.resolveRay(snapshot);
|
|
91
95
|
return this.picking.report(root, ray.origin, ray.direction, this.pickOptions);
|
|
92
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* F1-standard disposal: marks the instance disposed, drops every listener
|
|
99
|
+
* and hotspot handler, and clears hover state so `update()` stays silent.
|
|
100
|
+
* Idempotent. Owns zero DOM listeners, so nothing can leak.
|
|
101
|
+
*/
|
|
93
102
|
dispose() {
|
|
103
|
+
if (this.disposed)
|
|
104
|
+
return;
|
|
94
105
|
this.disposed = true;
|
|
95
106
|
this.listeners.clear();
|
|
96
107
|
this.hotspotHandlers.clear();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InteractionControls.js","sourceRoot":"","sources":["../../../../packages/controls/src/InteractionControls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAuE,MAAM,WAAW,CAAC;AACzG,OAAO,EAAE,cAAc,EAA8C,MAAM,sBAAsB,CAAC;AAkDlG,MAAM,OAAO,mBAAmB;IACrB,KAAK,CAAgB;IACrB,GAAG,CAAc;IACjB,OAAO,CAAU;IAE1B,OAAO,GAAG,IAAI,CAAC;IAEP,WAAW,CAAyB;IACpC,OAAO,CAAiD;IACxD,WAAW,CAA0B;IACrC,WAAW,CAAiB;IACnB,SAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IACnD,eAAe,GAAG,IAAI,GAAG,EAA+B,CAAC;IAClE,QAAQ,GAAiC,IAAI,CAAC;IAC9C,QAAQ,GAAG,KAAK,CAAC;IAER,YAAY,CAAS;IACrB,SAAS,CAAS;IAClB,WAAW,CAAS;IACpB,QAAQ,CAAS;IACjB,UAAU,CAAS;IACnB,YAAY,CAAS;IAEtC,YAAY,UAAsC,EAAE;QAClD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,aAAa,EAAE,CAAC;QAClD,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,OAAO,EAAE,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC;QAC9C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,OAAO,CAAC,IAA4B,EAAE,QAAQ,GAAG,IAAI,aAAa,EAAE;QAClE,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI;YAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"InteractionControls.js","sourceRoot":"","sources":["../../../../packages/controls/src/InteractionControls.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,23 @@ export interface ControlPickMetadata {
|
|
|
16
16
|
readonly pickRadius?: number;
|
|
17
17
|
readonly priority?: number;
|
|
18
18
|
readonly payload?: unknown;
|
|
19
|
+
/**
|
|
20
|
+
* Instanced picking: world-space centers of the instances belonging to an
|
|
21
|
+
* `InstancedMesh` (or any multi-part object). Each entry is tested as its
|
|
22
|
+
* own pick sphere; a hit reports the nearest entry via `instanceId` on the
|
|
23
|
+
* result metadata. Entries accept either a `Vector3Like` or an
|
|
24
|
+
* `[x, y, z]` tuple.
|
|
25
|
+
*/
|
|
26
|
+
readonly instancePositions?: readonly (Vector3Like | readonly [number, number, number])[];
|
|
27
|
+
/**
|
|
28
|
+
* Skinned picking: number of influencing bones, when known. Informational
|
|
29
|
+
* only — the sphere test runs against the bind-pose position plus radius,
|
|
30
|
+
* so deformation beyond that radius is an explicit non-goal (see
|
|
31
|
+
* `Picking` docs).
|
|
32
|
+
*/
|
|
33
|
+
readonly skinnedBoneCount?: number;
|
|
34
|
+
/** Reported on a hit against one entry of `instancePositions`. */
|
|
35
|
+
readonly instanceId?: number;
|
|
19
36
|
}
|
|
20
37
|
export declare class ControlVector3 implements Vector3Like {
|
|
21
38
|
x: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeControlTypes.d.ts","sourceRoot":"","sources":["../../../../packages/controls/src/NativeControlTypes.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"NativeControlTypes.d.ts","sourceRoot":"","sources":["../../../../packages/controls/src/NativeControlTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeControlTypes.js","sourceRoot":"","sources":["../../../../packages/controls/src/NativeControlTypes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NativeControlTypes.js","sourceRoot":"","sources":["../../../../packages/controls/src/NativeControlTypes.ts"],"names":[],"mappings":"AAsCA,MAAM,OAAO,cAAc;IACN;IAAc;IAAc;IAA/C,YAAmB,IAAI,CAAC,EAAS,IAAI,CAAC,EAAS,IAAI,CAAC;QAAjC,MAAC,GAAD,CAAC,CAAI;QAAS,MAAC,GAAD,CAAC,CAAI;QAAS,MAAC,GAAD,CAAC,CAAI;IAAG,CAAC;IAExD,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QACjC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,KAAkB;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK;QACH,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,GAAG,CAAC,KAAkB;QACpB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,KAAkB;QACpB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,SAAS;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,OAAO,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzF,CAAC;CACF;AAiBD,MAAM,UAAU,UAAU,CAAC,MAA+B,EAAE,KAAkB;IAC5E,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;IACpB,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;IACpB,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAyB,EAAE,QAA+C;IAC9G,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO;IACT,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,CAAC;IACf,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE;QAAE,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAClF,CAAC"}
|
package/dist/OrbitControls.d.ts
CHANGED
|
@@ -28,9 +28,12 @@ export declare class OrbitControls {
|
|
|
28
28
|
enableRotate: boolean;
|
|
29
29
|
private readonly engine;
|
|
30
30
|
private attachedCamera;
|
|
31
|
+
private disposed;
|
|
31
32
|
constructor(camera?: OrbitCameraLike, options?: OrbitControlsOptions);
|
|
32
33
|
/** True when a camera is attached and motion is delegated to the real engine. */
|
|
33
34
|
get isCameraAttached(): boolean;
|
|
35
|
+
/** True after `dispose()`; every mutator is a no-op past this point. */
|
|
36
|
+
get isDisposed(): boolean;
|
|
34
37
|
/**
|
|
35
38
|
* Drive the controls from an input snapshot. Camera-attached only; a detached
|
|
36
39
|
* instance has no camera to move and ignores the snapshot.
|
|
@@ -52,6 +55,12 @@ export declare class OrbitControls {
|
|
|
52
55
|
saveState(): void;
|
|
53
56
|
/** Camera-attached only; no-op when detached. */
|
|
54
57
|
reset(): void;
|
|
58
|
+
/**
|
|
59
|
+
* F1-standard disposal: disables the instance, detaches the camera so no
|
|
60
|
+
* further mutation is possible, and delegates to the input engine (which
|
|
61
|
+
* owns zero DOM listeners — input arrives via snapshots — so nothing can
|
|
62
|
+
* leak). Idempotent.
|
|
63
|
+
*/
|
|
55
64
|
dispose(): void;
|
|
56
65
|
/**
|
|
57
66
|
* Move the orbit target on the XZ ground plane. Camera-attached instances
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrbitControls.d.ts","sourceRoot":"","sources":["../../../../packages/controls/src/OrbitControls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwC,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC/G,OAAO,EAA6B,KAAK,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAErC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;CACpC;AAYD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,aAAa;IACxB,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAA+B;IACtE,SAAS,UAAQ;IACjB,UAAU,UAAQ;IAClB,YAAY,UAAQ;IAEpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IACzD,OAAO,CAAC,cAAc,CAA8B;
|
|
1
|
+
{"version":3,"file":"OrbitControls.d.ts","sourceRoot":"","sources":["../../../../packages/controls/src/OrbitControls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwC,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC/G,OAAO,EAA6B,KAAK,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAErC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;CACpC;AAYD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,aAAa;IACxB,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAA+B;IACtE,SAAS,UAAQ;IACjB,UAAU,UAAQ;IAClB,YAAY,UAAQ;IAEpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IACzD,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,CAAC,EAAE,eAAe,EAAE,OAAO,GAAE,oBAAyB;IASxE,iFAAiF;IACjF,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,wEAAwE;IACxE,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;;;;;OAMG;IACH,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAQzC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAY5C,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAYzC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAW1B,qDAAqD;IACrD,iBAAiB,IAAI,MAAM;IAI3B,qDAAqD;IACrD,aAAa,IAAI,MAAM;IAIvB,qDAAqD;IACrD,WAAW,IAAI,MAAM;IAIrB,iDAAiD;IACjD,SAAS,IAAI,IAAI;IAKjB,iDAAiD;IACjD,KAAK,IAAI,IAAI;IAMb;;;;;OAKG;IACH,OAAO,IAAI,IAAI;IAQf;;;;OAIG;IACH,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAc3D,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,SAAS;CAWlB"}
|
package/dist/OrbitControls.js
CHANGED
|
@@ -31,6 +31,7 @@ export class OrbitControls {
|
|
|
31
31
|
enableRotate = true;
|
|
32
32
|
engine;
|
|
33
33
|
attachedCamera;
|
|
34
|
+
disposed = false;
|
|
34
35
|
constructor(camera, options = {}) {
|
|
35
36
|
if (!camera)
|
|
36
37
|
return;
|
|
@@ -42,7 +43,11 @@ export class OrbitControls {
|
|
|
42
43
|
}
|
|
43
44
|
/** True when a camera is attached and motion is delegated to the real engine. */
|
|
44
45
|
get isCameraAttached() {
|
|
45
|
-
return this.engine !== undefined;
|
|
46
|
+
return this.engine !== undefined && !this.disposed;
|
|
47
|
+
}
|
|
48
|
+
/** True after `dispose()`; every mutator is a no-op past this point. */
|
|
49
|
+
get isDisposed() {
|
|
50
|
+
return this.disposed;
|
|
46
51
|
}
|
|
47
52
|
/**
|
|
48
53
|
* Drive the controls from an input snapshot. Camera-attached only; a detached
|
|
@@ -53,14 +58,14 @@ export class OrbitControls {
|
|
|
53
58
|
*/
|
|
54
59
|
applyInput(snapshot) {
|
|
55
60
|
const engine = this.engine;
|
|
56
|
-
if (!engine)
|
|
61
|
+
if (!engine || this.disposed || !this.state.enabled)
|
|
57
62
|
return;
|
|
58
63
|
this.pushFlags(engine);
|
|
59
64
|
engine.update(snapshot);
|
|
60
65
|
this.syncState();
|
|
61
66
|
}
|
|
62
67
|
rotate(deltaX, deltaY) {
|
|
63
|
-
if (!this.enableRotate)
|
|
68
|
+
if (this.disposed || !this.enableRotate)
|
|
64
69
|
return;
|
|
65
70
|
if (this.engine) {
|
|
66
71
|
this.pushFlags(this.engine);
|
|
@@ -72,7 +77,7 @@ export class OrbitControls {
|
|
|
72
77
|
this.state.rotation.y += deltaX;
|
|
73
78
|
}
|
|
74
79
|
pan(deltaX, deltaY) {
|
|
75
|
-
if (!this.enablePan)
|
|
80
|
+
if (this.disposed || !this.enablePan)
|
|
76
81
|
return;
|
|
77
82
|
if (this.engine) {
|
|
78
83
|
this.pushFlags(this.engine);
|
|
@@ -84,7 +89,7 @@ export class OrbitControls {
|
|
|
84
89
|
this.state.target.y += deltaY;
|
|
85
90
|
}
|
|
86
91
|
dolly(scale) {
|
|
87
|
-
if (!this.enableZoom)
|
|
92
|
+
if (this.disposed || !this.enableZoom)
|
|
88
93
|
return;
|
|
89
94
|
if (this.engine) {
|
|
90
95
|
this.pushFlags(this.engine);
|
|
@@ -108,16 +113,29 @@ export class OrbitControls {
|
|
|
108
113
|
}
|
|
109
114
|
/** Camera-attached only; no-op when detached. */
|
|
110
115
|
saveState() {
|
|
116
|
+
if (this.disposed)
|
|
117
|
+
return;
|
|
111
118
|
this.engine?.saveState();
|
|
112
119
|
}
|
|
113
120
|
/** Camera-attached only; no-op when detached. */
|
|
114
121
|
reset() {
|
|
115
|
-
if (!this.engine)
|
|
122
|
+
if (!this.engine || this.disposed)
|
|
116
123
|
return;
|
|
117
124
|
this.engine.reset();
|
|
118
125
|
this.syncState();
|
|
119
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* F1-standard disposal: disables the instance, detaches the camera so no
|
|
129
|
+
* further mutation is possible, and delegates to the input engine (which
|
|
130
|
+
* owns zero DOM listeners — input arrives via snapshots — so nothing can
|
|
131
|
+
* leak). Idempotent.
|
|
132
|
+
*/
|
|
120
133
|
dispose() {
|
|
134
|
+
if (this.disposed)
|
|
135
|
+
return;
|
|
136
|
+
this.disposed = true;
|
|
137
|
+
this.state.enabled = false;
|
|
138
|
+
this.attachedCamera = undefined;
|
|
121
139
|
this.engine?.dispose();
|
|
122
140
|
}
|
|
123
141
|
/**
|
|
@@ -126,6 +144,8 @@ export class OrbitControls {
|
|
|
126
144
|
* update `state.target` bookkeeping.
|
|
127
145
|
*/
|
|
128
146
|
truckTarget(deltaX, deltaZ) {
|
|
147
|
+
if (this.disposed)
|
|
148
|
+
return;
|
|
129
149
|
const engine = this.engine;
|
|
130
150
|
if (!engine) {
|
|
131
151
|
this.state.target.x += deltaX;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrbitControls.js","sourceRoot":"","sources":["../../../../packages/controls/src/OrbitControls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,IAAI,mBAAmB,EAA6B,MAAM,eAAe,CAAC;AAC/G,OAAO,EAAE,yBAAyB,EAAgC,MAAM,gBAAgB,CAAC;AAUzF,SAAS,WAAW,CAAC,MAAc,EAAE,MAAc,EAAE,MAAc;IACjE,OAAO,IAAI,aAAa,CAAC;QACvB,OAAO,EAAE;YACP,MAAM;YACN,MAAM;YACN,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;SAC7E;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,aAAa;IACf,KAAK,GAA4B,yBAAyB,EAAE,CAAC;IACtE,SAAS,GAAG,IAAI,CAAC;IACjB,UAAU,GAAG,IAAI,CAAC;IAClB,YAAY,GAAG,IAAI,CAAC;IAEH,MAAM,CAAkC;IACjD,cAAc,CAA8B;
|
|
1
|
+
{"version":3,"file":"OrbitControls.js","sourceRoot":"","sources":["../../../../packages/controls/src/OrbitControls.ts"],"names":[],"mappings":"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"}
|
package/dist/Picking.d.ts
CHANGED
|
@@ -33,6 +33,21 @@ export interface PickingReport {
|
|
|
33
33
|
readonly hits: readonly ThreeCompatPickResult[];
|
|
34
34
|
readonly diagnostics: PickingDiagnostics;
|
|
35
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Sphere-based picking over `ControlObject3DLike` scene graphs.
|
|
38
|
+
*
|
|
39
|
+
* Scope notes (F4):
|
|
40
|
+
*
|
|
41
|
+
* - `SkinnedMesh` objects are pickable via the same bind-pose sphere test as
|
|
42
|
+
* static meshes (position plus `pickRadius`). Bone-deformed triangles beyond
|
|
43
|
+
* that radius are an explicit non-goal: this layer answers "which authored
|
|
44
|
+
* object did the pointer hit", not triangle-exact skinning queries.
|
|
45
|
+
* - `InstancedMesh` objects are pickable per instance: metadata
|
|
46
|
+
* `instancePositions` lists world-space instance centers, each tested as
|
|
47
|
+
* its own sphere, and a hit reports the nearest entry as
|
|
48
|
+
* `metadata.instanceId`. Without `instancePositions` the single object
|
|
49
|
+
* sphere is tested, exactly like a static mesh.
|
|
50
|
+
*/
|
|
36
51
|
export declare class Picking {
|
|
37
52
|
pick(root: ControlObject3DLike, origin?: Vector3Like, direction?: Vector3Like, options?: PickingOptions): ThreeCompatPickResult | null;
|
|
38
53
|
pickAll(root: ControlObject3DLike, origin?: Vector3Like, direction?: Vector3Like, options?: PickingOptions): readonly ThreeCompatPickResult[];
|
package/dist/Picking.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Picking.d.ts","sourceRoot":"","sources":["../../../../packages/controls/src/Picking.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CACzC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,OAAO,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,mBAAmB,GAAG,SAAS,CAAC;CACtF;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,gCAAgC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzD,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;CAC1C;AAED,qBAAa,OAAO;IAClB,IAAI,CACF,IAAI,EAAE,mBAAmB,EACzB,MAAM,GAAE,WAAkC,EAC1C,SAAS,GAAE,WAA0C,EACrD,OAAO,GAAE,cAAmB,GAC3B,qBAAqB,GAAG,IAAI;IAI/B,OAAO,CACL,IAAI,EAAE,mBAAmB,EACzB,MAAM,GAAE,WAAkC,EAC1C,SAAS,GAAE,WAA0C,EACrD,OAAO,GAAE,cAAmB,GAC3B,SAAS,qBAAqB,EAAE;IAInC,MAAM,CACJ,IAAI,EAAE,mBAAmB,EACzB,MAAM,GAAE,WAAkC,EAC1C,SAAS,GAAE,WAA0C,EACrD,OAAO,GAAE,cAAmB,GAC3B,aAAa;
|
|
1
|
+
{"version":3,"file":"Picking.d.ts","sourceRoot":"","sources":["../../../../packages/controls/src/Picking.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CACzC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,OAAO,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,mBAAmB,GAAG,SAAS,CAAC;CACtF;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,gCAAgC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzD,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;CAC1C;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,OAAO;IAClB,IAAI,CACF,IAAI,EAAE,mBAAmB,EACzB,MAAM,GAAE,WAAkC,EAC1C,SAAS,GAAE,WAA0C,EACrD,OAAO,GAAE,cAAmB,GAC3B,qBAAqB,GAAG,IAAI;IAI/B,OAAO,CACL,IAAI,EAAE,mBAAmB,EACzB,MAAM,GAAE,WAAkC,EAC1C,SAAS,GAAE,WAA0C,EACrD,OAAO,GAAE,cAAmB,GAC3B,SAAS,qBAAqB,EAAE;IAInC,MAAM,CACJ,IAAI,EAAE,mBAAmB,EACzB,MAAM,GAAE,WAAkC,EAC1C,SAAS,GAAE,WAA0C,EACrD,OAAO,GAAE,cAAmB,GAC3B,aAAa;CAoFjB"}
|