新增禁用sab功能

This commit is contained in:
YHH
2025-09-28 20:41:23 +08:00
parent dedb91379f
commit de3bfd7551
9 changed files with 319 additions and 17 deletions

View File

@@ -54,10 +54,10 @@ class WorkerDemo {
private initializeUIElements(): void {
const elementIds = [
'entityCount', 'entityCountValue', 'toggleWorker',
'entityCount', 'entityCountValue', 'toggleWorker', 'toggleSAB',
'gravity', 'gravityValue', 'friction', 'frictionValue', 'spawnParticles',
'clearEntities', 'resetDemo', 'fps', 'entityCountStat', 'workerStatus', 'workerLoad',
'physicsTime', 'renderTime', 'frameTime', 'memoryUsage'
'physicsTime', 'renderTime', 'frameTime', 'memoryUsage', 'sabStatus'
];
for (const id of elementIds) {
@@ -93,6 +93,14 @@ class WorkerDemo {
});
}
// SharedArrayBuffer切换按钮
if (this.elements.toggleSAB) {
this.elements.toggleSAB.addEventListener('click', () => {
this.gameScene.toggleSharedArrayBuffer();
this.updateWorkerStatus();
});
}
// 重力滑块
if (this.elements.gravity && this.elements.gravityValue) {
@@ -249,6 +257,7 @@ class WorkerDemo {
const systemInfo = this.gameScene.getSystemInfo();
const workerInfo = systemInfo.physics;
const entityCount = systemInfo.entityCount;
const status = this.gameScene.getPhysicsSystemStatus();
if (this.elements.workerStatus) {
if (workerInfo.enabled) {
@@ -268,6 +277,29 @@ class WorkerDemo {
this.elements.workerLoad.textContent = 'N/A';
}
}
// 更新 SharedArrayBuffer 状态
if (this.elements.sabStatus) {
const modeNames = {
'shared-buffer': 'SharedArrayBuffer模式',
'single-worker': '单Worker模式',
'multi-worker': '多Worker模式',
'sync': '同步模式'
};
this.elements.sabStatus.textContent = modeNames[status.mode] || status.mode;
this.elements.sabStatus.className = status.mode === 'shared-buffer' ? 'worker-enabled' : 'worker-disabled';
}
// 更新 SharedArrayBuffer 按钮文本
if (this.elements.toggleSAB) {
if (status.sharedArrayBufferEnabled) {
this.elements.toggleSAB.textContent = '禁用 SharedArrayBuffer';
} else {
this.elements.toggleSAB.textContent = '启用 SharedArrayBuffer';
this.elements.toggleSAB.setAttribute('disabled', 'true'); // SAB 一旦禁用就无法重新启用
}
}
}
private getMemoryUsage(): number {