Merge pull request #187 from esengine/feature/complete-iscene-interface
feat(core): 完善 IScene 接口定义
This commit is contained in:
28
.github/workflows/pr-agent.yml
vendored
28
.github/workflows/pr-agent.yml
vendored
@@ -1,28 +0,0 @@
|
|||||||
name: PR Agent
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
types: [opened, reopened, synchronize]
|
|
||||||
issue_comment:
|
|
||||||
types: [created, edited]
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
pull-requests: write
|
|
||||||
issues: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
pr_agent:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
name: Run PR Agent
|
|
||||||
if: ${{ github.event.sender.type != 'Bot' }}
|
|
||||||
steps:
|
|
||||||
- name: PR Agent Action
|
|
||||||
id: pragent
|
|
||||||
uses: Codium-ai/pr-agent@main
|
|
||||||
env:
|
|
||||||
OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
github_action_config.auto_review: "true"
|
|
||||||
github_action_config.auto_describe: "true"
|
|
||||||
github_action_config.auto_improve: "false"
|
|
||||||
31
.github/workflows/pr-size-labeler.yml
vendored
31
.github/workflows/pr-size-labeler.yml
vendored
@@ -1,31 +0,0 @@
|
|||||||
name: PR Size Labeler
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
types: [opened, synchronize, reopened]
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
pull-requests: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
size-label:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Label PR by size
|
|
||||||
uses: codelytv/pr-size-labeler@v1
|
|
||||||
with:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
xs_label: 'size/XS'
|
|
||||||
xs_max_size: '10'
|
|
||||||
s_label: 'size/S'
|
|
||||||
s_max_size: '100'
|
|
||||||
m_label: 'size/M'
|
|
||||||
m_max_size: '500'
|
|
||||||
l_label: 'size/L'
|
|
||||||
l_max_size: '1000'
|
|
||||||
xl_label: 'size/XL'
|
|
||||||
message_if_xl: |
|
|
||||||
这个 PR 改动较大(超过 1000 行),建议拆分成多个小 PR 以便 Review。
|
|
||||||
|
|
||||||
This PR is quite large (over 1000 lines). Consider splitting it into smaller PRs for easier review.
|
|
||||||
178
.mergify.yml
178
.mergify.yml
@@ -1,178 +0,0 @@
|
|||||||
queue_rules:
|
|
||||||
- name: default
|
|
||||||
conditions:
|
|
||||||
- check-success=CI
|
|
||||||
- check-success=Commit Lint
|
|
||||||
|
|
||||||
# 开发依赖队列 - 只需要 Commit Lint 通过
|
|
||||||
- name: dev-dependencies
|
|
||||||
conditions:
|
|
||||||
- check-success=Commit Lint
|
|
||||||
|
|
||||||
pull_request_rules:
|
|
||||||
# 自动合并 Dependabot 开发依赖分组更新(风险低,允许 CI 失败)
|
|
||||||
- name: 自动合并 Dependabot 开发依赖
|
|
||||||
conditions:
|
|
||||||
- author=dependabot[bot]
|
|
||||||
- or:
|
|
||||||
- title~=(?i)dev.dependencies
|
|
||||||
- label=dependencies
|
|
||||||
- body~=(?i)development.dependencies
|
|
||||||
- check-success=Commit Lint
|
|
||||||
# 排除主要版本更新
|
|
||||||
- -title~=(?i)major
|
|
||||||
actions:
|
|
||||||
review:
|
|
||||||
type: APPROVE
|
|
||||||
message: |
|
|
||||||
🤖 自动批准开发依赖更新
|
|
||||||
|
|
||||||
开发依赖更新风险较低,即使测试失败也不影响生产环境。
|
|
||||||
如有问题会在后续开发中发现并修复。
|
|
||||||
queue:
|
|
||||||
name: dev-dependencies
|
|
||||||
label:
|
|
||||||
add:
|
|
||||||
- auto-merged
|
|
||||||
|
|
||||||
# 自动合并 Dependabot 生产依赖的 patch 更新(必须 CI 通过)
|
|
||||||
- name: 自动合并 Dependabot 生产依赖 patch 更新
|
|
||||||
conditions:
|
|
||||||
- author=dependabot[bot]
|
|
||||||
- or:
|
|
||||||
- title~=(?i)production.dependencies
|
|
||||||
- and:
|
|
||||||
- label=dependencies
|
|
||||||
- -body~=(?i)development.dependencies
|
|
||||||
- title~=(?i)patch
|
|
||||||
- check-success=CI
|
|
||||||
- check-success=Commit Lint
|
|
||||||
actions:
|
|
||||||
review:
|
|
||||||
type: APPROVE
|
|
||||||
message: 🤖 自动批准生产依赖 patch 更新(测试通过)
|
|
||||||
queue:
|
|
||||||
name: default
|
|
||||||
label:
|
|
||||||
add:
|
|
||||||
- auto-merged
|
|
||||||
|
|
||||||
# 自动合并 GitHub Actions 更新(风险低)
|
|
||||||
- name: 自动合并 GitHub Actions 更新
|
|
||||||
conditions:
|
|
||||||
- author=dependabot[bot]
|
|
||||||
- label=github-actions
|
|
||||||
- check-success=Commit Lint
|
|
||||||
actions:
|
|
||||||
review:
|
|
||||||
type: APPROVE
|
|
||||||
message: 🤖 自动批准 GitHub Actions 更新
|
|
||||||
queue:
|
|
||||||
name: dev-dependencies
|
|
||||||
label:
|
|
||||||
add:
|
|
||||||
- auto-merged
|
|
||||||
|
|
||||||
# 标记需要人工审核的重要更新
|
|
||||||
- name: 标记需要人工审核的生产依赖更新
|
|
||||||
conditions:
|
|
||||||
- author=dependabot[bot]
|
|
||||||
- or:
|
|
||||||
- title~=(?i)production.dependencies
|
|
||||||
- and:
|
|
||||||
- label=dependencies
|
|
||||||
- -body~=(?i)development.dependencies
|
|
||||||
- or:
|
|
||||||
- title~=(?i)minor
|
|
||||||
- title~=(?i)major
|
|
||||||
- -check-success=CI
|
|
||||||
actions:
|
|
||||||
label:
|
|
||||||
add:
|
|
||||||
- needs-manual-review
|
|
||||||
comment:
|
|
||||||
message: |
|
|
||||||
⚠️ **需要人工审核**
|
|
||||||
|
|
||||||
此更新属于以下情况之一,建议人工审核:
|
|
||||||
- 生产依赖的 minor/major 版本更新
|
|
||||||
- CI 测试未通过
|
|
||||||
|
|
||||||
Please review this update manually.
|
|
||||||
|
|
||||||
# 自动关闭超过 30 天未合并的 Dependabot PR(避免堆积)
|
|
||||||
- name: 关闭过期的 Dependabot PR
|
|
||||||
conditions:
|
|
||||||
- author=dependabot[bot]
|
|
||||||
- updated-at<30 days ago
|
|
||||||
- -merged
|
|
||||||
- -closed
|
|
||||||
actions:
|
|
||||||
close:
|
|
||||||
message: |
|
|
||||||
🤖 自动关闭此 PR
|
|
||||||
|
|
||||||
此 PR 已超过 30 天未合并。Dependabot 会在下次运行时创建新的更新。
|
|
||||||
如果需要此更新,请手动更新依赖或等待下次自动更新。
|
|
||||||
|
|
||||||
This PR has been open for over 30 days. Dependabot will create a new update in the next run if needed.
|
|
||||||
|
|
||||||
# 自动合并有 'automerge' 标签且测试通过的 PR
|
|
||||||
- name: 自动合并标记的 PR
|
|
||||||
conditions:
|
|
||||||
- label=automerge
|
|
||||||
- check-success=CI
|
|
||||||
- check-success=Commit Lint
|
|
||||||
- "#approved-reviews-by>=1"
|
|
||||||
- "#changes-requested-reviews-by=0"
|
|
||||||
actions:
|
|
||||||
queue:
|
|
||||||
name: default
|
|
||||||
|
|
||||||
# 自动给小 PR 添加标签(根据文件数)
|
|
||||||
- name: 标记小 PR 方便快速 Review
|
|
||||||
conditions:
|
|
||||||
- "#files<=3"
|
|
||||||
actions:
|
|
||||||
label:
|
|
||||||
add:
|
|
||||||
- quick-review
|
|
||||||
|
|
||||||
# 提醒大 PR 需要拆分(根据文件数)
|
|
||||||
- name: 提醒大 PR
|
|
||||||
conditions:
|
|
||||||
- "#files>=20"
|
|
||||||
actions:
|
|
||||||
comment:
|
|
||||||
message: |
|
|
||||||
⚠️ 这个 PR 改动了较多文件(20+ 个),建议拆分成多个小 PR,便于 Review 和测试。
|
|
||||||
|
|
||||||
⚠️ This PR modifies many files (20+). Consider splitting it into smaller PRs for easier review and testing.
|
|
||||||
|
|
||||||
# 自动更新过期的分支
|
|
||||||
- name: 自动更新过期分支
|
|
||||||
conditions:
|
|
||||||
- -draft
|
|
||||||
- -closed
|
|
||||||
- base=master
|
|
||||||
- "#approved-reviews-by>=1"
|
|
||||||
actions:
|
|
||||||
update: {}
|
|
||||||
|
|
||||||
# 自动添加标签
|
|
||||||
- name: 添加 dependencies 标签
|
|
||||||
conditions:
|
|
||||||
- author=dependabot[bot]
|
|
||||||
actions:
|
|
||||||
label:
|
|
||||||
add:
|
|
||||||
- dependencies
|
|
||||||
|
|
||||||
# 标记需要关注的 PR
|
|
||||||
- name: 标记需要更新的 PR
|
|
||||||
conditions:
|
|
||||||
- "#commits-behind>10"
|
|
||||||
actions:
|
|
||||||
label:
|
|
||||||
add:
|
|
||||||
- needs-rebase
|
|
||||||
@@ -6,7 +6,10 @@ import { ComponentStorageManager } from './Core/ComponentStorage';
|
|||||||
import { QuerySystem } from './Core/QuerySystem';
|
import { QuerySystem } from './Core/QuerySystem';
|
||||||
import { TypeSafeEventSystem } from './Core/EventSystem';
|
import { TypeSafeEventSystem } from './Core/EventSystem';
|
||||||
import type { ReferenceTracker } from './Core/ReferenceTracker';
|
import type { ReferenceTracker } from './Core/ReferenceTracker';
|
||||||
import type { ServiceContainer } from '../Core/ServiceContainer';
|
import type { ServiceContainer, ServiceType } from '../Core/ServiceContainer';
|
||||||
|
import type { TypedQueryBuilder } from './Core/Query/TypedQuery';
|
||||||
|
import type { SceneSerializationOptions, SceneDeserializationOptions } from './Serialization/SceneSerializer';
|
||||||
|
import type { IncrementalSnapshot, IncrementalSerializationOptions } from './Serialization/IncrementalSerializer';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 场景接口定义
|
* 场景接口定义
|
||||||
@@ -159,6 +162,140 @@ export interface IScene {
|
|||||||
* 获取实体处理器
|
* 获取实体处理器
|
||||||
*/
|
*/
|
||||||
getEntityProcessor<T extends EntitySystem>(type: new (...args: any[]) => T): T | null;
|
getEntityProcessor<T extends EntitySystem>(type: new (...args: any[]) => T): T | null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据ID查找实体
|
||||||
|
*/
|
||||||
|
findEntityById(id: number): Entity | null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据名称查找实体
|
||||||
|
*/
|
||||||
|
getEntityByName(name: string): Entity | null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据标签查找实体
|
||||||
|
*/
|
||||||
|
getEntitiesByTag(tag: number): Entity[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量销毁实体
|
||||||
|
*/
|
||||||
|
destroyEntities(entities: Entity[]): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询拥有所有指定组件的实体
|
||||||
|
*/
|
||||||
|
queryAll(...componentTypes: any[]): { entities: readonly Entity[] };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询拥有任意一个指定组件的实体
|
||||||
|
*/
|
||||||
|
queryAny(...componentTypes: any[]): { entities: readonly Entity[] };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询不包含指定组件的实体
|
||||||
|
*/
|
||||||
|
queryNone(...componentTypes: any[]): { entities: readonly Entity[] };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建类型安全的查询构建器
|
||||||
|
*/
|
||||||
|
query(): TypedQueryBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过类型获取System实例
|
||||||
|
*/
|
||||||
|
getSystem<T extends EntitySystem>(systemType: ServiceType<T>): T | null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量注册EntitySystem到场景
|
||||||
|
*/
|
||||||
|
registerSystems(systemTypes: Array<ServiceType<EntitySystem>>): EntitySystem[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加系统到场景
|
||||||
|
*/
|
||||||
|
addSystem(system: EntitySystem): EntitySystem;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从场景中删除系统
|
||||||
|
*/
|
||||||
|
removeSystem(system: EntitySystem): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取场景统计信息
|
||||||
|
*/
|
||||||
|
getStats(): {
|
||||||
|
entityCount: number;
|
||||||
|
processorCount: number;
|
||||||
|
componentStorageStats: Map<string, any>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取场景的调试信息
|
||||||
|
*/
|
||||||
|
getDebugInfo(): {
|
||||||
|
name: string;
|
||||||
|
entityCount: number;
|
||||||
|
processorCount: number;
|
||||||
|
isRunning: boolean;
|
||||||
|
entities: Array<{
|
||||||
|
name: string;
|
||||||
|
id: number;
|
||||||
|
componentCount: number;
|
||||||
|
componentTypes: string[];
|
||||||
|
}>;
|
||||||
|
processors: Array<{
|
||||||
|
name: string;
|
||||||
|
updateOrder: number;
|
||||||
|
entityCount: number;
|
||||||
|
}>;
|
||||||
|
componentStats: Map<string, any>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 序列化场景
|
||||||
|
*/
|
||||||
|
serialize(options?: SceneSerializationOptions): string | Uint8Array;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 反序列化场景
|
||||||
|
*/
|
||||||
|
deserialize(saveData: string | Uint8Array, options?: SceneDeserializationOptions): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建增量序列化的基础快照
|
||||||
|
*/
|
||||||
|
createIncrementalSnapshot(options?: IncrementalSerializationOptions): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 增量序列化场景
|
||||||
|
*/
|
||||||
|
serializeIncremental(options?: IncrementalSerializationOptions): IncrementalSnapshot;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用增量变更到场景
|
||||||
|
*/
|
||||||
|
applyIncremental(
|
||||||
|
incremental: IncrementalSnapshot | string | Uint8Array,
|
||||||
|
componentRegistry?: Map<string, any>
|
||||||
|
): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新增量快照基准
|
||||||
|
*/
|
||||||
|
updateIncrementalSnapshot(options?: IncrementalSerializationOptions): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清除增量快照
|
||||||
|
*/
|
||||||
|
clearIncrementalSnapshot(): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查是否有增量快照
|
||||||
|
*/
|
||||||
|
hasIncrementalSnapshot(): boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user