diff --git a/Svelto.ECS/EnginesRoot.Entities.cs b/Svelto.ECS/EnginesRoot.Entities.cs index daf07eb..c022223 100644 --- a/Svelto.ECS/EnginesRoot.Entities.cs +++ b/Svelto.ECS/EnginesRoot.Entities.cs @@ -37,17 +37,18 @@ namespace Svelto.ECS ///-------------------------------------------- EntityStructInitializer BuildEntity(EGID entityID, object[] implementors) - where T : class, IEntityDescriptor, new() + where T : IEntityDescriptor, new() { var dic = EntityFactory.BuildGroupedEntityViews(entityID, - _groupedEntityToAdd.current, - EntityDescriptorTemplate.Info.entityViewsToBuild, - implementors); + _groupedEntityToAdd.current, + EntityDescriptorTemplate.Info.entityViewsToBuild, + implementors); return new EntityStructInitializer(entityID, dic); } - EntityStructInitializer BuildEntity(EGID entityID, IEntityViewBuilder[] entityViewsToBuild, + EntityStructInitializer BuildEntity(EGID entityID, + IEntityViewBuilder[] entityViewsToBuild, object[] implementors) { var dic = EntityFactory.BuildGroupedEntityViews(entityID, @@ -60,7 +61,7 @@ namespace Svelto.ECS ///-------------------------------------------- - void Preallocate(int groupID, int size) where T : class, IEntityDescriptor, new() + void Preallocate(int groupID, int size) where T : IEntityDescriptor, new() { var entityViewsToBuild = EntityDescriptorTemplate.Info.entityViewsToBuild; var count = entityViewsToBuild.Length; @@ -209,7 +210,7 @@ namespace Svelto.ECS _id = id; } - public void Init(ref T initializer) where T: struct, IEntityStruct + public void Init(T initializer) where T: struct, IEntityStruct { var typeSafeDictionary = (TypeSafeDictionary) _current[typeof(T)]; diff --git a/Svelto.ECS/EnginesRoot.GenericEntityFactory.cs b/Svelto.ECS/EnginesRoot.GenericEntityFactory.cs index ab048bd..9c0a983 100644 --- a/Svelto.ECS/EnginesRoot.GenericEntityFactory.cs +++ b/Svelto.ECS/EnginesRoot.GenericEntityFactory.cs @@ -17,17 +17,17 @@ namespace Svelto.ECS _weakEngine = weakReference; } - public EntityStructInitializer BuildEntity(int entityID, object[] implementors) where T : class, IEntityDescriptor, new() + public EntityStructInitializer BuildEntity(int entityID, object[] implementors) where T : IEntityDescriptor, new() { return _weakEngine.Target.BuildEntity(new EGID(entityID), implementors); } - public EntityStructInitializer BuildEntity(int entityID, int groupID, object[] implementors) where T : class, IEntityDescriptor, new() + public EntityStructInitializer BuildEntity(int entityID, int groupID, object[] implementors) where T : IEntityDescriptor, new() { return _weakEngine.Target.BuildEntity(new EGID(entityID, groupID), implementors); } - public EntityStructInitializer BuildEntity(EGID egid, object[] implementors) where T : class, IEntityDescriptor, new() + public EntityStructInitializer BuildEntity(EGID egid, object[] implementors) where T : IEntityDescriptor, new() { return _weakEngine.Target.BuildEntity(egid, implementors); } @@ -47,12 +47,12 @@ namespace Svelto.ECS return _weakEngine.Target.BuildEntity(new EGID(entityID, groupID), entityViewsToBuild, implementors); } - public void PreallocateEntitySpace(int size) where T : class, IEntityDescriptor, new() + public void PreallocateEntitySpace(int size) where T : IEntityDescriptor, new() { _weakEngine.Target.Preallocate(ExclusiveGroups.StandardEntity, size); } - public void PreallocateEntitySpace(int groupID, int size) where T : class, IEntityDescriptor, new() + public void PreallocateEntitySpace(int groupID, int size) where T : IEntityDescriptor, new() { _weakEngine.Target.Preallocate(groupID, size); } diff --git a/Svelto.ECS/EntityDescriptor.cs b/Svelto.ECS/EntityDescriptor.cs index db1bc4c..f0bc7b0 100644 --- a/Svelto.ECS/EntityDescriptor.cs +++ b/Svelto.ECS/EntityDescriptor.cs @@ -18,9 +18,9 @@ namespace Svelto.ECS public IEntityViewBuilder[] entityViewsToBuild { get; } } - public static class EntityDescriptorTemplate where TType : class, IEntityDescriptor, new() + public static class EntityDescriptorTemplate where TType : IEntityDescriptor, new() { - public static readonly EntityDescriptorInfo Info = new EntityDescriptorInfo(new TType()); + public static readonly EntityDescriptorInfo Info = new EntityDescriptorInfo(new TType()); } public struct DynamicEntityDescriptorInfo where TType : class, IEntityDescriptor, new() @@ -42,11 +42,11 @@ namespace Svelto.ECS } } - public struct EntityDescriptorInfo + public struct EntityDescriptorInfo where TType : IEntityDescriptor { public readonly IEntityViewBuilder[] entityViewsToBuild; - internal EntityDescriptorInfo(IEntityDescriptor descriptor) + internal EntityDescriptorInfo(TType descriptor) { entityViewsToBuild = descriptor.entityViewsToBuild; } diff --git a/Svelto.ECS/EntityViewsDB.cs b/Svelto.ECS/EntityViewsDB.cs index 66268ce..60515c8 100644 --- a/Svelto.ECS/EntityViewsDB.cs +++ b/Svelto.ECS/EntityViewsDB.cs @@ -71,7 +71,7 @@ namespace Svelto.ECS.Internal int count; - return QueryEntities(out count); + return QueryEntities(entityGID.groupID, out count); } public T QueryEntityView(EGID entityGID) where T : class, IEntityStruct diff --git a/Svelto.ECS/Extensions/Unity/GenericEntityDescriptorHolder.cs b/Svelto.ECS/Extensions/Unity/GenericEntityDescriptorHolder.cs index bf48b5e..78d6e1f 100644 --- a/Svelto.ECS/Extensions/Unity/GenericEntityDescriptorHolder.cs +++ b/Svelto.ECS/Extensions/Unity/GenericEntityDescriptorHolder.cs @@ -5,7 +5,7 @@ namespace Svelto.ECS UnityEngine.MonoBehaviour , IEntityDescriptorHolder where T: class, IEntityDescriptor, new() { - public EntityDescriptorInfo RetrieveDescriptorInfo() + public EntityDescriptorInfo RetrieveDescriptorInfo() { return EntityDescriptorTemplate.Info; } diff --git a/Svelto.ECS/IEntityDescriptorHolder.cs b/Svelto.ECS/IEntityDescriptorHolder.cs index 6b5dac5..785c5fb 100644 --- a/Svelto.ECS/IEntityDescriptorHolder.cs +++ b/Svelto.ECS/IEntityDescriptorHolder.cs @@ -2,6 +2,6 @@ namespace Svelto.ECS { public interface IEntityDescriptorHolder { - EntityDescriptorInfo RetrieveDescriptorInfo(); + EntityDescriptorInfo RetrieveDescriptorInfo() where T : IEntityDescriptor; } } \ No newline at end of file diff --git a/Svelto.ECS/IEntityFactory.cs b/Svelto.ECS/IEntityFactory.cs index 46cb2b3..aab3420 100644 --- a/Svelto.ECS/IEntityFactory.cs +++ b/Svelto.ECS/IEntityFactory.cs @@ -16,8 +16,8 @@ namespace Svelto.ECS /// /// /// - void PreallocateEntitySpace(int size) where T : class, IEntityDescriptor, new(); - void PreallocateEntitySpace(int groupID, int size) where T : class, IEntityDescriptor, new(); + void PreallocateEntitySpace(int size) where T : IEntityDescriptor, new(); + void PreallocateEntitySpace(int groupID, int size) where T : IEntityDescriptor, new(); /// /// The EntityDescriptor doesn't need to be ever instantiated. It just describes the Entity @@ -28,7 +28,7 @@ namespace Svelto.ECS /// /// /// - EntityStructInitializer BuildEntity(int entityID, object[] implementors) where T:class, IEntityDescriptor, new(); + EntityStructInitializer BuildEntity(int entityID, object[] implementors) where T:IEntityDescriptor, new(); /// @@ -41,8 +41,8 @@ namespace Svelto.ECS /// /// /// - EntityStructInitializer BuildEntity(int entityID, int groupID, object[] implementors) where T:class, IEntityDescriptor, new(); - EntityStructInitializer BuildEntity(EGID egid, object[] implementors) where T:class, IEntityDescriptor, new(); + EntityStructInitializer BuildEntity(int entityID, int groupID, object[] implementors) where T:IEntityDescriptor, new(); + EntityStructInitializer BuildEntity(EGID egid, object[] implementors) where T:IEntityDescriptor, new(); ///