using GFramework.Core.Abstractions.ecs; using GFramework.Core.extensions; using GFramework.Core.system; namespace GFramework.Core.ecs; /// /// ECS系统调度器,负责管理和更新所有ECS系统 /// public sealed class EcsSystemRunner : AbstractSystem { private readonly List _systems = new(); private bool _isRunning; /// /// 初始化调度器,从DI容器获取所有ECS系统 /// protected override void OnInit() { // 从容器获取所有已注册的ECS系统 var systemsList = this.GetService>(); if (systemsList is { Count: > 0 }) { // 按优先级排序 _systems.AddRange(systemsList.OrderBy(s => s.Priority)); } } /// /// 更新所有ECS系统 /// /// 帧间隔时间 public void Update(float deltaTime) { if (!_isRunning) return; foreach (var system in _systems) { system.Update(deltaTime); } } /// /// 启动调度器 /// public void Start() { _isRunning = true; } /// /// 停止调度器 /// public void Stop() { _isRunning = false; } /// /// 销毁调度器 /// protected override void OnDestroy() { Stop(); _systems.Clear(); } }