From a2a0851eebaaf76651615e1fa1bdfeb940661b1f Mon Sep 17 00:00:00 2001 From: sebas77 Date: Fri, 15 Jun 2018 11:32:34 +0100 Subject: [PATCH] Reworking the IEntityDescriptorHolder to avoid confusion --- Svelto.ECS/EnginesRoot.Entities.cs | 14 +++--- .../EnginesRoot.GenericEntityFactory.cs | 12 ++--- Svelto.ECS/EntityDescriptor.cs | 36 +++++++------- Svelto.ECS/EntityFactory.cs | 20 ++++---- Svelto.ECS/EntityViewBuilder.cs | 8 ++-- Svelto.ECS/EntityViewUtility.cs | 10 ++-- .../Unity/GenericEntityDescriptorHolder.cs | 4 +- Svelto.ECS/GenericEntityDescriptor.cs | 48 +++++++++---------- Svelto.ECS/IEntityDescriptorHolder.cs | 2 +- Svelto.ECS/IEntityFactory.cs | 6 +-- Svelto.ECS/IEntityView.cs | 2 +- Svelto.ECS/IEntityViewBuilder.cs | 2 +- 12 files changed, 82 insertions(+), 82 deletions(-) diff --git a/Svelto.ECS/EnginesRoot.Entities.cs b/Svelto.ECS/EnginesRoot.Entities.cs index c022223..60d9978 100644 --- a/Svelto.ECS/EnginesRoot.Entities.cs +++ b/Svelto.ECS/EnginesRoot.Entities.cs @@ -41,19 +41,19 @@ namespace Svelto.ECS { var dic = EntityFactory.BuildGroupedEntityViews(entityID, _groupedEntityToAdd.current, - EntityDescriptorTemplate.Info.entityViewsToBuild, + EntityDescriptorTemplate.descriptor.EntityToBuild, implementors); return new EntityStructInitializer(entityID, dic); } EntityStructInitializer BuildEntity(EGID entityID, - IEntityViewBuilder[] entityViewsToBuild, + IEntityBuilder[] entityToBuild, object[] implementors) { var dic = EntityFactory.BuildGroupedEntityViews(entityID, _groupedEntityToAdd.current, - entityViewsToBuild, + entityToBuild, implementors); return new EntityStructInitializer(entityID, dic); @@ -63,7 +63,7 @@ namespace Svelto.ECS void Preallocate(int groupID, int size) where T : IEntityDescriptor, new() { - var entityViewsToBuild = EntityDescriptorTemplate.Info.entityViewsToBuild; + var entityViewsToBuild = EntityDescriptorTemplate.descriptor.EntityToBuild; var count = entityViewsToBuild.Length; //reserve space in the database @@ -95,12 +95,12 @@ namespace Svelto.ECS } if (group.TryGetValue(_typeEntityInfoView, out dbList) == false) - group[_typeEntityInfoView] = EntityViewBuilder.Preallocate(ref dbList, size); + group[_typeEntityInfoView] = EntityBuilder.Preallocate(ref dbList, size); else dbList.AddCapacity(size); if (@groupBuffer.TryGetValue(_typeEntityInfoView, out dbList) == false) - @groupBuffer[_typeEntityInfoView] = EntityViewBuilder.Preallocate(ref dbList, size); + @groupBuffer[_typeEntityInfoView] = EntityBuilder.Preallocate(ref dbList, size); else dbList.AddCapacity(size); } @@ -182,7 +182,7 @@ namespace Svelto.ECS if (groupedEntityViewsTyped.TryGetValue(_typeEntityInfoView, out toSafeDic) == false) groupedEntityViewsTyped[_typeEntityInfoView] = toSafeDic = entityInfoViewDictionary.Create(); - EntityViewBuilder.MoveEntityView(entityegid, toGroupID, entityInfoViewDictionary, toSafeDic); + EntityBuilder.MoveEntityView(entityegid, toGroupID, entityInfoViewDictionary, toSafeDic); } EGID SwapFirstEntityGroup(int fromGroupID, int toGroupId) diff --git a/Svelto.ECS/EnginesRoot.GenericEntityFactory.cs b/Svelto.ECS/EnginesRoot.GenericEntityFactory.cs index 9c0a983..a2ec87a 100644 --- a/Svelto.ECS/EnginesRoot.GenericEntityFactory.cs +++ b/Svelto.ECS/EnginesRoot.GenericEntityFactory.cs @@ -32,19 +32,19 @@ namespace Svelto.ECS return _weakEngine.Target.BuildEntity(egid, implementors); } - public EntityStructInitializer BuildEntity(int entityID, IEntityViewBuilder[] entityViewsToBuild, object[] implementors) + public EntityStructInitializer BuildEntity(int entityID, IEntityBuilder[] entityToBuild, object[] implementors) { - return _weakEngine.Target.BuildEntity(new EGID(entityID), entityViewsToBuild, implementors); + return _weakEngine.Target.BuildEntity(new EGID(entityID), entityToBuild, implementors); } - public EntityStructInitializer BuildEntity(EGID egid, IEntityViewBuilder[] entityViewsToBuild, object[] implementors) + public EntityStructInitializer BuildEntity(EGID egid, IEntityBuilder[] entityToBuild, object[] implementors) { - return _weakEngine.Target.BuildEntity(egid, entityViewsToBuild, implementors); + return _weakEngine.Target.BuildEntity(egid, entityToBuild, implementors); } - public EntityStructInitializer BuildEntity(int entityID, int groupID, IEntityViewBuilder[] entityViewsToBuild, object[] implementors) + public EntityStructInitializer BuildEntity(int entityID, int groupID, IEntityBuilder[] entityToBuild, object[] implementors) { - return _weakEngine.Target.BuildEntity(new EGID(entityID, groupID), entityViewsToBuild, implementors); + return _weakEngine.Target.BuildEntity(new EGID(entityID, groupID), entityToBuild, implementors); } public void PreallocateEntitySpace(int size) where T : IEntityDescriptor, new() diff --git a/Svelto.ECS/EntityDescriptor.cs b/Svelto.ECS/EntityDescriptor.cs index f0bc7b0..059d5a4 100644 --- a/Svelto.ECS/EntityDescriptor.cs +++ b/Svelto.ECS/EntityDescriptor.cs @@ -5,50 +5,50 @@ namespace Svelto.ECS { public interface IEntityDescriptor { - IEntityViewBuilder[] entityViewsToBuild { get; } + IEntityBuilder[] EntityToBuild { get; } } public class EntityDescriptor : IEntityDescriptor { - protected EntityDescriptor(IEntityViewBuilder[] entityViewsToBuild) + protected EntityDescriptor(IEntityBuilder[] entityToBuild) { - this.entityViewsToBuild = entityViewsToBuild; + this.EntityToBuild = entityToBuild; } - public IEntityViewBuilder[] entityViewsToBuild { get; } + public IEntityBuilder[] EntityToBuild { get; } } public static class EntityDescriptorTemplate where TType : IEntityDescriptor, new() { - public static readonly EntityDescriptorInfo Info = new EntityDescriptorInfo(new TType()); + public static readonly EntityDescriptor descriptor = new EntityDescriptor(new TType()); } - public struct DynamicEntityDescriptorInfo where TType : class, IEntityDescriptor, new() + public struct DynamicEntityDescriptorInfo:IEntityDescriptor where TType : IEntityDescriptor, new() { - public readonly IEntityViewBuilder[] entityViewsToBuild; - - public DynamicEntityDescriptorInfo(FasterList extraEntityViews) + public DynamicEntityDescriptorInfo(FasterList extraEntityViews) { DBC.ECS.Check.Require(extraEntityViews.Count > 0, "don't use a DynamicEntityDescriptorInfo if you don't need to use extra EntityViews"); - var defaultEntityViewsToBuild = EntityDescriptorTemplate.Info.entityViewsToBuild; + var defaultEntityViewsToBuild = EntityDescriptorTemplate.descriptor.EntityToBuild; var length = defaultEntityViewsToBuild.Length; - entityViewsToBuild = new IEntityViewBuilder[length + extraEntityViews.Count]; + EntityToBuild = new IEntityBuilder[length + extraEntityViews.Count]; - Array.Copy(defaultEntityViewsToBuild, 0, entityViewsToBuild, 0, length); - Array.Copy(extraEntityViews.ToArrayFast(), 0, entityViewsToBuild, length, extraEntityViews.Count); + Array.Copy(defaultEntityViewsToBuild, 0, EntityToBuild, 0, length); + Array.Copy(extraEntityViews.ToArrayFast(), 0, EntityToBuild, length, extraEntityViews.Count); } + + public IEntityBuilder[] EntityToBuild { get; } } - public struct EntityDescriptorInfo where TType : IEntityDescriptor + public struct EntityDescriptor:IEntityDescriptor where TType : IEntityDescriptor { - public readonly IEntityViewBuilder[] entityViewsToBuild; - - internal EntityDescriptorInfo(TType descriptor) + internal EntityDescriptor(TType descriptor) { - entityViewsToBuild = descriptor.entityViewsToBuild; + EntityToBuild = descriptor.EntityToBuild; } + + public IEntityBuilder[] EntityToBuild { get; } } } diff --git a/Svelto.ECS/EntityFactory.cs b/Svelto.ECS/EntityFactory.cs index f824c9a..2f498a8 100644 --- a/Svelto.ECS/EntityFactory.cs +++ b/Svelto.ECS/EntityFactory.cs @@ -7,12 +7,12 @@ namespace Svelto.ECS.Internal { internal static Dictionary BuildGroupedEntityViews(EGID egid, Dictionary> groupEntityViewsByType, - IEntityViewBuilder[] entityViewsToBuild, + IEntityBuilder[] entityToBuild, object[] implementors) { var @group = FetchEntityViewGroup(egid.groupID, groupEntityViewsByType); - BuildEntityViewsAndAddToGroup(egid, group, entityViewsToBuild, implementors); + BuildEntityViewsAndAddToGroup(egid, group, entityToBuild, implementors); return group; } @@ -32,25 +32,25 @@ namespace Svelto.ECS.Internal static void BuildEntityViewsAndAddToGroup(EGID entityID, Dictionary @group, - IEntityViewBuilder[] entityViewsToBuild, + IEntityBuilder[] entityToBuild, object[] implementors) { - var count = entityViewsToBuild.Length; + var count = entityToBuild.Length; for (var index = 0; index < count; ++index) { - var entityViewBuilder = entityViewsToBuild[index]; + var entityViewBuilder = entityToBuild[index]; var entityViewType = entityViewBuilder.GetEntityType(); BuildEntityView(entityID, @group, entityViewType, entityViewBuilder, implementors); } - _viewBuilder._initializer = new EntityInfoView {entityToBuild = entityViewsToBuild}; - BuildEntityView(entityID, @group, _viewType, _viewBuilder, null); + Builder._initializer = new EntityInfoView {entityToBuild = entityToBuild}; + BuildEntityView(entityID, @group, _viewType, Builder, null); } static void BuildEntityView(EGID entityID, Dictionary @group, - Type entityViewType, IEntityViewBuilder entityViewBuilder, object[] implementors) + Type entityViewType, IEntityBuilder entityBuilder, object[] implementors) { ITypeSafeDictionary safeDictionary; @@ -60,13 +60,13 @@ namespace Svelto.ECS.Internal //passing the undefined entityViewsByType inside the entityViewBuilder will allow //it to be created with the correct type and casted back to the undefined list. //that's how the list will be eventually of the target type. - entityViewBuilder.BuildEntityViewAndAddToList(ref safeDictionary, entityID, implementors); + entityBuilder.BuildEntityViewAndAddToList(ref safeDictionary, entityID, implementors); if (entityViewsPoolWillBeCreated) @group.Add(entityViewType, safeDictionary); } - static readonly EntityViewBuilder _viewBuilder = new EntityViewBuilder(); + static readonly EntityBuilder Builder = new EntityBuilder(); static readonly Type _viewType = typeof(EntityInfoView); } } \ No newline at end of file diff --git a/Svelto.ECS/EntityViewBuilder.cs b/Svelto.ECS/EntityViewBuilder.cs index cc57327..e57828c 100644 --- a/Svelto.ECS/EntityViewBuilder.cs +++ b/Svelto.ECS/EntityViewBuilder.cs @@ -9,9 +9,9 @@ using Svelto.Utilities; namespace Svelto.ECS { - public class EntityViewBuilder : IEntityViewBuilder where T : IEntityStruct, new() + public class EntityBuilder : IEntityBuilder where T : IEntityStruct, new() { - public EntityViewBuilder() + public EntityBuilder() { _initializer = default(T); @@ -69,7 +69,7 @@ namespace Svelto.ECS } } - ITypeSafeDictionary IEntityViewBuilder.Preallocate(ref ITypeSafeDictionary dictionary, int size) + ITypeSafeDictionary IEntityBuilder.Preallocate(ref ITypeSafeDictionary dictionary, int size) { return Preallocate(ref dictionary, size); } @@ -89,7 +89,7 @@ namespace Svelto.ECS return ENTITY_VIEW_TYPE; } - void IEntityViewBuilder.MoveEntityView(EGID entityID, int toGroupID, ITypeSafeDictionary fromSafeDic, ITypeSafeDictionary toSafeDic) + void IEntityBuilder.MoveEntityView(EGID entityID, int toGroupID, ITypeSafeDictionary fromSafeDic, ITypeSafeDictionary toSafeDic) { MoveEntityView(entityID, toGroupID, fromSafeDic, toSafeDic); } diff --git a/Svelto.ECS/EntityViewUtility.cs b/Svelto.ECS/EntityViewUtility.cs index fb421eb..1fe591b 100644 --- a/Svelto.ECS/EntityViewUtility.cs +++ b/Svelto.ECS/EntityViewUtility.cs @@ -6,7 +6,7 @@ using Svelto.Utilities; static class EntityViewUtility { - public static void FillEntityView(this IEntityViewBuilder entityViewBuilder + public static void FillEntityView(this IEntityBuilder entityBuilder , ref T entityView , FasterList>> entityViewBlazingFastReflection , object[] implementors @@ -20,7 +20,7 @@ static class EntityViewUtility .NoVirt.ToArrayFast(entityViewBlazingFastReflection, out count); #if DEBUG && !PROFILER if (count == 0) - throw new Exception(NO_COMPONENTS_EXCEPTION.FastConcat("Type ", entityDescriptorName, " entityView ", entityViewBuilder.GetEntityType().ToString())); + throw new Exception(NO_COMPONENTS_EXCEPTION.FastConcat("Type ", entityDescriptorName, " entityView ", entityBuilder.GetEntityType().ToString())); #endif for (var index = 0; index < implementors.Length; index++) { @@ -52,7 +52,7 @@ static class EntityViewUtility #if DEBUG && !PROFILER else { - Utility.Console.LogError(NULL_IMPLEMENTOR_ERROR.FastConcat("Type ", entityDescriptorName, " entityView ", entityViewBuilder.GetEntityType().ToString())); + Utility.Console.LogError(NULL_IMPLEMENTOR_ERROR.FastConcat("Type ", entityDescriptorName, " entityView ", entityBuilder.GetEntityType().ToString())); } #endif } @@ -72,7 +72,7 @@ static class EntityViewUtility { var e = new Exception(NOT_FOUND_EXCEPTION + " Component Type: " + fieldType.Name + " - EntityView: " + - entityViewBuilder.GetEntityType().Name + " - EntityDescriptor " + entityDescriptorName); + entityBuilder.GetEntityType().Name + " - EntityDescriptor " + entityDescriptorName); throw e; } @@ -83,7 +83,7 @@ static class EntityViewUtility " implementor: ", component.implementorType.ToString()) + " - EntityView: " + - entityViewBuilder.GetEntityType().Name + " - EntityDescriptor " + entityDescriptorName); + entityBuilder.GetEntityType().Name + " - EntityDescriptor " + entityDescriptorName); #endif #if DEBUG && !PROFILER fieldSetter.Value(ref entityView, component.implementorType); diff --git a/Svelto.ECS/Extensions/Unity/GenericEntityDescriptorHolder.cs b/Svelto.ECS/Extensions/Unity/GenericEntityDescriptorHolder.cs index 1add583..ca32c7e 100644 --- a/Svelto.ECS/Extensions/Unity/GenericEntityDescriptorHolder.cs +++ b/Svelto.ECS/Extensions/Unity/GenericEntityDescriptorHolder.cs @@ -5,9 +5,9 @@ namespace Svelto.ECS UnityEngine.MonoBehaviour , IEntityDescriptorHolder where T: IEntityDescriptor, new() { - public EntityDescriptorInfo RetrieveDescriptorInfo() where T : IEntityDescriptor, new() + public IEntityBuilder[] GetEntitiesToBuild() { - return EntityDescriptorTemplate.Info; + return EntityDescriptorTemplate.descriptor.EntityToBuild; } } } diff --git a/Svelto.ECS/GenericEntityDescriptor.cs b/Svelto.ECS/GenericEntityDescriptor.cs index e0e60e6..e0b7c9a 100644 --- a/Svelto.ECS/GenericEntityDescriptor.cs +++ b/Svelto.ECS/GenericEntityDescriptor.cs @@ -4,15 +4,15 @@ { static GenericEntityDescriptor() { - entityViewBuilders = new IEntityViewBuilder[] { new EntityViewBuilder() }; + EntityBuilders = new IEntityBuilder[] { new EntityBuilder() }; } - public IEntityViewBuilder[] entityViewsToBuild + public IEntityBuilder[] EntityToBuild { - get { return entityViewBuilders; } + get { return EntityBuilders; } } - static readonly IEntityViewBuilder[] entityViewBuilders; + static readonly IEntityBuilder[] EntityBuilders; } public abstract class GenericEntityDescriptor : IEntityDescriptor where T : IEntityStruct, new() @@ -20,15 +20,15 @@ { static GenericEntityDescriptor() { - entityViewBuilders = new IEntityViewBuilder[] {new EntityViewBuilder(), new EntityViewBuilder()}; + EntityBuilders = new IEntityBuilder[] {new EntityBuilder(), new EntityBuilder()}; } - public IEntityViewBuilder[] entityViewsToBuild + public IEntityBuilder[] EntityToBuild { - get { return entityViewBuilders; } + get { return EntityBuilders; } } - static readonly IEntityViewBuilder[] entityViewBuilders; + static readonly IEntityBuilder[] EntityBuilders; } public abstract class GenericEntityDescriptor : IEntityDescriptor where T : IEntityStruct, new() @@ -37,15 +37,15 @@ { static GenericEntityDescriptor() { - entityViewBuilders = new IEntityViewBuilder[] {new EntityViewBuilder(), new EntityViewBuilder(), new EntityViewBuilder()}; + EntityBuilders = new IEntityBuilder[] {new EntityBuilder(), new EntityBuilder(), new EntityBuilder()}; } - public IEntityViewBuilder[] entityViewsToBuild + public IEntityBuilder[] EntityToBuild { - get { return entityViewBuilders; } + get { return EntityBuilders; } } - static readonly IEntityViewBuilder[] entityViewBuilders; + static readonly IEntityBuilder[] EntityBuilders; } public abstract class GenericEntityDescriptor : IEntityDescriptor where T : IEntityStruct, new() @@ -55,15 +55,15 @@ { static GenericEntityDescriptor() { - entityViewBuilders = new IEntityViewBuilder[] {new EntityViewBuilder(), new EntityViewBuilder(), new EntityViewBuilder(), new EntityViewBuilder()}; + EntityBuilders = new IEntityBuilder[] {new EntityBuilder(), new EntityBuilder(), new EntityBuilder(), new EntityBuilder()}; } - public IEntityViewBuilder[] entityViewsToBuild + public IEntityBuilder[] EntityToBuild { - get { return entityViewBuilders; } + get { return EntityBuilders; } } - static readonly IEntityViewBuilder[] entityViewBuilders; + static readonly IEntityBuilder[] EntityBuilders; } public abstract class GenericEntityDescriptor : IEntityDescriptor where T : IEntityStruct, new() @@ -74,15 +74,15 @@ { static GenericEntityDescriptor() { - entityViewBuilders = new IEntityViewBuilder[] {new EntityViewBuilder(), new EntityViewBuilder(), new EntityViewBuilder(), new EntityViewBuilder(), new EntityViewBuilder()}; + EntityBuilders = new IEntityBuilder[] {new EntityBuilder(), new EntityBuilder(), new EntityBuilder(), new EntityBuilder(), new EntityBuilder()}; } - public IEntityViewBuilder[] entityViewsToBuild + public IEntityBuilder[] EntityToBuild { - get { return entityViewBuilders; } + get { return EntityBuilders; } } - static readonly IEntityViewBuilder[] entityViewBuilders; + static readonly IEntityBuilder[] EntityBuilders; } public abstract class GenericEntityDescriptor : IEntityDescriptor where T : IEntityStruct, new() @@ -94,14 +94,14 @@ { static GenericEntityDescriptor() { - entityViewBuilders = new IEntityViewBuilder[] {new EntityViewBuilder(), new EntityViewBuilder(), new EntityViewBuilder(), new EntityViewBuilder(), new EntityViewBuilder(), new EntityViewBuilder()}; + EntityBuilders = new IEntityBuilder[] {new EntityBuilder(), new EntityBuilder(), new EntityBuilder(), new EntityBuilder(), new EntityBuilder(), new EntityBuilder()}; } - public IEntityViewBuilder[] entityViewsToBuild + public IEntityBuilder[] EntityToBuild { - get { return entityViewBuilders; } + get { return EntityBuilders; } } - static readonly IEntityViewBuilder[] entityViewBuilders; + static readonly IEntityBuilder[] EntityBuilders; } } diff --git a/Svelto.ECS/IEntityDescriptorHolder.cs b/Svelto.ECS/IEntityDescriptorHolder.cs index 0dace60..8ba960a 100644 --- a/Svelto.ECS/IEntityDescriptorHolder.cs +++ b/Svelto.ECS/IEntityDescriptorHolder.cs @@ -2,6 +2,6 @@ namespace Svelto.ECS { public interface IEntityDescriptorHolder { - EntityDescriptorInfo RetrieveDescriptorInfo() where T : IEntityDescriptor, new(); + IEntityBuilder[] GetEntitiesToBuild(); } } \ No newline at end of file diff --git a/Svelto.ECS/IEntityFactory.cs b/Svelto.ECS/IEntityFactory.cs index aab3420..0af53d1 100644 --- a/Svelto.ECS/IEntityFactory.cs +++ b/Svelto.ECS/IEntityFactory.cs @@ -53,8 +53,8 @@ namespace Svelto.ECS /// /// /// - EntityStructInitializer BuildEntity(int entityID, int groupID, IEntityViewBuilder[] entityViewsToBuild, object[] implementors); - EntityStructInitializer BuildEntity(int entityID, IEntityViewBuilder[] entityViewsToBuild, object[] implementors); - EntityStructInitializer BuildEntity(EGID egid, IEntityViewBuilder[] entityViewsToBuild, object[] implementors); + EntityStructInitializer BuildEntity(int entityID, int groupID, IEntityBuilder[] entityToBuild, object[] implementors); + EntityStructInitializer BuildEntity(int entityID, IEntityBuilder[] entityToBuild, object[] implementors); + EntityStructInitializer BuildEntity(EGID egid, IEntityBuilder[] entityToBuild, object[] implementors); } } diff --git a/Svelto.ECS/IEntityView.cs b/Svelto.ECS/IEntityView.cs index 7707b7b..50847ee 100644 --- a/Svelto.ECS/IEntityView.cs +++ b/Svelto.ECS/IEntityView.cs @@ -31,7 +31,7 @@ namespace Svelto.ECS { public EGID ID { get; set; } - public IEntityViewBuilder[] entityToBuild; + public IEntityBuilder[] entityToBuild; } public static class EntityView where T: IEntityStruct, new() diff --git a/Svelto.ECS/IEntityViewBuilder.cs b/Svelto.ECS/IEntityViewBuilder.cs index e52433f..db73201 100644 --- a/Svelto.ECS/IEntityViewBuilder.cs +++ b/Svelto.ECS/IEntityViewBuilder.cs @@ -3,7 +3,7 @@ using Svelto.ECS.Internal; namespace Svelto.ECS { - public interface IEntityViewBuilder + public interface IEntityBuilder { void BuildEntityViewAndAddToList(ref ITypeSafeDictionary dictionary, EGID entityID, object[] implementors); ITypeSafeDictionary Preallocate(ref ITypeSafeDictionary dictionary, int size);