@tresjs/core 2.1.3 → 2.2.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/README.md CHANGED
@@ -39,7 +39,8 @@ Checkout the [docs](https://tresjs.org)
39
39
  | Package | Version |
40
40
  | --------------------------- | :------------------------------------------------------------------------------------------------- |
41
41
  | [Tres](packages/tres) | ![tres version](https://img.shields.io/npm/v/@tresjs/core/latest.svg?label=%20&color=%2382DBCA) |
42
- | [Cientos](packages/cientos) | ![tres version](https://img.shields.io/npm/v/@tresjs/cientos/latest.svg?label=%20&color=%23f19b00) |
42
+ | [Cientos](packages/cientos) | ![cientos version](https://img.shields.io/npm/v/@tresjs/cientos/latest.svg?label=%20&color=%23f19b00) |
43
+ | [Post-processing](packages/post-processing) | ![post-processing version](https://img.shields.io/npm/v/@tresjs/post-processing/latest.svg?label=%20&color=%ff7bac00) |
43
44
 
44
45
  ## Contribution
45
46
 
@@ -7,3 +7,4 @@ export * from './useTres';
7
7
  export * from './useRaycaster';
8
8
  export * from './useLogger';
9
9
  export * from './useSeek';
10
+ export * from './usePointerEventHandler';
@@ -0,0 +1,14 @@
1
+ import type { Intersection, Event, Object3D } from 'three';
2
+ type CallbackFn = (intersection: Intersection<Object3D<Event>>, event: PointerEvent) => void;
3
+ type CallbackFnPointerLeave = (object: Object3D<Event>, event: PointerEvent) => void;
4
+ type EventProps = {
5
+ onClick?: CallbackFn;
6
+ onPointerEnter?: CallbackFn;
7
+ onPointerMove?: CallbackFn;
8
+ onPointerLeave?: CallbackFnPointerLeave;
9
+ };
10
+ export declare const usePointerEventHandler: () => {
11
+ registerObject: (object: Object3D & EventProps) => void;
12
+ deregisterObject: (object: Object3D) => void;
13
+ };
14
+ export {};
@@ -1,32 +1,17 @@
1
- import { Raycaster, Vector2 } from 'three';
2
- import { Ref, ShallowRef } from 'vue';
3
- /**
4
- * Raycaster composable return type
5
- *
6
- * @export
7
- * @interface UseRaycasterReturn
8
- */
9
- export interface UseRaycasterReturn {
10
- /**
11
- * Raycaster instance
12
- *
13
- * @type {ShallowRef<Raycaster>}
14
- * @memberof UseRaycasterReturn
15
- */
16
- raycaster: ShallowRef<Raycaster>;
17
- /**
18
- * Pointer position
19
- *
20
- * @type {Ref<Vector2>}
21
- * @memberof UseRaycasterReturn
22
- */
23
- pointer: Ref<Vector2>;
1
+ import { Object3D } from 'three';
2
+ import { Ref } from 'vue';
3
+ export type Intersects = THREE.Intersection<THREE.Object3D<THREE.Event>>[];
4
+ interface PointerMoveEventPayload {
5
+ intersects?: Intersects;
6
+ event: PointerEvent;
24
7
  }
25
- /**
26
- * Composable to provide raycaster support and pointer information
27
- *
28
- * @see https://threejs.org/docs/index.html?q=raycas#api/en/core/Raycaster
29
- * @export
30
- * @return {*} {UseRaycasterReturn}
31
- */
32
- export declare function useRaycaster(): UseRaycasterReturn;
8
+ interface PointerClickEventPayload {
9
+ intersects: Intersects;
10
+ event: PointerEvent;
11
+ }
12
+ export declare const useRaycaster: (objects: Ref<THREE.Object3D[]>) => {
13
+ intersects: import("vue").ComputedRef<Intersects>;
14
+ onClick: (fn: (value: PointerClickEventPayload) => void) => () => void;
15
+ onPointerMove: (fn: (value: PointerMoveEventPayload) => void) => () => void;
16
+ };
17
+ export {};
@@ -1,6 +1,7 @@
1
1
  import { Clock, EventDispatcher, Raycaster, Scene, Vector2, WebGLRenderer } from 'three';
2
- import { ComputedRef } from 'vue';
2
+ import { ComputedRef, Ref } from 'vue';
3
3
  import { Camera } from '../useCamera';
4
+ import type { usePointerEventHandler } from '../usePointerEventHandler';
4
5
  export interface TresState {
5
6
  /**
6
7
  * The active camera used for rendering the scene.
@@ -87,6 +88,13 @@ export interface TresState {
87
88
  controls?: (EventDispatcher & {
88
89
  enabled: boolean;
89
90
  }) | null;
91
+ canvas?: Ref<HTMLElement>;
92
+ /**
93
+ * The entity that handles pointer events
94
+ * @type {ReturnType<typeof usePointerEventHandler>}
95
+ * @memberof TresState
96
+ */
97
+ pointerEventHandler?: ReturnType<typeof usePointerEventHandler>;
90
98
  [key: string]: any;
91
99
  }
92
100
  export type UseTresReturn = {
@@ -107,18 +115,28 @@ export declare const TRES_CONTEXT_KEY: unique symbol;
107
115
  export declare function useTresProvider(): {
108
116
  getState: (key: string) => any;
109
117
  setState: (key: string, value: any) => void;
110
- camera?: import("vue").Ref<Camera | undefined> | undefined;
111
- cameras?: import("vue").Ref<Camera[] | undefined> | undefined;
112
- aspectRatio?: import("vue").Ref<ComputedRef<number> | undefined> | undefined;
113
- renderer?: import("vue").Ref<WebGLRenderer | undefined> | undefined;
114
- scene?: import("vue").Ref<Scene | undefined> | undefined;
115
- raycaster?: import("vue").Ref<Raycaster | undefined> | undefined;
116
- clock?: import("vue").Ref<Clock | undefined> | undefined;
117
- pointer?: import("vue").Ref<Vector2 | undefined> | undefined;
118
- currentInstance?: import("vue").Ref<any> | undefined;
119
- controls?: import("vue").Ref<(EventDispatcher<import("three").Event> & {
118
+ camera?: Ref<Camera | undefined> | undefined;
119
+ cameras?: Ref<Camera[] | undefined> | undefined;
120
+ aspectRatio?: Ref<ComputedRef<number> | undefined> | undefined;
121
+ renderer?: Ref<WebGLRenderer | undefined> | undefined;
122
+ scene?: Ref<Scene | undefined> | undefined;
123
+ raycaster?: Ref<Raycaster | undefined> | undefined;
124
+ clock?: Ref<Clock | undefined> | undefined;
125
+ pointer?: Ref<Vector2 | undefined> | undefined;
126
+ currentInstance?: Ref<any> | undefined;
127
+ controls?: Ref<(EventDispatcher<import("three").Event> & {
120
128
  enabled: boolean;
121
129
  }) | null | undefined> | undefined;
130
+ canvas?: Ref<Ref<HTMLElement> | undefined> | undefined;
131
+ pointerEventHandler?: Ref<{
132
+ registerObject: (object: import("three").Object3D<import("three").Event> & {
133
+ onClick?: ((intersection: import("three").Intersection<import("three").Object3D<import("three").Event>>, event: PointerEvent) => void) | undefined;
134
+ onPointerEnter?: ((intersection: import("three").Intersection<import("three").Object3D<import("three").Event>>, event: PointerEvent) => void) | undefined;
135
+ onPointerMove?: ((intersection: import("three").Intersection<import("three").Object3D<import("three").Event>>, event: PointerEvent) => void) | undefined;
136
+ onPointerLeave?: ((object: import("three").Object3D<import("three").Event>, event: PointerEvent) => void) | undefined;
137
+ }) => void;
138
+ deregisterObject: (object: import("three").Object3D<import("three").Event>) => void;
139
+ } | undefined> | undefined;
122
140
  state: TresState;
123
141
  };
124
142
  export declare const useTres: () => UseTresReturn;
package/dist/keys.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export declare const UseTresStateSymbol: unique symbol;
2
+ export declare const OBJECT_3D_USER_DATA_KEYS: {
3
+ GEOMETRY_VIA_PROP: string;
4
+ MATERIAL_VIA_PROP: string;
5
+ REGISTER_AT_POINTER_EVENT_HANDLER: string;
6
+ };