fix(sdk): keep dynamic path flowing when scene is static
This commit is contained in:
parent
985c8d39fc
commit
d7c36e31f7
@ -65,6 +65,8 @@ export default class Path extends THREE.Mesh {
|
||||
if (Path.flowSignalBound) return;
|
||||
Path.flowSignalBound = true;
|
||||
useAddSignal("sceneRendered", Path.handleFlowTick);
|
||||
// 立即请求一帧渲染,防止场景静止时 sceneRendered 永远不触发导致流动停止
|
||||
(App.viewer as any)?.pluginRequestRender?.(true);
|
||||
}
|
||||
|
||||
private static unbindFlowSignal() {
|
||||
|
||||
@ -206,6 +206,12 @@ export default class Viewer extends THREE.EventDispatcher<ViewerEventMap> {
|
||||
//整个主场景的box3
|
||||
public sceneBox3 = new THREE.Box3();
|
||||
public package: Package;
|
||||
private _pluginNeedsRender = false;
|
||||
|
||||
/** 供插件/内部模块请求下一帧强制渲染,传 true 标记,animate() 检测后自动清除 */
|
||||
pluginRequestRender(value: boolean) {
|
||||
this._pluginNeedsRender = value;
|
||||
}
|
||||
|
||||
constructor(options: IViewerSetting) {
|
||||
super();
|
||||
@ -1107,6 +1113,11 @@ export default class Viewer extends THREE.EventDispatcher<ViewerEventMap> {
|
||||
needRender = true;
|
||||
}
|
||||
|
||||
if (this._pluginNeedsRender) {
|
||||
needRender = true;
|
||||
this._pluginNeedsRender = false;
|
||||
}
|
||||
|
||||
this.dispatchEvent({type: 'afterAnimation', delta: timeStamp, toBeRender: (_needRender:boolean = false) => {
|
||||
needRender = _needRender;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user