three-base 1.0.27 → 1.0.29
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 +16 -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,18 @@ 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.update();
|
|
180
|
+
this.controls.enableDamping = true;
|
|
181
|
+
|
|
176
182
|
position && this.controlsPosition.reset({ x: position.x, y: position.y, z: position.z });
|
|
177
183
|
center && this.controlsCenter.reset({ x: center.x, y: center.y, z: center.z });
|
|
178
184
|
this.needRender = true;
|
|
@@ -181,6 +187,11 @@ export default class ThreeBase extends EventDispatcher {
|
|
|
181
187
|
// 设置控制器的位置 以动画的方式移动控制器
|
|
182
188
|
async setLookAt({ position, center, duration = 1000 }: { position?: Vector3, center?: Vector3, duration?: number }) {
|
|
183
189
|
|
|
190
|
+
// 停止控制器的惯性
|
|
191
|
+
this.controls.enableDamping = false;
|
|
192
|
+
this.controls.update();
|
|
193
|
+
this.controls.enableDamping = true;
|
|
194
|
+
|
|
184
195
|
let currentPosition = this.camera.position.clone();
|
|
185
196
|
let currentCenter = this.controls.target.clone();
|
|
186
197
|
|
|
@@ -237,9 +248,9 @@ export default class ThreeBase extends EventDispatcher {
|
|
|
237
248
|
}
|
|
238
249
|
|
|
239
250
|
// 寻找最顶层的父元素
|
|
240
|
-
|
|
251
|
+
_findRoot(dom: ParentNode): ParentNode | undefined {
|
|
241
252
|
if (dom.parentNode) {
|
|
242
|
-
return this.
|
|
253
|
+
return this._findRoot(dom.parentNode);
|
|
243
254
|
} else {
|
|
244
255
|
return dom;
|
|
245
256
|
}
|
|
@@ -258,7 +269,7 @@ export default class ThreeBase extends EventDispatcher {
|
|
|
258
269
|
this.controls.enabled = (this.controlsPosition.isDone() || this.controlsCenter.isDone());
|
|
259
270
|
|
|
260
271
|
// canvas 没有在页面上面的话 就跳过渲染
|
|
261
|
-
if (this.
|
|
272
|
+
if (this._findRoot(this.renderer.domElement) !== document) {
|
|
262
273
|
threeUtils.removeEventListener("requestAnimationFrame", this.renderBindThis);
|
|
263
274
|
this.renderer.forceContextLoss();
|
|
264
275
|
// 标记上下文被销毁了
|