@xmov/avatar 2.0.0-alpha.48 → 2.0.0-alpha.49
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/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.modern.js +1 -1
- package/dist/index.modern.js.map +1 -1
- package/dist/index.module.js +1 -1
- package/dist/index.module.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/control/RenderScheduler.ts +12 -2
- package/src/modules/ResourceManager.ts +1 -1
package/package.json
CHANGED
|
@@ -338,9 +338,10 @@ export default class RenderScheduler {
|
|
|
338
338
|
} else {
|
|
339
339
|
nowFaceData.push(faceData[i]);
|
|
340
340
|
}
|
|
341
|
-
nowFaceData.length && this.dataCacheQueue._updateFacial(nowFaceData);
|
|
342
|
-
realFaceData.length && this.dataCacheQueue._updateRealFacial(realFaceData);
|
|
343
341
|
}
|
|
342
|
+
// 分类完成后一次性入队,避免循环内对累加数组重复 push 导致队列数据重复
|
|
343
|
+
nowFaceData.length && this.dataCacheQueue._updateFacial(nowFaceData);
|
|
344
|
+
realFaceData.length && this.dataCacheQueue._updateRealFacial(realFaceData);
|
|
344
345
|
break;
|
|
345
346
|
case EFrameDataType.AUDIO:
|
|
346
347
|
const audioData = data as IRawAudioFrameData[];
|
|
@@ -493,6 +494,15 @@ export default class RenderScheduler {
|
|
|
493
494
|
message: 'WARNING: 有新的speak_start事件,但是上一轮仍未结束,触发兜底结束',
|
|
494
495
|
});
|
|
495
496
|
this.interrupt('new_speak_start');
|
|
497
|
+
// 新 speak_start 已到来,立即复位 interrupt 并更新轮次状态,
|
|
498
|
+
// 避免依赖 UIRenderer 在 sf 帧处理事件时(sf==当前帧且事件在 compose 后被处理)被漏处理,
|
|
499
|
+
// 导致新轮次实际说话期间仍被强制渲染为闭嘴表情
|
|
500
|
+
const currentSpeakStart = d.flatMap(item => item.e ?? []).find(ev => ev.type === 'speak_start');
|
|
501
|
+
if (currentSpeakStart) {
|
|
502
|
+
this.currentSpeechId = currentSpeakStart.speech_id ?? 0;
|
|
503
|
+
this.avatarRenderer.setInterrupt(false);
|
|
504
|
+
this.uiRenderer.lastSpeechId = currentSpeakStart.speech_id ?? 0;
|
|
505
|
+
}
|
|
496
506
|
}
|
|
497
507
|
|
|
498
508
|
// 2. 处理过期speak_start
|
|
@@ -205,7 +205,7 @@ export default class ResourceManager {
|
|
|
205
205
|
private isProcessingVideo = false; // 防止在视频处理过程中清理缓存
|
|
206
206
|
private cacheServer?: CacheManager;
|
|
207
207
|
private startSessionTimer: any = null;
|
|
208
|
-
private audioOnlyMode: boolean;
|
|
208
|
+
private audioOnlyMode: boolean = false;
|
|
209
209
|
|
|
210
210
|
// 新增:正在下载的视频跟踪
|
|
211
211
|
private downloadingVideos = new Map<string, Promise<ArrayBuffer | undefined>>();
|