using Rewired.Utils; using Svelto.ECS.Internal; namespace Svelto.ECS.Internal { public interface IStructNodeEngine : IEngine { void CreateStructNodes(SharedStructNodeLists sharedStructNodeLists); } public interface IGroupedStructNodesEngine : IEngine { void CreateStructNodes(SharedGroupedStructNodesLists sharedStructNodeLists); } public interface IActivableNodeEngine : IEngine { void Enable(NodeWithID node); void Disable(NodeWithID node); } public interface INodeEngine : IEngine { void Add(NodeWithID node); void Remove(NodeWithID node); } } namespace Svelto.ECS.Legacy { public interface INodesEngine : INodeEngine { System.Type[] AcceptedNodes(); } } namespace Svelto.ECS { public interface IEngine {} public interface IActivableNodeEngine : IActivableNodeEngine where TNodeType : INode { } public interface IQueryableNodeEngine:IEngine { IEngineNodeDB nodesDB { set; } } /// /// The engines can receive and store INodes structs /// Unboxing will happen during the Add, but the /// data will then be stored and processed as stucts /// public interface IStructNodeEngine : IStructNodeEngine where T:struct, IStructNodeWithID { } /// /// same as above, but the nodes are grouped by ID /// usually the ID is the owner of the nodes of that /// group /// public interface IGroupedStructNodesEngine : IGroupedStructNodesEngine where T : struct, IGroupedNode { void Add(ref T node); void Remove(ref T node); } }