From 7da5366bca9b9addbd0fdc3ada01daadd0336f27 Mon Sep 17 00:00:00 2001 From: YHH <359807859@qq.com> Date: Tue, 14 Oct 2025 17:50:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dquerysystem=E5=BE=AA=E7=8E=AF?= =?UTF-8?q?=E4=BE=9D=E8=B5=96=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/src/ECS/Core/QuerySystem.ts | 34 ++----------------- packages/core/src/ECS/Core/QueryTypes.ts | 36 +++++++++++++++++++++ packages/core/src/ECS/Core/ReactiveQuery.ts | 2 +- 3 files changed, 39 insertions(+), 33 deletions(-) create mode 100644 packages/core/src/ECS/Core/QueryTypes.ts diff --git a/packages/core/src/ECS/Core/QuerySystem.ts b/packages/core/src/ECS/Core/QuerySystem.ts index 946d5a82..ea0c8148 100644 --- a/packages/core/src/ECS/Core/QuerySystem.ts +++ b/packages/core/src/ECS/Core/QuerySystem.ts @@ -7,39 +7,9 @@ import { getComponentTypeName } from '../Decorators'; import { Archetype, ArchetypeSystem } from './ArchetypeSystem'; import { ComponentTypeManager } from "../Utils"; import { ReactiveQuery, ReactiveQueryConfig } from './ReactiveQuery'; +import { QueryCondition, QueryConditionType, QueryResult } from './QueryTypes'; -/** - * 查询条件类型 - */ -export enum QueryConditionType { - /** 必须包含所有指定组件 */ - ALL = 'all', - /** 必须包含任意一个指定组件 */ - ANY = 'any', - /** 不能包含任何指定组件 */ - NONE = 'none' -} - -/** - * 查询条件接口 - */ -export interface QueryCondition { - type: QueryConditionType; - componentTypes: ComponentType[]; - mask: BitMask64Data; -} - -/** - * 实体查询结果接口 - */ -export interface QueryResult { - entities: readonly Entity[]; - count: number; - /** 查询执行时间(毫秒) */ - executionTime: number; - /** 是否来自缓存 */ - fromCache: boolean; -} +export { QueryCondition, QueryConditionType, QueryResult }; /** * 实体索引结构 diff --git a/packages/core/src/ECS/Core/QueryTypes.ts b/packages/core/src/ECS/Core/QueryTypes.ts new file mode 100644 index 00000000..64a5acd5 --- /dev/null +++ b/packages/core/src/ECS/Core/QueryTypes.ts @@ -0,0 +1,36 @@ +import { ComponentType } from './ComponentStorage'; +import { BitMask64Data } from '../Utils/BigIntCompatibility'; +import { Entity } from '../Entity'; + +/** + * 查询条件类型 + */ +export enum QueryConditionType { + /** 必须包含所有指定组件 */ + ALL = 'all', + /** 必须包含任意一个指定组件 */ + ANY = 'any', + /** 不能包含任何指定组件 */ + NONE = 'none' +} + +/** + * 查询条件接口 + */ +export interface QueryCondition { + type: QueryConditionType; + componentTypes: ComponentType[]; + mask: BitMask64Data; +} + +/** + * 实体查询结果接口 + */ +export interface QueryResult { + entities: readonly Entity[]; + count: number; + /** 查询执行时间(毫秒) */ + executionTime: number; + /** 是否来自缓存 */ + fromCache: boolean; +} diff --git a/packages/core/src/ECS/Core/ReactiveQuery.ts b/packages/core/src/ECS/Core/ReactiveQuery.ts index 1d8d7f7f..55758480 100644 --- a/packages/core/src/ECS/Core/ReactiveQuery.ts +++ b/packages/core/src/ECS/Core/ReactiveQuery.ts @@ -1,5 +1,5 @@ import { Entity } from '../Entity'; -import { QueryCondition, QueryConditionType } from './QuerySystem'; +import { QueryCondition, QueryConditionType } from './QueryTypes'; import { BitMask64Utils } from '../Utils/BigIntCompatibility'; import { createLogger } from '../../Utils/Logger';