From a37183851fde0d550af0e54e11004d962a19c70a Mon Sep 17 00:00:00 2001 From: YHH <359807859@qq.com> Date: Wed, 2 Jul 2025 23:47:30 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dqueryall=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E4=BF=A1=E6=81=AF=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ECS/Core/QuerySystem.ts | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/ECS/Core/QuerySystem.ts b/src/ECS/Core/QuerySystem.ts index d7924233..be983988 100644 --- a/src/ECS/Core/QuerySystem.ts +++ b/src/ECS/Core/QuerySystem.ts @@ -421,25 +421,34 @@ export class QuerySystem { }; } - let entities: Entity[]; + let entities: Entity[] = []; const archetypeResult = this.archetypeSystem.queryArchetypes(componentTypes, 'AND'); if (archetypeResult.archetypes.length > 0) { this.queryStats.archetypeHits++; - entities = []; for (const archetype of archetypeResult.archetypes) { entities.push(...archetype.entities); } - } else if (componentTypes.length === 1) { - this.queryStats.indexHits++; - const indexResult = this.componentIndexManager.query(componentTypes[0]); - entities = Array.from(indexResult); } else { - const indexResult = this.componentIndexManager.queryMultiple(componentTypes, 'AND'); - entities = Array.from(indexResult); + try { + if (componentTypes.length === 1) { + this.queryStats.indexHits++; + const indexResult = this.componentIndexManager.query(componentTypes[0]); + entities = Array.from(indexResult); + } else { + const indexResult = this.componentIndexManager.queryMultiple(componentTypes, 'AND'); + entities = Array.from(indexResult); + } + } catch (error) { + entities = []; + } + } + + if (entities.length === 0 && this.entities.length > 0) { + this.queryStats.linearScans++; + entities = this.queryByLinearScan(componentTypes); } - // 缓存结果 this.addToCache(cacheKey, entities); return { From a5f69065f4e4afabbfec49a8e2834e385e904b8f Mon Sep 17 00:00:00 2001 From: YHH <359807859@qq.com> Date: Wed, 2 Jul 2025 23:48:51 +0800 Subject: [PATCH 2/4] update --- thirdparty/BehaviourTree-ai | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thirdparty/BehaviourTree-ai b/thirdparty/BehaviourTree-ai index f3e91b9f..7df0745b 160000 --- a/thirdparty/BehaviourTree-ai +++ b/thirdparty/BehaviourTree-ai @@ -1 +1 @@ -Subproject commit f3e91b9f34eaa41d38a5a284be01597e0376c3b3 +Subproject commit 7df0745b80d52b6b4b3e8befdca7f6193f80f1c2 From 5596ba634e8e91ef8624167ad6979e1a2d7647d7 Mon Sep 17 00:00:00 2001 From: YHH <359807859@qq.com> Date: Wed, 2 Jul 2025 23:49:02 +0800 Subject: [PATCH 3/4] 2.1.24 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c4f68a89..09c20e58 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@esengine/ecs-framework", - "version": "2.1.23", + "version": "2.1.24", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@esengine/ecs-framework", - "version": "2.1.23", + "version": "2.1.24", "license": "MIT", "dependencies": { "@types/multer": "^1.4.13", diff --git a/package.json b/package.json index 8dc1f090..75172aca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@esengine/ecs-framework", - "version": "2.1.23", + "version": "2.1.24", "description": "用于Laya、Cocos Creator等JavaScript游戏引擎的高性能ECS框架", "main": "bin/index.js", "types": "bin/index.d.ts", From 037c3d6a05dc96621a39bee9599fa12b798cf39b Mon Sep 17 00:00:00 2001 From: YHH <359807859@qq.com> Date: Wed, 2 Jul 2025 23:49:28 +0800 Subject: [PATCH 4/4] 2.1.25 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 09c20e58..7c375940 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@esengine/ecs-framework", - "version": "2.1.24", + "version": "2.1.25", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@esengine/ecs-framework", - "version": "2.1.24", + "version": "2.1.25", "license": "MIT", "dependencies": { "@types/multer": "^1.4.13", diff --git a/package.json b/package.json index 75172aca..bf72421f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@esengine/ecs-framework", - "version": "2.1.24", + "version": "2.1.25", "description": "用于Laya、Cocos Creator等JavaScript游戏引擎的高性能ECS框架", "main": "bin/index.js", "types": "bin/index.d.ts",