Revert "Merge pull request #102 from esengine/issue-74-World与Scene关系不清晰"

This reverts commit f2b9c5cc5a, reversing
changes made to 5f507532ed.
This commit is contained in:
YHH
2025-10-12 21:38:53 +08:00
parent ed84394301
commit 1924d979d6
5 changed files with 65 additions and 119 deletions

View File

@@ -47,6 +47,13 @@ class NetworkGlobalSystem implements IGlobalSystem {
/**
* World与Core集成测试
*
* 注意v3.0重构后Core不再直接管理Scene/World
* - 场景管理由 SceneManager 负责
* - 多世界管理由 WorldManager 负责
* - Core 仅负责全局服务Timer、Performance等
*
* 大部分旧的集成测试已移至 SceneManager.test.ts 和 WorldManager.test.ts
*/
describe('World与Core集成测试', () => {
let worldManager: WorldManager;
@@ -60,10 +67,8 @@ describe('World与Core集成测试', () => {
Core.create({ debug: false });
// WorldManager和SceneManager不再是单例
// SceneManager需要WorldManager的默认World,所以必须创建
worldManager = new WorldManager({ createDefaultWorld: true });
// SceneManager需要WorldManager实例
sceneManager = new SceneManager(worldManager);
worldManager = new WorldManager();
sceneManager = new SceneManager();
});
afterEach(() => {
@@ -104,8 +109,7 @@ describe('World与Core集成测试', () => {
const world1 = worldManager.createWorld('world1');
const world2 = worldManager.createWorld('world2');
// worldManager已包含默认World,所以总数是3
expect(worldManager.worldCount).toBe(3);
expect(worldManager.worldCount).toBe(2);
expect(worldManager.getWorld('world1')).toBe(world1);
expect(worldManager.getWorld('world2')).toBe(world2);
});
@@ -133,7 +137,7 @@ describe('World与Core集成测试', () => {
// 游戏循环
Core.update(0.016); // 更新全局服务
worldManager.update(); // 更新所有World
worldManager.updateAll(); // 更新所有World
expect(world.isActive).toBe(true);
});
@@ -146,7 +150,7 @@ describe('World与Core集成测试', () => {
worldManager.setWorldActive('test-world', true);
// 更新World
worldManager.update();
worldManager.updateAll();
expect(globalSystem.syncCount).toBeGreaterThan(0);
});
@@ -154,8 +158,8 @@ describe('World与Core集成测试', () => {
describe('隔离性测试', () => {
test('多个WorldManager实例应该完全隔离', () => {
const manager1 = new WorldManager({ createDefaultWorld: false });
const manager2 = new WorldManager({ createDefaultWorld: false });
const manager1 = new WorldManager();
const manager2 = new WorldManager();
manager1.createWorld('world1');
manager2.createWorld('world2');
@@ -171,10 +175,8 @@ describe('World与Core集成测试', () => {
});
test('多个SceneManager实例应该完全隔离', () => {
const wm1 = new WorldManager({ createDefaultWorld: true });
const wm2 = new WorldManager({ createDefaultWorld: true });
const sm1 = new SceneManager(wm1);
const sm2 = new SceneManager(wm2);
const sm1 = new SceneManager();
const sm2 = new SceneManager();
const scene1 = new Scene();
const scene2 = new Scene();
@@ -188,8 +190,6 @@ describe('World与Core集成测试', () => {
// 清理
sm1.destroy();
sm2.destroy();
wm1.destroy();
wm2.destroy();
});
});
});

View File

@@ -42,8 +42,7 @@ describe('WorldManager', () => {
beforeEach(() => {
// WorldManager不再是单例直接创建新实例
// 测试时不创建默认World
worldManager = new WorldManager({ createDefaultWorld: false });
worldManager = new WorldManager();
});
afterEach(() => {
@@ -60,8 +59,8 @@ describe('WorldManager', () => {
describe('实例化', () => {
test('可以创建多个独立的WorldManager实例', () => {
const manager1 = new WorldManager({ createDefaultWorld: false });
const manager2 = new WorldManager({ createDefaultWorld: false });
const manager1 = new WorldManager();
const manager2 = new WorldManager();
expect(manager1).not.toBe(manager2);
@@ -77,8 +76,7 @@ describe('WorldManager', () => {
const config: IWorldManagerConfig = {
maxWorlds: 10,
autoCleanup: true,
debug: false,
createDefaultWorld: false
debug: false
};
const instance = new WorldManager(config);
@@ -123,7 +121,7 @@ describe('WorldManager', () => {
});
test('超出最大World数量应该抛出错误', () => {
const limitedManager = new WorldManager({ maxWorlds: 2, createDefaultWorld: false });
const limitedManager = new WorldManager({ maxWorlds: 2 });
limitedManager.createWorld('world1');
limitedManager.createWorld('world2');
@@ -430,8 +428,7 @@ describe('WorldManager', () => {
const invalidConfig: IWorldManagerConfig = {
maxWorlds: -1,
autoCleanup: true,
debug: true,
createDefaultWorld: false
debug: true
};
const manager = new WorldManager(invalidConfig);
@@ -445,8 +442,7 @@ describe('WorldManager', () => {
const config: IWorldManagerConfig = {
maxWorlds: 3,
autoCleanup: true,
debug: true,
createDefaultWorld: false
debug: true
};
const manager = new WorldManager(config);