lythreeframe 2.0.0 → 2.0.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.
package/dist/index.d.ts CHANGED
@@ -21,8 +21,7 @@ export type { ViewportParam } from './src/Frame/Parameters/ViewportParameters';
21
21
  export { DefaultViewportParam } from './src/Frame/Parameters/ViewportParameters';
22
22
  export type { WorldParam } from "./src/Frame/Parameters/WorldParameter";
23
23
  export { DefaultWorldParam } from "./src/Frame/Parameters/WorldParameter";
24
- export type { RendererParameters } from './src/Frame/Parameters/RendererParameters';
25
- export { DefaultRendererParameters } from './src/Frame/Parameters/RendererParameters';
24
+ export { RendererType } from './src/Frame/Parameters/ViewportParameters';
26
25
  export { Actor } from "./src/Object/Actor";
27
26
  export { DirectionalLightActor } from "./src/Object/Actors/Light/DirectionalLightActor";
28
27
  export { AmbientLightActor } from './src/Object/Actors/Light/AmbientLightActor';
@@ -16,12 +16,12 @@ export declare class AssetManager {
16
16
  protected readonly gltfLoader: GLTFLoader;
17
17
  protected readonly loadingManager: LoadingManager;
18
18
  protected app: ThreeJsApp;
19
- constructor(app: ThreeJsApp);
19
+ private dracoPath;
20
+ constructor(app: ThreeJsApp, dracoPath: string);
20
21
  get LoadingManager(): LoadingManager;
21
22
  get KTX2Loader(): KTX2Loader | null;
22
23
  init(): Promise<void>;
23
- setupKTX2Loader(transcoderPath: string): Promise<void>;
24
- setupDracoLoader(dracoPath: string): void;
24
+ setupDracoLoader(): void;
25
25
  convertThreeObjectToLYObject(parentLYComponent: SceneComponent, threejsObject: Object3D): SceneComponent | null;
26
26
  collectResourcesAndReferences(object: Object3D): void;
27
27
  checkMeshResource(mesh: Mesh): void;
@@ -1,5 +1,5 @@
1
1
  import { ThreeJsApp } from "../ThreeJsApp";
2
- import { Euler, Intersection, OrthographicCamera, PerspectiveCamera, Quaternion, Raycaster, Vector2, Vector3 } from "three/webgpu";
2
+ import { Box3, Euler, Intersection, Object3D, OrthographicCamera, PerspectiveCamera, Quaternion, Raycaster, Vector2, Vector3 } from "three/webgpu";
3
3
  import { World } from "./World";
4
4
  import { Viewport } from "./Viewport";
5
5
  import { Pawn } from "../Object/PawnV2/Pawn";
@@ -74,17 +74,36 @@ export declare class Controller {
74
74
  protected _onActorHoverBeginDelegate: Delegate<[ActorHoverEvent]>;
75
75
  protected _onActorHoverEndDelegate: Delegate<[ActorHoverEvent]>;
76
76
  protected _onClickNothingDelegate: Delegate<[void]>;
77
+ protected _onPointerDownDelegate: Delegate<[PointerEvent]>;
78
+ protected _onPointerUpDelegate: Delegate<[PointerEvent]>;
79
+ protected _onPointerMoveDelegate: Delegate<[PointerEvent]>;
80
+ protected _onPointerCancelDelegate: Delegate<[PointerEvent]>;
81
+ protected _onWheelDelegate: Delegate<[WheelEvent]>;
82
+ protected _onKeyDownDelegate: Delegate<[KeyboardEvent]>;
83
+ protected _onKeyUpDelegate: Delegate<[KeyboardEvent]>;
84
+ protected _onContextMenuDelegate: Delegate<[MouseEvent]>;
85
+ protected _onPointerLockChangeDelegate: Delegate<[Event]>;
86
+ protected _onWindowBlurDelegate: Delegate<[Event]>;
87
+ protected _onRawClickDelegate: Delegate<[MouseEvent]>;
77
88
  protected pointerPosition: Vector2;
78
89
  protected pointerLeftDownPosition: Vector2;
79
90
  protected readonly _tempVec2: Vector2;
80
91
  protected readonly _raycastVec2: Vector2;
81
92
  protected readonly doubleClickDelay: number;
82
93
  protected leftClickTimer: number | null;
83
- protected onPointerMove: (event: MouseEvent) => void;
84
- protected onPointerEnter: (event: MouseEvent) => void;
85
- protected onPointerLeave: (event: MouseEvent) => void;
86
- protected onPointerUp: (event: MouseEvent) => void;
87
- protected onPointerDown: (event: MouseEvent) => void;
94
+ protected onPointerMove: (event: PointerEvent) => void;
95
+ protected onPointerEnter: (event: PointerEvent) => void;
96
+ protected onPointerLeave: (event: PointerEvent) => void;
97
+ protected onPointerUp: (event: PointerEvent) => void;
98
+ protected onPointerDown: (event: PointerEvent) => void;
99
+ protected onPointerCancel: (event: PointerEvent) => void;
100
+ protected onWheel: (event: WheelEvent) => void;
101
+ protected onKeyDown: (event: KeyboardEvent) => void;
102
+ protected onKeyUp: (event: KeyboardEvent) => void;
103
+ protected onContextMenu: (event: MouseEvent) => void;
104
+ protected onPointerLockChange: (event: Event) => void;
105
+ protected onWindowBlur: (event: Event) => void;
106
+ protected onClick: (event: MouseEvent) => void;
88
107
  get camera(): PerspectiveCamera | OrthographicCamera;
89
108
  get world(): World;
90
109
  get viewPort(): Viewport;
@@ -100,20 +119,40 @@ export declare class Controller {
100
119
  get onActorHoverBeginDelegate(): Delegate<[ActorHoverEvent]>;
101
120
  get onActorHoverEndDelegate(): Delegate<[ActorHoverEvent]>;
102
121
  get onClickNothingDelegate(): Delegate<[void]>;
122
+ get onPointerDownDelegate(): Delegate<[PointerEvent]>;
123
+ get onPointerUpDelegate(): Delegate<[PointerEvent]>;
124
+ get onPointerMoveDelegate(): Delegate<[PointerEvent]>;
125
+ get onPointerCancelDelegate(): Delegate<[PointerEvent]>;
126
+ get onWheelDelegate(): Delegate<[WheelEvent]>;
127
+ get onKeyDownDelegate(): Delegate<[KeyboardEvent]>;
128
+ get onKeyUpDelegate(): Delegate<[KeyboardEvent]>;
129
+ get onContextMenuDelegate(): Delegate<[MouseEvent]>;
130
+ get onPointerLockChangeDelegate(): Delegate<[Event]>;
131
+ get onWindowBlurDelegate(): Delegate<[Event]>;
132
+ get onRawClickDelegate(): Delegate<[MouseEvent]>;
103
133
  constructor(app: ThreeJsApp);
134
+ createInitialPawn(): void;
104
135
  init(): void;
105
136
  updateCamera(): void;
106
137
  switchPawn(pawn: Pawn, cameraMoveTime?: number): Promise<void>;
107
138
  tick(deltaTime: number): void;
108
139
  destroy(): void;
109
- protected onPointerMoveEvent(event: MouseEvent): void;
140
+ protected onPointerMoveEvent(event: PointerEvent): void;
110
141
  protected clearHovering(): void;
111
- protected onPointerUpEvent(event: MouseEvent): void;
142
+ protected onPointerUpEvent(event: PointerEvent): void;
112
143
  protected handleFirstClick(): void;
113
144
  protected handleDoubleClick(): void;
114
- protected onPointerDownEvent(event: MouseEvent): void;
115
- protected onPointerEnterEvent(_event: MouseEvent): void;
116
- protected onPointerLeaveEvent(_event: MouseEvent): void;
145
+ protected onPointerDownEvent(event: PointerEvent): void;
146
+ protected onPointerEnterEvent(_event: PointerEvent): void;
147
+ protected onPointerLeaveEvent(_event: PointerEvent): void;
148
+ protected onPointerCancelEvent(event: PointerEvent): void;
149
+ protected onWheelEvent(event: WheelEvent): void;
150
+ protected onKeyDownEvent(event: KeyboardEvent): void;
151
+ protected onKeyUpEvent(event: KeyboardEvent): void;
152
+ protected onContextMenuEvent(event: MouseEvent): void;
153
+ protected onPointerLockChangeEvent(event: Event): void;
154
+ protected onWindowBlurEvent(event: Event): void;
155
+ protected onClickEvent(event: MouseEvent): void;
117
156
  protected fireComponentHoverBegin(component: SceneComponent, hit: Intersection): void;
118
157
  protected fireComponentHoverEnd(component: SceneComponent): void;
119
158
  protected fireComponentClick(component: SceneComponent, hit: Intersection, isDoubleClick: boolean): void;
@@ -127,6 +166,9 @@ export declare class Controller {
127
166
  protected removeCorePointerListeners(): void;
128
167
  getHitResultUnderCursor(checkInteractable?: boolean): HitResult | null;
129
168
  getHitResultFromScreenPoint(x: number, y: number, checkInteractable?: boolean): HitResult | null;
169
+ getAllHitResultUnderCursor(_checkInteractable?: boolean): HitResult[] | null;
130
170
  protected getAllHitResultFromScreenPoint(x: number, y: number): HitResult[];
131
171
  focusTo(targetPos: Vector3, targetQuat: Quaternion | Euler, distance: number, time: number, onGoing?: (() => void) | null, onFinished?: (() => void) | null): void;
172
+ focusToBounds(bounds: Box3, time: number, computeOptimalQuat?: boolean, onGoing?: (() => void) | null, onFinished?: (() => void) | null): void;
173
+ focusToObject(targetObejct: Object3D, time: number, computeOptimalQuat?: boolean, onGoing?: (() => void) | null, onFinished?: (() => void) | null): void;
132
174
  }
@@ -6,7 +6,6 @@ import { Viewport } from "../Viewport";
6
6
  import { ViewportParam } from "./ViewportParameters";
7
7
  import { AssetManager } from "../../AssetManagement/AssetManager";
8
8
  import { PostProcessParam } from "../../PostProcess/PostProcessParam";
9
- import { RendererParameters } from "./RendererParameters";
10
9
  export interface AppClass {
11
10
  assetManagerClass: typeof AssetManager;
12
11
  controllerClass: typeof Controller;
@@ -14,7 +13,7 @@ export interface AppClass {
14
13
  viewportClass: typeof Viewport;
15
14
  }
16
15
  export interface AppParam {
17
- renderParam?: RendererParameters;
16
+ dracoPath: string;
18
17
  cameraParam?: CameraParam;
19
18
  postProcessParam?: PostProcessParam;
20
19
  worldParam?: WorldParam;
@@ -1,7 +1,19 @@
1
+ import { PostProcessParam } from 'lythreeframe/src/PostProcess/PostProcessParam';
2
+ import { WebGLRendererParameters } from 'three';
3
+ import { WebGPURendererParameters } from 'three/src/renderers/webgpu/WebGPURenderer.js';
4
+ export declare enum RendererType {
5
+ WebGPU = 0,
6
+ WebGL = 1
7
+ }
1
8
  export interface ViewportParam {
2
9
  elementId: string | null;
3
- isLabelRendererNeeded: boolean;
10
+ renderer: {
11
+ type: RendererType;
12
+ param?: WebGPURendererParameters | WebGLRendererParameters;
13
+ };
14
+ isLabelRendererNeeded?: boolean;
4
15
  isCSS3DRendererNeeded?: boolean;
5
- isUILayerNeeded: boolean;
16
+ isUILayerNeeded?: boolean;
17
+ postProcess?: PostProcessParam;
6
18
  }
7
19
  export declare const DefaultViewportParam: ViewportParam;
@@ -0,0 +1,41 @@
1
+ import { Camera, Data3DTexture, Object3D, Scene, WebGLRenderer } from "three";
2
+ import { EffectComposer } from "three/examples/jsm/postprocessing/EffectComposer.js";
3
+ import { PostProcessParam, PostProcessStepParam } from '../../PostProcess/PostProcessParam';
4
+ export declare class WebGLPostProcessManager {
5
+ private postProcessParam;
6
+ private composer;
7
+ private outlineObjects;
8
+ private renderPass;
9
+ private outlinePass;
10
+ private bloomPass;
11
+ private dofPass;
12
+ private gtaoPass;
13
+ private smaaPass;
14
+ private fxaaPass;
15
+ private lutPass;
16
+ private outputPass;
17
+ private lut3dTexture;
18
+ private renderer;
19
+ protected scene: Scene;
20
+ protected camera: Camera;
21
+ private onDirtyCallback;
22
+ constructor(renderer: WebGLRenderer, scene: Scene, camera: Camera, postProcessParam: PostProcessParam, onDirtyCallback?: () => void);
23
+ get processing(): EffectComposer | null;
24
+ updateCamera(camera: Camera): void;
25
+ setup(): void;
26
+ private buildPipeline;
27
+ private getStepParam;
28
+ private updateAllParameters;
29
+ private updateGTAOParameters;
30
+ private updateOutlineParameters;
31
+ updateSteps(steps: PostProcessStepParam[]): void;
32
+ addOutlineObject(obj: Object3D): void;
33
+ setOutlineObjects(objects: Object3D[]): void;
34
+ removeOutlineObject(obj: Object3D): void;
35
+ setLUT3DTexture(lutTexture: Data3DTexture | null): void;
36
+ getLUT3DTexture(): Data3DTexture | null;
37
+ render(): boolean;
38
+ resize(width: number, height: number): void;
39
+ destroy(): void;
40
+ private markDirty;
41
+ }
@@ -1,15 +1,17 @@
1
+ import { WebGPURendererParameters } from "three/src/renderers/webgpu/WebGPURenderer.js";
1
2
  import { Object3D, ShadowMapType, ToneMapping, WebGPURenderer } from "three/webgpu";
2
3
  import { ThreeJsApp } from "../ThreeJsApp";
3
4
  import { PostProcessParam, PostProcessStepParam } from './../PostProcess/PostProcessParam';
4
- import { RendererParameters } from './Parameters/RendererParameters';
5
- import { ViewportParam } from './Parameters/ViewportParameters';
5
+ import { RendererType, ViewportParam } from './Parameters/ViewportParameters';
6
6
  import { PostProcessManager } from "./Rendering/PostProcess";
7
+ import { WebGLRenderer, WebGLRendererParameters } from "three";
8
+ import { WebGLPostProcessManager } from "./Rendering/WebGLPostProcess";
7
9
  export declare class Viewport {
8
10
  get uiDom(): HTMLDivElement | null;
9
11
  protected _uiDom: HTMLDivElement | null;
10
12
  get canvas(): HTMLElement | null;
11
13
  get outer(): HTMLElement | null;
12
- get renderer(): WebGPURenderer;
14
+ get renderer(): WebGPURenderer | WebGLRenderer;
13
15
  get app(): ThreeJsApp;
14
16
  private _renderer;
15
17
  private labelRenderer;
@@ -19,19 +21,17 @@ export declare class Viewport {
19
21
  private _outerContainer;
20
22
  private _canvasContainer;
21
23
  private isRenderStateDirty;
22
- private postProcessParam;
23
- protected postProcessManager: PostProcessManager | null;
24
- constructor(app: ThreeJsApp, viewportParam: ViewportParam, rendererParam: RendererParameters, postProcessParam: PostProcessParam);
25
- protected createRenderer(rendererParam: RendererParameters): void;
24
+ protected postProcessManager: PostProcessManager | WebGLPostProcessManager | null;
25
+ constructor(app: ThreeJsApp, viewportParam: ViewportParam);
26
+ protected createRenderer(type: RendererType, rendererParam?: WebGPURendererParameters | WebGLRendererParameters): void;
26
27
  protected createLabelRenderer(): void;
27
28
  protected createCSS3DRenderer(): void;
28
29
  protected createUILayer(): void;
29
30
  init(): void;
30
- protected setupPostProcess(): void;
31
+ protected setupPostProcess(postProcessParam: PostProcessParam): void;
31
32
  /** Create the PostProcessManager instance. Override in subclass to use custom manager. */
32
- protected createPostProcessManager(): PostProcessManager;
33
+ protected createPostProcessManager(postProcessParam: PostProcessParam): PostProcessManager | WebGLPostProcessManager;
33
34
  updatePostProcess(steps: PostProcessStepParam[]): void;
34
- updateRendererSettings(data: RendererParameters): void;
35
35
  addOutlineObject(obj: Object3D): void;
36
36
  setOutlineObjects(objects: Object3D[]): void;
37
37
  removeOutlineObject(obj: Object3D): void;
@@ -42,12 +42,9 @@ export declare class Viewport {
42
42
  /** Called after post-processing render, before label renderer. Override in subclass to render additional content. */
43
43
  protected onAfterPostProcessRender(): void;
44
44
  renderAsImage(width?: number, height?: number): Promise<string>;
45
- setAlpha(alpha: boolean): void;
46
45
  setShadowMapEnabled(enabled: boolean): void;
47
46
  setShadowMapType(type: ShadowMapType): void;
48
47
  setToneMapping(toneMapping: ToneMapping): void;
49
48
  setToneMappingExposure(exposure: number): void;
50
- setDepth(depth: boolean): void;
51
- setStencil(stencil: boolean): void;
52
49
  destroy(): void;
53
50
  }
@@ -1,4 +1,4 @@
1
- import { Scene } from "three/webgpu";
1
+ import { ClippingGroup, Plane, Scene } from "three/webgpu";
2
2
  import { ThreeJsApp } from "../ThreeJsApp";
3
3
  import { Viewport } from "./Viewport";
4
4
  import { Controller } from "./Controller";
@@ -18,6 +18,7 @@ export declare class World {
18
18
  protected actors: Set<Actor>;
19
19
  protected tickableActors: Set<Actor>;
20
20
  protected worldParam: WorldParam;
21
+ protected _clippingGroup: ClippingGroup | null;
21
22
  constructor(app: ThreeJsApp, worldParam: WorldParam);
22
23
  init(): void;
23
24
  addTickableActor(actor: Actor): void;
@@ -29,4 +30,6 @@ export declare class World {
29
30
  removeActors(actors: Actor[]): void;
30
31
  getActorById(id: string): Actor | null;
31
32
  getActorsByIds(ids: string[]): Actor[];
33
+ addActorClipping(target: Actor, planes: Plane[]): void;
34
+ removeActorClipping(target: Actor, oldParent?: Actor | null): void;
32
35
  }
@@ -83,4 +83,5 @@ export declare class Actor extends BaseObject {
83
83
  onActorHoverEnd(component: SceneComponent): void;
84
84
  onActorClick(component: SceneComponent): void;
85
85
  onActorDoubleClick(component: SceneComponent): void;
86
+ landToGround(): void;
86
87
  }
@@ -2,11 +2,15 @@ import { CSS2DObject } from "three/examples/jsm/renderers/CSS2DRenderer.js";
2
2
  import { Vector2 } from "three/webgpu";
3
3
  import { SceneComponent } from "../SceneComponent";
4
4
  import { ThreeJsApp } from "../../../ThreeJsApp";
5
+ export interface LabelComponentOptions {
6
+ center?: Vector2;
7
+ enablePointerEvents?: boolean;
8
+ }
5
9
  export declare class LabelComponent extends SceneComponent {
6
10
  get threeObject(): CSS2DObject;
7
11
  set threeObject(newThreeObject: CSS2DObject);
8
12
  protected obj: CSS2DObject;
9
- constructor(app: ThreeJsApp, domElement: HTMLElement, center?: Vector2, uuid?: string);
13
+ constructor(app: ThreeJsApp, domElement: HTMLElement, options?: LabelComponentOptions, uuid?: string);
10
14
  set isHoverEnabled(_bCanHorver: boolean);
11
15
  set isClickEnabled(_bCanClick: boolean);
12
16
  setVisible(bVisible: boolean): void;
@@ -0,0 +1,15 @@
1
+ import { Sprite, SpriteMaterial } from 'three/webgpu';
2
+ import { ThreeJsApp } from '../../../ThreeJsApp';
3
+ import { SceneComponent } from "../SceneComponent";
4
+ export interface SpriteOptions {
5
+ material?: SpriteMaterial;
6
+ textureUrl?: string;
7
+ color?: number | string;
8
+ }
9
+ export declare class SpriteComponent extends SceneComponent {
10
+ get threeObject(): Sprite;
11
+ protected set threeObject(newThreeObject: Sprite);
12
+ protected obj: Sprite;
13
+ constructor(app: ThreeJsApp, options?: SpriteOptions);
14
+ protected createDefaultObject(): Sprite;
15
+ }
@@ -5,7 +5,12 @@ export declare class CurveComponent extends SceneComponent {
5
5
  private curve;
6
6
  protected createDefaultObject(): Line;
7
7
  constructor(app: ThreeJsApp, uuid?: string);
8
- setPoints(points: Vector3[], closed?: boolean, curveType?: 'centripetal' | 'chordal' | 'catmullrom', tension?: number): void;
8
+ setPoints(points: Vector3[], options?: {
9
+ closed?: boolean;
10
+ curveType?: 'centripetal' | 'chordal' | 'catmullrom';
11
+ tension?: number;
12
+ showLine?: boolean;
13
+ }): void;
9
14
  getPointAt(u: number): Vector3 | null;
10
15
  getTangentAt(u: number): Vector3 | null;
11
16
  getLength(): number;
@@ -1,6 +1,6 @@
1
1
  import { Pawn } from "./Pawn";
2
2
  import { ThreeJsApp } from "../../ThreeJsApp";
3
- import { Vector3, Quaternion } from "three/webgpu";
3
+ import { Vector3, Quaternion, Euler } from "three/webgpu";
4
4
  import { SceneComponent } from "../Components/SceneComponent";
5
5
  export declare class FirstPerson extends Pawn {
6
6
  moveSpeed: number;
@@ -23,6 +23,19 @@ export declare class FirstPerson extends Pawn {
23
23
  constructor(app: ThreeJsApp);
24
24
  protected constructRootComponent(): SceneComponent;
25
25
  landToGround(): void;
26
+ private syncRotation;
27
+ /**
28
+ * Override setRotation to intercept external rotation changes.
29
+ * Extracts Pitch to internal state and only applies Yaw to the physical pawn.
30
+ */
31
+ setRotation(rotation: Euler): void;
32
+ setRotation(x: number, y: number, z: number): void;
33
+ /**
34
+ * Override setQuaternion to intercept external rotation changes.
35
+ * Extracts Pitch to internal state and only applies Yaw to the physical pawn.
36
+ */
37
+ setQuaternion(quat: Quaternion): void;
38
+ setQuaternion(x: number, y: number, z: number, w: number): void;
26
39
  possess(): void;
27
40
  unpossess(): void;
28
41
  getTargetCameraState(): {
@@ -0,0 +1,56 @@
1
+ import { Pawn } from "./Pawn";
2
+ import { Euler, Quaternion, Vector3 } from "three/webgpu";
3
+ import { ThreeJsApp } from "../../ThreeJsApp";
4
+ export interface TopDownOptions {
5
+ enablePan?: boolean;
6
+ enableRotate?: boolean;
7
+ enableZoom?: boolean;
8
+ distance?: number;
9
+ minDistance?: number;
10
+ maxDistance?: number;
11
+ rotateSpeed?: number;
12
+ zoomSpeed?: number;
13
+ enableDamping?: boolean;
14
+ dampingFactor?: number;
15
+ }
16
+ export declare class TopDown extends Pawn {
17
+ enablePan: boolean;
18
+ enableRotate: boolean;
19
+ enableZoom: boolean;
20
+ distance: number;
21
+ minDistance: number;
22
+ maxDistance: number;
23
+ rotateSpeed: number;
24
+ zoomSpeed: number;
25
+ enableDamping: boolean;
26
+ dampingFactor: number;
27
+ private _isDragging;
28
+ private _lastPointerPosition;
29
+ private _targetPosition;
30
+ private _targetQuaternion;
31
+ private _targetDistance;
32
+ private _focusTween;
33
+ constructor(app: ThreeJsApp, options?: TopDownOptions);
34
+ possess(): void;
35
+ getTargetCameraState(): {
36
+ position: Vector3;
37
+ quaternion: Quaternion;
38
+ };
39
+ private updateCameraFromPawn;
40
+ unpossess(): void;
41
+ private onContextMenu;
42
+ private onPointerDown;
43
+ private onPointerMove;
44
+ private onPointerUp;
45
+ private setCameraDraggingState;
46
+ private onWheel;
47
+ tick(deltaTime: number): void;
48
+ setPosition(position: Vector3): void;
49
+ setPosition(x: number, y: number, z: number): void;
50
+ setRotation(rotation: Euler): void;
51
+ setRotation(x: number, y: number, z: number): void;
52
+ setQuaternion(quat: Quaternion): void;
53
+ setQuaternion(x: number, y: number, z: number, w: number): void;
54
+ focusTo(targetPos: Vector3, targetQuat: Quaternion | Euler, distance: number, time: number, onGoing?: (() => void) | null, onFinished?: (() => void) | null): void;
55
+ stopFocusing(): void;
56
+ }
@@ -1,6 +1,7 @@
1
1
  import { Box3, Matrix4, Mesh, MeshBasicMaterial, Object3D, Vector3 } from "three/webgpu";
2
2
  import { ThreeJsApp } from "../ThreeJsApp";
3
3
  import { ColliderComponent } from "./ColliderComponent";
4
+ import { RaycastHit } from "./PhysicsWorld";
4
5
  export declare class MeshColliderComponent extends ColliderComponent {
5
6
  get sourceObject(): Object3D<import("three").Object3DEventMap> | null;
6
7
  protected _sourceObject: Object3D | null;
@@ -28,11 +29,8 @@ export declare class MeshColliderComponent extends ColliderComponent {
28
29
  private mergeGeometries;
29
30
  destroy(): void;
30
31
  getWorldAABB(out?: Box3): Box3;
31
- raycast(origin: Vector3, dir: Vector3, maxDistance: number): {
32
- point: Vector3;
33
- normal: Vector3;
34
- distance: number;
35
- } | null;
32
+ raycastAll(origin: Vector3, dir: Vector3, maxDistance: number): RaycastHit[];
33
+ raycast(origin: Vector3, dir: Vector3, maxDistance: number): RaycastHit | null;
36
34
  protected intersectRayAabb(origin: Vector3, dir: Vector3, maxDistance: number, box: Box3): boolean;
37
35
  protected intersectRayTriangle(origin: Vector3, dir: Vector3, a: Vector3, b: Vector3, c: Vector3, maxDistance: number): {
38
36
  point: Vector3;
@@ -8,6 +8,11 @@ export interface LineTraceHitResult {
8
8
  distance: number;
9
9
  blocking: boolean;
10
10
  }
11
+ export interface RaycastHit {
12
+ point: Vector3;
13
+ normal: Vector3;
14
+ distance: number;
15
+ }
11
16
  export declare class PhysicsWorld {
12
17
  protected colliders: Set<ColliderComponent>;
13
18
  protected previousOverlapPairs: Map<string, [ColliderComponent, ColliderComponent]>;
@@ -1,33 +1,33 @@
1
1
  import { World } from "./Frame/World";
2
2
  import { Viewport } from "./Frame/Viewport";
3
3
  import { Controller } from "./Frame/Controller";
4
- import { Clock, OrthographicCamera, PerspectiveCamera } from "three/webgpu";
4
+ import { OrthographicCamera, PerspectiveCamera, Timer } from "three/webgpu";
5
5
  import { Delegate } from './Delegate';
6
6
  import { CameraParam } from './Frame/Parameters/CameraParameter';
7
7
  import { AppParam } from './Frame/Parameters/AppParameter';
8
8
  import { AssetManager } from './AssetManagement/AssetManager';
9
9
  export declare class ThreeJsApp {
10
10
  get camera(): PerspectiveCamera | OrthographicCamera;
11
- get clock(): Clock;
11
+ get clock(): Timer;
12
12
  get world(): World;
13
13
  get viewport(): Viewport;
14
14
  get controller(): Controller;
15
15
  get assetManager(): AssetManager;
16
- protected _clock: Clock;
16
+ protected _clock: Timer;
17
17
  protected _camera: PerspectiveCamera | OrthographicCamera;
18
18
  protected _world: World;
19
19
  protected _viewport: Viewport;
20
20
  protected _controller: Controller;
21
21
  protected _assetManager: AssetManager;
22
22
  protected _tickingFunctions: Array<(delta: number) => void>;
23
- get appParam(): AppParam;
24
- protected _appParam: AppParam;
23
+ protected _isTickPaused: boolean;
25
24
  get onCameraChangedDelegate(): Delegate<[void]>;
26
25
  protected _onCameraChangedDelegate: Delegate<[void]>;
27
26
  constructor(appParam?: AppParam);
28
27
  protected postConstruct(): void;
29
28
  init(): void;
30
29
  protected tick(deltaTime: number): void;
30
+ setTickPaused(pause: boolean): void;
31
31
  addTickingFunction(func: (deltaTime: number) => void): void;
32
32
  removeTickingFunction(func: (deltaTime: number) => void): void;
33
33
  destroy(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lythreeframe",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "description": "Three.js 封装",
5
5
  "main": "dist/bundle.cjs.js",
6
6
  "module": "dist/bundle.esm.js",