lythreeframe 1.0.2 → 1.0.5

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 (91) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +3 -0
  3. package/dist/index.ts +80 -0
  4. package/package.json +18 -12
  5. package/rollup.config.js +31 -0
  6. package/src/draco/README.md +32 -0
  7. package/src/draco/draco_decoder.js +34 -0
  8. package/src/draco/draco_decoder.wasm +0 -0
  9. package/src/draco/draco_encoder.js +33 -0
  10. package/src/draco/draco_wasm_wrapper.js +117 -0
  11. package/src/draco/gltf/draco_decoder.js +33 -0
  12. package/src/draco/gltf/draco_decoder.wasm +0 -0
  13. package/src/draco/gltf/draco_encoder.js +33 -0
  14. package/src/draco/gltf/draco_wasm_wrapper.js +116 -0
  15. package/src/index.ts +44 -0
  16. package/src/{AssetManagement → lythreeframe/AssetManagement}/AssetManager.ts +8 -6
  17. package/src/{AssetManagement → lythreeframe/AssetManagement}/AssetPointer/AssetPointer.ts +1 -1
  18. package/src/{Frame → lythreeframe/Frame}/Controller.ts +7 -7
  19. package/src/{Frame → lythreeframe/Frame}/Viewport.ts +58 -58
  20. package/src/{Frame → lythreeframe/Frame}/World.ts +4 -4
  21. package/src/{Frame.ts → lythreeframe/Frame.ts} +1 -1
  22. package/src/lythreeframe/Library/MaterialLibrary.ts +292 -0
  23. package/src/{Library → lythreeframe/Library}/Math.ts +4 -4
  24. package/src/{Object → lythreeframe/Object}/Actor.ts +2 -2
  25. package/src/{Object → lythreeframe/Object}/Actors/Camera/CameraActor.ts +1 -1
  26. package/src/{Object → lythreeframe/Object}/Actors/Light/DirectionalLightActor.ts +2 -2
  27. package/src/{Object → lythreeframe/Object}/Actors/Shape/BoxActor.ts +2 -2
  28. package/src/{Object → lythreeframe/Object}/Actors/Shape/PlaneActor.ts +2 -2
  29. package/src/lythreeframe/Object/Actors/Shape/TubeActor.ts +37 -0
  30. package/src/{Object → lythreeframe/Object}/Components/2D/2DComponent.ts +1 -1
  31. package/src/{Object → lythreeframe/Object}/Components/Camera/CameraComponent.ts +1 -1
  32. package/src/{Object → lythreeframe/Object}/Components/Component.ts +1 -1
  33. package/src/{Object → lythreeframe/Object}/Components/Light/LightComponent.ts +1 -1
  34. package/src/{Object → lythreeframe/Object}/Components/Mesh/InstanceMesh/MultiInstanceMeshComponent.ts +2 -2
  35. package/src/{Object → lythreeframe/Object}/Components/Mesh/MeshComponent.ts +2 -2
  36. package/src/{Object → lythreeframe/Object}/Components/Mesh/Sprite/SpriteComponent.ts +1 -1
  37. package/src/{Object → lythreeframe/Object}/Components/SceneComponent.ts +10 -8
  38. package/src/{Object → lythreeframe/Object}/Controller/Controller.ts +2 -2
  39. package/src/{Object → lythreeframe/Object}/Pawn/CameraStatus.ts +1 -1
  40. package/src/lythreeframe/Object/Pawn/FirstPerson.ts +230 -0
  41. package/src/lythreeframe/Object/Pawn/Oribital.ts +276 -0
  42. package/src/lythreeframe/Object/Pawn/PawnBase.ts +189 -0
  43. package/src/lythreeframe/Object/Pawn/TopView.ts +205 -0
  44. package/src/lythreeframe/Object/Pawn/TransformControl.ts +215 -0
  45. package/src/lythreeframe/Object/Pawn/staticCamera.ts +80 -0
  46. package/src/{Object → lythreeframe/Object}/PawnV2/FirstPerson.ts +3 -3
  47. package/src/{Object → lythreeframe/Object}/PawnV2/Oribital.ts +2 -2
  48. package/src/{Object → lythreeframe/Object}/PawnV2/Pawn.ts +1 -1
  49. package/src/{Object → lythreeframe/Object}/PawnV2/TransformControl.ts +6 -5
  50. package/src/{PostProcess → lythreeframe/PostProcess}/Param/DOF.ts +1 -2
  51. package/src/{PostProcess → lythreeframe/PostProcess}/PostProcessParam.ts +5 -5
  52. package/src/{ThreeJsApp.ts → lythreeframe/ThreeJsApp.ts} +4 -4
  53. package/tsconfig.json +105 -0
  54. package/index.js +0 -48
  55. package/src/Library/MaterialLibrary.ts +0 -288
  56. package/src/Object/Actors/Shape/TubeActor.ts +0 -37
  57. package/src/Object/Pawn/FirstPerson.ts +0 -230
  58. package/src/Object/Pawn/Oribital.ts +0 -276
  59. package/src/Object/Pawn/PawnBase.ts +0 -189
  60. package/src/Object/Pawn/TopView.ts +0 -205
  61. package/src/Object/Pawn/TransformControl.ts +0 -215
  62. package/src/Object/Pawn/staticCamera.ts +0 -80
  63. /package/src/{AssetManagement → lythreeframe/AssetManagement}/AssetDefines.ts +0 -0
  64. /package/src/{AssetManagement → lythreeframe/AssetManagement}/Task/Task.ts +0 -0
  65. /package/src/{Container → lythreeframe/Container}/SmartPointer.ts +0 -0
  66. /package/src/{Defines.ts → lythreeframe/Defines.ts} +0 -0
  67. /package/src/{Delegate.ts → lythreeframe/Delegate.ts} +0 -0
  68. /package/src/{Factory → lythreeframe/Factory}/CameraFactory.ts +0 -0
  69. /package/src/{Factory → lythreeframe/Factory}/RendererFactory.ts +0 -0
  70. /package/src/{Geometry → lythreeframe/Geometry}/PlaneGeometry.ts +0 -0
  71. /package/src/{Geometry → lythreeframe/Geometry}/TriangleGeometry.ts +0 -0
  72. /package/src/{Library → lythreeframe/Library}/ContainerLibrary.ts +0 -0
  73. /package/src/{Library → lythreeframe/Library}/ResourceLibrary.ts +0 -0
  74. /package/src/{Object → lythreeframe/Object}/Actors/Shape/CurveActor.ts +0 -0
  75. /package/src/{Object → lythreeframe/Object}/BaseObject.ts +0 -0
  76. /package/src/{Object → lythreeframe/Object}/Components/Light/DirectionalLight/DirectionalLightComponent.ts +0 -0
  77. /package/src/{Object → lythreeframe/Object}/Components/Mesh/InstanceMesh/InstanceMeshComponent.ts +0 -0
  78. /package/src/{Object → lythreeframe/Object}/Components/Mesh/Line/CurveComponent.ts +0 -0
  79. /package/src/{Object → lythreeframe/Object}/Components/Mesh/Shape/BoxComponent.ts +0 -0
  80. /package/src/{Object → lythreeframe/Object}/Components/Mesh/Shape/PlaneComponent.ts +0 -0
  81. /package/src/{Object → lythreeframe/Object}/Components/Mesh/Shape/SphereComponent.ts +0 -0
  82. /package/src/{PostProcess → lythreeframe/PostProcess}/Param/Bloom.ts +0 -0
  83. /package/src/{PostProcess → lythreeframe/PostProcess}/Param/Denoise.ts +0 -0
  84. /package/src/{PostProcess → lythreeframe/PostProcess}/Param/GTAO.ts +0 -0
  85. /package/src/{PostProcess → lythreeframe/PostProcess}/Param/LensFlare.ts +0 -0
  86. /package/src/{PostProcess → lythreeframe/PostProcess}/Param/MotionBlur.ts +0 -0
  87. /package/src/{PostProcess → lythreeframe/PostProcess}/Param/Outline.ts +0 -0
  88. /package/src/{PostProcess → lythreeframe/PostProcess}/Param/SSR.ts +0 -0
  89. /package/src/{PostProcess → lythreeframe/PostProcess}/Param/ToneMapping.ts +0 -0
  90. /package/src/{PostProcess → lythreeframe/PostProcess}/WebGPUPostProcessFactory.ts +0 -0
  91. /package/src/{Shader → lythreeframe/Shader}/Postprocess/ColorShader.ts +0 -0
@@ -1,205 +0,0 @@
1
- import {Euler, Quaternion, Vector3,OrthographicCamera} from "three";
2
-
3
- import {PawnBase} from "./PawnBase";
4
- import {LYThreeWorld} from "../../Frame";
5
- import {OrbitControls} from "three/examples/jsm/controls/OrbitControls";
6
- import {OrthographicCameraStatus} from "./CameraStatus.ts";
7
-
8
-
9
- export class LYTopView extends PawnBase
10
- {
11
-
12
- override camera :OrthographicCamera
13
- override control:OrbitControls
14
- override cameraStatus:OrthographicCameraStatus
15
- override get Control(): any
16
- {
17
- return this.control;
18
- }
19
-
20
- constructor(world: LYThreeWorld)
21
- {
22
- let camera = new OrthographicCamera()
23
- camera.near = 0.1
24
- camera.far = 2000
25
-
26
- let control = null
27
- if(world.renderer && world.renderer.domElement)
28
- {
29
- control = new OrbitControls(camera, world.renderer.domElement)
30
- control.enableRotate = false
31
- }
32
-
33
- super(world, camera, control);
34
- this.camera = camera
35
- this.control = control
36
- this.control.enableRotate = false
37
- this.cameraStatus = new OrthographicCameraStatus(this.Camera, this.Camera.position.clone().add(new Vector3(0,-1000,0)))
38
-
39
-
40
- }
41
-
42
- override get Camera(): OrthographicCamera
43
- {
44
- return this.camera
45
- }
46
-
47
- tick(deltaTime)
48
- {
49
- super.tick(deltaTime);
50
- }
51
-
52
-
53
- possess()
54
- {
55
-
56
- this.Control.addEventListener('change', this.changeEvent)
57
- this.World.markRenderStateDirty();
58
- }
59
-
60
- unpossess()
61
- {
62
- this.onCameraMove = null
63
- this.Control.removeEventListener("change", this.changeEvent)
64
- }
65
-
66
-
67
- setCamera(newCamera)
68
- {
69
- super.setCamera(newCamera)
70
- // this.Control.object = newCamera
71
- // this.Control.update();
72
- this.World.markRenderStateDirty();
73
- }
74
-
75
- setPosition(param1, param2 = undefined, param3 = undefined)
76
- {
77
- // super.setPosition(param1, param2, param3);
78
- // this.Control.update();
79
- // this.World.markRenderStateDirty();
80
- }
81
-
82
- setQuaternion(newQuat)
83
- {
84
- // super.setQuaternion(newQuat);
85
- // this.Control.update()
86
- // this.World.markRenderStateDirty();
87
- }
88
-
89
- // focusTo
90
- // @targetPos
91
- focusTo(targetPos: Vector3, targetQuat: Quaternion | Euler, distance: number, time: number = 0, onGoing: Function | null = null, onFinished: Function | null = null)
92
- {
93
- // this.Camera.position.set(targetPos.x,targetPos.y + 1000, targetPos.z);
94
- let quat1 = new Quaternion().setFromAxisAngle(new Vector3(1, 0, 0), Math.PI * 0.5).normalize();
95
-
96
- this.Camera.quaternion.copy(quat1)
97
- this.Control.object.position.set(targetPos.x, targetPos.y + distance, targetPos.z);
98
- this.Control.target.copy(targetPos);
99
-
100
- //1.计算透视相机到场景 scene 的深度距离 depth
101
- let depth = distance;
102
- let ele = this.world.OuterElement;
103
- //2.得到透视相机的宽高比和垂直可视角度
104
- let aspect = ele.clientWidth/ele.clientHeight;
105
- let fov = 60;
106
- let top_ortho = depth * Math.atan((Math.PI / 180) * (fov) / 2);
107
- let right_ortho = top_ortho * aspect;
108
- let bottom_ortho = -top_ortho;
109
- let left_ortho = -right_ortho;
110
- this.Camera.right = right_ortho
111
- this.Camera.left = left_ortho
112
- this.Camera.top = top_ortho
113
- this.Camera.bottom = bottom_ortho
114
- this.Camera.updateProjectionMatrix()
115
- this.control.update()
116
- if (onFinished)
117
- {
118
- onFinished();
119
- }
120
- this.World.markRenderStateDirty();
121
- this.cameraStatus.updateTargetPosition(targetPos)
122
- this.cameraStatus.updateCameraPosition(this.Camera.position)
123
- }
124
-
125
- stopFocusing()
126
- {
127
-
128
- }
129
-
130
- zoomIn()
131
- {
132
- this.Camera.zoom *= 1.1
133
- this.cameraStatus.updateCameraZoom(this.Camera.zoom)
134
- this.Camera.updateProjectionMatrix()
135
- this.World.markRenderStateDirty();
136
- }
137
-
138
- zoomOut()
139
- {
140
- this.Camera.zoom *= 0.9
141
- this.cameraStatus.updateCameraZoom(this.Camera.zoom)
142
- this.Camera.updateProjectionMatrix()
143
- this.World.markRenderStateDirty();
144
- }
145
-
146
- restore(status: OrthographicCameraStatus)
147
- {
148
- super.restore(status);
149
- this.cameraStatus.copy(status)
150
-
151
- this.Control.object.position.copy(status.cameraPosition.clone());
152
- this.Control.target.copy(status.targetPosition);
153
-
154
- let quat1 = new Quaternion().setFromAxisAngle(new Vector3(1, 0, 0), Math.PI * 0.5).normalize();
155
- this.Camera.quaternion.copy(quat1)
156
-
157
- //1.计算透视相机到场景 scene 的深度距离 depth
158
- let depth = this.Camera.position.clone().sub(status.targetPosition).length();
159
- let ele = this.world.OuterElement;
160
-
161
- //2.得到透视相机的宽高比和垂直可视角度
162
- let aspect = ele.clientWidth/ele.clientHeight;
163
- let fov = 60;
164
-
165
- //3.根据上述变量计算正交投影相机的视口矩形
166
- let top_ortho = depth * Math.atan((Math.PI / 180) * (fov) / 2);
167
- let right_ortho = top_ortho * aspect;
168
- let bottom_ortho = -top_ortho;
169
- let left_ortho = -right_ortho;
170
-
171
- this.Camera.right = right_ortho
172
- this.Camera.left = left_ortho
173
- this.Camera.top = top_ortho
174
- this.Camera.bottom = bottom_ortho
175
- this.Camera.zoom = status.zoom
176
-
177
- this.Camera.updateProjectionMatrix()
178
- this.Control.update()
179
-
180
- this.World.markRenderStateDirty();
181
-
182
- this.cameraStatus.updateCameraZoom(this.Camera.zoom)
183
- this.cameraStatus.updateTargetPosition(status.targetPosition)
184
- this.cameraStatus.updateCameraPosition(this.Camera.position)
185
- }
186
-
187
- destroy()
188
- {
189
- if (this.Control)
190
- {
191
- this.Control.dispose();
192
- }
193
- super.destroy();
194
- }
195
-
196
- protected onChangeEvent()
197
- {
198
- super.onChangeEvent();
199
- // this.cameraStatus.updateCameraQuaternion(this.Camera.quaternion)
200
- this.cameraStatus.update(this.Camera, this.Camera.position.clone().add(new Vector3(0,-1000,0)))
201
- this.World.markRenderStateDirty()
202
- let camPos = this.Control.object.position.clone()
203
- let targetPos = this.Control.target.clone()
204
- }
205
- }
@@ -1,215 +0,0 @@
1
- import {PawnBase} from "./PawnBase";
2
- import {LYThreeWorld} from "../../Frame";
3
- import {Camera, Matrix4, Object3D, PerspectiveCamera} from "three";
4
- import {TransformControls} from "three/examples/jsm/controls/TransformControls";
5
-
6
- export interface TransformType
7
- {
8
- rotate:"X" | "Y" | "Z" | "E" | "XY" | "YZ" | "XZ" | "XYZ" | "XYZE" | null;
9
- scale:"X" | "Y" | "Z" | "E" | "XY" | "YZ" | "XZ" | "XYZ" | "XYZE" | null;
10
- translate:"X" | "Y" | "Z" | "E" | "XY" | "YZ" | "XZ" | "XYZ" | "XYZE" | null;
11
- }
12
-
13
- export interface ITransforming
14
- {
15
- // onTransfroming(worldPos:Vector3, worldQuat:Quaternion, worldScale:Vector3):void
16
- isTransformAllowed():boolean;
17
-
18
- onTransforming(worldMatrix:Matrix4):void;
19
-
20
- getMatrixInWorld():Matrix4;
21
-
22
- getAllowedTransformType():TransformType;
23
- }
24
-
25
- export class LYTransformControl extends PawnBase
26
- {
27
- protected onChange:Function;
28
- protected onDraggingChanged:Function;
29
- protected onObjectChange:Function;
30
- protected onUpdateFunctions:Function[] = [];
31
- protected onDraggingFunctions:Function[] = [];
32
- private helperObject:Object3D = new Object3D();
33
- protected targets:ITransforming[] = [];
34
- protected primaryTarget:ITransforming | null = null;
35
- private targetMatrixMap:Map<ITransforming, Matrix4> = new Map();
36
-
37
- constructor(world:LYThreeWorld, camera:Camera)
38
- {
39
- camera = camera ? camera : new PerspectiveCamera();
40
- super(world, camera, new TransformControls(camera, world.renderer.domElement));
41
- world.scene?.add(this.helperObject);
42
- this.onUpdateFunctions = [];
43
- this.onChange = () =>
44
- {
45
- this.World.markRenderStateDirty();
46
- };
47
- this.onDraggingChanged = (event) =>
48
- {
49
- if (this.primaryTarget)
50
- {
51
- let tMatrix = this.primaryTarget.getMatrixInWorld();
52
- tMatrix.decompose(this.helperObject.position, this.helperObject.quaternion, this.helperObject.scale);
53
- }
54
- this.onDraggingFunctions.forEach((elem) =>
55
- {
56
- elem(event.value);
57
- });
58
- };
59
- this.onObjectChange = () =>
60
- {
61
- if (this.primaryTarget)
62
- {
63
- const TA1 = this.primaryTarget.getMatrixInWorld();
64
- this.helperObject.updateMatrixWorld(true);
65
- const TA2 = this.helperObject.matrixWorld.clone();
66
- // 将初始矩阵分解为位置、旋转和缩放
67
-
68
-
69
- this.primaryTarget.onTransforming(TA2);
70
-
71
- const TA1Inverse = TA1.clone().invert();
72
- const transformMatrix = new Matrix4().multiplyMatrices(TA2, TA1Inverse);
73
- this.targets.forEach((tar) =>
74
- {
75
-
76
- //
77
- // let TB1 = tar.getMatrixInWorld(); // B 的初始世界矩阵
78
- // let TB2 = new Matrix4().multiplyMatrices(transformMatrix, TB1); // B
79
- //
80
- // tar.onTransforming(TB2)
81
- // let TB1 = tar.getMatrixInWorld();
82
- // const TB_local = TB1.clone().invert().multiply(TA1);
83
-
84
- if (tar !== this.primaryTarget)
85
- {
86
- let TB2 = new Matrix4().multiplyMatrices(TA2, this.targetMatrixMap.get(tar)); // B
87
-
88
- tar.onTransforming(TB2);
89
- }
90
-
91
- });
92
-
93
- // this.primaryTarget.onTransforming(this.helperObject.matrix)
94
-
95
- }
96
- this.onUpdateFunctions.forEach((elem) =>
97
- {
98
- elem();
99
- });
100
- };
101
- this.setSize(0.5);
102
- this.World.markRenderStateDirty();
103
-
104
- }
105
-
106
- tick(deltaTime)
107
- {
108
- super.tick(deltaTime);
109
- }
110
-
111
- get Camera()
112
- {
113
- return this.Control.camera;
114
- }
115
-
116
- set enable(newEnable)
117
- {
118
- this.Control.enabled = newEnable;
119
- }
120
-
121
-
122
- setTarget(primaryTarget:ITransforming, multiTargets:ITransforming[], onUpdate:Function | null = null, onDragging:Function | null)
123
- {
124
- this.targetMatrixMap.clear();
125
- let tMatrix = primaryTarget.getMatrixInWorld();
126
- tMatrix.decompose(this.helperObject.position, this.helperObject.quaternion, this.helperObject.scale);
127
- this.Control.attach(this.helperObject);
128
- this.primaryTarget = primaryTarget;
129
- this.targets = multiTargets;
130
-
131
-
132
- this.targets.forEach((elem) =>
133
- {
134
- const tarMatrix = elem.getMatrixInWorld();
135
- const TB_local = tMatrix.clone().invert().multiply(tarMatrix);
136
-
137
- this.targetMatrixMap.set(elem, TB_local);
138
- });
139
-
140
- if (onUpdate)
141
- {
142
- this.onUpdateFunctions.push(onUpdate);
143
- }
144
-
145
- if (onUpdate)
146
- {
147
- this.onUpdateFunctions.push(onUpdate);
148
- }
149
- if (onDragging)
150
- {
151
- this.onDraggingFunctions.push(onDragging);
152
- }
153
- this.IsTickable = true;
154
- }
155
-
156
- getMode():"translate" | "rotate" | "scale"
157
- {
158
- return this.Control.getMode();
159
- }
160
-
161
- setMode(mode:"translate" | "rotate" | "scale"):void
162
- {
163
- this.Control.setMode(mode);
164
- }
165
-
166
- setSpace(space:"world" | "local"):void
167
- {
168
- this.Control.setSpace(space);
169
- }
170
-
171
- setAxis(axis:"X" | "Y" | "Z" | "E" | "XY" | "YZ" | "XZ" | "XYZ" | "XYZE" | null)
172
- {
173
- this.Control.showX = axis?.indexOf("X") >= 0;
174
- this.Control.showY = axis?.indexOf("Y") >= 0;
175
- this.Control.showZ = axis?.indexOf("Z") >= 0;
176
- }
177
-
178
- setSize(size:number):void
179
- {
180
- this.Control.setSize(size);
181
- }
182
-
183
- setCamera(newCamera)
184
- {
185
- super.setCamera(newCamera);
186
- this.Control.camera = newCamera;
187
- this.World.markRenderStateDirty();
188
- }
189
-
190
- possess()
191
- {
192
- this.World.scene.add(this.Control.getHelper());
193
- this.Control.addEventListener('change', this.onChange);
194
- this.Control.addEventListener('dragging-changed', this.onDraggingChanged);
195
- this.Control.addEventListener('objectChange', this.onObjectChange);
196
- }
197
-
198
- unpossess()
199
- {
200
- this.World.scene.remove(this.Control.getHelper());
201
- this.onUpdateFunctions = [];
202
- this.Control.removeEventListener('change', this.onChange);
203
- this.Control.removeEventListener('dragging-changed', this.onDraggingChanged);
204
- this.Control.removeEventListener('objectChange', this.onObjectChange);
205
- }
206
-
207
-
208
- destroy()
209
- {
210
- this.IsTickable = false;
211
- this.world.scene?.remove(this.helperObject);
212
-
213
- super.destroy();
214
- }
215
- }
@@ -1,80 +0,0 @@
1
- import { PointerLockControls } from 'three/addons/controls/PointerLockControls.js';
2
- import {Euler, PerspectiveCamera, Quaternion} from "three";
3
- import {CameraStatus, PawnBase} from "./PawnBase";
4
-
5
- export class LYStaticCamera extends PawnBase
6
- {
7
- protected speed: number = 3
8
- protected cameraHeight: number = 15
9
- protected domElement
10
-
11
- constructor(world)
12
- {
13
- let ele = world.Element;
14
- let camera = new PerspectiveCamera(90, ele.clientWidth / ele.clientHeight, 0.5, 7000)
15
- super(world, camera, new PointerLockControls(camera, world.renderer.domElement));
16
- this.domElement = world.renderer.domElement
17
-
18
- camera.position.y = Math.max(camera.position.y, 5)
19
-
20
- this.World.markRenderStateDirty();
21
- }
22
-
23
- tick(deltaTime)
24
- {
25
- super.tick(deltaTime)
26
- }
27
-
28
- get Camera()
29
- {
30
- return this.Control.camera;
31
- }
32
-
33
- setCamera(newCamera)
34
- {
35
- super.setCamera(newCamera)
36
- this.Control.camera = newCamera
37
- this.World.markRenderStateDirty();
38
- }
39
-
40
- possess()
41
- {
42
- }
43
-
44
- unpossess()
45
- {
46
-
47
- }
48
-
49
- focusTo(targetPos, targetQuat, distance, time = 0, onFinished = null)
50
- {
51
- this.Camera.position.set(targetPos.x, targetPos.y + this.cameraHeight, targetPos.z);
52
- if (targetQuat instanceof Euler)
53
- {
54
- targetQuat = new Quaternion().setFromEuler(targetQuat)
55
- }
56
- this.Camera.quaternion.set(targetQuat.x, targetQuat.y, targetQuat.z, targetQuat.w)
57
- this.cameraStatus.update(this.Camera.position, this.Camera.quaternion, targetPos)
58
-
59
- if (onFinished)
60
- {
61
- onFinished();
62
- }
63
- this.World.markRenderStateDirty();
64
- }
65
-
66
- restore(status: CameraStatus)
67
- {
68
- super.restore(status);
69
- this.focusTo(status.targetPosition, status.cameraQuaternion, status.targetPosition.clone().sub(status.cameraPosition).length())
70
- }
71
-
72
- destroy()
73
- {
74
- if (this.Control)
75
- {
76
- this.Control.dispose();
77
- }
78
- super.destroy();
79
- }
80
- }
File without changes
File without changes