fix(sdk): keep dynamic path flowing when scene is static

This commit is contained in:
plum 2026-04-13 15:25:06 +08:00
parent 985c8d39fc
commit d7c36e31f7
2 changed files with 13 additions and 0 deletions

View File

@ -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() {

View File

@ -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;
}