three-base 1.0.27 → 1.0.28
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/lib/ThreeBase.ts +21 -5
- package/package.json +1 -1
package/lib/ThreeBase.ts
CHANGED
|
@@ -158,7 +158,7 @@ export default class ThreeBase extends EventDispatcher {
|
|
|
158
158
|
// 非开发模式添加网格辅助线
|
|
159
159
|
if (threeUtils.isDev) {
|
|
160
160
|
const gridHelper = new GridHelper(1000, 100, 0x303030, 0x303030);
|
|
161
|
-
gridHelper.position.set(0, -0.
|
|
161
|
+
gridHelper.position.set(0, -0.001, 0);
|
|
162
162
|
this.scene.add(gridHelper);
|
|
163
163
|
const axesHelper = new AxesHelper(10000);
|
|
164
164
|
this.scene.add(axesHelper);
|
|
@@ -167,12 +167,20 @@ export default class ThreeBase extends EventDispatcher {
|
|
|
167
167
|
// 资源加载进度有更新时, 需要渲染
|
|
168
168
|
threeLoader.addEventListener("progress", () => {
|
|
169
169
|
this.needRender = true;
|
|
170
|
-
})
|
|
170
|
+
});
|
|
171
171
|
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
// 重置控制器的位置
|
|
175
175
|
resetLookAt({ position, center, }: { position?: Vector3, center?: Vector3, }) {
|
|
176
|
+
|
|
177
|
+
// 停止控制器的惯性
|
|
178
|
+
this.controls.enableDamping = false;
|
|
179
|
+
this.controls.saveState();
|
|
180
|
+
this.controls.update();
|
|
181
|
+
this.controls.reset();
|
|
182
|
+
this.controls.enableDamping = true;
|
|
183
|
+
|
|
176
184
|
position && this.controlsPosition.reset({ x: position.x, y: position.y, z: position.z });
|
|
177
185
|
center && this.controlsCenter.reset({ x: center.x, y: center.y, z: center.z });
|
|
178
186
|
this.needRender = true;
|
|
@@ -181,6 +189,14 @@ export default class ThreeBase extends EventDispatcher {
|
|
|
181
189
|
// 设置控制器的位置 以动画的方式移动控制器
|
|
182
190
|
async setLookAt({ position, center, duration = 1000 }: { position?: Vector3, center?: Vector3, duration?: number }) {
|
|
183
191
|
|
|
192
|
+
// 停止控制器的惯性
|
|
193
|
+
this.controls.enableDamping = false;
|
|
194
|
+
this.controls.saveState();
|
|
195
|
+
this.controls.update();
|
|
196
|
+
this.controls.reset();
|
|
197
|
+
this.controls.enableDamping = true;
|
|
198
|
+
|
|
199
|
+
|
|
184
200
|
let currentPosition = this.camera.position.clone();
|
|
185
201
|
let currentCenter = this.controls.target.clone();
|
|
186
202
|
|
|
@@ -237,9 +253,9 @@ export default class ThreeBase extends EventDispatcher {
|
|
|
237
253
|
}
|
|
238
254
|
|
|
239
255
|
// 寻找最顶层的父元素
|
|
240
|
-
|
|
256
|
+
_findRoot(dom: ParentNode): ParentNode | undefined {
|
|
241
257
|
if (dom.parentNode) {
|
|
242
|
-
return this.
|
|
258
|
+
return this._findRoot(dom.parentNode);
|
|
243
259
|
} else {
|
|
244
260
|
return dom;
|
|
245
261
|
}
|
|
@@ -258,7 +274,7 @@ export default class ThreeBase extends EventDispatcher {
|
|
|
258
274
|
this.controls.enabled = (this.controlsPosition.isDone() || this.controlsCenter.isDone());
|
|
259
275
|
|
|
260
276
|
// canvas 没有在页面上面的话 就跳过渲染
|
|
261
|
-
if (this.
|
|
277
|
+
if (this._findRoot(this.renderer.domElement) !== document) {
|
|
262
278
|
threeUtils.removeEventListener("requestAnimationFrame", this.renderBindThis);
|
|
263
279
|
this.renderer.forceContextLoss();
|
|
264
280
|
// 标记上下文被销毁了
|