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