@tresjs/core 3.7.0 → 4.0.0-next.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.
@@ -10,6 +10,7 @@ export interface TresCanvasProps extends Omit<WebGLRendererParameters, 'canvas'>
10
10
  useLegacyLights?: boolean;
11
11
  outputColorSpace?: ColorSpace;
12
12
  toneMappingExposure?: number;
13
+ renderMode?: 'always' | 'on-demand' | 'manual';
13
14
  camera?: TresCamera;
14
15
  preset?: RendererPresetsType;
15
16
  windowSize?: boolean;
@@ -27,10 +28,13 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
27
28
  preserveDrawingBuffer: undefined;
28
29
  logarithmicDepthBuffer: undefined;
29
30
  failIfMajorPerformanceCaveat: undefined;
31
+ renderMode: string;
30
32
  }>, {
31
33
  context: import("vue").ShallowRef<TresContext | null>;
32
34
  dispose: () => void;
33
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<TresCanvasProps>, {
35
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
36
+ render: (...args: any[]) => void;
37
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<TresCanvasProps>, {
34
38
  alpha: undefined;
35
39
  depth: undefined;
36
40
  shadows: undefined;
@@ -42,7 +46,10 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
42
46
  preserveDrawingBuffer: undefined;
43
47
  logarithmicDepthBuffer: undefined;
44
48
  failIfMajorPerformanceCaveat: undefined;
45
- }>>>, {
49
+ renderMode: string;
50
+ }>>> & {
51
+ onRender?: ((...args: any[]) => any) | undefined;
52
+ }, {
46
53
  alpha: boolean;
47
54
  antialias: boolean;
48
55
  stencil: boolean;
@@ -53,6 +60,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<__
53
60
  shadows: boolean;
54
61
  useLegacyLights: boolean;
55
62
  windowSize: boolean;
63
+ renderMode: "always" | "on-demand" | "manual";
56
64
  disableRender: boolean;
57
65
  }, {}>, Readonly<{
58
66
  default(): any;
@@ -1054,6 +1054,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
1054
1054
  }[];
1055
1055
  userData: Record<string, any>;
1056
1056
  customDepthMaterial?: {
1057
+ readonly isMaterial: true;
1057
1058
  alphaHash: boolean;
1058
1059
  alphaTest: number;
1059
1060
  alphaToCoverage: boolean;
@@ -1238,7 +1239,6 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
1238
1239
  stencilFail: import("three").StencilOp;
1239
1240
  stencilZFail: import("three").StencilOp;
1240
1241
  stencilZPass: import("three").StencilOp;
1241
- readonly isMaterial: true;
1242
1242
  name: string;
1243
1243
  needsUpdate: boolean;
1244
1244
  opacity: number;
@@ -1262,7 +1262,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
1262
1262
  clone: () => import("three").Material;
1263
1263
  copy: (material: import("three").Material) => import("three").Material;
1264
1264
  dispose: () => void;
1265
- onBeforeCompile: (shader: import("three").Shader, renderer: import("three").WebGLRenderer) => void;
1265
+ onBeforeCompile: (parameters: import("three").WebGLProgramParametersWithUniforms, renderer: import("three").WebGLRenderer) => void;
1266
1266
  customProgramCacheKey: () => string;
1267
1267
  setValues: (values: import("three").MaterialParameters) => void;
1268
1268
  toJSON: (meta?: any) => any;
@@ -1289,6 +1289,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
1289
1289
  }[T_6]) => void;
1290
1290
  } | undefined;
1291
1291
  customDistanceMaterial?: {
1292
+ readonly isMaterial: true;
1292
1293
  alphaHash: boolean;
1293
1294
  alphaTest: number;
1294
1295
  alphaToCoverage: boolean;
@@ -1473,7 +1474,6 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
1473
1474
  stencilFail: import("three").StencilOp;
1474
1475
  stencilZFail: import("three").StencilOp;
1475
1476
  stencilZPass: import("three").StencilOp;
1476
- readonly isMaterial: true;
1477
1477
  name: string;
1478
1478
  needsUpdate: boolean;
1479
1479
  opacity: number;
@@ -1497,7 +1497,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
1497
1497
  clone: () => import("three").Material;
1498
1498
  copy: (material: import("three").Material) => import("three").Material;
1499
1499
  dispose: () => void;
1500
- onBeforeCompile: (shader: import("three").Shader, renderer: import("three").WebGLRenderer) => void;
1500
+ onBeforeCompile: (parameters: import("three").WebGLProgramParametersWithUniforms, renderer: import("three").WebGLRenderer) => void;
1501
1501
  customProgramCacheKey: () => string;
1502
1502
  setValues: (values: import("three").MaterialParameters) => void;
1503
1503
  toJSON: (meta?: any) => any;
@@ -2442,6 +2442,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
2442
2442
  }[];
2443
2443
  userData: Record<string, any>;
2444
2444
  customDepthMaterial?: {
2445
+ readonly isMaterial: true;
2445
2446
  alphaHash: boolean;
2446
2447
  alphaTest: number;
2447
2448
  alphaToCoverage: boolean;
@@ -2626,7 +2627,6 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
2626
2627
  stencilFail: import("three").StencilOp;
2627
2628
  stencilZFail: import("three").StencilOp;
2628
2629
  stencilZPass: import("three").StencilOp;
2629
- readonly isMaterial: true;
2630
2630
  name: string;
2631
2631
  needsUpdate: boolean;
2632
2632
  opacity: number;
@@ -2650,7 +2650,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
2650
2650
  clone: () => import("three").Material;
2651
2651
  copy: (material: import("three").Material) => import("three").Material;
2652
2652
  dispose: () => void;
2653
- onBeforeCompile: (shader: import("three").Shader, renderer: import("three").WebGLRenderer) => void;
2653
+ onBeforeCompile: (parameters: import("three").WebGLProgramParametersWithUniforms, renderer: import("three").WebGLRenderer) => void;
2654
2654
  customProgramCacheKey: () => string;
2655
2655
  setValues: (values: import("three").MaterialParameters) => void;
2656
2656
  toJSON: (meta?: any) => any;
@@ -2677,6 +2677,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
2677
2677
  }[T_6]) => void;
2678
2678
  } | undefined;
2679
2679
  customDistanceMaterial?: {
2680
+ readonly isMaterial: true;
2680
2681
  alphaHash: boolean;
2681
2682
  alphaTest: number;
2682
2683
  alphaToCoverage: boolean;
@@ -2861,7 +2862,6 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
2861
2862
  stencilFail: import("three").StencilOp;
2862
2863
  stencilZFail: import("three").StencilOp;
2863
2864
  stencilZPass: import("three").StencilOp;
2864
- readonly isMaterial: true;
2865
2865
  name: string;
2866
2866
  needsUpdate: boolean;
2867
2867
  opacity: number;
@@ -2885,7 +2885,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
2885
2885
  clone: () => import("three").Material;
2886
2886
  copy: (material: import("three").Material) => import("three").Material;
2887
2887
  dispose: () => void;
2888
- onBeforeCompile: (shader: import("three").Shader, renderer: import("three").WebGLRenderer) => void;
2888
+ onBeforeCompile: (parameters: import("three").WebGLProgramParametersWithUniforms, renderer: import("three").WebGLRenderer) => void;
2889
2889
  customProgramCacheKey: () => string;
2890
2890
  setValues: (values: import("three").MaterialParameters) => void;
2891
2891
  toJSON: (meta?: any) => any;
@@ -3811,6 +3811,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
3811
3811
  }[];
3812
3812
  userData: Record<string, any>;
3813
3813
  customDepthMaterial?: {
3814
+ readonly isMaterial: true;
3814
3815
  alphaHash: boolean;
3815
3816
  alphaTest: number;
3816
3817
  alphaToCoverage: boolean;
@@ -3995,7 +3996,6 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
3995
3996
  stencilFail: import("three").StencilOp;
3996
3997
  stencilZFail: import("three").StencilOp;
3997
3998
  stencilZPass: import("three").StencilOp;
3998
- readonly isMaterial: true;
3999
3999
  name: string;
4000
4000
  needsUpdate: boolean;
4001
4001
  opacity: number;
@@ -4019,7 +4019,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
4019
4019
  clone: () => import("three").Material;
4020
4020
  copy: (material: import("three").Material) => import("three").Material;
4021
4021
  dispose: () => void;
4022
- onBeforeCompile: (shader: import("three").Shader, renderer: import("three").WebGLRenderer) => void;
4022
+ onBeforeCompile: (parameters: import("three").WebGLProgramParametersWithUniforms, renderer: import("three").WebGLRenderer) => void;
4023
4023
  customProgramCacheKey: () => string;
4024
4024
  setValues: (values: import("three").MaterialParameters) => void;
4025
4025
  toJSON: (meta?: any) => any;
@@ -4046,6 +4046,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
4046
4046
  }[T_6]) => void;
4047
4047
  } | undefined;
4048
4048
  customDistanceMaterial?: {
4049
+ readonly isMaterial: true;
4049
4050
  alphaHash: boolean;
4050
4051
  alphaTest: number;
4051
4052
  alphaToCoverage: boolean;
@@ -4230,7 +4231,6 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
4230
4231
  stencilFail: import("three").StencilOp;
4231
4232
  stencilZFail: import("three").StencilOp;
4232
4233
  stencilZPass: import("three").StencilOp;
4233
- readonly isMaterial: true;
4234
4234
  name: string;
4235
4235
  needsUpdate: boolean;
4236
4236
  opacity: number;
@@ -4254,7 +4254,7 @@ export declare const useCamera: ({ sizes, scene }: Pick<TresContext, "sizes"> &
4254
4254
  clone: () => import("three").Material;
4255
4255
  copy: (material: import("three").Material) => import("three").Material;
4256
4256
  dispose: () => void;
4257
- onBeforeCompile: (shader: import("three").Shader, renderer: import("three").WebGLRenderer) => void;
4257
+ onBeforeCompile: (parameters: import("three").WebGLProgramParametersWithUniforms, renderer: import("three").WebGLRenderer) => void;
4258
4258
  customProgramCacheKey: () => string;
4259
4259
  setValues: (values: import("three").MaterialParameters) => void;
4260
4260
  toJSON: (meta?: any) => any;
@@ -1,19 +1,17 @@
1
- import type { Intersection, Event, Object3D } from 'three';
2
- import type { TresScene } from 'src/types';
1
+ import type { Intersection, Object3D, Object3DEventMap } from 'three';
3
2
  import type { TresContext } from '../useTresContextProvider';
4
- type CallbackFn = (intersection: Intersection<Object3D<Event>>, event: PointerEvent) => void;
5
- type CallbackFnPointerLeave = (object: Object3D<Event>, event: PointerEvent) => void;
3
+ type CallbackFn = (intersection: Intersection<Object3D<Object3DEventMap>>, event: PointerEvent) => void;
4
+ type CallbackFnPointerLeave = (object: Object3D, event: PointerEvent) => void;
6
5
  export interface EventProps {
7
6
  onClick?: CallbackFn;
8
7
  onPointerEnter?: CallbackFn;
9
8
  onPointerMove?: CallbackFn;
10
9
  onPointerLeave?: CallbackFnPointerLeave;
11
10
  }
12
- export declare const usePointerEventHandler: ({ scene, contextParts }: {
13
- scene: TresScene;
14
- contextParts: Pick<TresContext, 'renderer' | 'camera' | 'raycaster'>;
15
- }) => {
11
+ export declare const usePointerEventHandler: (ctx: TresContext) => {
16
12
  registerObject: (object: Object3D & EventProps) => void;
17
13
  deregisterObject: (object: Object3D) => void;
14
+ registerBlockingObject: (object: Object3D) => void;
15
+ deregisterBlockingObject: (object: Object3D) => void;
18
16
  };
19
17
  export {};
@@ -1,7 +1,7 @@
1
- import type { Object3D, type Intersection } from 'three';
1
+ import type { Object3D, Intersection } from 'three';
2
2
  import type { Ref } from 'vue';
3
3
  import { type TresContext } from '../useTresContextProvider';
4
- export type Intersects = Intersection<THREE.Object3D<THREE.Event>>[];
4
+ export type Intersects = Intersection<THREE.Object3D<THREE.Object3DEventMap>>[];
5
5
  interface PointerMoveEventPayload {
6
6
  intersects?: Intersects;
7
7
  event: PointerEvent;
@@ -10,7 +10,7 @@ interface PointerClickEventPayload {
10
10
  intersects: Intersects;
11
11
  event: PointerEvent;
12
12
  }
13
- export declare const useRaycaster: (objects: Ref<THREE.Object3D[]>, { renderer, camera, raycaster }: Pick<TresContext, 'renderer' | 'camera' | 'raycaster'>) => {
13
+ export declare const useRaycaster: (objects: Ref<THREE.Object3D[]>, ctx: TresContext) => {
14
14
  intersects: import("vue").ComputedRef<Intersects>;
15
15
  onClick: (fn: (value: PointerClickEventPayload) => void) => () => void;
16
16
  onPointerMove: (fn: (value: PointerMoveEventPayload) => void) => () => void;
@@ -10,5 +10,9 @@ export declare const rendererPresets: {
10
10
  type: 2;
11
11
  };
12
12
  };
13
+ flat: {
14
+ toneMapping: 0;
15
+ toneMappingExposure: number;
16
+ };
13
17
  };
14
18
  export type RendererPresetsType = keyof typeof rendererPresets;
@@ -52,7 +52,7 @@ export interface UseRendererOptions extends TransformToMaybeRefOrGetter<WebGLRen
52
52
  * CineonToneMapping, ACESFilmicToneMapping,
53
53
  * CustomToneMapping
54
54
  *
55
- * @default NoToneMapping
55
+ * @default ACESFilmicToneMapping
56
56
  */
57
57
  toneMapping?: MaybeRefOrGetter<ToneMapping>;
58
58
  /**
@@ -69,6 +69,7 @@ export interface UseRendererOptions extends TransformToMaybeRefOrGetter<WebGLRen
69
69
  clearColor?: MaybeRefOrGetter<TresColor>;
70
70
  windowSize?: MaybeRefOrGetter<boolean | string>;
71
71
  preset?: MaybeRefOrGetter<RendererPresetsType>;
72
+ renderMode?: MaybeRefOrGetter<'always' | 'on-demand' | 'manual'>;
72
73
  }
73
74
  /**
74
75
  * Reactive three.js WebGLRenderer instance
@@ -76,11 +77,15 @@ export interface UseRendererOptions extends TransformToMaybeRefOrGetter<WebGLRen
76
77
  * @param canvas
77
78
  * @param {UseRendererOptions} [options]
78
79
  */
79
- export declare function useRenderer({ scene, canvas, options, disableRender, contextParts: { sizes, camera }, }: {
80
+ export declare function useRenderer({ scene, canvas, options, disableRender, emit, contextParts: { sizes, camera, render, invalidate, advance }, }: {
80
81
  canvas: MaybeRef<HTMLCanvasElement>;
81
82
  scene: Scene;
82
83
  options: UseRendererOptions;
83
- contextParts: Pick<TresContext, 'sizes' | 'camera'>;
84
+ emit: (event: string, ...args: any[]) => void;
85
+ contextParts: Pick<TresContext, 'sizes' | 'camera' | 'render'> & {
86
+ invalidate: () => void;
87
+ advance: () => void;
88
+ };
84
89
  disableRender: MaybeRefOrGetter<boolean>;
85
90
  }): {
86
91
  renderer: import("vue").ShallowRef<WebGLRenderer>;
@@ -0,0 +1,11 @@
1
+ import type { MaybeRefOrGetter, MaybeRef, ComputedRef, Ref } from 'vue';
2
+ export interface SizesType {
3
+ height: Readonly<Ref<number>>;
4
+ width: Readonly<Ref<number>>;
5
+ aspectRatio: ComputedRef<number>;
6
+ }
7
+ export default function useSizes(windowSize: MaybeRefOrGetter<boolean>, canvas: MaybeRef<HTMLCanvasElement>, debounceMs?: number): {
8
+ height: Readonly<Ref<number>>;
9
+ width: Readonly<Ref<number>>;
10
+ aspectRatio: ComputedRef<number>;
11
+ };
@@ -1,14 +1,42 @@
1
- import type { Camera, EventDispatcher, Scene, WebGLRenderer } from 'three';
1
+ import type { Camera, EventDispatcher, Object3D, WebGLRenderer } from 'three';
2
2
  import { Raycaster } from 'three';
3
3
  import type { ComputedRef, DeepReadonly, MaybeRef, MaybeRefOrGetter, Ref, ShallowRef } from 'vue';
4
4
  import type { UseRendererOptions } from '../useRenderer';
5
- export interface TresContext {
6
- scene: ShallowRef<Scene>;
7
- sizes: {
8
- height: Ref<number>;
9
- width: Ref<number>;
10
- aspectRatio: ComputedRef<number>;
5
+ import type { TresScene } from '../../types';
6
+ import type { EventProps } from '../usePointerEventHandler';
7
+ import { type SizesType } from '../useSizes';
8
+ export interface InternalState {
9
+ priority: Ref<number>;
10
+ frames: Ref<number>;
11
+ maxFrames: number;
12
+ }
13
+ export interface RenderState {
14
+ /**
15
+ * If set to 'on-demand', the scene will only be rendered when the current frame is invalidated
16
+ * If set to 'manual', the scene will only be rendered when advance() is called
17
+ * If set to 'always', the scene will be rendered every frame
18
+ */
19
+ mode: Ref<'always' | 'on-demand' | 'manual'>;
20
+ priority: Ref<number>;
21
+ frames: Ref<number>;
22
+ maxFrames: number;
23
+ canBeInvalidated: ComputedRef<boolean>;
24
+ }
25
+ export interface PerformanceState {
26
+ maxFrames: number;
27
+ fps: {
28
+ value: number;
29
+ accumulator: number[];
30
+ };
31
+ memory: {
32
+ currentMem: number;
33
+ allocatedMem: number;
34
+ accumulator: number[];
11
35
  };
36
+ }
37
+ export interface TresContext {
38
+ scene: ShallowRef<TresScene>;
39
+ sizes: SizesType;
12
40
  extend: (objects: any) => void;
13
41
  camera: ComputedRef<Camera | undefined>;
14
42
  cameras: DeepReadonly<Ref<Camera[]>>;
@@ -17,28 +45,31 @@ export interface TresContext {
17
45
  }) | null>;
18
46
  renderer: ShallowRef<WebGLRenderer>;
19
47
  raycaster: ShallowRef<Raycaster>;
20
- perf: {
21
- maxFrames: number;
22
- fps: {
23
- value: number;
24
- accumulator: number[];
25
- };
26
- memory: {
27
- currentMem: number;
28
- allocatedMem: number;
29
- accumulator: number[];
30
- };
31
- };
48
+ perf: PerformanceState;
49
+ render: RenderState;
50
+ /**
51
+ * Invalidates the current frame when renderMode === 'on-demand'
52
+ */
53
+ invalidate: () => void;
54
+ /**
55
+ * Advance one frame when renderMode === 'manual'
56
+ */
57
+ advance: () => void;
32
58
  registerCamera: (camera: Camera) => void;
33
59
  setCameraActive: (cameraOrUuid: Camera | string) => void;
34
60
  deregisterCamera: (camera: Camera) => void;
61
+ registerObjectAtPointerEventHandler: (object: Object3D & EventProps) => void;
62
+ deregisterObjectAtPointerEventHandler: (object: Object3D) => void;
63
+ registerBlockingObjectAtPointerEventHandler: (object: Object3D) => void;
64
+ deregisterBlockingObjectAtPointerEventHandler: (object: Object3D) => void;
35
65
  }
36
- export declare function useTresContextProvider({ scene, canvas, windowSize, disableRender, rendererOptions, }: {
37
- scene: Scene;
66
+ export declare function useTresContextProvider({ scene, canvas, windowSize, disableRender, rendererOptions, emit, }: {
67
+ scene: TresScene;
38
68
  canvas: MaybeRef<HTMLCanvasElement>;
39
69
  windowSize: MaybeRefOrGetter<boolean>;
40
70
  disableRender: MaybeRefOrGetter<boolean>;
41
71
  rendererOptions: UseRendererOptions;
72
+ emit: (event: string, ...args: any[]) => void;
42
73
  }): TresContext;
43
74
  export declare function useTresContext(): TresContext;
44
75
  export declare const useTres: typeof useTresContext;
@@ -1,3 +1,4 @@
1
- import type { RendererOptions } from 'vue';
1
+ import { type RendererOptions } from 'vue';
2
2
  import type { TresObject } from '../types';
3
- export declare const nodeOps: RendererOptions<TresObject, TresObject>;
3
+ export declare function invalidateInstance(instance: TresObject): void;
4
+ export declare const nodeOps: () => RendererOptions<TresObject, TresObject | null>;
@@ -1,6 +1,6 @@
1
1
  import type { DefineComponent, VNode, VNodeRef } from 'vue';
2
2
  import type * as THREE from 'three';
3
- import type { EventProps as PointerEventHandlerEventProps } from '../composables/usePointerEventHandler';
3
+ import type { TresContext } from '../composables/useTresContextProvider';
4
4
  export type AttachFnType<O = any> = (parent: any, self: O) => () => void;
5
5
  export type AttachType<O = any> = string | AttachFnType<O>;
6
6
  export type ConstructorRepresentation = new (...args: any[]) => any;
@@ -30,25 +30,29 @@ interface TresBaseObject {
30
30
  dispose?: () => void;
31
31
  [prop: string]: any;
32
32
  }
33
- export interface TresObject3D extends THREE.Object3D {
34
- geometry?: THREE.BufferGeometry & TresBaseObject;
35
- material?: THREE.Material & TresBaseObject;
36
- userData: {
37
- tres__materialViaProp: boolean;
38
- tres__geometryViaProp: boolean;
33
+ export interface LocalState {
34
+ type: string;
35
+ objects: TresObject3D[];
36
+ parent: TresObject3D | null;
37
+ primitive?: boolean;
38
+ eventCount: number;
39
+ handlers: Partial<EventHandlers>;
40
+ memoizedProps: {
39
41
  [key: string]: any;
40
42
  };
43
+ disposable: boolean;
44
+ root: TresContext;
41
45
  }
42
- export type TresObject = TresBaseObject & (TresObject3D | THREE.BufferGeometry | THREE.Material | THREE.Fog);
46
+ export interface TresObject3D extends THREE.Object3D<THREE.Object3DEventMap> {
47
+ geometry?: THREE.BufferGeometry & TresBaseObject;
48
+ material?: THREE.Material & TresBaseObject;
49
+ }
50
+ export type TresObject = TresBaseObject & (TresObject3D | THREE.BufferGeometry | THREE.Material | THREE.Fog) & {
51
+ __tres: LocalState;
52
+ };
43
53
  export interface TresScene extends THREE.Scene {
44
- userData: {
45
- tres__registerCamera?: (newCamera: THREE.Camera, active?: boolean) => void;
46
- tres__deregisterCamera?: (camera: THREE.Camera) => void;
47
- tres__registerAtPointerEventHandler?: (object: THREE.Object3D & PointerEventHandlerEventProps) => void;
48
- tres__deregisterAtPointerEventHandler?: (object: THREE.Object3D) => void;
49
- tres__registerBlockingObjectAtPointerEventHandler?: (object: THREE.Object3D) => void;
50
- tres__deregisterBlockingObjectAtPointerEventHandler?: (object: THREE.Object3D) => void;
51
- [key: string]: any;
54
+ __tres: {
55
+ root: TresContext;
52
56
  };
53
57
  }
54
58
  export interface Intersection extends THREE.Intersection {