Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
c7f8910
docs: 修订 blockData 权威统一设计与计划,聚焦 runtime 内存权威
jayli May 7, 2026
6e1f73d
docs: 完善 blockData 权威统一设计,明确零拷贝视图与写入口约束
jayli May 7, 2026
1ed3544
docs: 全面补充 blockData 权威统一设计与计划——固化阶段边界、共享 Map 协议与装配链路
jayli May 7, 2026
d493c0c
docs: 完善 blockData 权威统一方案——新增三层容器、装配协议、codec 边界与中止条件
jayli May 8, 2026
c74474e
docs: 补齐 blockData 权威统一方案的 5 个关键缺口
jayli May 8, 2026
39d5bbf
docs: 完善 blockData 权威统一设计——补齐散落路由协议、生成注入链路与装配阶段迁移
jayli May 8, 2026
c846695
docs: 固化 blockData 权威统一方案的运维边界——deferred矩阵、API退役表、读路径契约与退出型验证
jayli May 8, 2026
9da0052
feat(world): blockData 权威统一第一阶段 — 三层容器、共享Map装配协议、快照链降级
jayli May 8, 2026
2a7d38a
refactor(world): 删除 MemoryWorldStore,接入统一 epoch/version 协议,添加迁移期 guar…
jayli May 8, 2026
05eb921
docs: 加入 blockData authority unification 补充实施计划,覆盖首轮遗留的写入口收编、cold imp…
jayli May 10, 2026
756ef59
refactor(world): 完成 blockData authority 统一收尾 — 写入口收敛、cold import 先入 a…
jayli May 10, 2026
ecae1fe
fix(world): 修复 cold import / scatter 新增路径的三个 bug
jayli May 10, 2026
c8dc2a1
feat(world): O键AO开关 — MaterialManager/World/Chunk 全链路支持,关闭AO时跳过计算以提升性能
jayli May 11, 2026
5921868
perf(world): chunk 装配 entries 快照缓存 + 状态机级 _assemblyEpoch 失效闭环
jayli May 11, 2026
31e189c
refactor(world): 代码整理 — 消除重复、提升 perf 辅助到 module level、增量更新优化
jayli May 13, 2026
0e38815
docs(world): 派生数据清理与增量更新优化 — 设计与实施计划
jayli May 13, 2026
47666a9
refactor(world): 派生数据生命周期收紧 — RegionCache去冗余、unload清理、增量更新优化
jayli May 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,450 changes: 1,235 additions & 215 deletions docs/superpowers/plans/2026-05-07-blockdata-authority-unification.md

Large diffs are not rendered by default.

Large diffs are not rendered by default.

1,394 changes: 1,394 additions & 0 deletions docs/superpowers/plans/2026-05-13-derived-data-cleanup.md

Large diffs are not rendered by default.

2,064 changes: 1,886 additions & 178 deletions docs/superpowers/specs/2026-05-07-blockdata-authority-unification-design.md

Large diffs are not rendered by default.

190 changes: 190 additions & 0 deletions docs/superpowers/specs/2026-05-13-derived-data-cleanup-design.md

Large diffs are not rendered by default.

8 changes: 7 additions & 1 deletion src/core/Game.js
Original file line number Diff line number Diff line change
Expand Up @@ -591,8 +591,11 @@ export class Game {
}

/**
* 收集当前游戏快照数据(从 worldStore 读取权威数据)
* 收集当前游戏快照数据
* @returns {Promise<object>} 游戏快照对象
* @deferred 手动存档链路延后恢复。当前仍从 worldStore 读取,
* 后续应迁移到从 WorldBlockDataStore 统一导出。
* 本方法不是当前 runtime correctness 的组成部分。
*/
async collectSnapshot() {
const playerSnapshot = {
Expand Down Expand Up @@ -785,6 +788,9 @@ export class Game {

/**
* 将保存的快照数据应用到当前游戏实例
* @deferred 手动读档链路延后恢复。当前从 worldStore/IndexedDB 读取,
* 后续应迁移到基于 WorldBlockDataStore authority 的重新注入。
* 本方法不是当前 runtime correctness 的组成部分。
*/
async applySaveData(saveData) {
if (!saveData) return;
Expand Down
50 changes: 27 additions & 23 deletions src/core/MaterialManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -472,13 +472,10 @@ export class MaterialManager {
}

/**
* 切换 AO 着色开关
* 同步 AO 开关到所有材质 shader
* @param {boolean} enabled - 是否启用 AO
*/
toggleAO() {
this.aoEnabled = !this.aoEnabled;
const enabled = this.aoEnabled;
console.log(`[MaterialManager] AO 着色已${enabled ? '开启' : '关闭'}`);

_syncAOShaderState(enabled) {
// 更新合批材质(ShaderMaterial)
for (const mat of this.batchedMaterials.values()) {
if (mat && mat.uniforms && mat.uniforms.uAoEnabled) {
Expand All @@ -497,6 +494,28 @@ export class MaterialManager {
}
}

/**
* 通知世界系统:AO 开关已变化
* @param {boolean} enabled - 是否启用 AO
*/
_notifyAOSettingChanged(enabled) {
const world = globalThis.game?.world;
if (world && typeof world.onAOSettingChanged === 'function') {
world.onAOSettingChanged(enabled);
}
}

/**
* 切换 AO 着色开关
*/
toggleAO() {
this.aoEnabled = !this.aoEnabled;
const enabled = this.aoEnabled;
console.log(`[MaterialManager] AO 着色已${enabled ? '开启' : '关闭'}`);
this._syncAOShaderState(enabled);
this._notifyAOSettingChanged(enabled);
}

/**
* 设置 AO 着色状态
* @param {boolean} enabled - 是否启用 AO
Expand All @@ -505,23 +524,8 @@ export class MaterialManager {
if (this.aoEnabled === enabled) return;
this.aoEnabled = enabled;
console.log(`[MaterialManager] AO 着色已${enabled ? '开启' : '关闭'}`);

// 更新合批材质(ShaderMaterial)
for (const mat of this.batchedMaterials.values()) {
if (mat && mat.uniforms && mat.uniforms.uAoEnabled) {
mat.uniforms.uAoEnabled.value = enabled ? 1.0 : 0.0;
}
}

// 更新普通材质(MeshStandardMaterial)- 通过存储的 shader 引用
for (const matOrMats of this.materials.values()) {
const mats = Array.isArray(matOrMats) ? matOrMats : [matOrMats];
for (const mat of mats) {
if (mat && mat._aoShader && mat._aoShader.uniforms) {
mat._aoShader.uniforms.uAoEnabled.value = enabled ? 1.0 : 0.0;
}
}
}
this._syncAOShaderState(enabled);
this._notifyAOSettingChanged(enabled);
}

/**
Expand Down
1 change: 0 additions & 1 deletion src/tests/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -399,7 +399,6 @@ <h1>MC Lite - 测试用例</h1>
import './test-runtime-session-persistence.js';
import './test-global-instanced-mesh-manager.js';
import './test-hud.js';
import './test-memory-world-store.js';
import './test-playground-service.js';

// 等待所有脚本加载后再延时 1000ms 启用按钮
Expand Down
Loading
Loading