@tresjs/core 4.0.0-rc.0 → 4.0.0-rc.2

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.
@@ -1,7 +1,7 @@
1
- import { TresCamera } from '../types/';
2
- import { RendererPresetsType } from '../composables/useRenderer/const';
3
- import { TresContext } from '../composables';
4
1
  import { ColorSpace, ShadowMapType, ToneMapping, WebGLRendererParameters } from 'three';
2
+ import { TresContext } from '../composables';
3
+ import { RendererPresetsType } from '../composables/useRenderer/const';
4
+ import { TresCamera } from '../types/';
5
5
 
6
6
  export interface TresCanvasProps extends Omit<WebGLRendererParameters, 'canvas'> {
7
7
  shadows?: boolean;
@@ -36,6 +36,7 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<__
36
36
  }, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
37
37
  render: (...args: any[]) => void;
38
38
  click: (...args: any[]) => void;
39
+ wheel: (...args: any[]) => void;
39
40
  "double-click": (...args: any[]) => void;
40
41
  "context-menu": (...args: any[]) => void;
41
42
  "pointer-move": (...args: any[]) => void;
@@ -46,7 +47,6 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<__
46
47
  "pointer-over": (...args: any[]) => void;
47
48
  "pointer-out": (...args: any[]) => void;
48
49
  "pointer-missed": (...args: any[]) => void;
49
- wheel: (...args: any[]) => void;
50
50
  }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<TresCanvasProps>, {
51
51
  alpha: undefined;
52
52
  depth: undefined;
@@ -1,5 +1,5 @@
1
1
  export * from './useCamera/';
2
- export * from './useRenderLoop/';
2
+ export * from './useRenderLoop';
3
3
  export * from './useRenderer/';
4
4
  export * from './useLoader';
5
5
  export * from './useTexture';
@@ -8,4 +8,5 @@ export * from './useLogger';
8
8
  export * from './useSeek';
9
9
  export * from './usePointerEventHandler';
10
10
  export * from './useTresContextProvider';
11
+ export * from './useLoop';
11
12
  export * from './useTresEventManager';
@@ -1,6 +1,6 @@
1
- import { TresContext } from '../useTresContextProvider';
2
- import { TresScene } from '../../types';
3
1
  import { Camera } from 'three';
2
+ import { TresScene } from '../../types';
3
+ import { TresContext } from '../useTresContextProvider';
4
4
 
5
5
  export declare const useCamera: ({ sizes }: Pick<TresContext, 'sizes'> & {
6
6
  scene: TresScene;
@@ -1628,7 +1628,7 @@ export declare const useCamera: ({ sizes }: Pick<TresContext, 'sizes'> & {
1628
1628
  images: any;
1629
1629
  } | undefined) => any;
1630
1630
  clone: (recursive?: boolean | undefined) => import('three').Object3D<import('three').Object3DEventMap>;
1631
- copy: (source: import('three').Object3D<import('three').Object3DEventMap>, recursive?: boolean | undefined) => import('three').Object3D<import('three').Object3DEventMap>;
1631
+ copy: (object: import('three').Object3D<import('three').Object3DEventMap>, recursive?: boolean | undefined) => import('three').Object3D<import('three').Object3DEventMap>;
1632
1632
  addEventListener: {
1633
1633
  <T_7 extends keyof import('three').Object3DEventMap>(type: T_7, listener: import('three').EventListener<import('three').Object3DEventMap[T_7], T_7, import('three').Object3D<import('three').Object3DEventMap>>): void;
1634
1634
  <T_8 extends string>(type: T_8, listener: import('three').EventListener<{}, T_8, import('three').Object3D<import('three').Object3DEventMap>>): void;
@@ -3009,7 +3009,7 @@ export declare const useCamera: ({ sizes }: Pick<TresContext, 'sizes'> & {
3009
3009
  images: any;
3010
3010
  } | undefined) => any;
3011
3011
  clone: (recursive?: boolean | undefined) => import('three').Object3D<import('three').Object3DEventMap>;
3012
- copy: (source: import('three').Object3D<import('three').Object3DEventMap>, recursive?: boolean | undefined) => import('three').Object3D<import('three').Object3DEventMap>;
3012
+ copy: (object: import('three').Object3D<import('three').Object3DEventMap>, recursive?: boolean | undefined) => import('three').Object3D<import('three').Object3DEventMap>;
3013
3013
  addEventListener: {
3014
3014
  <T_7 extends keyof import('three').Object3DEventMap>(type: T_7, listener: import('three').EventListener<import('three').Object3DEventMap[T_7], T_7, import('three').Object3D<import('three').Object3DEventMap>>): void;
3015
3015
  <T_8 extends string>(type: T_8, listener: import('three').EventListener<{}, T_8, import('three').Object3D<import('three').Object3DEventMap>>): void;
@@ -4370,7 +4370,7 @@ export declare const useCamera: ({ sizes }: Pick<TresContext, 'sizes'> & {
4370
4370
  images: any;
4371
4371
  } | undefined) => any;
4372
4372
  clone: (recursive?: boolean | undefined) => Camera;
4373
- copy: (source: Camera, recursive?: boolean | undefined) => Camera;
4373
+ copy: (object: import('three').Object3D<import('three').Object3DEventMap>, recursive?: boolean | undefined) => Camera;
4374
4374
  addEventListener: {
4375
4375
  <T_14 extends keyof import('three').Object3DEventMap>(type: T_14, listener: import('three').EventListener<import('three').Object3DEventMap[T_14], T_14, Camera>): void;
4376
4376
  <T_15 extends string>(type: T_15, listener: import('three').EventListener<{}, T_15, Camera>): void;
@@ -0,0 +1,18 @@
1
+ import { LoopCallbackFn } from './../../core/loop';
2
+
3
+ export declare function useLoop(): {
4
+ pause: import('@vueuse/core').Fn;
5
+ resume: import('@vueuse/core').Fn;
6
+ pauseRender: import('@vueuse/core').Fn;
7
+ resumeRender: import('@vueuse/core').Fn;
8
+ isActive: import('vue').Ref<boolean>;
9
+ onBeforeRender: (cb: LoopCallbackFn, index?: number) => {
10
+ off: import('@vueuse/core').Fn;
11
+ };
12
+ render: (cb: LoopCallbackFn) => {
13
+ off: import('@vueuse/core').Fn;
14
+ };
15
+ onAfterRender: (cb: LoopCallbackFn, index?: number) => {
16
+ off: import('@vueuse/core').Fn;
17
+ };
18
+ };
@@ -1,6 +1,6 @@
1
- import { TresContext } from '../useTresContextProvider';
2
- import { TresObject } from 'src/types';
3
1
  import { Intersection, Object3D, Object3DEventMap } from 'three';
2
+ import { TresObject } from 'src/types';
3
+ import { TresContext } from '../useTresContextProvider';
4
4
 
5
5
  type CallbackFn = (intersection: Intersection<Object3D<Object3DEventMap>>, event: PointerEvent) => void;
6
6
  type CallbackFnPointerLeave = (object: Object3D, event: PointerEvent) => void;
@@ -1,7 +1,7 @@
1
- import { TresContext } from '../useTresContextProvider';
2
- import { TresEvent } from 'src/types';
3
- import { Ref, ShallowRef } from 'vue';
4
1
  import { Intersection, Object3D } from 'three';
2
+ import { Ref, ShallowRef } from 'vue';
3
+ import { TresEvent } from 'src/types';
4
+ import { TresContext } from '../useTresContextProvider';
5
5
 
6
6
  export declare const useRaycaster: (objects: Ref<Object3D[]>, ctx: TresContext) => {
7
7
  intersects: ShallowRef<Intersection<Object3D<import('three').Object3DEventMap>>[]>;
@@ -1,6 +1,6 @@
1
- import { Clock } from 'three';
2
- import { Ref } from 'vue';
3
1
  import { EventHookOn, Fn } from '@vueuse/core';
2
+ import { Ref } from 'vue';
3
+ import { Clock } from 'three';
4
4
 
5
5
  export interface RenderLoop {
6
6
  delta: number;
@@ -1,9 +1,9 @@
1
- import { RendererPresetsType } from './const';
2
- import { TresContext } from '../useTresContextProvider';
3
- import { EmitEventFn, TresColor } from '../../types';
4
- import { MaybeRefOrGetter } from '@vueuse/core';
5
- import { MaybeRef } from 'vue';
6
1
  import { WebGLRenderer, ColorSpace, Scene, ShadowMapType, ToneMapping, WebGLRendererParameters } from 'three';
2
+ import { MaybeRef } from 'vue';
3
+ import { MaybeRefOrGetter } from '@vueuse/core';
4
+ import { EmitEventFn, TresColor } from '../../types';
5
+ import { TresContext } from '../useTresContextProvider';
6
+ import { RendererPresetsType } from './const';
7
7
 
8
8
  type TransformToMaybeRefOrGetter<T> = {
9
9
  [K in keyof T]: MaybeRefOrGetter<T[K]> | MaybeRefOrGetter<T[K]>;
@@ -71,7 +71,7 @@ export interface UseRendererOptions extends TransformToMaybeRefOrGetter<WebGLRen
71
71
  preset?: MaybeRefOrGetter<RendererPresetsType>;
72
72
  renderMode?: MaybeRefOrGetter<'always' | 'on-demand' | 'manual'>;
73
73
  }
74
- export declare function useRenderer({ scene, canvas, options, disableRender, emit, contextParts: { sizes, camera, render, invalidate, advance }, }: {
74
+ export declare function useRenderer({ canvas, options, contextParts: { sizes, render, invalidate, advance }, }: {
75
75
  canvas: MaybeRef<HTMLCanvasElement>;
76
76
  scene: Scene;
77
77
  options: UseRendererOptions;
@@ -1,10 +1,11 @@
1
- import { SizesType } from '../useSizes';
2
- import { TresEventManager } from '../useTresEventManager';
3
- import { EventProps } from '../usePointerEventHandler';
4
- import { EmitEventFn, TresObject, TresScene } from '../../types';
5
- import { UseRendererOptions } from '../useRenderer';
6
- import { ComputedRef, DeepReadonly, MaybeRef, MaybeRefOrGetter, Ref, ShallowRef } from 'vue';
7
1
  import { Camera, EventDispatcher, WebGLRenderer, Raycaster } from 'three';
2
+ import { ComputedRef, DeepReadonly, MaybeRef, MaybeRefOrGetter, Ref, ShallowRef } from 'vue';
3
+ import { UseRendererOptions } from '../useRenderer';
4
+ import { EmitEventFn, TresObject, TresScene } from '../../types';
5
+ import { EventProps } from '../usePointerEventHandler';
6
+ import { TresEventManager } from '../useTresEventManager';
7
+ import { SizesType } from '../useSizes';
8
+ import { RendererLoop } from '../../core/loop';
8
9
 
9
10
  export interface InternalState {
10
11
  priority: Ref<number>;
@@ -48,6 +49,7 @@ export interface TresContext {
48
49
  raycaster: ShallowRef<Raycaster>;
49
50
  perf: PerformanceState;
50
51
  render: RenderState;
52
+ loop: RendererLoop;
51
53
  /**
52
54
  * Invalidates the current frame when renderMode === 'on-demand'
53
55
  */
@@ -1,6 +1,6 @@
1
- import { TresContext } from '../useTresContextProvider';
2
- import { EmitEventFn, TresObject } from 'src/types';
3
1
  import { Scene } from 'three';
2
+ import { EmitEventFn, TresObject } from 'src/types';
3
+ import { TresContext } from '../useTresContextProvider';
4
4
 
5
5
  export interface TresEventManager {
6
6
  /**
@@ -1,5 +1,5 @@
1
- import { TresCatalogue } from '../types';
2
1
  import { Ref } from 'vue';
2
+ import { TresCatalogue } from '../types';
3
3
 
4
4
  export declare const catalogue: Ref<TresCatalogue>;
5
5
  export declare const extend: (objects: any) => any;
@@ -0,0 +1,38 @@
1
+ import { Ref } from 'vue';
2
+ import { Camera, EventDispatcher, Raycaster, Scene, WebGLRenderer, Clock } from 'three';
3
+ import { Fn } from '@vueuse/core';
4
+
5
+ export type LoopStage = 'before' | 'render' | 'after';
6
+ export interface LoopCallback {
7
+ delta: number;
8
+ elapsed: number;
9
+ clock: Clock;
10
+ }
11
+ export interface LoopCallbackWithCtx extends LoopCallback {
12
+ camera: Camera;
13
+ scene: Scene;
14
+ renderer: WebGLRenderer;
15
+ raycaster: Raycaster;
16
+ controls: Ref<(EventDispatcher<object> & {
17
+ enabled: boolean;
18
+ }) | null>;
19
+ invalidate: Fn;
20
+ advance: Fn;
21
+ }
22
+ export type LoopCallbackFn = (params: LoopCallbackWithCtx) => void;
23
+ export interface RendererLoop {
24
+ loopId: string;
25
+ register: (callback: LoopCallbackFn, stage: LoopStage, index?: number) => {
26
+ off: Fn;
27
+ };
28
+ start: Fn;
29
+ stop: Fn;
30
+ pause: Fn;
31
+ resume: Fn;
32
+ pauseRender: Fn;
33
+ resumeRender: Fn;
34
+ isActive: Ref<boolean>;
35
+ isRenderPaused: Ref<boolean>;
36
+ setContext: (newContext: Record<string, any>) => void;
37
+ }
38
+ export declare function createRenderLoop(): RendererLoop;
@@ -1,5 +1,5 @@
1
- import { TresObject } from '../types';
2
1
  import { RendererOptions } from 'vue';
2
+ import { TresObject } from '../types';
3
3
 
4
4
  export declare function invalidateInstance(instance: TresObject): void;
5
5
  export declare const nodeOps: () => RendererOptions<TresObject, TresObject | null>;
@@ -1,5 +1,5 @@
1
- import { TresContext } from '../composables';
2
1
  import { App as DevtoolsApp } from '@vue/devtools-api';
2
+ import { TresContext } from '../composables';
3
3
 
4
4
  export interface Tags {
5
5
  label: string;
@@ -1,7 +1,5 @@
1
- import { vRotate } from './vRotate';
2
- import { vDistanceTo } from './vDistanceTo';
3
- import { vAlwaysLookAt } from './vAlwaysLookAt';
4
- import { vLightHelper } from './vLightHelper';
5
1
  import { vLog } from './vLog';
2
+ import { vLightHelper } from './vLightHelper';
3
+ import { vDistanceTo } from './vDistanceTo';
6
4
 
7
- export { vLog, vLightHelper, vAlwaysLookAt, vDistanceTo, vRotate };
5
+ export { vLog, vLightHelper, vDistanceTo };
@@ -1,5 +1,5 @@
1
- import { TresObject } from '../types';
2
1
  import { Ref } from 'vue';
2
+ import { TresObject } from '../types';
3
3
 
4
4
  export declare const vDistanceTo: {
5
5
  updated: (el: TresObject, binding: Ref<TresObject>) => void;
@@ -1,13 +1,14 @@
1
- import { disposeObject3D as dispose } from './utils';
2
- import { default as templateCompilerOptions } from './utils/template-compiler-options';
3
- import { normalizeColor, normalizeVectorFlexibleParam } from './utils/normalize';
4
1
  import { App } from 'vue';
2
+ import { normalizeColor, normalizeVectorFlexibleParam } from './utils/normalize';
3
+ import { default as templateCompilerOptions } from './utils/template-compiler-options';
4
+ import { disposeObject3D as dispose } from './utils';
5
5
 
6
6
  export * from './composables';
7
7
  export * from './core/catalogue';
8
8
  export * from './components';
9
9
  export * from './types';
10
10
  export * from './directives';
11
+ export * from './core/loop';
11
12
  export interface TresOptions {
12
13
  extends?: Record<string, unknown>;
13
14
  }
@@ -1,5 +1,5 @@
1
- import { TresContext } from '../composables/useTresContextProvider';
2
1
  import { DefineComponent, VNode, VNodeRef } from 'vue';
2
+ import { TresContext } from '../composables/useTresContextProvider';
3
3
 
4
4
  import type * as THREE from 'three';
5
5
  export type AttachFnType<O = any> = (parent: any, self: O) => () => void;
@@ -0,0 +1,18 @@
1
+ import { EventHookOff, IsAny } from '@vueuse/core';
2
+
3
+ export type Callback<T> = IsAny<T> extends true ? (param: any) => void : ([
4
+ T
5
+ ] extends [void] ? () => void : (param: T) => void);
6
+ export type PriorityEventHookOn<T> = (fn: Callback<T>, priority?: number) => {
7
+ off: () => void;
8
+ };
9
+ export type PriorityEventHookOff<T> = EventHookOff<T>;
10
+ export type PriorityEventHookTrigger<T = any> = (param?: T) => void;
11
+ export interface PriorityEventHook<T = any> {
12
+ on: PriorityEventHookOn<T>;
13
+ off: EventHookOff<T>;
14
+ trigger: PriorityEventHookTrigger<T>;
15
+ dispose: () => void;
16
+ count: number;
17
+ }
18
+ export declare function createPriorityEventHook<T>(): PriorityEventHook<T>;
@@ -1,5 +1,5 @@
1
- import { TresObject } from 'src/types';
2
1
  import { Material, Mesh, MeshBasicMaterial, Scene, Vector3 } from 'three';
2
+ import { TresObject } from 'src/types';
3
3
 
4
4
  export declare function toSetMethodName(key: string): string;
5
5
  export declare const merge: (target: any, source: any) => any;
@@ -1,5 +1,5 @@
1
- import { TresObject } from './../types';
2
1
  import { Scene } from 'three';
2
+ import { TresObject } from './../types';
3
3
 
4
4
  export declare function calculateMemoryUsage(object: TresObject | Scene): number;
5
5
  export declare function bytesToKB(bytes: number): string;