# Conflicts:
#	package-lock.json
#	package.json
This commit is contained in:
YHH
2025-07-03 09:02:37 +08:00
4 changed files with 22 additions and 13 deletions

4
package-lock.json generated
View File

@@ -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",

View File

@@ -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",

View File

@@ -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 {