@layoutit/polycss-vue 0.0.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/LICENSE +21 -0
- package/README.md +188 -0
- package/dist/index.cjs +172 -0
- package/dist/index.d.cts +1439 -0
- package/dist/index.d.ts +1439 -0
- package/dist/index.js +172 -0
- package/package.json +63 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,1439 @@
|
|
|
1
|
+
import * as vue from 'vue';
|
|
2
|
+
import { PropType, Ref, InjectionKey, VNode, ComputedRef, MaybeRef } from 'vue';
|
|
3
|
+
import { Vec3, CameraState, CameraHandle, Polygon, PolyDirectionalLight, PolyAmbientLight, PolyTextureLightingMode, LoadMeshOptions, PolyMaterial, Vec2, PolyAnimationTarget, PolyAnimationMixer, PolyAnimationClip, PolyAnimationAction, ParseAnimationController } from '@layoutit/polycss-core';
|
|
4
|
+
export { ArrowPolygonsOptions, AutoRotateConfig, AutoRotateOption, AxesHelperOptions, BASE_TILE, CameraHandle, CameraState, CameraStyleInput, CoverPlanarPolygonsOptions, CullInteriorOptions, DEFAULT_CAMERA_STATE, DEFAULT_PROJECTION, GltfParseOptions, LoadMeshOptions, LoopMode, LoopOnce, LoopPingPong, LoopRepeat, MtlParseResult, NormalizeResult, ObjParseOptions, OctahedronPolygonsOptions, ParseAnimationClip, ParseAnimationController, ParseResult, ParsedColor, PolyAmbientLight, PolyAnimationAction, PolyAnimationClip, PolyAnimationMixer, PolyAnimationTarget, PolyDirectionalLight, PolyMaterial, PolyTextureLightingMode, Polygon, PolygonFace, RingPolygonsOptions, SceneBbox, SceneContext, SceneContextBuildArgs, SceneContextBuildResult, SolidTextureSampleOptions, TexturePaintMetrics, TexturePaintMetricsOptions, TextureTriangle, Vec2, Vec3, VoxParseOptions, arrowPolygons, axesHelperPolygons, bakeSolidTextureSampledPolygons, bakeSolidTextureSamples, buildSceneContext, clampChannel, computeSceneBbox, computeShapeLighting, computeTexturePaintMetrics, coverPlanarPolygons, createIsometricCamera, createPolyAnimationMixer, cullInteriorPolygons, formatColor, inverseRotateVec3, loadMesh, mergePolygons, normalizeInvertMultiplier, normalizePolygons, octahedronPolygons, parseColor, parseGltf, parseHexColor, parseMtl, parseObj, parsePureColor, parseRgbColor, parseVox, polygonFaces, ringPolygons, rotateVec3, shadeColor } from '@layoutit/polycss-core';
|
|
5
|
+
|
|
6
|
+
interface PolyPerspectiveCameraProps {
|
|
7
|
+
zoom?: number;
|
|
8
|
+
target?: Vec3;
|
|
9
|
+
rotX?: number;
|
|
10
|
+
rotY?: number;
|
|
11
|
+
/** Camera pull-back in CSS pixels (dolly). Default 0. */
|
|
12
|
+
distance?: number;
|
|
13
|
+
/** CSS perspective distance in pixels. Defaults to 8000. */
|
|
14
|
+
perspective?: number;
|
|
15
|
+
class?: string;
|
|
16
|
+
}
|
|
17
|
+
declare const PolyPerspectiveCamera: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
18
|
+
zoom: {
|
|
19
|
+
type: NumberConstructor;
|
|
20
|
+
};
|
|
21
|
+
target: {
|
|
22
|
+
type: PropType<Vec3>;
|
|
23
|
+
};
|
|
24
|
+
rotX: {
|
|
25
|
+
type: NumberConstructor;
|
|
26
|
+
};
|
|
27
|
+
rotY: {
|
|
28
|
+
type: NumberConstructor;
|
|
29
|
+
};
|
|
30
|
+
distance: {
|
|
31
|
+
type: NumberConstructor;
|
|
32
|
+
};
|
|
33
|
+
perspective: {
|
|
34
|
+
type: NumberConstructor;
|
|
35
|
+
default: undefined;
|
|
36
|
+
};
|
|
37
|
+
class: {
|
|
38
|
+
type: StringConstructor;
|
|
39
|
+
};
|
|
40
|
+
}>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
41
|
+
[key: string]: any;
|
|
42
|
+
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
43
|
+
zoom: {
|
|
44
|
+
type: NumberConstructor;
|
|
45
|
+
};
|
|
46
|
+
target: {
|
|
47
|
+
type: PropType<Vec3>;
|
|
48
|
+
};
|
|
49
|
+
rotX: {
|
|
50
|
+
type: NumberConstructor;
|
|
51
|
+
};
|
|
52
|
+
rotY: {
|
|
53
|
+
type: NumberConstructor;
|
|
54
|
+
};
|
|
55
|
+
distance: {
|
|
56
|
+
type: NumberConstructor;
|
|
57
|
+
};
|
|
58
|
+
perspective: {
|
|
59
|
+
type: NumberConstructor;
|
|
60
|
+
default: undefined;
|
|
61
|
+
};
|
|
62
|
+
class: {
|
|
63
|
+
type: StringConstructor;
|
|
64
|
+
};
|
|
65
|
+
}>> & Readonly<{}>, {
|
|
66
|
+
perspective: number;
|
|
67
|
+
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
68
|
+
|
|
69
|
+
interface PolyOrthographicCameraProps {
|
|
70
|
+
zoom?: number;
|
|
71
|
+
target?: Vec3;
|
|
72
|
+
rotX?: number;
|
|
73
|
+
rotY?: number;
|
|
74
|
+
/** Camera pull-back in CSS pixels (dolly). Default 0. */
|
|
75
|
+
distance?: number;
|
|
76
|
+
class?: string;
|
|
77
|
+
}
|
|
78
|
+
declare const PolyOrthographicCamera: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
79
|
+
zoom: {
|
|
80
|
+
type: NumberConstructor;
|
|
81
|
+
};
|
|
82
|
+
target: {
|
|
83
|
+
type: PropType<Vec3>;
|
|
84
|
+
};
|
|
85
|
+
rotX: {
|
|
86
|
+
type: NumberConstructor;
|
|
87
|
+
};
|
|
88
|
+
rotY: {
|
|
89
|
+
type: NumberConstructor;
|
|
90
|
+
};
|
|
91
|
+
distance: {
|
|
92
|
+
type: NumberConstructor;
|
|
93
|
+
};
|
|
94
|
+
class: {
|
|
95
|
+
type: StringConstructor;
|
|
96
|
+
};
|
|
97
|
+
}>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
98
|
+
[key: string]: any;
|
|
99
|
+
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
100
|
+
zoom: {
|
|
101
|
+
type: NumberConstructor;
|
|
102
|
+
};
|
|
103
|
+
target: {
|
|
104
|
+
type: PropType<Vec3>;
|
|
105
|
+
};
|
|
106
|
+
rotX: {
|
|
107
|
+
type: NumberConstructor;
|
|
108
|
+
};
|
|
109
|
+
rotY: {
|
|
110
|
+
type: NumberConstructor;
|
|
111
|
+
};
|
|
112
|
+
distance: {
|
|
113
|
+
type: NumberConstructor;
|
|
114
|
+
};
|
|
115
|
+
class: {
|
|
116
|
+
type: StringConstructor;
|
|
117
|
+
};
|
|
118
|
+
}>> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Lightweight reactive store for polycss scene state.
|
|
122
|
+
* Components subscribe to specific slices via selectors,
|
|
123
|
+
* so only the components that care about a changed value re-render.
|
|
124
|
+
*/
|
|
125
|
+
|
|
126
|
+
interface SceneStoreState {
|
|
127
|
+
cameraState: CameraState;
|
|
128
|
+
}
|
|
129
|
+
interface SceneStore {
|
|
130
|
+
getState(): SceneStoreState;
|
|
131
|
+
setState(partial: Partial<SceneStoreState>): void;
|
|
132
|
+
subscribe(listener: () => void): () => void;
|
|
133
|
+
/** Update camera state from the current imperative camera handle. */
|
|
134
|
+
updateCameraFromRef(handle: CameraHandle): boolean;
|
|
135
|
+
/** Force notify all subscribers (e.g. after prop-driven camera change). */
|
|
136
|
+
notifyAll(): void;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
interface UseCameraOptions {
|
|
140
|
+
zoom?: number;
|
|
141
|
+
target?: Vec3;
|
|
142
|
+
rotX?: number;
|
|
143
|
+
rotY?: number;
|
|
144
|
+
distance?: number;
|
|
145
|
+
}
|
|
146
|
+
interface UseCameraResult {
|
|
147
|
+
store: SceneStore;
|
|
148
|
+
cameraRef: Ref<CameraHandle>;
|
|
149
|
+
sceneElRef: Ref<HTMLElement | null>;
|
|
150
|
+
/**
|
|
151
|
+
* Bind to the camera root element. Layered components like
|
|
152
|
+
* <PolyOrbitControls> need the underlying ref to wire non-passive wheel /
|
|
153
|
+
* pointer listeners (Vue's @wheel is passive by default in modern
|
|
154
|
+
* versions and can't preventDefault).
|
|
155
|
+
*/
|
|
156
|
+
cameraElRef: Ref<HTMLDivElement | null>;
|
|
157
|
+
/**
|
|
158
|
+
* Apply the current camera state (from cameraRef.value.state) directly
|
|
159
|
+
* to sceneEl.style.transform. Exposed so layered components like
|
|
160
|
+
* <PolyOrbitControls> can call it after mutating cameraRef.value.
|
|
161
|
+
*/
|
|
162
|
+
applyTransformDirect: () => void;
|
|
163
|
+
}
|
|
164
|
+
declare function usePolyCamera(options: Ref<UseCameraOptions>): UseCameraResult;
|
|
165
|
+
|
|
166
|
+
interface PolyCameraContextValue {
|
|
167
|
+
store: SceneStore;
|
|
168
|
+
cameraRef: Ref<CameraHandle>;
|
|
169
|
+
sceneElRef: Ref<HTMLElement | null>;
|
|
170
|
+
/**
|
|
171
|
+
* Camera root element ref. Exposed so layered components like
|
|
172
|
+
* <PolyControls> can attach pointer/wheel listeners.
|
|
173
|
+
*/
|
|
174
|
+
cameraElRef: Ref<HTMLElement | null>;
|
|
175
|
+
/**
|
|
176
|
+
* Apply the current camera state (from cameraRef.value.state) directly
|
|
177
|
+
* to sceneEl.style.transform. Layered components call this after
|
|
178
|
+
* mutating cameraRef.value to make the DOM reflect the new state.
|
|
179
|
+
*/
|
|
180
|
+
applyTransformDirect: () => void;
|
|
181
|
+
}
|
|
182
|
+
declare const PolyCameraContextKey: InjectionKey<PolyCameraContextValue>;
|
|
183
|
+
|
|
184
|
+
type AtlasScale = number | "auto";
|
|
185
|
+
|
|
186
|
+
interface PolySceneProps {
|
|
187
|
+
polygons?: Polygon[];
|
|
188
|
+
perspective?: number;
|
|
189
|
+
rotX?: number;
|
|
190
|
+
rotY?: number;
|
|
191
|
+
zoom?: number;
|
|
192
|
+
directionalLight?: PolyDirectionalLight;
|
|
193
|
+
ambientLight?: PolyAmbientLight;
|
|
194
|
+
textureLighting?: PolyTextureLightingMode;
|
|
195
|
+
/** Raster scale for generated atlas pages. `"auto"` reduces large atlases. */
|
|
196
|
+
atlasScale?: AtlasScale;
|
|
197
|
+
/**
|
|
198
|
+
* When `true`, rotation pivots around the mesh's bbox center instead of
|
|
199
|
+
* world (0,0,0). Polygon data is not mutated — a wrapper div translates
|
|
200
|
+
* the polygons so the bbox center coincides with the scene anchor (0,0,0).
|
|
201
|
+
* Mirrors React's PolyScene autoCenter prop.
|
|
202
|
+
*/
|
|
203
|
+
autoCenter?: boolean;
|
|
204
|
+
class?: string;
|
|
205
|
+
position?: Vec3;
|
|
206
|
+
scale?: number | Vec3;
|
|
207
|
+
rotation?: Vec3;
|
|
208
|
+
debugShowLabels?: boolean;
|
|
209
|
+
debugShowBackfaces?: boolean;
|
|
210
|
+
}
|
|
211
|
+
declare const PolyScene: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
212
|
+
polygons: {
|
|
213
|
+
type: PropType<Polygon[]>;
|
|
214
|
+
default: undefined;
|
|
215
|
+
};
|
|
216
|
+
perspective: {
|
|
217
|
+
type: NumberConstructor;
|
|
218
|
+
};
|
|
219
|
+
rotX: {
|
|
220
|
+
type: NumberConstructor;
|
|
221
|
+
};
|
|
222
|
+
rotY: {
|
|
223
|
+
type: NumberConstructor;
|
|
224
|
+
};
|
|
225
|
+
zoom: {
|
|
226
|
+
type: NumberConstructor;
|
|
227
|
+
};
|
|
228
|
+
directionalLight: {
|
|
229
|
+
type: PropType<PolyDirectionalLight>;
|
|
230
|
+
default: undefined;
|
|
231
|
+
};
|
|
232
|
+
ambientLight: {
|
|
233
|
+
type: PropType<PolyAmbientLight>;
|
|
234
|
+
default: undefined;
|
|
235
|
+
};
|
|
236
|
+
textureLighting: {
|
|
237
|
+
type: PropType<PolyTextureLightingMode>;
|
|
238
|
+
default: string;
|
|
239
|
+
};
|
|
240
|
+
atlasScale: {
|
|
241
|
+
type: PropType<AtlasScale>;
|
|
242
|
+
default: undefined;
|
|
243
|
+
};
|
|
244
|
+
autoCenter: {
|
|
245
|
+
type: BooleanConstructor;
|
|
246
|
+
default: boolean;
|
|
247
|
+
};
|
|
248
|
+
class: {
|
|
249
|
+
type: StringConstructor;
|
|
250
|
+
};
|
|
251
|
+
position: {
|
|
252
|
+
type: PropType<Vec3>;
|
|
253
|
+
default: undefined;
|
|
254
|
+
};
|
|
255
|
+
scale: {
|
|
256
|
+
type: PropType<number | Vec3>;
|
|
257
|
+
default: undefined;
|
|
258
|
+
};
|
|
259
|
+
rotation: {
|
|
260
|
+
type: PropType<Vec3>;
|
|
261
|
+
default: undefined;
|
|
262
|
+
};
|
|
263
|
+
debugShowLabels: {
|
|
264
|
+
type: BooleanConstructor;
|
|
265
|
+
};
|
|
266
|
+
debugShowBackfaces: {
|
|
267
|
+
type: BooleanConstructor;
|
|
268
|
+
};
|
|
269
|
+
}>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
270
|
+
[key: string]: any;
|
|
271
|
+
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
272
|
+
polygons: {
|
|
273
|
+
type: PropType<Polygon[]>;
|
|
274
|
+
default: undefined;
|
|
275
|
+
};
|
|
276
|
+
perspective: {
|
|
277
|
+
type: NumberConstructor;
|
|
278
|
+
};
|
|
279
|
+
rotX: {
|
|
280
|
+
type: NumberConstructor;
|
|
281
|
+
};
|
|
282
|
+
rotY: {
|
|
283
|
+
type: NumberConstructor;
|
|
284
|
+
};
|
|
285
|
+
zoom: {
|
|
286
|
+
type: NumberConstructor;
|
|
287
|
+
};
|
|
288
|
+
directionalLight: {
|
|
289
|
+
type: PropType<PolyDirectionalLight>;
|
|
290
|
+
default: undefined;
|
|
291
|
+
};
|
|
292
|
+
ambientLight: {
|
|
293
|
+
type: PropType<PolyAmbientLight>;
|
|
294
|
+
default: undefined;
|
|
295
|
+
};
|
|
296
|
+
textureLighting: {
|
|
297
|
+
type: PropType<PolyTextureLightingMode>;
|
|
298
|
+
default: string;
|
|
299
|
+
};
|
|
300
|
+
atlasScale: {
|
|
301
|
+
type: PropType<AtlasScale>;
|
|
302
|
+
default: undefined;
|
|
303
|
+
};
|
|
304
|
+
autoCenter: {
|
|
305
|
+
type: BooleanConstructor;
|
|
306
|
+
default: boolean;
|
|
307
|
+
};
|
|
308
|
+
class: {
|
|
309
|
+
type: StringConstructor;
|
|
310
|
+
};
|
|
311
|
+
position: {
|
|
312
|
+
type: PropType<Vec3>;
|
|
313
|
+
default: undefined;
|
|
314
|
+
};
|
|
315
|
+
scale: {
|
|
316
|
+
type: PropType<number | Vec3>;
|
|
317
|
+
default: undefined;
|
|
318
|
+
};
|
|
319
|
+
rotation: {
|
|
320
|
+
type: PropType<Vec3>;
|
|
321
|
+
default: undefined;
|
|
322
|
+
};
|
|
323
|
+
debugShowLabels: {
|
|
324
|
+
type: BooleanConstructor;
|
|
325
|
+
};
|
|
326
|
+
debugShowBackfaces: {
|
|
327
|
+
type: BooleanConstructor;
|
|
328
|
+
};
|
|
329
|
+
}>> & Readonly<{}>, {
|
|
330
|
+
directionalLight: PolyDirectionalLight;
|
|
331
|
+
textureLighting: PolyTextureLightingMode;
|
|
332
|
+
position: Vec3;
|
|
333
|
+
scale: number | Vec3;
|
|
334
|
+
atlasScale: AtlasScale;
|
|
335
|
+
polygons: Polygon[];
|
|
336
|
+
ambientLight: PolyAmbientLight;
|
|
337
|
+
autoCenter: boolean;
|
|
338
|
+
rotation: Vec3;
|
|
339
|
+
debugShowLabels: boolean;
|
|
340
|
+
debugShowBackfaces: boolean;
|
|
341
|
+
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* Pointer event API for `<PolyMesh>` (Vue). Mirrors @react-three/fiber's
|
|
345
|
+
* mesh event surface (handler names + payload shape) so devs migrating
|
|
346
|
+
* from three.js use the same mental model. polycss is DOM-native so
|
|
347
|
+
* we get native pointer events for free — no raycaster, no canvas
|
|
348
|
+
* event synthesis.
|
|
349
|
+
*
|
|
350
|
+
* Diverges from r3f in two intentional ways:
|
|
351
|
+
* 1. Bubbling matches DOM (pointer hits the front element only).
|
|
352
|
+
* 2. `face`, `uv`, `uv1`, `instanceId` are omitted — three.js
|
|
353
|
+
* BufferGeometry / InstancedMesh concepts with no polycss
|
|
354
|
+
* analogue.
|
|
355
|
+
*/
|
|
356
|
+
|
|
357
|
+
/** Imperative handle exposed by `<PolyMesh>` via Vue's defineExpose.
|
|
358
|
+
* Read-only view of the mesh's element + current transform +
|
|
359
|
+
* polygons. Mutation flows through controlled props (parent owns
|
|
360
|
+
* transform state). */
|
|
361
|
+
interface PolyMeshHandle {
|
|
362
|
+
readonly element: HTMLDivElement | null;
|
|
363
|
+
readonly id?: string;
|
|
364
|
+
getPosition(): Vec3 | undefined;
|
|
365
|
+
getRotation(): Vec3 | undefined;
|
|
366
|
+
getScale(): number | Vec3 | undefined;
|
|
367
|
+
getPolygons(): Polygon[];
|
|
368
|
+
/**
|
|
369
|
+
* Re-rasterize the baked texture atlas using the mesh's current rotation.
|
|
370
|
+
*
|
|
371
|
+
* Call this after a rotation gesture completes (e.g. on rotate-ring pointer
|
|
372
|
+
* release) to correct stale lighting. Baked atlas tiles encode
|
|
373
|
+
* `baseColor × Lambert(worldNormal, worldLight)` at bake time. When the
|
|
374
|
+
* mesh wrapper rotates via CSS, the polygon normals change in world space
|
|
375
|
+
* but the pre-multiplied colors don't — faces stay lit/unlit incorrectly.
|
|
376
|
+
*
|
|
377
|
+
* `rebakeAtlas()` advances the internal `bakedRotation` snapshot to the
|
|
378
|
+
* current `rotation` prop and re-runs the atlas pipeline, this time
|
|
379
|
+
* inverse-rotating the world light into the mesh-local frame so that
|
|
380
|
+
* `dot(localNormal, localLight) === dot(worldNormal, worldLight)` holds.
|
|
381
|
+
*
|
|
382
|
+
* In `textureLighting === "dynamic"` mode this is a no-op: dynamic
|
|
383
|
+
* shading is computed per-frame from live surface-normal CSS vars, so it
|
|
384
|
+
* is always correct and never needs rebaking.
|
|
385
|
+
*/
|
|
386
|
+
rebakeAtlas(): void;
|
|
387
|
+
}
|
|
388
|
+
interface PolyPointerEvent<E extends Event = PointerEvent> {
|
|
389
|
+
object: PolyMeshHandle;
|
|
390
|
+
eventObject: PolyMeshHandle;
|
|
391
|
+
intersections: Array<{
|
|
392
|
+
object: PolyMeshHandle;
|
|
393
|
+
}>;
|
|
394
|
+
pointer: {
|
|
395
|
+
x: number;
|
|
396
|
+
y: number;
|
|
397
|
+
};
|
|
398
|
+
delta: number;
|
|
399
|
+
nativeEvent: E;
|
|
400
|
+
stopPropagation(): void;
|
|
401
|
+
}
|
|
402
|
+
type PolyMouseEvent = PolyPointerEvent<MouseEvent>;
|
|
403
|
+
type PolyWheelEvent = PolyPointerEvent<WheelEvent>;
|
|
404
|
+
type PolyEventHandler<E extends Event = PointerEvent> = (event: PolyPointerEvent<E>) => void;
|
|
405
|
+
/** Pointer / mouse / wheel handlers accepted by `<PolyMesh>`. Same
|
|
406
|
+
* names as r3f. Provide any handler to opt in to events. */
|
|
407
|
+
interface InteractionProps {
|
|
408
|
+
onClick?: PolyEventHandler<MouseEvent>;
|
|
409
|
+
onContextMenu?: PolyEventHandler<MouseEvent>;
|
|
410
|
+
onDoubleClick?: PolyEventHandler<MouseEvent>;
|
|
411
|
+
onWheel?: PolyEventHandler<WheelEvent>;
|
|
412
|
+
onPointerDown?: PolyEventHandler<PointerEvent>;
|
|
413
|
+
onPointerUp?: PolyEventHandler<PointerEvent>;
|
|
414
|
+
onPointerMove?: PolyEventHandler<PointerEvent>;
|
|
415
|
+
onPointerOver?: PolyEventHandler<PointerEvent>;
|
|
416
|
+
onPointerOut?: PolyEventHandler<PointerEvent>;
|
|
417
|
+
onPointerEnter?: PolyEventHandler<PointerEvent>;
|
|
418
|
+
onPointerLeave?: PolyEventHandler<PointerEvent>;
|
|
419
|
+
onPointerCancel?: PolyEventHandler<PointerEvent>;
|
|
420
|
+
}
|
|
421
|
+
declare function findPolyMeshHandle(el: Element | null): PolyMeshHandle | null;
|
|
422
|
+
declare function pointInMeshElement(meshEl: HTMLElement, clientX: number, clientY: number): boolean;
|
|
423
|
+
declare function findMeshUnderPoint(clientX: number, clientY: number, filter?: (meshEl: HTMLElement) => boolean): PolyMeshHandle | null;
|
|
424
|
+
|
|
425
|
+
interface PolyMeshProps extends InteractionProps {
|
|
426
|
+
/** Stable identifier — exposed on the mesh handle and reflected on
|
|
427
|
+
* the wrapper as `data-poly-mesh-id`. Used by Select / TransformControls
|
|
428
|
+
* for selection lookups. */
|
|
429
|
+
id?: string;
|
|
430
|
+
src?: string;
|
|
431
|
+
/**
|
|
432
|
+
* Companion `.mtl` URL for OBJ models. When set, materials defined in
|
|
433
|
+
* the mtl are applied to the loaded mesh. Ignored for GLB/GLTF.
|
|
434
|
+
*/
|
|
435
|
+
mtl?: string;
|
|
436
|
+
polygons?: Polygon[];
|
|
437
|
+
autoCenter?: boolean;
|
|
438
|
+
textureLighting?: PolyTextureLightingMode;
|
|
439
|
+
/** Raster scale for generated atlas pages. `"auto"` reduces large atlases. */
|
|
440
|
+
atlasScale?: AtlasScale;
|
|
441
|
+
class?: string;
|
|
442
|
+
position?: Vec3;
|
|
443
|
+
scale?: number | Vec3;
|
|
444
|
+
rotation?: Vec3;
|
|
445
|
+
}
|
|
446
|
+
declare const PolyMesh: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
447
|
+
id: {
|
|
448
|
+
type: StringConstructor;
|
|
449
|
+
default: undefined;
|
|
450
|
+
};
|
|
451
|
+
src: {
|
|
452
|
+
type: StringConstructor;
|
|
453
|
+
default: undefined;
|
|
454
|
+
};
|
|
455
|
+
mtl: {
|
|
456
|
+
type: StringConstructor;
|
|
457
|
+
default: undefined;
|
|
458
|
+
};
|
|
459
|
+
polygons: {
|
|
460
|
+
type: PropType<Polygon[]>;
|
|
461
|
+
default: undefined;
|
|
462
|
+
};
|
|
463
|
+
autoCenter: {
|
|
464
|
+
type: BooleanConstructor;
|
|
465
|
+
default: boolean;
|
|
466
|
+
};
|
|
467
|
+
textureLighting: {
|
|
468
|
+
type: PropType<PolyTextureLightingMode>;
|
|
469
|
+
default: undefined;
|
|
470
|
+
};
|
|
471
|
+
atlasScale: {
|
|
472
|
+
type: PropType<AtlasScale>;
|
|
473
|
+
default: undefined;
|
|
474
|
+
};
|
|
475
|
+
class: {
|
|
476
|
+
type: StringConstructor;
|
|
477
|
+
};
|
|
478
|
+
position: {
|
|
479
|
+
type: PropType<Vec3>;
|
|
480
|
+
default: undefined;
|
|
481
|
+
};
|
|
482
|
+
scale: {
|
|
483
|
+
type: PropType<number | Vec3>;
|
|
484
|
+
default: undefined;
|
|
485
|
+
};
|
|
486
|
+
rotation: {
|
|
487
|
+
type: PropType<Vec3>;
|
|
488
|
+
default: undefined;
|
|
489
|
+
};
|
|
490
|
+
onClick: {
|
|
491
|
+
type: PropType<PolyEventHandler<MouseEvent>>;
|
|
492
|
+
default: undefined;
|
|
493
|
+
};
|
|
494
|
+
onContextMenu: {
|
|
495
|
+
type: PropType<PolyEventHandler<MouseEvent>>;
|
|
496
|
+
default: undefined;
|
|
497
|
+
};
|
|
498
|
+
onDoubleClick: {
|
|
499
|
+
type: PropType<PolyEventHandler<MouseEvent>>;
|
|
500
|
+
default: undefined;
|
|
501
|
+
};
|
|
502
|
+
onWheel: {
|
|
503
|
+
type: PropType<PolyEventHandler<WheelEvent>>;
|
|
504
|
+
default: undefined;
|
|
505
|
+
};
|
|
506
|
+
onPointerDown: {
|
|
507
|
+
type: PropType<PolyEventHandler<PointerEvent>>;
|
|
508
|
+
default: undefined;
|
|
509
|
+
};
|
|
510
|
+
onPointerUp: {
|
|
511
|
+
type: PropType<PolyEventHandler<PointerEvent>>;
|
|
512
|
+
default: undefined;
|
|
513
|
+
};
|
|
514
|
+
onPointerMove: {
|
|
515
|
+
type: PropType<PolyEventHandler<PointerEvent>>;
|
|
516
|
+
default: undefined;
|
|
517
|
+
};
|
|
518
|
+
onPointerOver: {
|
|
519
|
+
type: PropType<PolyEventHandler<PointerEvent>>;
|
|
520
|
+
default: undefined;
|
|
521
|
+
};
|
|
522
|
+
onPointerOut: {
|
|
523
|
+
type: PropType<PolyEventHandler<PointerEvent>>;
|
|
524
|
+
default: undefined;
|
|
525
|
+
};
|
|
526
|
+
onPointerEnter: {
|
|
527
|
+
type: PropType<PolyEventHandler<PointerEvent>>;
|
|
528
|
+
default: undefined;
|
|
529
|
+
};
|
|
530
|
+
onPointerLeave: {
|
|
531
|
+
type: PropType<PolyEventHandler<PointerEvent>>;
|
|
532
|
+
default: undefined;
|
|
533
|
+
};
|
|
534
|
+
onPointerCancel: {
|
|
535
|
+
type: PropType<PolyEventHandler<PointerEvent>>;
|
|
536
|
+
default: undefined;
|
|
537
|
+
};
|
|
538
|
+
}>, () => VNode<vue.RendererNode, vue.RendererElement, {
|
|
539
|
+
[key: string]: any;
|
|
540
|
+
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
541
|
+
id: {
|
|
542
|
+
type: StringConstructor;
|
|
543
|
+
default: undefined;
|
|
544
|
+
};
|
|
545
|
+
src: {
|
|
546
|
+
type: StringConstructor;
|
|
547
|
+
default: undefined;
|
|
548
|
+
};
|
|
549
|
+
mtl: {
|
|
550
|
+
type: StringConstructor;
|
|
551
|
+
default: undefined;
|
|
552
|
+
};
|
|
553
|
+
polygons: {
|
|
554
|
+
type: PropType<Polygon[]>;
|
|
555
|
+
default: undefined;
|
|
556
|
+
};
|
|
557
|
+
autoCenter: {
|
|
558
|
+
type: BooleanConstructor;
|
|
559
|
+
default: boolean;
|
|
560
|
+
};
|
|
561
|
+
textureLighting: {
|
|
562
|
+
type: PropType<PolyTextureLightingMode>;
|
|
563
|
+
default: undefined;
|
|
564
|
+
};
|
|
565
|
+
atlasScale: {
|
|
566
|
+
type: PropType<AtlasScale>;
|
|
567
|
+
default: undefined;
|
|
568
|
+
};
|
|
569
|
+
class: {
|
|
570
|
+
type: StringConstructor;
|
|
571
|
+
};
|
|
572
|
+
position: {
|
|
573
|
+
type: PropType<Vec3>;
|
|
574
|
+
default: undefined;
|
|
575
|
+
};
|
|
576
|
+
scale: {
|
|
577
|
+
type: PropType<number | Vec3>;
|
|
578
|
+
default: undefined;
|
|
579
|
+
};
|
|
580
|
+
rotation: {
|
|
581
|
+
type: PropType<Vec3>;
|
|
582
|
+
default: undefined;
|
|
583
|
+
};
|
|
584
|
+
onClick: {
|
|
585
|
+
type: PropType<PolyEventHandler<MouseEvent>>;
|
|
586
|
+
default: undefined;
|
|
587
|
+
};
|
|
588
|
+
onContextMenu: {
|
|
589
|
+
type: PropType<PolyEventHandler<MouseEvent>>;
|
|
590
|
+
default: undefined;
|
|
591
|
+
};
|
|
592
|
+
onDoubleClick: {
|
|
593
|
+
type: PropType<PolyEventHandler<MouseEvent>>;
|
|
594
|
+
default: undefined;
|
|
595
|
+
};
|
|
596
|
+
onWheel: {
|
|
597
|
+
type: PropType<PolyEventHandler<WheelEvent>>;
|
|
598
|
+
default: undefined;
|
|
599
|
+
};
|
|
600
|
+
onPointerDown: {
|
|
601
|
+
type: PropType<PolyEventHandler<PointerEvent>>;
|
|
602
|
+
default: undefined;
|
|
603
|
+
};
|
|
604
|
+
onPointerUp: {
|
|
605
|
+
type: PropType<PolyEventHandler<PointerEvent>>;
|
|
606
|
+
default: undefined;
|
|
607
|
+
};
|
|
608
|
+
onPointerMove: {
|
|
609
|
+
type: PropType<PolyEventHandler<PointerEvent>>;
|
|
610
|
+
default: undefined;
|
|
611
|
+
};
|
|
612
|
+
onPointerOver: {
|
|
613
|
+
type: PropType<PolyEventHandler<PointerEvent>>;
|
|
614
|
+
default: undefined;
|
|
615
|
+
};
|
|
616
|
+
onPointerOut: {
|
|
617
|
+
type: PropType<PolyEventHandler<PointerEvent>>;
|
|
618
|
+
default: undefined;
|
|
619
|
+
};
|
|
620
|
+
onPointerEnter: {
|
|
621
|
+
type: PropType<PolyEventHandler<PointerEvent>>;
|
|
622
|
+
default: undefined;
|
|
623
|
+
};
|
|
624
|
+
onPointerLeave: {
|
|
625
|
+
type: PropType<PolyEventHandler<PointerEvent>>;
|
|
626
|
+
default: undefined;
|
|
627
|
+
};
|
|
628
|
+
onPointerCancel: {
|
|
629
|
+
type: PropType<PolyEventHandler<PointerEvent>>;
|
|
630
|
+
default: undefined;
|
|
631
|
+
};
|
|
632
|
+
}>> & Readonly<{}>, {
|
|
633
|
+
onClick: PolyEventHandler<MouseEvent>;
|
|
634
|
+
onWheel: PolyEventHandler<WheelEvent>;
|
|
635
|
+
textureLighting: PolyTextureLightingMode;
|
|
636
|
+
position: Vec3;
|
|
637
|
+
scale: number | Vec3;
|
|
638
|
+
atlasScale: AtlasScale;
|
|
639
|
+
polygons: Polygon[];
|
|
640
|
+
autoCenter: boolean;
|
|
641
|
+
rotation: Vec3;
|
|
642
|
+
id: string;
|
|
643
|
+
src: string;
|
|
644
|
+
mtl: string;
|
|
645
|
+
onContextMenu: PolyEventHandler<MouseEvent>;
|
|
646
|
+
onDoubleClick: PolyEventHandler<MouseEvent>;
|
|
647
|
+
onPointerDown: PolyEventHandler<PointerEvent>;
|
|
648
|
+
onPointerUp: PolyEventHandler<PointerEvent>;
|
|
649
|
+
onPointerMove: PolyEventHandler<PointerEvent>;
|
|
650
|
+
onPointerOver: PolyEventHandler<PointerEvent>;
|
|
651
|
+
onPointerOut: PolyEventHandler<PointerEvent>;
|
|
652
|
+
onPointerEnter: PolyEventHandler<PointerEvent>;
|
|
653
|
+
onPointerLeave: PolyEventHandler<PointerEvent>;
|
|
654
|
+
onPointerCancel: PolyEventHandler<PointerEvent>;
|
|
655
|
+
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
656
|
+
|
|
657
|
+
interface UseSceneContextOptions {
|
|
658
|
+
directionalLight?: PolyDirectionalLight;
|
|
659
|
+
}
|
|
660
|
+
interface UseSceneContextResult {
|
|
661
|
+
polygons: Polygon[];
|
|
662
|
+
sceneBbox: {
|
|
663
|
+
min: Vec3;
|
|
664
|
+
max: Vec3;
|
|
665
|
+
};
|
|
666
|
+
}
|
|
667
|
+
/**
|
|
668
|
+
* Vue 3 composable that runs the polycss scene-context pipeline:
|
|
669
|
+
* normalizePolygons → mergePolygons by default → bbox compute.
|
|
670
|
+
*
|
|
671
|
+
* Returns a Ref to the processed polygons + the scene-wide axis-aligned bbox.
|
|
672
|
+
* Recomputes when `polygons` or relevant options change.
|
|
673
|
+
*/
|
|
674
|
+
declare function usePolySceneContext(polygons: Ref<Polygon[]>, options: Ref<UseSceneContextOptions>): Ref<UseSceneContextResult>;
|
|
675
|
+
|
|
676
|
+
type UseMeshOptions = LoadMeshOptions;
|
|
677
|
+
interface UseMeshResult {
|
|
678
|
+
polygons: Ref<Polygon[]>;
|
|
679
|
+
loading: Ref<boolean>;
|
|
680
|
+
error: Ref<Error | null>;
|
|
681
|
+
warnings: Ref<string[]>;
|
|
682
|
+
/** Manually trigger cleanup (also called on unmount automatically). */
|
|
683
|
+
dispose: () => void;
|
|
684
|
+
}
|
|
685
|
+
declare function usePolyMesh(src: Ref<string>, options?: UseMeshOptions): UseMeshResult;
|
|
686
|
+
|
|
687
|
+
/**
|
|
688
|
+
* usePolyMaterial — Vue composable that returns a stable computed material
|
|
689
|
+
* handle. Accepts either a plain options object or a reactive getter so that
|
|
690
|
+
* reactive texture URLs (e.g. from a blob URL that updates) stay tracked.
|
|
691
|
+
*
|
|
692
|
+
* Stable computed identity means v-memo comparisons on <Poly> work correctly
|
|
693
|
+
* when the inputs haven't changed.
|
|
694
|
+
*/
|
|
695
|
+
declare function usePolyMaterial(source: {
|
|
696
|
+
texture: string;
|
|
697
|
+
key?: string;
|
|
698
|
+
} | (() => {
|
|
699
|
+
texture: string;
|
|
700
|
+
key?: string;
|
|
701
|
+
})): ComputedRef<PolyMaterial>;
|
|
702
|
+
|
|
703
|
+
interface PolyContext {
|
|
704
|
+
tileSize?: number;
|
|
705
|
+
layerElevation?: number;
|
|
706
|
+
directionalLight?: PolyDirectionalLight;
|
|
707
|
+
textureLighting?: PolyTextureLightingMode;
|
|
708
|
+
atlasScale?: AtlasScale;
|
|
709
|
+
debugShowBackfaces?: boolean;
|
|
710
|
+
[key: string]: unknown;
|
|
711
|
+
}
|
|
712
|
+
interface PolyProps {
|
|
713
|
+
vertices: Vec3[];
|
|
714
|
+
color?: string;
|
|
715
|
+
texture?: string;
|
|
716
|
+
uvs?: Vec2[];
|
|
717
|
+
data?: Record<string, string | number | boolean>;
|
|
718
|
+
/** Shared material. When set AND the polygon's UVs form an axis-aligned
|
|
719
|
+
* rectangle, renders via `background-image` directly — no per-polygon
|
|
720
|
+
* canvas rasterization. Falls back to the atlas path otherwise. */
|
|
721
|
+
material?: PolyMaterial;
|
|
722
|
+
position?: Vec3;
|
|
723
|
+
scale?: number | Vec3;
|
|
724
|
+
rotation?: Vec3;
|
|
725
|
+
context?: PolyContext;
|
|
726
|
+
textureLighting?: PolyTextureLightingMode;
|
|
727
|
+
/** Raster scale for generated atlas pages. `"auto"` reduces large atlases. */
|
|
728
|
+
atlasScale?: AtlasScale;
|
|
729
|
+
baseColor?: string;
|
|
730
|
+
pointerEvents?: "auto" | "none";
|
|
731
|
+
}
|
|
732
|
+
declare const Poly: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
733
|
+
vertices: {
|
|
734
|
+
type: PropType<Vec3[]>;
|
|
735
|
+
required: true;
|
|
736
|
+
};
|
|
737
|
+
color: {
|
|
738
|
+
type: StringConstructor;
|
|
739
|
+
};
|
|
740
|
+
texture: {
|
|
741
|
+
type: StringConstructor;
|
|
742
|
+
};
|
|
743
|
+
uvs: {
|
|
744
|
+
type: PropType<Vec2[]>;
|
|
745
|
+
default: undefined;
|
|
746
|
+
};
|
|
747
|
+
data: {
|
|
748
|
+
type: PropType<Record<string, string | number | boolean>>;
|
|
749
|
+
default: undefined;
|
|
750
|
+
};
|
|
751
|
+
material: {
|
|
752
|
+
type: PropType<PolyMaterial>;
|
|
753
|
+
default: undefined;
|
|
754
|
+
};
|
|
755
|
+
position: {
|
|
756
|
+
type: PropType<Vec3>;
|
|
757
|
+
default: undefined;
|
|
758
|
+
};
|
|
759
|
+
scale: {
|
|
760
|
+
type: PropType<number | Vec3>;
|
|
761
|
+
default: undefined;
|
|
762
|
+
};
|
|
763
|
+
rotation: {
|
|
764
|
+
type: PropType<Vec3>;
|
|
765
|
+
default: undefined;
|
|
766
|
+
};
|
|
767
|
+
textureLighting: {
|
|
768
|
+
type: PropType<PolyTextureLightingMode>;
|
|
769
|
+
default: undefined;
|
|
770
|
+
};
|
|
771
|
+
atlasScale: {
|
|
772
|
+
type: PropType<AtlasScale>;
|
|
773
|
+
default: undefined;
|
|
774
|
+
};
|
|
775
|
+
context: {
|
|
776
|
+
type: PropType<PolyContext>;
|
|
777
|
+
default: undefined;
|
|
778
|
+
};
|
|
779
|
+
baseColor: {
|
|
780
|
+
type: StringConstructor;
|
|
781
|
+
};
|
|
782
|
+
pointerEvents: {
|
|
783
|
+
type: PropType<"auto" | "none">;
|
|
784
|
+
default: string;
|
|
785
|
+
};
|
|
786
|
+
}>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
787
|
+
[key: string]: any;
|
|
788
|
+
}> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
789
|
+
vertices: {
|
|
790
|
+
type: PropType<Vec3[]>;
|
|
791
|
+
required: true;
|
|
792
|
+
};
|
|
793
|
+
color: {
|
|
794
|
+
type: StringConstructor;
|
|
795
|
+
};
|
|
796
|
+
texture: {
|
|
797
|
+
type: StringConstructor;
|
|
798
|
+
};
|
|
799
|
+
uvs: {
|
|
800
|
+
type: PropType<Vec2[]>;
|
|
801
|
+
default: undefined;
|
|
802
|
+
};
|
|
803
|
+
data: {
|
|
804
|
+
type: PropType<Record<string, string | number | boolean>>;
|
|
805
|
+
default: undefined;
|
|
806
|
+
};
|
|
807
|
+
material: {
|
|
808
|
+
type: PropType<PolyMaterial>;
|
|
809
|
+
default: undefined;
|
|
810
|
+
};
|
|
811
|
+
position: {
|
|
812
|
+
type: PropType<Vec3>;
|
|
813
|
+
default: undefined;
|
|
814
|
+
};
|
|
815
|
+
scale: {
|
|
816
|
+
type: PropType<number | Vec3>;
|
|
817
|
+
default: undefined;
|
|
818
|
+
};
|
|
819
|
+
rotation: {
|
|
820
|
+
type: PropType<Vec3>;
|
|
821
|
+
default: undefined;
|
|
822
|
+
};
|
|
823
|
+
textureLighting: {
|
|
824
|
+
type: PropType<PolyTextureLightingMode>;
|
|
825
|
+
default: undefined;
|
|
826
|
+
};
|
|
827
|
+
atlasScale: {
|
|
828
|
+
type: PropType<AtlasScale>;
|
|
829
|
+
default: undefined;
|
|
830
|
+
};
|
|
831
|
+
context: {
|
|
832
|
+
type: PropType<PolyContext>;
|
|
833
|
+
default: undefined;
|
|
834
|
+
};
|
|
835
|
+
baseColor: {
|
|
836
|
+
type: StringConstructor;
|
|
837
|
+
};
|
|
838
|
+
pointerEvents: {
|
|
839
|
+
type: PropType<"auto" | "none">;
|
|
840
|
+
default: string;
|
|
841
|
+
};
|
|
842
|
+
}>> & Readonly<{}>, {
|
|
843
|
+
data: Record<string, string | number | boolean>;
|
|
844
|
+
pointerEvents: "none" | "auto";
|
|
845
|
+
uvs: Vec2[];
|
|
846
|
+
textureLighting: PolyTextureLightingMode;
|
|
847
|
+
position: Vec3;
|
|
848
|
+
scale: number | Vec3;
|
|
849
|
+
atlasScale: AtlasScale;
|
|
850
|
+
rotation: Vec3;
|
|
851
|
+
material: PolyMaterial;
|
|
852
|
+
context: PolyContext;
|
|
853
|
+
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
854
|
+
|
|
855
|
+
interface PolyControlsAnimateOptions {
|
|
856
|
+
speed?: number;
|
|
857
|
+
axis?: "x" | "y";
|
|
858
|
+
pauseOnInteraction?: boolean;
|
|
859
|
+
}
|
|
860
|
+
interface PolyOrbitControlsCamera {
|
|
861
|
+
rotX: number;
|
|
862
|
+
rotY: number;
|
|
863
|
+
zoom: number;
|
|
864
|
+
target: Vec3;
|
|
865
|
+
distance: number;
|
|
866
|
+
}
|
|
867
|
+
interface PolyOrbitControlsProps {
|
|
868
|
+
drag?: boolean;
|
|
869
|
+
wheel?: boolean;
|
|
870
|
+
/** When true, wheel changes camera pull-back (distance) instead of zoom scale. */
|
|
871
|
+
dolly?: boolean;
|
|
872
|
+
invert?: boolean | number;
|
|
873
|
+
/** Minimum zoom multiplier (zoom mode). Default 0.1. */
|
|
874
|
+
minZoom?: number;
|
|
875
|
+
/** Maximum zoom multiplier (zoom mode). Default 10. */
|
|
876
|
+
maxZoom?: number;
|
|
877
|
+
/** Minimum camera pull-back in CSS pixels when dolly=true. Default 0. */
|
|
878
|
+
minDistance?: number;
|
|
879
|
+
/** Maximum camera pull-back in CSS pixels when dolly=true. Default 5000. */
|
|
880
|
+
maxDistance?: number;
|
|
881
|
+
animate?: false | PolyControlsAnimateOptions;
|
|
882
|
+
}
|
|
883
|
+
declare const PolyOrbitControls: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
884
|
+
drag: {
|
|
885
|
+
type: BooleanConstructor;
|
|
886
|
+
default: boolean;
|
|
887
|
+
};
|
|
888
|
+
wheel: {
|
|
889
|
+
type: BooleanConstructor;
|
|
890
|
+
default: boolean;
|
|
891
|
+
};
|
|
892
|
+
dolly: {
|
|
893
|
+
type: BooleanConstructor;
|
|
894
|
+
default: boolean;
|
|
895
|
+
};
|
|
896
|
+
invert: {
|
|
897
|
+
type: PropType<boolean | number>;
|
|
898
|
+
default: boolean;
|
|
899
|
+
};
|
|
900
|
+
minZoom: {
|
|
901
|
+
type: NumberConstructor;
|
|
902
|
+
default: number;
|
|
903
|
+
};
|
|
904
|
+
maxZoom: {
|
|
905
|
+
type: NumberConstructor;
|
|
906
|
+
default: number;
|
|
907
|
+
};
|
|
908
|
+
minDistance: {
|
|
909
|
+
type: NumberConstructor;
|
|
910
|
+
default: number;
|
|
911
|
+
};
|
|
912
|
+
maxDistance: {
|
|
913
|
+
type: NumberConstructor;
|
|
914
|
+
default: number;
|
|
915
|
+
};
|
|
916
|
+
animate: {
|
|
917
|
+
type: PropType<false | PolyControlsAnimateOptions>;
|
|
918
|
+
default: boolean;
|
|
919
|
+
};
|
|
920
|
+
}>, () => null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
921
|
+
change: (_camera: PolyOrbitControlsCamera) => true;
|
|
922
|
+
"interaction-start": (_camera: PolyOrbitControlsCamera) => true;
|
|
923
|
+
"interaction-end": (_camera: PolyOrbitControlsCamera) => true;
|
|
924
|
+
}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
925
|
+
drag: {
|
|
926
|
+
type: BooleanConstructor;
|
|
927
|
+
default: boolean;
|
|
928
|
+
};
|
|
929
|
+
wheel: {
|
|
930
|
+
type: BooleanConstructor;
|
|
931
|
+
default: boolean;
|
|
932
|
+
};
|
|
933
|
+
dolly: {
|
|
934
|
+
type: BooleanConstructor;
|
|
935
|
+
default: boolean;
|
|
936
|
+
};
|
|
937
|
+
invert: {
|
|
938
|
+
type: PropType<boolean | number>;
|
|
939
|
+
default: boolean;
|
|
940
|
+
};
|
|
941
|
+
minZoom: {
|
|
942
|
+
type: NumberConstructor;
|
|
943
|
+
default: number;
|
|
944
|
+
};
|
|
945
|
+
maxZoom: {
|
|
946
|
+
type: NumberConstructor;
|
|
947
|
+
default: number;
|
|
948
|
+
};
|
|
949
|
+
minDistance: {
|
|
950
|
+
type: NumberConstructor;
|
|
951
|
+
default: number;
|
|
952
|
+
};
|
|
953
|
+
maxDistance: {
|
|
954
|
+
type: NumberConstructor;
|
|
955
|
+
default: number;
|
|
956
|
+
};
|
|
957
|
+
animate: {
|
|
958
|
+
type: PropType<false | PolyControlsAnimateOptions>;
|
|
959
|
+
default: boolean;
|
|
960
|
+
};
|
|
961
|
+
}>> & Readonly<{
|
|
962
|
+
onChange?: ((_camera: PolyOrbitControlsCamera) => any) | undefined;
|
|
963
|
+
"onInteraction-start"?: ((_camera: PolyOrbitControlsCamera) => any) | undefined;
|
|
964
|
+
"onInteraction-end"?: ((_camera: PolyOrbitControlsCamera) => any) | undefined;
|
|
965
|
+
}>, {
|
|
966
|
+
drag: boolean;
|
|
967
|
+
wheel: boolean;
|
|
968
|
+
animate: false | PolyControlsAnimateOptions;
|
|
969
|
+
dolly: boolean;
|
|
970
|
+
invert: number | boolean;
|
|
971
|
+
minZoom: number;
|
|
972
|
+
maxZoom: number;
|
|
973
|
+
minDistance: number;
|
|
974
|
+
maxDistance: number;
|
|
975
|
+
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
976
|
+
|
|
977
|
+
interface PolyMapControlsCamera {
|
|
978
|
+
rotX: number;
|
|
979
|
+
rotY: number;
|
|
980
|
+
zoom: number;
|
|
981
|
+
target: Vec3;
|
|
982
|
+
distance: number;
|
|
983
|
+
}
|
|
984
|
+
interface PolyMapControlsProps {
|
|
985
|
+
drag?: boolean;
|
|
986
|
+
wheel?: boolean;
|
|
987
|
+
/** When true, wheel changes camera pull-back (distance) instead of zoom scale. */
|
|
988
|
+
dolly?: boolean;
|
|
989
|
+
invert?: boolean | number;
|
|
990
|
+
/** Minimum zoom multiplier (zoom mode). Default 0.1. */
|
|
991
|
+
minZoom?: number;
|
|
992
|
+
/** Maximum zoom multiplier (zoom mode). Default 10. */
|
|
993
|
+
maxZoom?: number;
|
|
994
|
+
/** Minimum camera pull-back in CSS pixels when dolly=true. Default 0. */
|
|
995
|
+
minDistance?: number;
|
|
996
|
+
/** Maximum camera pull-back in CSS pixels when dolly=true. Default 5000. */
|
|
997
|
+
maxDistance?: number;
|
|
998
|
+
animate?: false | PolyControlsAnimateOptions;
|
|
999
|
+
}
|
|
1000
|
+
declare const PolyMapControls: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
1001
|
+
drag: {
|
|
1002
|
+
type: BooleanConstructor;
|
|
1003
|
+
default: boolean;
|
|
1004
|
+
};
|
|
1005
|
+
wheel: {
|
|
1006
|
+
type: BooleanConstructor;
|
|
1007
|
+
default: boolean;
|
|
1008
|
+
};
|
|
1009
|
+
dolly: {
|
|
1010
|
+
type: BooleanConstructor;
|
|
1011
|
+
default: boolean;
|
|
1012
|
+
};
|
|
1013
|
+
invert: {
|
|
1014
|
+
type: PropType<boolean | number>;
|
|
1015
|
+
default: boolean;
|
|
1016
|
+
};
|
|
1017
|
+
minZoom: {
|
|
1018
|
+
type: NumberConstructor;
|
|
1019
|
+
default: number;
|
|
1020
|
+
};
|
|
1021
|
+
maxZoom: {
|
|
1022
|
+
type: NumberConstructor;
|
|
1023
|
+
default: number;
|
|
1024
|
+
};
|
|
1025
|
+
minDistance: {
|
|
1026
|
+
type: NumberConstructor;
|
|
1027
|
+
default: number;
|
|
1028
|
+
};
|
|
1029
|
+
maxDistance: {
|
|
1030
|
+
type: NumberConstructor;
|
|
1031
|
+
default: number;
|
|
1032
|
+
};
|
|
1033
|
+
animate: {
|
|
1034
|
+
type: PropType<false | PolyControlsAnimateOptions>;
|
|
1035
|
+
default: boolean;
|
|
1036
|
+
};
|
|
1037
|
+
}>, () => null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
1038
|
+
change: (_camera: PolyMapControlsCamera) => true;
|
|
1039
|
+
"interaction-start": (_camera: PolyMapControlsCamera) => true;
|
|
1040
|
+
"interaction-end": (_camera: PolyMapControlsCamera) => true;
|
|
1041
|
+
}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
1042
|
+
drag: {
|
|
1043
|
+
type: BooleanConstructor;
|
|
1044
|
+
default: boolean;
|
|
1045
|
+
};
|
|
1046
|
+
wheel: {
|
|
1047
|
+
type: BooleanConstructor;
|
|
1048
|
+
default: boolean;
|
|
1049
|
+
};
|
|
1050
|
+
dolly: {
|
|
1051
|
+
type: BooleanConstructor;
|
|
1052
|
+
default: boolean;
|
|
1053
|
+
};
|
|
1054
|
+
invert: {
|
|
1055
|
+
type: PropType<boolean | number>;
|
|
1056
|
+
default: boolean;
|
|
1057
|
+
};
|
|
1058
|
+
minZoom: {
|
|
1059
|
+
type: NumberConstructor;
|
|
1060
|
+
default: number;
|
|
1061
|
+
};
|
|
1062
|
+
maxZoom: {
|
|
1063
|
+
type: NumberConstructor;
|
|
1064
|
+
default: number;
|
|
1065
|
+
};
|
|
1066
|
+
minDistance: {
|
|
1067
|
+
type: NumberConstructor;
|
|
1068
|
+
default: number;
|
|
1069
|
+
};
|
|
1070
|
+
maxDistance: {
|
|
1071
|
+
type: NumberConstructor;
|
|
1072
|
+
default: number;
|
|
1073
|
+
};
|
|
1074
|
+
animate: {
|
|
1075
|
+
type: PropType<false | PolyControlsAnimateOptions>;
|
|
1076
|
+
default: boolean;
|
|
1077
|
+
};
|
|
1078
|
+
}>> & Readonly<{
|
|
1079
|
+
onChange?: ((_camera: PolyMapControlsCamera) => any) | undefined;
|
|
1080
|
+
"onInteraction-start"?: ((_camera: PolyMapControlsCamera) => any) | undefined;
|
|
1081
|
+
"onInteraction-end"?: ((_camera: PolyMapControlsCamera) => any) | undefined;
|
|
1082
|
+
}>, {
|
|
1083
|
+
drag: boolean;
|
|
1084
|
+
wheel: boolean;
|
|
1085
|
+
animate: false | PolyControlsAnimateOptions;
|
|
1086
|
+
dolly: boolean;
|
|
1087
|
+
invert: number | boolean;
|
|
1088
|
+
minZoom: number;
|
|
1089
|
+
maxZoom: number;
|
|
1090
|
+
minDistance: number;
|
|
1091
|
+
maxDistance: number;
|
|
1092
|
+
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
1093
|
+
|
|
1094
|
+
interface PolyTransformControlsObjectChangeEvent {
|
|
1095
|
+
object: PolyMeshHandle;
|
|
1096
|
+
position?: Vec3;
|
|
1097
|
+
rotation?: Vec3;
|
|
1098
|
+
}
|
|
1099
|
+
interface PolyTransformControlsProps {
|
|
1100
|
+
object: PolyTransformControlsObject;
|
|
1101
|
+
mode?: "translate" | "rotate";
|
|
1102
|
+
space?: "world" | "local";
|
|
1103
|
+
size?: number;
|
|
1104
|
+
showX?: boolean;
|
|
1105
|
+
showY?: boolean;
|
|
1106
|
+
showZ?: boolean;
|
|
1107
|
+
translationSnap?: number | null;
|
|
1108
|
+
rotationSnap?: number | null;
|
|
1109
|
+
enabled?: boolean;
|
|
1110
|
+
onChange?: () => void;
|
|
1111
|
+
onObjectChange?: (event: PolyTransformControlsObjectChangeEvent) => void;
|
|
1112
|
+
onMouseDown?: () => void;
|
|
1113
|
+
onMouseUp?: () => void;
|
|
1114
|
+
onDraggingChanged?: (dragging: boolean) => void;
|
|
1115
|
+
}
|
|
1116
|
+
/** `object` prop: either a PolyMeshHandle directly or a Vue ref to one
|
|
1117
|
+
* (e.g. a template ref via `:object="meshRef"`). */
|
|
1118
|
+
type PolyTransformControlsObject = PolyMeshHandle | Ref<PolyMeshHandle | null | undefined> | ComputedRef<PolyMeshHandle | null | undefined> | null;
|
|
1119
|
+
declare const PolyTransformControls: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
1120
|
+
object: {
|
|
1121
|
+
type: PropType<PolyTransformControlsObject>;
|
|
1122
|
+
default: null;
|
|
1123
|
+
};
|
|
1124
|
+
mode: {
|
|
1125
|
+
type: PropType<"translate" | "rotate">;
|
|
1126
|
+
default: string;
|
|
1127
|
+
};
|
|
1128
|
+
space: {
|
|
1129
|
+
type: PropType<"world" | "local">;
|
|
1130
|
+
default: string;
|
|
1131
|
+
};
|
|
1132
|
+
size: {
|
|
1133
|
+
type: NumberConstructor;
|
|
1134
|
+
default: number;
|
|
1135
|
+
};
|
|
1136
|
+
showX: {
|
|
1137
|
+
type: BooleanConstructor;
|
|
1138
|
+
default: boolean;
|
|
1139
|
+
};
|
|
1140
|
+
showY: {
|
|
1141
|
+
type: BooleanConstructor;
|
|
1142
|
+
default: boolean;
|
|
1143
|
+
};
|
|
1144
|
+
showZ: {
|
|
1145
|
+
type: BooleanConstructor;
|
|
1146
|
+
default: boolean;
|
|
1147
|
+
};
|
|
1148
|
+
translationSnap: {
|
|
1149
|
+
type: PropType<number | null>;
|
|
1150
|
+
default: null;
|
|
1151
|
+
};
|
|
1152
|
+
rotationSnap: {
|
|
1153
|
+
type: PropType<number | null>;
|
|
1154
|
+
default: null;
|
|
1155
|
+
};
|
|
1156
|
+
enabled: {
|
|
1157
|
+
type: BooleanConstructor;
|
|
1158
|
+
default: boolean;
|
|
1159
|
+
};
|
|
1160
|
+
}>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
1161
|
+
[key: string]: any;
|
|
1162
|
+
}> | null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
1163
|
+
change: () => true;
|
|
1164
|
+
objectChange: (_e: PolyTransformControlsObjectChangeEvent) => true;
|
|
1165
|
+
mouseDown: () => true;
|
|
1166
|
+
mouseUp: () => true;
|
|
1167
|
+
draggingChanged: (_d: boolean) => true;
|
|
1168
|
+
}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
1169
|
+
object: {
|
|
1170
|
+
type: PropType<PolyTransformControlsObject>;
|
|
1171
|
+
default: null;
|
|
1172
|
+
};
|
|
1173
|
+
mode: {
|
|
1174
|
+
type: PropType<"translate" | "rotate">;
|
|
1175
|
+
default: string;
|
|
1176
|
+
};
|
|
1177
|
+
space: {
|
|
1178
|
+
type: PropType<"world" | "local">;
|
|
1179
|
+
default: string;
|
|
1180
|
+
};
|
|
1181
|
+
size: {
|
|
1182
|
+
type: NumberConstructor;
|
|
1183
|
+
default: number;
|
|
1184
|
+
};
|
|
1185
|
+
showX: {
|
|
1186
|
+
type: BooleanConstructor;
|
|
1187
|
+
default: boolean;
|
|
1188
|
+
};
|
|
1189
|
+
showY: {
|
|
1190
|
+
type: BooleanConstructor;
|
|
1191
|
+
default: boolean;
|
|
1192
|
+
};
|
|
1193
|
+
showZ: {
|
|
1194
|
+
type: BooleanConstructor;
|
|
1195
|
+
default: boolean;
|
|
1196
|
+
};
|
|
1197
|
+
translationSnap: {
|
|
1198
|
+
type: PropType<number | null>;
|
|
1199
|
+
default: null;
|
|
1200
|
+
};
|
|
1201
|
+
rotationSnap: {
|
|
1202
|
+
type: PropType<number | null>;
|
|
1203
|
+
default: null;
|
|
1204
|
+
};
|
|
1205
|
+
enabled: {
|
|
1206
|
+
type: BooleanConstructor;
|
|
1207
|
+
default: boolean;
|
|
1208
|
+
};
|
|
1209
|
+
}>> & Readonly<{
|
|
1210
|
+
onChange?: (() => any) | undefined;
|
|
1211
|
+
onObjectChange?: ((_e: PolyTransformControlsObjectChangeEvent) => any) | undefined;
|
|
1212
|
+
onMouseDown?: (() => any) | undefined;
|
|
1213
|
+
onMouseUp?: (() => any) | undefined;
|
|
1214
|
+
onDraggingChanged?: ((_d: boolean) => any) | undefined;
|
|
1215
|
+
}>, {
|
|
1216
|
+
object: PolyTransformControlsObject;
|
|
1217
|
+
mode: "rotate" | "translate";
|
|
1218
|
+
space: "local" | "world";
|
|
1219
|
+
size: number;
|
|
1220
|
+
enabled: boolean;
|
|
1221
|
+
showX: boolean;
|
|
1222
|
+
showY: boolean;
|
|
1223
|
+
showZ: boolean;
|
|
1224
|
+
translationSnap: number | null;
|
|
1225
|
+
rotationSnap: number | null;
|
|
1226
|
+
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
1227
|
+
|
|
1228
|
+
interface PolySelectProps {
|
|
1229
|
+
multiple?: boolean;
|
|
1230
|
+
clearOnMiss?: boolean;
|
|
1231
|
+
filter?: (meshes: PolyMeshHandle[]) => PolyMeshHandle[];
|
|
1232
|
+
onChange?: (meshes: PolyMeshHandle[]) => void;
|
|
1233
|
+
onPointerMissed?: (event: MouseEvent) => void;
|
|
1234
|
+
}
|
|
1235
|
+
interface PolySelectionApi {
|
|
1236
|
+
selected: ReadonlyArray<PolyMeshHandle>;
|
|
1237
|
+
set(next: PolyMeshHandle[]): void;
|
|
1238
|
+
add(handle: PolyMeshHandle): void;
|
|
1239
|
+
remove(handle: PolyMeshHandle): void;
|
|
1240
|
+
toggle(handle: PolyMeshHandle): void;
|
|
1241
|
+
clear(): void;
|
|
1242
|
+
has(handle: PolyMeshHandle): boolean;
|
|
1243
|
+
}
|
|
1244
|
+
declare const PolySelectionContextKey: InjectionKey<{
|
|
1245
|
+
selected: ComputedRef<PolyMeshHandle[]>;
|
|
1246
|
+
api: PolySelectionApi;
|
|
1247
|
+
}>;
|
|
1248
|
+
declare const PolySelect: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
1249
|
+
multiple: {
|
|
1250
|
+
type: BooleanConstructor;
|
|
1251
|
+
default: boolean;
|
|
1252
|
+
};
|
|
1253
|
+
clearOnMiss: {
|
|
1254
|
+
type: BooleanConstructor;
|
|
1255
|
+
default: boolean;
|
|
1256
|
+
};
|
|
1257
|
+
filter: {
|
|
1258
|
+
type: PropType<(meshes: PolyMeshHandle[]) => PolyMeshHandle[]>;
|
|
1259
|
+
default: undefined;
|
|
1260
|
+
};
|
|
1261
|
+
}>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
1262
|
+
[key: string]: any;
|
|
1263
|
+
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
1264
|
+
change: (_meshes: PolyMeshHandle[]) => true;
|
|
1265
|
+
pointerMissed: (_event: MouseEvent) => true;
|
|
1266
|
+
}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
1267
|
+
multiple: {
|
|
1268
|
+
type: BooleanConstructor;
|
|
1269
|
+
default: boolean;
|
|
1270
|
+
};
|
|
1271
|
+
clearOnMiss: {
|
|
1272
|
+
type: BooleanConstructor;
|
|
1273
|
+
default: boolean;
|
|
1274
|
+
};
|
|
1275
|
+
filter: {
|
|
1276
|
+
type: PropType<(meshes: PolyMeshHandle[]) => PolyMeshHandle[]>;
|
|
1277
|
+
default: undefined;
|
|
1278
|
+
};
|
|
1279
|
+
}>> & Readonly<{
|
|
1280
|
+
onChange?: ((_meshes: PolyMeshHandle[]) => any) | undefined;
|
|
1281
|
+
onPointerMissed?: ((_event: MouseEvent) => any) | undefined;
|
|
1282
|
+
}>, {
|
|
1283
|
+
filter: (meshes: PolyMeshHandle[]) => PolyMeshHandle[];
|
|
1284
|
+
multiple: boolean;
|
|
1285
|
+
clearOnMiss: boolean;
|
|
1286
|
+
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
1287
|
+
/** Read the current selection from the nearest enclosing `<PolySelect>`.
|
|
1288
|
+
* Returns an empty array when called outside one. */
|
|
1289
|
+
declare function usePolySelect(): ComputedRef<PolyMeshHandle[]>;
|
|
1290
|
+
/** Read the imperative selection API. Throws when called outside a `<PolySelect>`. */
|
|
1291
|
+
declare function usePolySelectionApi(): PolySelectionApi;
|
|
1292
|
+
|
|
1293
|
+
interface PolyAxesHelperProps {
|
|
1294
|
+
size?: number;
|
|
1295
|
+
thickness?: number;
|
|
1296
|
+
negative?: boolean;
|
|
1297
|
+
xColor?: string;
|
|
1298
|
+
yColor?: string;
|
|
1299
|
+
zColor?: string;
|
|
1300
|
+
}
|
|
1301
|
+
declare const PolyAxesHelper: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
1302
|
+
size: {
|
|
1303
|
+
type: NumberConstructor;
|
|
1304
|
+
default: undefined;
|
|
1305
|
+
};
|
|
1306
|
+
thickness: {
|
|
1307
|
+
type: NumberConstructor;
|
|
1308
|
+
default: undefined;
|
|
1309
|
+
};
|
|
1310
|
+
negative: {
|
|
1311
|
+
type: BooleanConstructor;
|
|
1312
|
+
default: undefined;
|
|
1313
|
+
};
|
|
1314
|
+
xColor: {
|
|
1315
|
+
type: PropType<string>;
|
|
1316
|
+
default: undefined;
|
|
1317
|
+
};
|
|
1318
|
+
yColor: {
|
|
1319
|
+
type: PropType<string>;
|
|
1320
|
+
default: undefined;
|
|
1321
|
+
};
|
|
1322
|
+
zColor: {
|
|
1323
|
+
type: PropType<string>;
|
|
1324
|
+
default: undefined;
|
|
1325
|
+
};
|
|
1326
|
+
}>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
1327
|
+
[key: string]: any;
|
|
1328
|
+
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
1329
|
+
size: {
|
|
1330
|
+
type: NumberConstructor;
|
|
1331
|
+
default: undefined;
|
|
1332
|
+
};
|
|
1333
|
+
thickness: {
|
|
1334
|
+
type: NumberConstructor;
|
|
1335
|
+
default: undefined;
|
|
1336
|
+
};
|
|
1337
|
+
negative: {
|
|
1338
|
+
type: BooleanConstructor;
|
|
1339
|
+
default: undefined;
|
|
1340
|
+
};
|
|
1341
|
+
xColor: {
|
|
1342
|
+
type: PropType<string>;
|
|
1343
|
+
default: undefined;
|
|
1344
|
+
};
|
|
1345
|
+
yColor: {
|
|
1346
|
+
type: PropType<string>;
|
|
1347
|
+
default: undefined;
|
|
1348
|
+
};
|
|
1349
|
+
zColor: {
|
|
1350
|
+
type: PropType<string>;
|
|
1351
|
+
default: undefined;
|
|
1352
|
+
};
|
|
1353
|
+
}>> & Readonly<{}>, {
|
|
1354
|
+
size: number;
|
|
1355
|
+
thickness: number;
|
|
1356
|
+
negative: boolean;
|
|
1357
|
+
xColor: string;
|
|
1358
|
+
yColor: string;
|
|
1359
|
+
zColor: string;
|
|
1360
|
+
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
1361
|
+
|
|
1362
|
+
interface PolyDirectionalLightHelperProps {
|
|
1363
|
+
light: PolyDirectionalLight;
|
|
1364
|
+
target?: Vec3;
|
|
1365
|
+
distance?: number;
|
|
1366
|
+
size?: number;
|
|
1367
|
+
color?: string;
|
|
1368
|
+
}
|
|
1369
|
+
declare const PolyDirectionalLightHelper: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
1370
|
+
light: {
|
|
1371
|
+
type: PropType<PolyDirectionalLight>;
|
|
1372
|
+
required: true;
|
|
1373
|
+
};
|
|
1374
|
+
target: {
|
|
1375
|
+
type: PropType<Vec3>;
|
|
1376
|
+
default: undefined;
|
|
1377
|
+
};
|
|
1378
|
+
distance: {
|
|
1379
|
+
type: NumberConstructor;
|
|
1380
|
+
default: number;
|
|
1381
|
+
};
|
|
1382
|
+
size: {
|
|
1383
|
+
type: NumberConstructor;
|
|
1384
|
+
default: number;
|
|
1385
|
+
};
|
|
1386
|
+
color: {
|
|
1387
|
+
type: PropType<string>;
|
|
1388
|
+
default: undefined;
|
|
1389
|
+
};
|
|
1390
|
+
}>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
1391
|
+
[key: string]: any;
|
|
1392
|
+
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
|
|
1393
|
+
light: {
|
|
1394
|
+
type: PropType<PolyDirectionalLight>;
|
|
1395
|
+
required: true;
|
|
1396
|
+
};
|
|
1397
|
+
target: {
|
|
1398
|
+
type: PropType<Vec3>;
|
|
1399
|
+
default: undefined;
|
|
1400
|
+
};
|
|
1401
|
+
distance: {
|
|
1402
|
+
type: NumberConstructor;
|
|
1403
|
+
default: number;
|
|
1404
|
+
};
|
|
1405
|
+
size: {
|
|
1406
|
+
type: NumberConstructor;
|
|
1407
|
+
default: number;
|
|
1408
|
+
};
|
|
1409
|
+
color: {
|
|
1410
|
+
type: PropType<string>;
|
|
1411
|
+
default: undefined;
|
|
1412
|
+
};
|
|
1413
|
+
}>> & Readonly<{}>, {
|
|
1414
|
+
target: Vec3;
|
|
1415
|
+
distance: number;
|
|
1416
|
+
color: string;
|
|
1417
|
+
size: number;
|
|
1418
|
+
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
1419
|
+
|
|
1420
|
+
declare function injectPolyBaseStyles(doc?: Document): void;
|
|
1421
|
+
|
|
1422
|
+
interface UsePolyAnimationResultVue {
|
|
1423
|
+
/** Attach to a mesh handle when not passing `root` directly. */
|
|
1424
|
+
ref: Ref<PolyAnimationTarget | null>;
|
|
1425
|
+
/** The active mixer, or null if inputs are not ready yet. */
|
|
1426
|
+
mixer: ComputedRef<PolyAnimationMixer | null>;
|
|
1427
|
+
/** Resolved clip list. */
|
|
1428
|
+
clips: ComputedRef<PolyAnimationClip[]>;
|
|
1429
|
+
/** Clip names in input order. */
|
|
1430
|
+
names: ComputedRef<string[]>;
|
|
1431
|
+
/**
|
|
1432
|
+
* Lazy action proxy keyed by clip name. Accessing `actions.value["walk"]`
|
|
1433
|
+
* instantiates the action via the mixer. Returns null when mixer is null.
|
|
1434
|
+
*/
|
|
1435
|
+
actions: ComputedRef<Record<string, PolyAnimationAction | null>>;
|
|
1436
|
+
}
|
|
1437
|
+
declare function usePolyAnimation(clips: MaybeRef<PolyAnimationClip[] | undefined>, controller: MaybeRef<ParseAnimationController | undefined>, root?: MaybeRef<PolyAnimationTarget | null | undefined>): UsePolyAnimationResultVue;
|
|
1438
|
+
|
|
1439
|
+
export { type InteractionProps, Poly, PolyAxesHelper, type PolyAxesHelperProps, PolyPerspectiveCamera as PolyCamera, PolyCameraContextKey, type PolyCameraContextValue, type PolyPerspectiveCameraProps as PolyCameraProps, type PolyContext, type PolyControlsAnimateOptions, PolyDirectionalLightHelper, type PolyDirectionalLightHelperProps, type PolyEventHandler, PolyMapControls, type PolyMapControlsCamera, type PolyMapControlsProps, PolyMesh, type PolyMeshHandle, type PolyMeshProps, type PolyMouseEvent, PolyOrbitControls, type PolyOrbitControlsCamera, type PolyOrbitControlsProps, PolyOrthographicCamera, type PolyOrthographicCameraProps, PolyPerspectiveCamera, type PolyPerspectiveCameraProps, type PolyPointerEvent, type PolyProps, PolyScene, type PolySceneProps, PolySelect, type PolySelectProps, type PolySelectionApi, PolySelectionContextKey, PolyTransformControls, type PolyTransformControlsObject, type PolyTransformControlsObjectChangeEvent, type PolyTransformControlsProps, type PolyWheelEvent, type UseCameraOptions, type UseCameraResult, type UseMeshOptions, type UseMeshResult, type UsePolyAnimationResultVue, type UseSceneContextOptions, type UseSceneContextResult, findMeshUnderPoint, findPolyMeshHandle, injectPolyBaseStyles, pointInMeshElement, usePolyAnimation, usePolyCamera, usePolyMaterial, usePolyMesh, usePolySceneContext, usePolySelect, usePolySelectionApi };
|