using Arch.Core; using GFramework.Core.Abstractions.ecs; namespace GFramework.Core.ecs; /// /// ECS世界实现,封装Arch的World实例 /// public sealed class EcsWorld : IEcsWorld { private readonly World _world = World.Create(); private bool _disposed; /// /// 获取内部的Arch World实例 /// public World InternalWorld => _world; /// /// 当前实体数量 /// public int EntityCount => _world.Size; /// /// 创建一个新实体 /// public Entity CreateEntity(params ComponentType[] types) { return _world.Create(types); } /// /// 销毁指定实体 /// public void DestroyEntity(Entity entity) { _world.Destroy(entity); } /// /// 检查实体是否存活 /// public bool IsAlive(Entity entity) { return _world.IsAlive(entity); } /// /// 清空所有实体 /// public void Clear() { _world.Clear(); } /// /// 释放资源 /// public void Dispose() { if (_disposed) return; World.Destroy(_world); _disposed = true; } }