using System; using System.Collections.Generic; using Cysharp.Threading.Tasks; namespace TEngine { /// /// 实体管理器接口。 /// public interface IEntityManager { /// /// 获取实体数量。 /// int EntityCount { get; } /// /// 获取实体组数量。 /// int EntityGroupCount { get; } /// /// 显示实体成功事件。 /// event Action ShowEntitySuccess; /// /// 显示实体失败事件。 /// event Action ShowEntityFailure; /// /// 隐藏实体完成事件。 /// event Action HideEntityComplete; /// /// 设置对象池管理器。 /// /// 对象池管理器。 void SetObjectPoolManager(IObjectPoolModule objectPoolManager); /// /// 设置资源管理器。 /// /// 资源管理器。 void SetResourceManager(IResourceModule resourceManager); /// /// 设置实体辅助器。 /// /// 实体辅助器。 void SetEntityHelper(IEntityHelper entityHelper); /// /// 是否存在实体组。 /// /// 实体组名称。 /// 是否存在实体组。 bool HasEntityGroup(string entityGroupName); /// /// 获取实体组。 /// /// 实体组名称。 /// 要获取的实体组。 IEntityGroup GetEntityGroup(string entityGroupName); /// /// 获取所有实体组。 /// /// 所有实体组。 IEntityGroup[] GetAllEntityGroups(); /// /// 获取所有实体组。 /// /// 所有实体组。 void GetAllEntityGroups(List results); /// /// 增加实体组。 /// /// 实体组名称。 /// 实体实例对象池自动释放可释放对象的间隔秒数。 /// 实体实例对象池容量。 /// 实体实例对象池对象过期秒数。 /// 实体实例对象池的优先级。 /// 实体组辅助器。 /// 是否增加实体组成功。 bool AddEntityGroup(string entityGroupName, float instanceAutoReleaseInterval, int instanceCapacity, float instanceExpireTime, int instancePriority, IEntityGroupHelper entityGroupHelper); /// /// 是否存在实体。 /// /// 实体编号。 /// 是否存在实体。 bool HasEntity(int entityId); /// /// 是否存在实体。 /// /// 实体资源名称。 /// 是否存在实体。 bool HasEntity(string entityAssetName); /// /// 获取实体。 /// /// 实体编号。 /// 要获取的实体。 IEntity GetEntity(int entityId); /// /// 获取实体。 /// /// 实体资源名称。 /// 要获取的实体。 IEntity GetEntity(string entityAssetName); /// /// 获取实体。 /// /// 实体资源名称。 /// 要获取的实体。 IEntity[] GetEntities(string entityAssetName); /// /// 获取实体。 /// /// 实体资源名称。 /// 要获取的实体。 void GetEntities(string entityAssetName, List results); /// /// 获取所有已加载的实体。 /// /// 所有已加载的实体。 IEntity[] GetAllLoadedEntities(); /// /// 获取所有已加载的实体。 /// /// 所有已加载的实体。 void GetAllLoadedEntities(List results); /// /// 获取所有正在加载实体的编号。 /// /// 所有正在加载实体的编号。 int[] GetAllLoadingEntityIds(); /// /// 获取所有正在加载实体的编号。 /// /// 所有正在加载实体的编号。 void GetAllLoadingEntityIds(List results); /// /// 是否正在加载实体。 /// /// 实体编号。 /// 是否正在加载实体。 bool IsLoadingEntity(int entityId); /// /// 是否是合法的实体。 /// /// 实体。 /// 实体是否合法。 bool IsValidEntity(IEntity entity); /// /// 显示实体。 /// /// 实体编号。 /// 实体资源名称。 /// 实体组名称。 void ShowEntity(int entityId, string entityAssetName, string entityGroupName); /// /// 显示实体。 /// /// 实体编号。 /// 实体资源名称。 /// 实体组名称。 /// 加载实体资源的优先级。 void ShowEntity(int entityId, string entityAssetName, string entityGroupName, int priority); /// /// 显示实体。 /// /// 实体编号。 /// 实体资源名称。 /// 实体组名称。 /// 用户自定义数据。 void ShowEntity(int entityId, string entityAssetName, string entityGroupName, object userData); /// /// 显示实体。 /// /// 实体编号。 /// 实体资源名称。 /// 实体组名称。 /// 加载实体资源的优先级。 /// 用户自定义数据。 void ShowEntity(int entityId, string entityAssetName, string entityGroupName, int priority, object userData); /// /// 同步显示实体。 /// /// 实体编号。 /// 实体资源名称。 /// 实体组名称。 /// 加载实体资源的优先级。 /// 用户自定义数据。 public T ShowEntitySync(int entityId, string entityAssetName, string entityGroupName, int priority, object userData) where T : class; /// /// 异步显示实体。 /// /// 实体编号。 /// 实体资源名称。 /// 实体组名称。 /// 加载实体资源的优先级。 /// 用户自定义数据。 public UniTask ShowEntityAsync(int entityId, string entityAssetName, string entityGroupName, int priority, object userData) where T : class; /// /// 隐藏实体。 /// /// 实体编号。 void HideEntity(int entityId); /// /// 隐藏实体。 /// /// 实体编号。 /// 用户自定义数据。 void HideEntity(int entityId, object userData); /// /// 隐藏实体。 /// /// 实体。 void HideEntity(IEntity entity); /// /// 隐藏实体。 /// /// 实体。 /// 用户自定义数据。 void HideEntity(IEntity entity, object userData); /// /// 隐藏所有已加载的实体。 /// void HideAllLoadedEntities(); /// /// 隐藏所有已加载的实体。 /// /// 用户自定义数据。 void HideAllLoadedEntities(object userData); /// /// 隐藏所有正在加载的实体。 /// void HideAllLoadingEntities(); /// /// 获取父实体。 /// /// 要获取父实体的子实体的实体编号。 /// 子实体的父实体。 IEntity GetParentEntity(int childEntityId); /// /// 获取父实体。 /// /// 要获取父实体的子实体。 /// 子实体的父实体。 IEntity GetParentEntity(IEntity childEntity); /// /// 获取子实体数量。 /// /// 要获取子实体数量的父实体的实体编号。 /// 子实体数量。 int GetChildEntityCount(int parentEntityId); /// /// 获取子实体。 /// /// 要获取子实体的父实体的实体编号。 /// 子实体。 IEntity GetChildEntity(int parentEntityId); /// /// 获取子实体。 /// /// 要获取子实体的父实体。 /// 子实体。 IEntity GetChildEntity(IEntity parentEntity); /// /// 获取所有子实体。 /// /// 要获取所有子实体的父实体的实体编号。 /// 所有子实体。 IEntity[] GetChildEntities(int parentEntityId); /// /// 获取所有子实体。 /// /// 要获取所有子实体的父实体的实体编号。 /// 所有子实体。 void GetChildEntities(int parentEntityId, List results); /// /// 获取所有子实体。 /// /// 要获取所有子实体的父实体。 /// 所有子实体。 IEntity[] GetChildEntities(IEntity parentEntity); /// /// 获取所有子实体。 /// /// 要获取所有子实体的父实体。 /// 所有子实体。 void GetChildEntities(IEntity parentEntity, List results); /// /// 附加子实体。 /// /// 要附加的子实体的实体编号。 /// 被附加的父实体的实体编号。 void AttachEntity(int childEntityId, int parentEntityId); /// /// 附加子实体。 /// /// 要附加的子实体的实体编号。 /// 被附加的父实体的实体编号。 /// 用户自定义数据。 void AttachEntity(int childEntityId, int parentEntityId, object userData); /// /// 附加子实体。 /// /// 要附加的子实体的实体编号。 /// 被附加的父实体。 void AttachEntity(int childEntityId, IEntity parentEntity); /// /// 附加子实体。 /// /// 要附加的子实体的实体编号。 /// 被附加的父实体。 /// 用户自定义数据。 void AttachEntity(int childEntityId, IEntity parentEntity, object userData); /// /// 附加子实体。 /// /// 要附加的子实体。 /// 被附加的父实体的实体编号。 void AttachEntity(IEntity childEntity, int parentEntityId); /// /// 附加子实体。 /// /// 要附加的子实体。 /// 被附加的父实体的实体编号。 /// 用户自定义数据。 void AttachEntity(IEntity childEntity, int parentEntityId, object userData); /// /// 附加子实体。 /// /// 要附加的子实体。 /// 被附加的父实体。 void AttachEntity(IEntity childEntity, IEntity parentEntity); /// /// 附加子实体。 /// /// 要附加的子实体。 /// 被附加的父实体。 /// 用户自定义数据。 void AttachEntity(IEntity childEntity, IEntity parentEntity, object userData); /// /// 解除子实体。 /// /// 要解除的子实体的实体编号。 void DetachEntity(int childEntityId); /// /// 解除子实体。 /// /// 要解除的子实体的实体编号。 /// 用户自定义数据。 void DetachEntity(int childEntityId, object userData); /// /// 解除子实体。 /// /// 要解除的子实体。 void DetachEntity(IEntity childEntity); /// /// 解除子实体。 /// /// 要解除的子实体。 /// 用户自定义数据。 void DetachEntity(IEntity childEntity, object userData); /// /// 解除所有子实体。 /// /// 被解除的父实体的实体编号。 void DetachChildEntities(int parentEntityId); /// /// 解除所有子实体。 /// /// 被解除的父实体的实体编号。 /// 用户自定义数据。 void DetachChildEntities(int parentEntityId, object userData); /// /// 解除所有子实体。 /// /// 被解除的父实体。 void DetachChildEntities(IEntity parentEntity); /// /// 解除所有子实体。 /// /// 被解除的父实体。 /// 用户自定义数据。 void DetachChildEntities(IEntity parentEntity, object userData); } }