using Arch.Core;
using GFramework.Core.Abstractions.ecs;
using GFramework.Core.extensions;
using GFramework.Core.system;
namespace GFramework.Core.ecs;
///
/// ECS系统基类,继承自AbstractSystem以集成到现有架构
///
public abstract class EcsSystemBase : AbstractSystem, IEcsSystem
{
///
/// ECS世界实例
///
protected EcsWorld EcsWorld { get; private set; } = null!;
///
/// 快捷访问内部World
///
protected World World => EcsWorld.InternalWorld;
///
/// 系统优先级,默认为0
///
public virtual int Priority => 0;
///
/// 每帧更新(子类实现)
///
public abstract void Update(float deltaTime);
///
/// 系统初始化
///
protected override void OnInit()
{
EcsWorld = this.GetService() ?? throw new InvalidOperationException(
"EcsWorld not found in context. Make sure ECS is properly initialized.");
OnEcsInit();
}
///
/// 系统销毁
///
protected override void OnDestroy()
{
OnEcsDestroy();
}
///
/// ECS系统初始化(子类实现)
///
protected abstract void OnEcsInit();
///
/// ECS系统销毁(子类可选实现)
///
protected virtual void OnEcsDestroy()
{
}
}