lythreeframe 1.3.3 → 1.3.4

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.
Files changed (69) hide show
  1. package/dist/bundle.cjs.js +58 -54
  2. package/dist/bundle.cjs.js.map +1 -1
  3. package/dist/bundle.esm.js +59 -56
  4. package/dist/bundle.esm.js.map +1 -1
  5. package/dist/index.d.ts +72 -70
  6. package/dist/src/AssetManagement/AssetDefines.d.ts +65 -0
  7. package/dist/src/AssetManagement/AssetManager.d.ts +35 -0
  8. package/dist/src/AssetManagement/AssetPointer/AssetPointer.d.ts +20 -0
  9. package/dist/src/AssetManagement/AssetPointer/Assets/GeometryAssetPointer.d.ts +5 -0
  10. package/dist/src/AssetManagement/AssetPointer/Assets/MaterialAssetPointer.d.ts +24 -0
  11. package/dist/src/AssetManagement/AssetPointer/Assets/TextureAssetPointer.d.ts +5 -0
  12. package/dist/src/Container/SmartPointer.d.ts +15 -0
  13. package/dist/src/Defines.d.ts +4 -0
  14. package/dist/src/Delegate.d.ts +8 -0
  15. package/dist/src/Factory/CameraFactory.d.ts +6 -0
  16. package/dist/src/Factory/RendererFactory.d.ts +2 -0
  17. package/dist/src/Frame/Controller.d.ts +130 -0
  18. package/dist/src/Frame/Parameters/AppParameter.d.ts +25 -0
  19. package/dist/src/Frame/Parameters/CameraParameter.d.ts +22 -0
  20. package/dist/src/Frame/Parameters/RendererParameters.d.ts +17 -0
  21. package/dist/src/Frame/Parameters/ViewportParameters.d.ts +6 -0
  22. package/dist/src/Frame/Parameters/WorldParameter.d.ts +5 -0
  23. package/dist/src/Frame/Rendering/PostProcess.d.ts +45 -0
  24. package/dist/src/Frame/Viewport.d.ts +52 -0
  25. package/dist/src/Frame/World.d.ts +29 -0
  26. package/dist/src/Geometry/PlaneGeometry.d.ts +3 -0
  27. package/dist/src/Geometry/TriangleGeometry.d.ts +3 -0
  28. package/dist/src/Library/ContainerLibrary.d.ts +3 -0
  29. package/dist/src/Library/Debounce.d.ts +1 -0
  30. package/dist/src/Library/Math.d.ts +27 -0
  31. package/dist/src/Library/ResourceLibrary.d.ts +7 -0
  32. package/dist/src/Object/Actor.d.ts +86 -0
  33. package/dist/src/Object/Actors/Level/LevelActor.d.ts +13 -0
  34. package/dist/src/Object/Actors/Light/AmbientLightActor.d.ts +9 -0
  35. package/dist/src/Object/Actors/Light/DirectionalLightActor.d.ts +9 -0
  36. package/dist/src/Object/Actors/Shape/BoxActor.d.ts +7 -0
  37. package/dist/src/Object/Actors/Shape/PlaneActor.d.ts +8 -0
  38. package/dist/src/Object/Actors/Sky/SkyActor.d.ts +9 -0
  39. package/dist/src/Object/BaseObject.d.ts +14 -0
  40. package/dist/src/Object/Components/2D/2DComponent.d.ts +14 -0
  41. package/dist/src/Object/Components/Component.d.ts +18 -0
  42. package/dist/src/Object/Components/Level/LevelComponent.d.ts +9 -0
  43. package/dist/src/Object/Components/Light/AmbientLight/AmbientLightComponent.d.ts +16 -0
  44. package/dist/src/Object/Components/Light/DirectionalLight/DirectionalLightComponent.d.ts +16 -0
  45. package/dist/src/Object/Components/Light/LightComponent.d.ts +12 -0
  46. package/dist/src/Object/Components/Mesh/CustomMeshComponent.d.ts +63 -0
  47. package/dist/src/Object/Components/Mesh/MeshComponent.d.ts +28 -0
  48. package/dist/src/Object/Components/Mesh/Shape/BoxComponent.d.ts +6 -0
  49. package/dist/src/Object/Components/Mesh/Shape/PlaneComponent.d.ts +6 -0
  50. package/dist/src/Object/Components/Mesh/Shape/SphereComponent.d.ts +6 -0
  51. package/dist/src/Object/Components/Mesh/Sprite/SpriteComponent.d.ts +9 -0
  52. package/dist/src/Object/Components/SceneComponent.d.ts +79 -0
  53. package/dist/src/Object/Components/Sky/SkyComponent.d.ts +22 -0
  54. package/dist/src/Object/PawnV2/FirstPerson.d.ts +11 -0
  55. package/dist/src/Object/PawnV2/Oribital.d.ts +22 -0
  56. package/dist/src/Object/PawnV2/Pawn.d.ts +22 -0
  57. package/dist/src/Object/PawnV2/TransformControl.d.ts +62 -0
  58. package/dist/src/PostProcess/Param/AAParam.d.ts +6 -0
  59. package/dist/src/PostProcess/Param/Bloom.d.ts +8 -0
  60. package/dist/src/PostProcess/Param/DOF.d.ts +8 -0
  61. package/dist/src/PostProcess/Param/GTAO.d.ts +12 -0
  62. package/dist/src/PostProcess/Param/LensFlare.d.ts +11 -0
  63. package/dist/src/PostProcess/Param/MotionBlur.d.ts +4 -0
  64. package/dist/src/PostProcess/Param/Outline.d.ts +12 -0
  65. package/dist/src/PostProcess/Param/SSR.d.ts +8 -0
  66. package/dist/src/PostProcess/PostProcessParam.d.ts +16 -0
  67. package/dist/src/Shader/Postprocess/ColorShader.d.ts +29 -0
  68. package/dist/src/ThreeJsApp.d.ts +37 -0
  69. package/package.json +1 -1
@@ -0,0 +1,52 @@
1
+ import { Object3D, ShadowMapType, ToneMapping, WebGPURenderer } from "three/webgpu";
2
+ import { ThreeJsApp } from "../ThreeJsApp";
3
+ import { PostProcessParam, PostProcessStepParam } from './../PostProcess/PostProcessParam';
4
+ import { RendererParameters } from './Parameters/RendererParameters';
5
+ import { ViewportParam } from './Parameters/ViewportParameters';
6
+ import { PostProcessManager } from "./Rendering/PostProcess";
7
+ export declare class Viewport {
8
+ get uiDom(): HTMLDivElement | null;
9
+ protected _uiDom: HTMLDivElement | null;
10
+ get canvas(): HTMLElement | null;
11
+ get outer(): HTMLElement | null;
12
+ get renderer(): WebGPURenderer;
13
+ get app(): ThreeJsApp;
14
+ private _renderer;
15
+ private labelRenderer;
16
+ protected _app: ThreeJsApp | null;
17
+ private resizeObserver;
18
+ private _outerContainer;
19
+ private _canvasContainer;
20
+ private isRenderStateDirty;
21
+ private postProcessParam;
22
+ protected postProcessManager: PostProcessManager | null;
23
+ constructor(app: ThreeJsApp, viewportParam: ViewportParam, rendererParam: RendererParameters, postProcessParam: PostProcessParam);
24
+ protected createRenderer(rendererParam: RendererParameters): void;
25
+ protected createLabelRenderer(): void;
26
+ protected createUILayer(): void;
27
+ init(): void;
28
+ protected setupPostProcess(): void;
29
+ /** Create the PostProcessManager instance. Override in subclass to use custom manager. */
30
+ protected createPostProcessManager(): PostProcessManager;
31
+ updatePostProcess(steps: PostProcessStepParam[]): void;
32
+ updateRendererSettings(data: RendererParameters): void;
33
+ addOutlineObject(obj: Object3D): void;
34
+ setOutlineObjects(objects: Object3D[]): void;
35
+ removeOutlineObject(obj: Object3D): void;
36
+ destroyPostProcess(): void;
37
+ onWindowResize(): void;
38
+ markRenderStateDirty(): void;
39
+ render(): void;
40
+ /** Called after post-processing render, before label renderer. Override in subclass to render additional content. */
41
+ protected onAfterPostProcessRender(): void;
42
+ renderAsImage(width?: number, height?: number): Promise<string>;
43
+ setAlpha(alpha: boolean): void;
44
+ setShadowMapEnabled(enabled: boolean): void;
45
+ setShadowMapType(type: ShadowMapType): void;
46
+ setToneMapping(toneMapping: ToneMapping): void;
47
+ setToneMappingExposure(exposure: number): void;
48
+ setLogarithmicDepthBufferEnabled(enabled: boolean): void;
49
+ setDepth(depth: boolean): void;
50
+ setStencil(stencil: boolean): void;
51
+ destroy(): void;
52
+ }
@@ -0,0 +1,29 @@
1
+ import { Scene } from "three/webgpu";
2
+ import { ThreeJsApp } from "../ThreeJsApp";
3
+ import { Viewport } from "./Viewport";
4
+ import { Controller } from "./Controller";
5
+ import { Actor } from "../Object/Actor";
6
+ import { LevelActor } from "../Object/Actors/Level/LevelActor";
7
+ import { WorldParam } from "./Parameters/WorldParameter";
8
+ export declare class World {
9
+ get scene(): Scene;
10
+ get viewport(): Viewport;
11
+ get controller(): Controller;
12
+ get rootActor(): LevelActor;
13
+ protected _rootActor: LevelActor | null;
14
+ protected app: ThreeJsApp;
15
+ protected actors: Set<Actor>;
16
+ protected tickableActors: Set<Actor>;
17
+ protected worldParam: WorldParam;
18
+ constructor(app: ThreeJsApp, worldParam: WorldParam);
19
+ init(): void;
20
+ addTickableActor(actor: Actor): void;
21
+ removeTickableActor(actor: Actor): void;
22
+ tick(deltaTime: number): void;
23
+ destroy(): void;
24
+ addActor(actor: Actor): void;
25
+ removeActor(actor: Actor): void;
26
+ removeActors(actors: Actor[]): void;
27
+ getActorById(id: string): Actor | null;
28
+ getActorsByIds(ids: string[]): Actor[];
29
+ }
@@ -0,0 +1,3 @@
1
+ import { BufferGeometry } from "three/webgpu";
2
+ declare function createPlaneGeometryFaceUp(): BufferGeometry;
3
+ export { createPlaneGeometryFaceUp };
@@ -0,0 +1,3 @@
1
+ import { BufferGeometry } from "three/webgpu";
2
+ declare function createArrowHeadGeometry(): BufferGeometry;
3
+ export { createArrowHeadGeometry };
@@ -0,0 +1,3 @@
1
+ export declare class LYContainerLibrary {
2
+ static AreUnorderedArrayEqual(arr1: any[], arr2: any[]): boolean;
3
+ }
@@ -0,0 +1 @@
1
+ export declare function debounce<T extends (...args: any[]) => any>(func: T, delay: number): (...args: Parameters<T>) => void;
@@ -0,0 +1,27 @@
1
+ import { Vector3, Quaternion, Object3D, Box3, Plane, Euler } from "three/webgpu";
2
+ export interface Segment {
3
+ pointA: Vector3;
4
+ pointB: Vector3;
5
+ }
6
+ export declare class LYMath {
7
+ static degreeToRadians(degree: number): number;
8
+ static radiansToDegree(radians: number): number;
9
+ static threeJsEulerAngleAsDegree(euler: Euler): {
10
+ x: number;
11
+ y: number;
12
+ z: number;
13
+ };
14
+ static getQuatFromAxis(forwardVector: Vector3, upVector?: Vector3): Quaternion;
15
+ static MaxVector(v1: Vector3, v2: Vector3): Vector3;
16
+ static clamp(value: number, min: number, max: number): number;
17
+ static getPlaneConstantFromPointAndNormal(point: Vector3, normal: Vector3): number;
18
+ static getSizeAndCenterOfObject3D(object: Object3D): {
19
+ boundingBox: Box3;
20
+ size: Vector3;
21
+ center: Vector3;
22
+ };
23
+ static SegmentsIntersection(segmentA: Segment, segmentB: Segment): Vector3 | null;
24
+ static getCenterPointInPoints(points: Vector3[]): Vector3;
25
+ static contructPlane(dirction: Vector3, position: Vector3, quaternion: Quaternion, scale: Vector3): Plane;
26
+ static intersectRayPlane(rayOrigin: Vector3, rayDirection: Vector3, planeNormal: Vector3, planePoint: Vector3): Vector3 | null;
27
+ }
@@ -0,0 +1,7 @@
1
+ import { Mesh, Object3D } from "three/webgpu";
2
+ export declare class ThreeObjectLibrary {
3
+ static disposeMaterialTextures(material: any): void;
4
+ static disposeMeshMaterial(mesh: Mesh): void;
5
+ static disposeMeshResource(mesh: Mesh, recursive?: boolean): void;
6
+ static disposeObject3DResource(object: Object3D): void;
7
+ }
@@ -0,0 +1,86 @@
1
+ import { Euler, Matrix4, Quaternion, Vector3 } from "three/webgpu";
2
+ import { AttachmentRules } from "../Defines";
3
+ import { BaseObject } from "./BaseObject";
4
+ import { World } from "../Frame/World";
5
+ import { ThreeJsApp } from "../ThreeJsApp";
6
+ import { SceneComponent } from "./Components/SceneComponent";
7
+ import { Delegate } from "../Delegate";
8
+ export declare class Actor extends BaseObject {
9
+ get world(): World | null;
10
+ get name(): string;
11
+ set name(name: string);
12
+ get rootComponent(): SceneComponent;
13
+ set rootComponent(newRoot: SceneComponent);
14
+ get childrenComponents(): any[];
15
+ get childActors(): Actor[];
16
+ get parentActor(): Actor | null;
17
+ get isVisible(): boolean;
18
+ get isTickEnabled(): boolean;
19
+ set isTickEnabled(bCanTick: boolean);
20
+ protected _name: string;
21
+ protected _rootComponent: SceneComponent | null;
22
+ protected _world: World | null;
23
+ protected app: ThreeJsApp;
24
+ protected _onHoverBeginDelegate: Delegate<[SceneComponent]>;
25
+ protected _onHoverEndDelegate: Delegate<[SceneComponent]>;
26
+ protected _onClickDelegate: Delegate<[SceneComponent]>;
27
+ protected _onDoubleClickDelegate: Delegate<[SceneComponent]>;
28
+ get onHoverBeginDelegate(): Delegate<[SceneComponent]>;
29
+ get onHoverEndDelegate(): Delegate<[SceneComponent]>;
30
+ get onClickDelegate(): Delegate<[SceneComponent]>;
31
+ get onDoubleClickDelegate(): Delegate<[SceneComponent]>;
32
+ constructor(app: ThreeJsApp, uuid?: string);
33
+ protected constructRootComponent(): SceneComponent;
34
+ getBoundsCenterPosition(bInWorldSpace?: boolean): Vector3;
35
+ getChildActorById(id: string, bRecursive?: boolean): Actor | null;
36
+ getChildActorsByIds(ids: string[], bRecursive?: boolean): Actor[];
37
+ getComponentById(id: string): SceneComponent | null;
38
+ getBoundsTopCenterPosition(bInWorldSpace?: boolean): Vector3;
39
+ getBoundsBottomCenterPosition(bInWorldSpace?: boolean): Vector3;
40
+ getBounds(): import("three").Box3;
41
+ destroy(): void;
42
+ setVisible(bVisible: boolean): void;
43
+ setLayers(layer: number, bAffectChildActor?: boolean): void;
44
+ tick(deltaTime: number): void;
45
+ getPosition(): Vector3;
46
+ setPosition(position: Vector3): void;
47
+ setPosition(x: number, y: number, z: number): void;
48
+ getRotation(): Euler;
49
+ setRotation(rotation: Euler): void;
50
+ setRotation(x: number, y: number, z: number): void;
51
+ getQuaternion(): Quaternion;
52
+ setQuaternion(quat: Quaternion): void;
53
+ setQuaternion(x: number, y: number, z: number, w: number): void;
54
+ getScale(): Vector3;
55
+ setScale(position: Vector3): void;
56
+ setScale(x: number, y: number, z: number): void;
57
+ getWorldMatrix(): Matrix4;
58
+ setWorldMatrix(newMatrix: Matrix4): void;
59
+ getWorldPosition(): Vector3;
60
+ getWorldRotation(): Euler;
61
+ getWorldQuaternion(): Quaternion;
62
+ getWorldScale(): Vector3;
63
+ getWorldForwardDirection(): Vector3;
64
+ getWorldUpDirection(): Vector3;
65
+ getWorldRightDirection(): Vector3;
66
+ addLocalOffset(axis: Vector3, value: number): void;
67
+ worldToLocal(vec: Vector3): Vector3;
68
+ localToWorld(vec: Vector3): Vector3;
69
+ getComponents(): any[];
70
+ addComponent(newComponent: SceneComponent, attachmentRule?: AttachmentRules): void;
71
+ removeComponent(targetComponent: SceneComponent): void;
72
+ clearComponent(): void;
73
+ addChildActor(newActor: Actor, attachmentRule?: AttachmentRules): void;
74
+ removeChildActor(target: Actor): void;
75
+ removeFromParent(): void;
76
+ onAddedToWorld(world: World): void;
77
+ onRemovedFromWorld(): void;
78
+ get isHoverEnabled(): boolean;
79
+ set isHoverEnabled(bCanHorver: boolean);
80
+ get isClickEnabled(): boolean;
81
+ set isClickEnabled(bCanHorver: boolean);
82
+ onActorHoverBegin(component: SceneComponent): void;
83
+ onActorHoverEnd(component: SceneComponent): void;
84
+ onActorClick(component: SceneComponent): void;
85
+ onActorDoubleClick(component: SceneComponent): void;
86
+ }
@@ -0,0 +1,13 @@
1
+ import { Scene } from "three/webgpu";
2
+ import { ThreeJsApp } from "../../../ThreeJsApp";
3
+ import { Actor } from "../../Actor";
4
+ import { LevelComponent } from "../../Components/Level/LevelComponent";
5
+ export declare class LevelActor extends Actor {
6
+ get scene(): Scene;
7
+ protected _scene: Scene | null;
8
+ constructor(app: ThreeJsApp, uuid?: string);
9
+ protected constructRootComponent(): LevelComponent;
10
+ tick(_deltaTime: number): void;
11
+ destroy(): void;
12
+ clearLevel(): void;
13
+ }
@@ -0,0 +1,9 @@
1
+ import { ColorRepresentation } from "three/webgpu";
2
+ import { Actor } from "../../Actor";
3
+ import { ThreeJsApp } from "../../../ThreeJsApp";
4
+ import { AmbientLightComponent } from "../../Components/Light/AmbientLight/AmbientLightComponent";
5
+ export declare class AmbientLightActor extends Actor {
6
+ protected lightComponent: AmbientLightComponent | null;
7
+ constructor(app: ThreeJsApp, color?: ColorRepresentation, intensity?: number, uuid?: string);
8
+ protected constructRootComponent(): AmbientLightComponent;
9
+ }
@@ -0,0 +1,9 @@
1
+ import { ColorRepresentation } from "three/webgpu";
2
+ import { Actor } from "../../Actor";
3
+ import { DirectionalLightComponent } from "../../Components/Light/DirectionalLight/DirectionalLightComponent";
4
+ import { ThreeJsApp } from "../../../ThreeJsApp";
5
+ export declare class DirectionalLightActor extends Actor {
6
+ protected lightComponent: DirectionalLightComponent | null;
7
+ constructor(app: ThreeJsApp, color?: ColorRepresentation, intensity?: number, uuid?: string);
8
+ protected constructRootComponent(): DirectionalLightComponent;
9
+ }
@@ -0,0 +1,7 @@
1
+ import { Actor } from "../../Actor";
2
+ import { BoxComponent } from "../../Components/Mesh/Shape/BoxComponent";
3
+ import { ThreeJsApp } from "../../../ThreeJsApp";
4
+ export declare class BoxActor extends Actor {
5
+ constructor(app: ThreeJsApp, uuid?: string);
6
+ protected constructRootComponent(): BoxComponent;
7
+ }
@@ -0,0 +1,8 @@
1
+ import { Actor } from "../../Actor";
2
+ import { PlaneComponent } from "../../Components/Mesh/Shape/PlaneComponent";
3
+ import { ThreeJsApp } from "../../../ThreeJsApp";
4
+ export declare class PlaneActor extends Actor {
5
+ constructor(app: ThreeJsApp, uuid?: string);
6
+ protected constructRootComponent(): PlaneComponent;
7
+ destroy(): void;
8
+ }
@@ -0,0 +1,9 @@
1
+ import { ThreeJsApp } from "../../../ThreeJsApp";
2
+ import { Actor } from "../../Actor";
3
+ import { SkyComponent } from "../../Components/Sky/SkyComponent";
4
+ export declare class SkyActor extends Actor {
5
+ protected _name: string;
6
+ protected skyComponent: SkyComponent | null;
7
+ constructor(app: ThreeJsApp, uuid?: string);
8
+ protected constructRootComponent(): SkyComponent;
9
+ }
@@ -0,0 +1,14 @@
1
+ export declare abstract class BaseObject {
2
+ get isTickEnabled(): boolean;
3
+ set isTickEnabled(bCanTick: boolean);
4
+ get uuid(): string;
5
+ protected bCanTick: boolean;
6
+ protected tickEvents: ((deltaTime: number) => void)[];
7
+ protected _uuid: string;
8
+ protected constructor(uuid?: string);
9
+ tick(deltaTime: number): void;
10
+ addTickEvent(event: (deltaTime: number) => void): void;
11
+ removeTickEvent(event: (deltaTime: number) => void): void;
12
+ clearTickEvents(): void;
13
+ destroy(): void;
14
+ }
@@ -0,0 +1,14 @@
1
+ import { CSS2DObject } from "three/examples/jsm/renderers/CSS2DRenderer.js";
2
+ import { Vector2 } from "three/webgpu";
3
+ import { SceneComponent } from "../SceneComponent";
4
+ import { ThreeJsApp } from "../../../ThreeJsApp";
5
+ export declare class LabelComponent extends SceneComponent {
6
+ get threeObject(): CSS2DObject;
7
+ set threeObject(newThreeObject: CSS2DObject);
8
+ protected obj: CSS2DObject;
9
+ constructor(app: ThreeJsApp, domElement: HTMLElement, center?: Vector2, uuid?: string);
10
+ set isHoverEnabled(_bCanHorver: boolean);
11
+ set isClickEnabled(_bCanClick: boolean);
12
+ setVisible(bVisible: boolean): void;
13
+ destroy(): void;
14
+ }
@@ -0,0 +1,18 @@
1
+ import { Object3D } from "three/webgpu";
2
+ import { BaseObject } from "../BaseObject";
3
+ import { Actor } from "../Actor";
4
+ export declare abstract class Component extends BaseObject {
5
+ set parentActor(value: Actor | null);
6
+ get parentActor(): Actor | null;
7
+ get threeObject(): Object3D | null;
8
+ set threeObject(newThreeObject: Object3D);
9
+ get name(): string;
10
+ set name(name: string);
11
+ protected obj: Object3D | null;
12
+ protected _parentActor: Actor | null;
13
+ protected _name: string;
14
+ protected constructor(uuid?: string);
15
+ protected createDefaultObject(_arg?: any): Object3D | null;
16
+ destroyObject(): void;
17
+ destroy(): void;
18
+ }
@@ -0,0 +1,9 @@
1
+ import { Scene } from "three";
2
+ import { SceneComponent } from "../SceneComponent";
3
+ import { ThreeJsApp } from "../../../ThreeJsApp";
4
+ export declare class LevelComponent extends SceneComponent {
5
+ get threeObject(): Scene;
6
+ protected set threeObject(newThreeObject: Scene);
7
+ constructor(app: ThreeJsApp, uuid?: string);
8
+ protected createDefaultObject(): Scene;
9
+ }
@@ -0,0 +1,16 @@
1
+ import { LightComponent } from "../LightComponent";
2
+ import { ColorRepresentation, AmbientLight, Vector3 } from "three/webgpu";
3
+ import { World } from "../../../../Frame/World";
4
+ import { ThreeJsApp } from "../../../../ThreeJsApp";
5
+ export declare class AmbientLightComponent extends LightComponent {
6
+ get threeObject(): AmbientLight;
7
+ set threeObject(newThreeObject: AmbientLight);
8
+ get castShadow(): boolean;
9
+ set castShadow(value: boolean);
10
+ constructor(app: ThreeJsApp, color?: ColorRepresentation, intensity?: number, uuid?: string);
11
+ protected createDefaultObject(): AmbientLight;
12
+ setPosition(...args: [Vector3] | [number, number, number]): void;
13
+ update(): void;
14
+ onAddedToWorld(world: World): void;
15
+ destroy(): void;
16
+ }
@@ -0,0 +1,16 @@
1
+ import { LightComponent } from "../LightComponent";
2
+ import { ColorRepresentation, DirectionalLight, Vector3 } from "three/webgpu";
3
+ import { World } from "../../../../Frame/World";
4
+ import { ThreeJsApp } from "../../../../ThreeJsApp";
5
+ export declare class DirectionalLightComponent extends LightComponent {
6
+ get threeObject(): DirectionalLight;
7
+ set threeObject(newThreeObject: DirectionalLight);
8
+ get castShadow(): boolean;
9
+ set castShadow(value: boolean);
10
+ constructor(app: ThreeJsApp, color?: ColorRepresentation, intensity?: number, uuid?: string);
11
+ protected createDefaultObject(): DirectionalLight;
12
+ setPosition(...args: [Vector3] | [number, number, number]): void;
13
+ update(): void;
14
+ onAddedToWorld(world: World): void;
15
+ destroy(): void;
16
+ }
@@ -0,0 +1,12 @@
1
+ import { ColorRepresentation, Light } from "three/webgpu";
2
+ import { SceneComponent } from "../SceneComponent";
3
+ import { ThreeJsApp } from "../../../ThreeJsApp";
4
+ export declare abstract class LightComponent extends SceneComponent {
5
+ get threeObject(): Light;
6
+ set threeObject(newThreeObject: Light);
7
+ get color(): number;
8
+ set color(color: ColorRepresentation);
9
+ get intensity(): number;
10
+ set intensity(intensity: number);
11
+ protected constructor(app: ThreeJsApp, uuid?: string);
12
+ }
@@ -0,0 +1,63 @@
1
+ import { BufferGeometry, Color, Material, Mesh, Vector2, Vector3 } from "three/webgpu";
2
+ import { SceneComponent } from "../SceneComponent";
3
+ import { TAssetPointer } from "../../../AssetManagement/AssetPointer/AssetPointer";
4
+ import { ThreeJsApp } from "../../../ThreeJsApp";
5
+ /**
6
+ * 自定义模型数据接口
7
+ * 用户需要填写顶点、索引等必备数据来生成自定义模型
8
+ */
9
+ export interface CustomMeshData {
10
+ /** 顶点位置数组 */
11
+ vertices: Vector3[];
12
+ /** 索引数组(可选,如果不提供或为空则使用耳切法自动三角化) */
13
+ indices?: number[];
14
+ /** 法线数组(可选,如果不提供则自动计算) */
15
+ normals?: Vector3[];
16
+ /** UV坐标数组(可选) */
17
+ uvs?: Vector2[];
18
+ /** 颜色数组(可选) */
19
+ colors?: Color[];
20
+ }
21
+ /**
22
+ * 自定义模型组件
23
+ * 根据用户填写的顶点、索引等数据生成自定义3D模型
24
+ */
25
+ export declare class CustomMeshComponent extends SceneComponent {
26
+ get threeObject(): Mesh;
27
+ protected set threeObject(newThreeObject: Mesh);
28
+ get geometry(): BufferGeometry | null;
29
+ set geometry(geo: BufferGeometry);
30
+ get geometryPtr(): TAssetPointer<BufferGeometry>;
31
+ set geometryPtr(geo: TAssetPointer<BufferGeometry>);
32
+ get material(): Material;
33
+ get materialPtr(): TAssetPointer<Material>;
34
+ set material(newMat: Material);
35
+ set materialPtr(newMat: TAssetPointer<Material>);
36
+ protected _geometryPtr: TAssetPointer<BufferGeometry> | null;
37
+ protected _materialPtr: TAssetPointer<Material> | null;
38
+ protected _meshData: CustomMeshData;
39
+ constructor(app: ThreeJsApp, meshData: CustomMeshData, material: Material, uuid?: string);
40
+ /**
41
+ * 计算2D多边形的有向面积(用于判断顶点顺序)
42
+ * 正值表示逆时针,负值表示顺时针
43
+ */
44
+ private calculatePolygonArea;
45
+ /**
46
+ * 根据用户数据构建几何体
47
+ */
48
+ protected constructGeometry(data: CustomMeshData): BufferGeometry;
49
+ /**
50
+ * 更新几何体数据
51
+ */
52
+ set meshData(data: CustomMeshData);
53
+ get meshData(): CustomMeshData;
54
+ protected createDefaultObject(): Mesh;
55
+ set castShadow(bCast: boolean);
56
+ get castShadow(): boolean;
57
+ set receiveShadow(bReceive: boolean);
58
+ get receiveShadow(): boolean;
59
+ getBoundsCenterPosition(): Vector3;
60
+ getBoundsTopCenterPosition(): Vector3;
61
+ getBoundsBottomCenterPosition(): Vector3;
62
+ destroyObject(): void;
63
+ }
@@ -0,0 +1,28 @@
1
+ import { BufferGeometry, Material, Mesh, Vector3 } from "three/webgpu";
2
+ import { SceneComponent } from "../SceneComponent";
3
+ import { TAssetPointer } from "../../../AssetManagement/AssetPointer/AssetPointer";
4
+ import { ThreeJsApp } from "../../../ThreeJsApp";
5
+ export declare class MeshComponent extends SceneComponent {
6
+ get threeObject(): Mesh;
7
+ protected set threeObject(newThreeObject: Mesh);
8
+ get geometry(): BufferGeometry | null;
9
+ set geometry(geo: BufferGeometry);
10
+ get geometryPtr(): TAssetPointer<BufferGeometry>;
11
+ set geometryPtr(geo: TAssetPointer<BufferGeometry>);
12
+ get material(): Material | Material[];
13
+ get materialPtr(): TAssetPointer<Material>[];
14
+ set material(newMat: Material | Material[]);
15
+ set materialPtr(newMat: TAssetPointer<Material> | TAssetPointer<Material>[]);
16
+ protected _geometryPtr: TAssetPointer<BufferGeometry> | null;
17
+ protected _materialPtr: TAssetPointer<Material>[];
18
+ constructor(app: ThreeJsApp, geometry: BufferGeometry, material: Material | Material[], uuid?: string);
19
+ protected createDefaultObject(): Mesh;
20
+ set castShadow(bCast: boolean);
21
+ get castShadow(): boolean;
22
+ set receiveShadow(bReceive: boolean);
23
+ get receiveShadow(): boolean;
24
+ getBoundsCenterPosition(): Vector3;
25
+ getBoundsTopCenterPosition(): Vector3;
26
+ getBoundsBottomCenterPosition(): Vector3;
27
+ destroyObject(): void;
28
+ }
@@ -0,0 +1,6 @@
1
+ import { Material } from "three/webgpu";
2
+ import { MeshComponent } from "../MeshComponent";
3
+ import { ThreeJsApp } from "../../../../ThreeJsApp";
4
+ export declare class BoxComponent extends MeshComponent {
5
+ constructor(app: ThreeJsApp, width?: number, height?: number, depth?: number, widthSegments?: number, heightSegments?: number, depthSegments?: number, material?: Material, uuid?: string);
6
+ }
@@ -0,0 +1,6 @@
1
+ import { Material } from "three/webgpu";
2
+ import { MeshComponent } from "../MeshComponent";
3
+ import { ThreeJsApp } from "../../../../ThreeJsApp";
4
+ export declare class PlaneComponent extends MeshComponent {
5
+ constructor(app: ThreeJsApp, width: number, height: number, material: Material, widthSegments?: number, heightSegments?: number, uuid?: string);
6
+ }
@@ -0,0 +1,6 @@
1
+ import { MeshBasicMaterial } from "three/webgpu";
2
+ import { MeshComponent } from "../MeshComponent";
3
+ import { ThreeJsApp } from "../../../../ThreeJsApp";
4
+ export declare class SphereComponent extends MeshComponent {
5
+ constructor(app: ThreeJsApp, radius: number, material?: MeshBasicMaterial, widthSegments?: number, heightSegments?: number, uuid?: string);
6
+ }
@@ -0,0 +1,9 @@
1
+ import { Sprite, Texture } from "three/webgpu";
2
+ import { SceneComponent } from "../../SceneComponent";
3
+ import { ThreeJsApp } from "../../../../ThreeJsApp";
4
+ export declare class SpriteComponent extends SceneComponent {
5
+ get threeObject(): Sprite;
6
+ set threeObject(newThreeObject: Sprite);
7
+ constructor(app: ThreeJsApp, texture: Texture, uuid?: string);
8
+ protected createDefaultObject(): Sprite;
9
+ }
@@ -0,0 +1,79 @@
1
+ import { Actor } from "../Actor";
2
+ import { Box3, Euler, Matrix4, Object3D, Quaternion, Vector3 } from "three/webgpu";
3
+ import { Component } from "./Component";
4
+ import { World } from "../../Frame/World";
5
+ import { AttachmentRules } from "../../Defines";
6
+ import { ThreeJsApp } from "../../ThreeJsApp";
7
+ import { Delegate } from "../../Delegate";
8
+ export declare class SceneComponent extends Component {
9
+ set parentActor(value: Actor | null);
10
+ get parentActor(): Actor | null;
11
+ protected bCanHover: boolean;
12
+ protected bCanClick: boolean;
13
+ protected _onHoverBeginDelegate: Delegate<[void]>;
14
+ protected _onHoverEndDelegate: Delegate<[void]>;
15
+ protected _onClickDelegate: Delegate<[void]>;
16
+ protected _onDoubleClickDelegate: Delegate<[void]>;
17
+ get onHoverBeginDelegate(): Delegate<[void]>;
18
+ get onHoverEndDelegate(): Delegate<[void]>;
19
+ get onClickDelegate(): Delegate<[void]>;
20
+ get onDoubleClickDelegate(): Delegate<[void]>;
21
+ get world(): World;
22
+ protected app: ThreeJsApp;
23
+ constructor(app: ThreeJsApp, uuid?: string);
24
+ protected createDefaultObject(): Object3D;
25
+ tick(deltaTime: number): void;
26
+ get isVisible(): boolean;
27
+ setVisible(bVisible: boolean): void;
28
+ setLayers(layer: number): void;
29
+ getComponentById(id: string, bRecursive?: boolean): SceneComponent | null;
30
+ getBoundsCenterPositionWS(): Vector3;
31
+ getBoundsTopCenterPositionWS(): Vector3;
32
+ getBoundsBottomCenterPositionWS(): Vector3;
33
+ getBounds(): Box3;
34
+ get parentComponent(): SceneComponent | null;
35
+ get childrenComponents(): any[];
36
+ onAddedToWorld(world: World): void;
37
+ destroy(): void;
38
+ destroyObject(): void;
39
+ getPosition(): Vector3;
40
+ setPosition(position: Vector3): void;
41
+ setPosition(x: number, y: number, z: number): void;
42
+ getRotation(): Euler;
43
+ setRotation(rotation: Euler): void;
44
+ setRotation(x: number, y: number, z: number): void;
45
+ getQuaternion(): Quaternion;
46
+ setQuaternion(quat: Quaternion): void;
47
+ setQuaternion(x: number, y: number, z: number, w: number): void;
48
+ getScale(): Vector3;
49
+ setScale(position: Vector3): void;
50
+ setScale(x: number, y: number, z: number): void;
51
+ getMatrix(): Matrix4;
52
+ setMatrix(matrix: Matrix4): void;
53
+ getWorldPosition(): Vector3;
54
+ getWorldRotation(): Euler;
55
+ getWorldQuaternion(): Quaternion;
56
+ getWorldScale(): Vector3;
57
+ getWorldMatrix(): Matrix4;
58
+ setWorldMatrix(newMatrix: Matrix4): void;
59
+ getWorldForwardDirection(): Vector3;
60
+ getWorldUpDirection(): Vector3;
61
+ getWorldRightDirection(): Vector3;
62
+ worldToLocal(vec: Vector3): Vector3;
63
+ localToWorld(vec: Vector3): Vector3;
64
+ attachComponent(newComponent: SceneComponent): void;
65
+ detachComponent(target: SceneComponent): void;
66
+ addChildComponent(newComponent: SceneComponent, attachmentRule?: AttachmentRules): void;
67
+ removeChildComponent(targetComponent: SceneComponent): void;
68
+ detachFromParentComponent(): void;
69
+ detachFromParentActor(): void;
70
+ destroyChildren(): void;
71
+ set isHoverEnabled(bCanHorver: boolean);
72
+ get isHoverEnabled(): boolean;
73
+ set isClickEnabled(bCanClick: boolean);
74
+ get isClickEnabled(): boolean;
75
+ onHorveringBegin(): void;
76
+ onHorveringEnd(): void;
77
+ onClicked(): void;
78
+ onDoubleClicked(): void;
79
+ }
@@ -0,0 +1,22 @@
1
+ import { SkyMesh } from "three/examples/jsm/objects/SkyMesh.js";
2
+ import { SceneComponent } from "../SceneComponent";
3
+ import { ThreeJsApp } from "../../../ThreeJsApp";
4
+ export interface SkyComponentParam {
5
+ turbidity: number;
6
+ rayleigh: number;
7
+ mieCoefficient: number;
8
+ mieDirectionalG: number;
9
+ elevation: number;
10
+ azimuth: number;
11
+ }
12
+ export declare const DefaultSkyParam: SkyComponentParam;
13
+ export declare class SkyComponent extends SceneComponent {
14
+ get threeObject(): SkyMesh;
15
+ protected set threeObject(newThreeObject: SkyMesh);
16
+ private skyParam;
17
+ private sunPosition;
18
+ constructor(app: ThreeJsApp, skyparam?: SkyComponentParam, uuid?: string);
19
+ protected createDefaultObject(): SkyMesh;
20
+ private updateSky;
21
+ destroyObject(): void;
22
+ }
@@ -0,0 +1,11 @@
1
+ import { Pawn } from "./Pawn";
2
+ import { Controller } from "../../Frame/Controller";
3
+ import { Vector3, Quaternion } from "three/webgpu";
4
+ export declare class FirstPerson extends Pawn {
5
+ constructor(controller: Controller);
6
+ getFocuingData(): {
7
+ position: Vector3;
8
+ quaternion: Quaternion;
9
+ distance: number;
10
+ } | null;
11
+ }