diff --git a/Entitas/Entitas/CodeGenerator/Generators/ComponentsGenerator.cs b/Entitas/Entitas/CodeGenerator/Generators/ComponentsGenerator.cs index ab10abe60..1f763ddc7 100644 --- a/Entitas/Entitas/CodeGenerator/Generators/ComponentsGenerator.cs +++ b/Entitas/Entitas/CodeGenerator/Generators/ComponentsGenerator.cs @@ -115,8 +115,7 @@ public class ComponentsGenerator : IComponentCodeGenerator { static string addAddMethods(ComponentInfo componentInfo) { return componentInfo.isSingletonComponent ? string.Empty : buildString(componentInfo, @" public Entity Add$Name($typedArgs) { - var componentPool = GetComponentPool($Ids.$Name); - var component = ($Type)(componentPool.Count > 0 ? componentPool.Pop() : new $Type()); + var component = CreateComponent<$Type>($Ids.$Name); $assign return AddComponent($Ids.$Name, component); } @@ -126,8 +125,7 @@ public class ComponentsGenerator : IComponentCodeGenerator { static string addReplaceMethods(ComponentInfo componentInfo) { return componentInfo.isSingletonComponent ? string.Empty : buildString(componentInfo, @" public Entity Replace$Name($typedArgs) { - var componentPool = GetComponentPool($Ids.$Name); - var component = ($Type)(componentPool.Count > 0 ? componentPool.Pop() : new $Type()); + var component = CreateComponent<$Type>($Ids.$Name); $assign ReplaceComponent($Ids.$Name, component); return this; diff --git a/Entitas/Entitas/Entity.cs b/Entitas/Entitas/Entity.cs index 71cd5be6d..1884d3ab6 100644 --- a/Entitas/Entitas/Entity.cs +++ b/Entitas/Entitas/Entity.cs @@ -257,7 +257,13 @@ public partial class Entity { /// Returns a new or reusable component from the componentPool for the specified component index. public IComponent CreateComponent(int index, Type type) { var componentPool = GetComponentPool(index); - return (IComponent)(componentPool.Count > 0 ? componentPool.Pop() : Activator.CreateInstance(type));; + return (IComponent)(componentPool.Count > 0 ? componentPool.Pop() : Activator.CreateInstance(type)); + } + + /// Returns a new or reusable component from the componentPool for the specified component index. + public T CreateComponent(int index) where T : new() { + var componentPool = GetComponentPool(index); + return componentPool.Count > 0 ? (T)componentPool.Pop() : new T(); } internal void destroy() { diff --git a/Entitas/Entitas/Serialization/PublicMemberInfo.cs b/Entitas/Entitas/Serialization/PublicMemberInfo.cs index 3850f3762..47f2afc8b 100644 --- a/Entitas/Entitas/Serialization/PublicMemberInfo.cs +++ b/Entitas/Entitas/Serialization/PublicMemberInfo.cs @@ -71,6 +71,12 @@ public static class PublicMemberInfoExtension { return clone; } + public static T PublicMemberClone(this object obj) where T : new() { + var clone = new T(); + CopyPublicMemberValues(obj, clone); + return clone; + } + public static void CopyPublicMemberValues(this object obj, object target) { var type = obj.GetType(); var fieldInfos = getFieldInfos(type); diff --git a/PerformanceTests/PerformanceTests.csproj b/PerformanceTests/PerformanceTests.csproj index d7a221776..987d4ba50 100644 --- a/PerformanceTests/PerformanceTests.csproj +++ b/PerformanceTests/PerformanceTests.csproj @@ -75,6 +75,8 @@ + + @@ -86,6 +88,7 @@ + diff --git a/PerformanceTests/PerformanceTests/Misc/NewInstanceActivator.cs b/PerformanceTests/PerformanceTests/Misc/NewInstanceActivator.cs new file mode 100644 index 000000000..ca1c52d9d --- /dev/null +++ b/PerformanceTests/PerformanceTests/Misc/NewInstanceActivator.cs @@ -0,0 +1,22 @@ +using System; + +public class NewInstanceActivator : IPerformanceTest { + const int n = 1000000; + + Type _type; + + public void Before() { + _type = typeof(ComponentA); + } + + public void Run() { + for (int i = 0; i < n; i++) { + createInstance(); + } + } + + void createInstance() { + Activator.CreateInstance(_type); + } +} + diff --git a/PerformanceTests/PerformanceTests/Misc/NewInstanceT.cs b/PerformanceTests/PerformanceTests/Misc/NewInstanceT.cs new file mode 100644 index 000000000..073fdb71b --- /dev/null +++ b/PerformanceTests/PerformanceTests/Misc/NewInstanceT.cs @@ -0,0 +1,17 @@ +public class NewInstanceT : IPerformanceTest { + const int n = 1000000; + + public void Before() { + } + + public void Run() { + for (int i = 0; i < n; i++) { + createInstance(); + } + } + + void createInstance() where T : new() { + new T(); + } +} + diff --git a/PerformanceTests/Program.cs b/PerformanceTests/Program.cs index 511fcfdae..b2f792bd6 100644 --- a/PerformanceTests/Program.cs +++ b/PerformanceTests/Program.cs @@ -26,6 +26,9 @@ class MainClass { run(); run(); + +// run(); +// run(); // run(); // // run(); @@ -75,6 +78,8 @@ class MainClass { // MatcherEquals: 171 ms // MatcherGetHashCode: 17 ms // + // NewInstanceT: 393 ms + // NewInstanceActivator: 542 ms // IterateHashetToArray: 456 ms // IterateHashSet: 774 ms // diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/AnimatingComponentGeneratedExtension.cs b/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/AnimatingComponentGeneratedExtension.cs deleted file mode 100644 index 01085a028..000000000 --- a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/AnimatingComponentGeneratedExtension.cs +++ /dev/null @@ -1,65 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Entitas.CodeGenerator.ComponentsGenerator. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ -namespace Entitas { - public partial class Entity { - static readonly AnimatingComponent animatingComponent = new AnimatingComponent(); - - public bool isAnimating { - get { return HasComponent(ComponentIds.Animating); } - set { - if (value != isAnimating) { - if (value) { - AddComponent(ComponentIds.Animating, animatingComponent); - } else { - RemoveComponent(ComponentIds.Animating); - } - } - } - } - - public Entity IsAnimating(bool value) { - isAnimating = value; - return this; - } - } - - public partial class Pool { - public Entity animatingEntity { get { return GetGroup(Matcher.Animating).GetSingleEntity(); } } - - public bool isAnimating { - get { return animatingEntity != null; } - set { - var entity = animatingEntity; - if (value != (entity != null)) { - if (value) { - CreateEntity().isAnimating = true; - } else { - DestroyEntity(entity); - } - } - } - } - } - - public partial class Matcher { - static IMatcher _matcherAnimating; - - public static IMatcher Animating { - get { - if (_matcherAnimating == null) { - var matcher = (Matcher)Matcher.AllOf(ComponentIds.Animating); - matcher.componentNames = ComponentIds.componentNames; - _matcherAnimating = matcher; - } - - return _matcherAnimating; - } - } - } -} diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/ComponentIds.cs b/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/ComponentIds.cs deleted file mode 100644 index 4610b643c..000000000 --- a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/ComponentIds.cs +++ /dev/null @@ -1,63 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Entitas.CodeGenerator.ComponentIndicesGenerator. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ -public static class ComponentIds { - public const int Animating = 0; - public const int ComponentA = 1; - public const int ComponentB = 2; - public const int ComponentC = 3; - public const int ComponentD = 4; - public const int ComponentE = 5; - public const int ComponentF = 6; - public const int CustomPrefix = 7; - public const int DontGenerate = 8; - public const int Movable = 9; - public const int NameAge = 10; - public const int Namespace = 11; - public const int Person = 12; - public const int Some = 13; - public const int User = 14; - - public const int TotalComponents = 15; - - public static readonly string[] componentNames = { - "Animating", - "ComponentA", - "ComponentB", - "ComponentC", - "ComponentD", - "ComponentE", - "ComponentF", - "CustomPrefix", - "DontGenerate", - "Movable", - "NameAge", - "Namespace", - "Person", - "Some", - "User" - }; - - public static readonly System.Type[] componentTypes = { - typeof(AnimatingComponent), - typeof(ComponentA), - typeof(ComponentB), - typeof(ComponentC), - typeof(ComponentD), - typeof(ComponentE), - typeof(ComponentF), - typeof(CustomPrefixComponent), - typeof(DontGenerateComponent), - typeof(MovableComponent), - typeof(NameAgeComponent), - typeof(My.Namespace.NamespaceComponent), - typeof(PersonComponent), - typeof(SomeComponent), - typeof(UserComponent) - }; -} \ No newline at end of file diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/MovableComponentGeneratedExtension.cs b/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/MovableComponentGeneratedExtension.cs deleted file mode 100644 index e4158c5b5..000000000 --- a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/MovableComponentGeneratedExtension.cs +++ /dev/null @@ -1,47 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Entitas.CodeGenerator.ComponentsGenerator. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ -namespace Entitas { - public partial class Entity { - static readonly MovableComponent movableComponent = new MovableComponent(); - - public bool isMovable { - get { return HasComponent(ComponentIds.Movable); } - set { - if (value != isMovable) { - if (value) { - AddComponent(ComponentIds.Movable, movableComponent); - } else { - RemoveComponent(ComponentIds.Movable); - } - } - } - } - - public Entity IsMovable(bool value) { - isMovable = value; - return this; - } - } - - public partial class Matcher { - static IMatcher _matcherMovable; - - public static IMatcher Movable { - get { - if (_matcherMovable == null) { - var matcher = (Matcher)Matcher.AllOf(ComponentIds.Movable); - matcher.componentNames = ComponentIds.componentNames; - _matcherMovable = matcher; - } - - return _matcherMovable; - } - } - } -} diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/PersonComponentGeneratedExtension.cs b/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/PersonComponentGeneratedExtension.cs deleted file mode 100644 index c54d2386a..000000000 --- a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/PersonComponentGeneratedExtension.cs +++ /dev/null @@ -1,52 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Entitas.CodeGenerator.ComponentsGenerator. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ -namespace Entitas { - public partial class Entity { - public PersonComponent person { get { return (PersonComponent)GetComponent(ComponentIds.Person); } } - - public bool hasPerson { get { return HasComponent(ComponentIds.Person); } } - - public Entity AddPerson(int newAge, string newName) { - var componentPool = GetComponentPool(ComponentIds.Person); - var component = (PersonComponent)(componentPool.Count > 0 ? componentPool.Pop() : new PersonComponent()); - component.age = newAge; - component.name = newName; - return AddComponent(ComponentIds.Person, component); - } - - public Entity ReplacePerson(int newAge, string newName) { - var componentPool = GetComponentPool(ComponentIds.Person); - var component = (PersonComponent)(componentPool.Count > 0 ? componentPool.Pop() : new PersonComponent()); - component.age = newAge; - component.name = newName; - ReplaceComponent(ComponentIds.Person, component); - return this; - } - - public Entity RemovePerson() { - return RemoveComponent(ComponentIds.Person); - } - } - - public partial class Matcher { - static IMatcher _matcherPerson; - - public static IMatcher Person { - get { - if (_matcherPerson == null) { - var matcher = (Matcher)Matcher.AllOf(ComponentIds.Person); - matcher.componentNames = ComponentIds.componentNames; - _matcherPerson = matcher; - } - - return _matcherPerson; - } - } - } -} diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/Pools.cs b/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/Pools.cs deleted file mode 100644 index 94bd1f970..000000000 --- a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/Pools.cs +++ /dev/null @@ -1,40 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Entitas.CodeGenerator.PoolsGenerator. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ -using Entitas; - -public static class Pools { - - static Pool[] _allPools; - - public static Pool[] allPools { - get { - if (_allPools == null) { - _allPools = new [] { pool }; - } - - return _allPools; - } - } - - static Pool _pool; - - public static Pool pool { - get { - if (_pool == null) { - _pool = new Pool(ComponentIds.TotalComponents, 0, new PoolMetaData("Pool", ComponentIds.componentNames, ComponentIds.componentTypes)); - #if (!ENTITAS_DISABLE_VISUAL_DEBUGGING && UNITY_EDITOR) - var poolObserver = new Entitas.Unity.VisualDebugging.PoolObserver(_pool); - UnityEngine.Object.DontDestroyOnLoad(poolObserver.entitiesContainer); - #endif - } - - return _pool; - } - } -} \ No newline at end of file diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/UserComponentGeneratedExtension.cs b/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/UserComponentGeneratedExtension.cs deleted file mode 100644 index b51033dfe..000000000 --- a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/UserComponentGeneratedExtension.cs +++ /dev/null @@ -1,85 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Entitas.CodeGenerator.ComponentsGenerator. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ -namespace Entitas { - public partial class Entity { - public UserComponent user { get { return (UserComponent)GetComponent(ComponentIds.User); } } - - public bool hasUser { get { return HasComponent(ComponentIds.User); } } - - public Entity AddUser(System.DateTime newTimestamp, bool newIsLoggedIn) { - var componentPool = GetComponentPool(ComponentIds.User); - var component = (UserComponent)(componentPool.Count > 0 ? componentPool.Pop() : new UserComponent()); - component.timestamp = newTimestamp; - component.isLoggedIn = newIsLoggedIn; - return AddComponent(ComponentIds.User, component); - } - - public Entity ReplaceUser(System.DateTime newTimestamp, bool newIsLoggedIn) { - var componentPool = GetComponentPool(ComponentIds.User); - var component = (UserComponent)(componentPool.Count > 0 ? componentPool.Pop() : new UserComponent()); - component.timestamp = newTimestamp; - component.isLoggedIn = newIsLoggedIn; - ReplaceComponent(ComponentIds.User, component); - return this; - } - - public Entity RemoveUser() { - return RemoveComponent(ComponentIds.User); - } - } - - public partial class Pool { - public Entity userEntity { get { return GetGroup(Matcher.User).GetSingleEntity(); } } - - public UserComponent user { get { return userEntity.user; } } - - public bool hasUser { get { return userEntity != null; } } - - public Entity SetUser(System.DateTime newTimestamp, bool newIsLoggedIn) { - if (hasUser) { - throw new EntitasException("Could not set user!\n" + this + " already has an entity with UserComponent!", - "You should check if the pool already has a userEntity before setting it or use pool.ReplaceUser()."); - } - var entity = CreateEntity(); - entity.AddUser(newTimestamp, newIsLoggedIn); - return entity; - } - - public Entity ReplaceUser(System.DateTime newTimestamp, bool newIsLoggedIn) { - var entity = userEntity; - if (entity == null) { - entity = SetUser(newTimestamp, newIsLoggedIn); - } else { - entity.ReplaceUser(newTimestamp, newIsLoggedIn); - } - - return entity; - } - - public void RemoveUser() { - DestroyEntity(userEntity); - } - } - - public partial class Matcher { - static IMatcher _matcherUser; - - public static IMatcher User { - get { - if (_matcherUser == null) { - var matcher = (Matcher)Matcher.AllOf(ComponentIds.User); - matcher.componentNames = ComponentIds.componentNames; - _matcherUser = matcher; - } - - return _matcherUser; - } - } - } -} diff --git a/Tests/Tests/Entitas/Blueprints/describe_ComponentBlueprint.cs b/Tests/Tests/Entitas/Blueprints/describe_ComponentBlueprint.cs new file mode 100644 index 000000000..8bffe71db --- /dev/null +++ b/Tests/Tests/Entitas/Blueprints/describe_ComponentBlueprint.cs @@ -0,0 +1,59 @@ +using System.Collections.Generic; +using Entitas; +using Entitas.Serialization; +using My.Namespace; +using NSpec; + +class describe_ComponentBlueprint : nspec { + + void when_componentBlueprint() { + + it["creates a ComponentBlueprint from a component without public members"] = () => { + var component = new NamespaceComponent(); + var blueprint = new ComponentBlueprint(component); + + blueprint.name.should_be(component.GetType().FullName); + }; + + it["creates a ComponentBlueprint from a component with public members"] = () => { + var component = new ComponentWithFieldsAndProperties(); + component.publicField = "publicFieldValue"; + component.publicProperty = "publicPropertyValue"; + + var blueprint = new ComponentBlueprint(component); + + blueprint.name.should_be(component.GetType().FullName); + blueprint.properties.Count.should_be(2); + blueprint.properties["publicField"].should_be("publicFieldValue"); + blueprint.properties["publicProperty"].should_be("publicPropertyValue"); + }; + + it["ignores null value"] = () => { + var component = new ComponentWithFieldsAndProperties(); + var blueprint = new ComponentBlueprint(component); + + blueprint.name.should_be(component.GetType().FullName); + blueprint.properties.Count.should_be(2); + + blueprint.properties["publicField"].should_be(string.Empty); + blueprint.properties["publicProperty"].should_be(string.Empty); + }; + } +} + +public struct ComponentBlueprint { + + public readonly string name; + public readonly Dictionary properties; + + public ComponentBlueprint(IComponent component) { + name = component.GetType().FullName; + properties = new Dictionary(); + + var infos = component.GetPublicMemberInfos(); + for (int i = 0, infosLength = infos.Length; i < infosLength; i++) { + var info = infos[i]; + properties.Add(info.name, info.value != null ? info.value.ToString() : string.Empty); + } + } +} \ No newline at end of file diff --git a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Components/OtherPoolComponent.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Components/OtherPoolComponent.cs index e9af264cf..834ef56f3 100644 --- a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Components/OtherPoolComponent.cs +++ b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Components/OtherPoolComponent.cs @@ -34,16 +34,14 @@ public partial class Entity { public bool hasOtherPool { get { return HasComponent(OtherComponentIds.OtherPool); } } public Entity AddOtherPool(System.DateTime newTimestamp, bool newIsLoggedIn) { - var componentPool = GetComponentPool(OtherComponentIds.OtherPool); - var component = (OtherPoolComponent)(componentPool.Count > 0 ? componentPool.Pop() : new OtherPoolComponent()); + var component = CreateComponent(OtherComponentIds.OtherPool); component.timestamp = newTimestamp; component.isLoggedIn = newIsLoggedIn; return AddComponent(OtherComponentIds.OtherPool, component); } public Entity ReplaceOtherPool(System.DateTime newTimestamp, bool newIsLoggedIn) { - var componentPool = GetComponentPool(OtherComponentIds.OtherPool); - var component = (OtherPoolComponent)(componentPool.Count > 0 ? componentPool.Pop() : new OtherPoolComponent()); + var component = CreateComponent(OtherComponentIds.OtherPool); component.timestamp = newTimestamp; component.isLoggedIn = newIsLoggedIn; ReplaceComponent(OtherComponentIds.OtherPool, component); diff --git a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Components/PersonComponent.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Components/PersonComponent.cs index 2f7b32483..308382656 100644 --- a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Components/PersonComponent.cs +++ b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Components/PersonComponent.cs @@ -30,16 +30,14 @@ public partial class Entity { public bool hasPerson { get { return HasComponent(ComponentIds.Person); } } public Entity AddPerson(int newAge, string newName) { - var componentPool = GetComponentPool(ComponentIds.Person); - var component = (PersonComponent)(componentPool.Count > 0 ? componentPool.Pop() : new PersonComponent()); + var component = CreateComponent(ComponentIds.Person); component.age = newAge; component.name = newName; return AddComponent(ComponentIds.Person, component); } public Entity ReplacePerson(int newAge, string newName) { - var componentPool = GetComponentPool(ComponentIds.Person); - var component = (PersonComponent)(componentPool.Count > 0 ? componentPool.Pop() : new PersonComponent()); + var component = CreateComponent(ComponentIds.Person); component.age = newAge; component.name = newName; ReplaceComponent(ComponentIds.Person, component); diff --git a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Components/UserComponent.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Components/UserComponent.cs index 5c63cb808..df9f86dbc 100644 --- a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Components/UserComponent.cs +++ b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Components/UserComponent.cs @@ -5,7 +5,7 @@ [SingleEntity] public class UserComponent : IComponent { - public static ComponentInfo componentInfo { + public static ComponentInfo componentInfo { get { return new ComponentInfo( typeof(UserComponent).ToCompilableString(), @@ -32,16 +32,14 @@ public partial class Entity { public bool hasUser { get { return HasComponent(ComponentIds.User); } } public Entity AddUser(System.DateTime newTimestamp, bool newIsLoggedIn) { - var componentPool = GetComponentPool(ComponentIds.User); - var component = (UserComponent)(componentPool.Count > 0 ? componentPool.Pop() : new UserComponent()); + var component = CreateComponent(ComponentIds.User); component.timestamp = newTimestamp; component.isLoggedIn = newIsLoggedIn; return AddComponent(ComponentIds.User, component); } public Entity ReplaceUser(System.DateTime newTimestamp, bool newIsLoggedIn) { - var componentPool = GetComponentPool(ComponentIds.User); - var component = (UserComponent)(componentPool.Count > 0 ? componentPool.Pop() : new UserComponent()); + var component = CreateComponent(ComponentIds.User); component.timestamp = newTimestamp; component.isLoggedIn = newIsLoggedIn; ReplaceComponent(ComponentIds.User, component); diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/AComponentGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/AComponentGeneratedExtension.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/AComponentGeneratedExtension.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/AComponentGeneratedExtension.cs diff --git a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/AnimatingComponentGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/AnimatingComponentGeneratedExtension.cs index 3ec933c92..01085a028 100644 --- a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/AnimatingComponentGeneratedExtension.cs +++ b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/AnimatingComponentGeneratedExtension.cs @@ -1,3 +1,11 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Entitas.CodeGenerator.ComponentsGenerator. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ namespace Entitas { public partial class Entity { static readonly AnimatingComponent animatingComponent = new AnimatingComponent(); diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/BComponentGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/BComponentGeneratedExtension.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/BComponentGeneratedExtension.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/BComponentGeneratedExtension.cs diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/CComponentGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/CComponentGeneratedExtension.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/CComponentGeneratedExtension.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/CComponentGeneratedExtension.cs diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/ComponentAGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentAGeneratedExtension.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/ComponentAGeneratedExtension.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentAGeneratedExtension.cs diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/ComponentBGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentBGeneratedExtension.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/ComponentBGeneratedExtension.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentBGeneratedExtension.cs diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/ComponentCGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentCGeneratedExtension.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/ComponentCGeneratedExtension.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentCGeneratedExtension.cs diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/ComponentDGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentDGeneratedExtension.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/ComponentDGeneratedExtension.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentDGeneratedExtension.cs diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/ComponentEGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentEGeneratedExtension.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/ComponentEGeneratedExtension.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentEGeneratedExtension.cs diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/ComponentFGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentFGeneratedExtension.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/ComponentFGeneratedExtension.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentFGeneratedExtension.cs diff --git a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentIds.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentIds.cs index 5d0c230bf..50e53500a 100644 --- a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentIds.cs +++ b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentIds.cs @@ -1,3 +1,11 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Entitas.CodeGenerator.ComponentIndicesGenerator. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ public static class ComponentIds { public const int Animating = 0; public const int ComponentA = 1; @@ -6,15 +14,19 @@ public static class ComponentIds { public const int ComponentD = 4; public const int ComponentE = 5; public const int ComponentF = 6; - public const int CustomPrefix = 7; - public const int DontGenerate = 8; - public const int Movable = 9; - public const int Namespace = 10; - public const int Person = 11; - public const int Some = 12; - public const int User = 13; + public const int ComponentWithFields = 7; + public const int ComponentWithFieldsAndProperties = 8; + public const int ComponentWithProperties = 9; + public const int CustomPrefix = 10; + public const int DontGenerate = 11; + public const int Movable = 12; + public const int NameAge = 13; + public const int Namespace = 14; + public const int Person = 15; + public const int Some = 16; + public const int User = 17; - public const int TotalComponents = 14; + public const int TotalComponents = 18; public static readonly string[] componentNames = { "Animating", @@ -24,9 +36,13 @@ public static class ComponentIds { "ComponentD", "ComponentE", "ComponentF", + "ComponentWithFields", + "ComponentWithFieldsAndProperties", + "ComponentWithProperties", "CustomPrefix", "DontGenerate", "Movable", + "NameAge", "Namespace", "Person", "Some", @@ -41,9 +57,13 @@ public static class ComponentIds { typeof(ComponentD), typeof(ComponentE), typeof(ComponentF), + typeof(ComponentWithFields), + typeof(ComponentWithFieldsAndProperties), + typeof(ComponentWithProperties), typeof(CustomPrefixComponent), typeof(DontGenerateComponent), typeof(MovableComponent), + typeof(NameAgeComponent), typeof(My.Namespace.NamespaceComponent), typeof(PersonComponent), typeof(SomeComponent), diff --git a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentWithFieldsAndPropertiesGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentWithFieldsAndPropertiesGeneratedExtension.cs new file mode 100644 index 000000000..14e2c13d6 --- /dev/null +++ b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentWithFieldsAndPropertiesGeneratedExtension.cs @@ -0,0 +1,50 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Entitas.CodeGenerator.ComponentsGenerator. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +namespace Entitas { + public partial class Entity { + public ComponentWithFieldsAndProperties componentWithFieldsAndProperties { get { return (ComponentWithFieldsAndProperties)GetComponent(ComponentIds.ComponentWithFieldsAndProperties); } } + + public bool hasComponentWithFieldsAndProperties { get { return HasComponent(ComponentIds.ComponentWithFieldsAndProperties); } } + + public Entity AddComponentWithFieldsAndProperties(string newPublicField, string newPublicProperty) { + var component = CreateComponent(ComponentIds.ComponentWithFieldsAndProperties); + component.publicField = newPublicField; + component.publicProperty = newPublicProperty; + return AddComponent(ComponentIds.ComponentWithFieldsAndProperties, component); + } + + public Entity ReplaceComponentWithFieldsAndProperties(string newPublicField, string newPublicProperty) { + var component = CreateComponent(ComponentIds.ComponentWithFieldsAndProperties); + component.publicField = newPublicField; + component.publicProperty = newPublicProperty; + ReplaceComponent(ComponentIds.ComponentWithFieldsAndProperties, component); + return this; + } + + public Entity RemoveComponentWithFieldsAndProperties() { + return RemoveComponent(ComponentIds.ComponentWithFieldsAndProperties); + } + } + + public partial class Matcher { + static IMatcher _matcherComponentWithFieldsAndProperties; + + public static IMatcher ComponentWithFieldsAndProperties { + get { + if (_matcherComponentWithFieldsAndProperties == null) { + var matcher = (Matcher)Matcher.AllOf(ComponentIds.ComponentWithFieldsAndProperties); + matcher.componentNames = ComponentIds.componentNames; + _matcherComponentWithFieldsAndProperties = matcher; + } + + return _matcherComponentWithFieldsAndProperties; + } + } + } +} diff --git a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentWithFieldsGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentWithFieldsGeneratedExtension.cs new file mode 100644 index 000000000..7826e4aee --- /dev/null +++ b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentWithFieldsGeneratedExtension.cs @@ -0,0 +1,48 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Entitas.CodeGenerator.ComponentsGenerator. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +namespace Entitas { + public partial class Entity { + public ComponentWithFields componentWithFields { get { return (ComponentWithFields)GetComponent(ComponentIds.ComponentWithFields); } } + + public bool hasComponentWithFields { get { return HasComponent(ComponentIds.ComponentWithFields); } } + + public Entity AddComponentWithFields(string newPublicField) { + var component = CreateComponent(ComponentIds.ComponentWithFields); + component.publicField = newPublicField; + return AddComponent(ComponentIds.ComponentWithFields, component); + } + + public Entity ReplaceComponentWithFields(string newPublicField) { + var component = CreateComponent(ComponentIds.ComponentWithFields); + component.publicField = newPublicField; + ReplaceComponent(ComponentIds.ComponentWithFields, component); + return this; + } + + public Entity RemoveComponentWithFields() { + return RemoveComponent(ComponentIds.ComponentWithFields); + } + } + + public partial class Matcher { + static IMatcher _matcherComponentWithFields; + + public static IMatcher ComponentWithFields { + get { + if (_matcherComponentWithFields == null) { + var matcher = (Matcher)Matcher.AllOf(ComponentIds.ComponentWithFields); + matcher.componentNames = ComponentIds.componentNames; + _matcherComponentWithFields = matcher; + } + + return _matcherComponentWithFields; + } + } + } +} diff --git a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentWithPropertiesGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentWithPropertiesGeneratedExtension.cs new file mode 100644 index 000000000..51b6cdce7 --- /dev/null +++ b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/ComponentWithPropertiesGeneratedExtension.cs @@ -0,0 +1,48 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Entitas.CodeGenerator.ComponentsGenerator. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +namespace Entitas { + public partial class Entity { + public ComponentWithProperties componentWithProperties { get { return (ComponentWithProperties)GetComponent(ComponentIds.ComponentWithProperties); } } + + public bool hasComponentWithProperties { get { return HasComponent(ComponentIds.ComponentWithProperties); } } + + public Entity AddComponentWithProperties(string newPublicProperty) { + var component = CreateComponent(ComponentIds.ComponentWithProperties); + component.publicProperty = newPublicProperty; + return AddComponent(ComponentIds.ComponentWithProperties, component); + } + + public Entity ReplaceComponentWithProperties(string newPublicProperty) { + var component = CreateComponent(ComponentIds.ComponentWithProperties); + component.publicProperty = newPublicProperty; + ReplaceComponent(ComponentIds.ComponentWithProperties, component); + return this; + } + + public Entity RemoveComponentWithProperties() { + return RemoveComponent(ComponentIds.ComponentWithProperties); + } + } + + public partial class Matcher { + static IMatcher _matcherComponentWithProperties; + + public static IMatcher ComponentWithProperties { + get { + if (_matcherComponentWithProperties == null) { + var matcher = (Matcher)Matcher.AllOf(ComponentIds.ComponentWithProperties); + matcher.componentNames = ComponentIds.componentNames; + _matcherComponentWithProperties = matcher; + } + + return _matcherComponentWithProperties; + } + } + } +} diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/CustomPrefixComponentGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/CustomPrefixComponentGeneratedExtension.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/CustomPrefixComponentGeneratedExtension.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/CustomPrefixComponentGeneratedExtension.cs diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/DComponentGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/DComponentGeneratedExtension.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/DComponentGeneratedExtension.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/DComponentGeneratedExtension.cs diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/EComponentGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/EComponentGeneratedExtension.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/EComponentGeneratedExtension.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/EComponentGeneratedExtension.cs diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/FComponentGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/FComponentGeneratedExtension.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/FComponentGeneratedExtension.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/FComponentGeneratedExtension.cs diff --git a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/MovableComponentGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/MovableComponentGeneratedExtension.cs index e4541b8a3..e4158c5b5 100644 --- a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/MovableComponentGeneratedExtension.cs +++ b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/MovableComponentGeneratedExtension.cs @@ -1,3 +1,11 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Entitas.CodeGenerator.ComponentsGenerator. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ namespace Entitas { public partial class Entity { static readonly MovableComponent movableComponent = new MovableComponent(); diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/My.Namespace.NamespaceComponentGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/My.Namespace.NamespaceComponentGeneratedExtension.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/My.Namespace.NamespaceComponentGeneratedExtension.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/My.Namespace.NamespaceComponentGeneratedExtension.cs diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/NameAgeComponentGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/NameAgeComponentGeneratedExtension.cs similarity index 81% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/NameAgeComponentGeneratedExtension.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/NameAgeComponentGeneratedExtension.cs index b34f461d7..db195b42c 100644 --- a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/NameAgeComponentGeneratedExtension.cs +++ b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/NameAgeComponentGeneratedExtension.cs @@ -13,16 +13,14 @@ public partial class Entity { public bool hasNameAge { get { return HasComponent(ComponentIds.NameAge); } } public Entity AddNameAge(string newName, int newAge) { - var componentPool = GetComponentPool(ComponentIds.NameAge); - var component = (NameAgeComponent)(componentPool.Count > 0 ? componentPool.Pop() : new NameAgeComponent()); + var component = CreateComponent(ComponentIds.NameAge); component.name = newName; component.age = newAge; return AddComponent(ComponentIds.NameAge, component); } public Entity ReplaceNameAge(string newName, int newAge) { - var componentPool = GetComponentPool(ComponentIds.NameAge); - var component = (NameAgeComponent)(componentPool.Count > 0 ? componentPool.Pop() : new NameAgeComponent()); + var component = CreateComponent(ComponentIds.NameAge); component.name = newName; component.age = newAge; ReplaceComponent(ComponentIds.NameAge, component); diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/OtherComponentIds.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/OtherComponentIds.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/OtherComponentIds.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/OtherComponentIds.cs diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/OtherPoolComponentGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/OtherPoolComponentGeneratedExtension.cs similarity index 88% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/OtherPoolComponentGeneratedExtension.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/OtherPoolComponentGeneratedExtension.cs index a37593bfa..580ce0499 100644 --- a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/OtherPoolComponentGeneratedExtension.cs +++ b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/OtherPoolComponentGeneratedExtension.cs @@ -15,16 +15,14 @@ public partial class Entity { public bool hasOtherPool { get { return HasComponent(OtherComponentIds.OtherPool); } } public Entity AddOtherPool(System.DateTime newTimestamp, bool newIsLoggedIn) { - var componentPool = GetComponentPool(OtherComponentIds.OtherPool); - var component = (OtherPoolComponent)(componentPool.Count > 0 ? componentPool.Pop() : new OtherPoolComponent()); + var component = CreateComponent(OtherComponentIds.OtherPool); component.timestamp = newTimestamp; component.isLoggedIn = newIsLoggedIn; return AddComponent(OtherComponentIds.OtherPool, component); } public Entity ReplaceOtherPool(System.DateTime newTimestamp, bool newIsLoggedIn) { - var componentPool = GetComponentPool(OtherComponentIds.OtherPool); - var component = (OtherPoolComponent)(componentPool.Count > 0 ? componentPool.Pop() : new OtherPoolComponent()); + var component = CreateComponent(OtherComponentIds.OtherPool); component.timestamp = newTimestamp; component.isLoggedIn = newIsLoggedIn; ReplaceComponent(OtherComponentIds.OtherPool, component); diff --git a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/PersonComponentGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/PersonComponentGeneratedExtension.cs index ca845e3a9..e4100a834 100644 --- a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/PersonComponentGeneratedExtension.cs +++ b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/PersonComponentGeneratedExtension.cs @@ -1,3 +1,11 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Entitas.CodeGenerator.ComponentsGenerator. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ namespace Entitas { public partial class Entity { public PersonComponent person { get { return (PersonComponent)GetComponent(ComponentIds.Person); } } @@ -5,16 +13,14 @@ public partial class Entity { public bool hasPerson { get { return HasComponent(ComponentIds.Person); } } public Entity AddPerson(int newAge, string newName) { - var componentPool = GetComponentPool(ComponentIds.Person); - var component = (PersonComponent)(componentPool.Count > 0 ? componentPool.Pop() : new PersonComponent()); + var component = CreateComponent(ComponentIds.Person); component.age = newAge; component.name = newName; return AddComponent(ComponentIds.Person, component); } public Entity ReplacePerson(int newAge, string newName) { - var componentPool = GetComponentPool(ComponentIds.Person); - var component = (PersonComponent)(componentPool.Count > 0 ? componentPool.Pop() : new PersonComponent()); + var component = CreateComponent(ComponentIds.Person); component.age = newAge; component.name = newName; ReplaceComponent(ComponentIds.Person, component); diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/PoolAComponentIds.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/PoolAComponentIds.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/PoolAComponentIds.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/PoolAComponentIds.cs diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/PoolBComponentIds.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/PoolBComponentIds.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/PoolBComponentIds.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/PoolBComponentIds.cs diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/PoolCComponentIds.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/PoolCComponentIds.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/PoolCComponentIds.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/PoolCComponentIds.cs diff --git a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/Pools.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/Pools.cs index 1151cf70f..94bd1f970 100644 --- a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/Pools.cs +++ b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/Pools.cs @@ -1,3 +1,11 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Entitas.CodeGenerator.PoolsGenerator. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ using Entitas; public static class Pools { @@ -7,27 +15,26 @@ public static class Pools { public static Pool[] allPools { get { if (_allPools == null) { - _allPools = new [] { test }; + _allPools = new [] { pool }; } return _allPools; } } - #pragma warning disable - static Pool _test; + static Pool _pool; - public static Pool test { + public static Pool pool { get { - if (_test == null) { -// _test = new Pool(TestComponentIds.TotalComponents, 0, new PoolMetaData("Test Pool", TestComponentIds.componentNames)); -// #if (!ENTITAS_DISABLE_VISUAL_DEBUGGING && UNITY_EDITOR) -// var poolObserver = new Entitas.Unity.VisualDebugging.PoolObserver(_test, TestComponentIds.componentTypes); -// UnityEngine.Object.DontDestroyOnLoad(poolObserver.entitiesContainer); -// #endif + if (_pool == null) { + _pool = new Pool(ComponentIds.TotalComponents, 0, new PoolMetaData("Pool", ComponentIds.componentNames, ComponentIds.componentTypes)); + #if (!ENTITAS_DISABLE_VISUAL_DEBUGGING && UNITY_EDITOR) + var poolObserver = new Entitas.Unity.VisualDebugging.PoolObserver(_pool); + UnityEngine.Object.DontDestroyOnLoad(poolObserver.entitiesContainer); + #endif } - return _test; + return _pool; } } } \ No newline at end of file diff --git a/Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/SomeComponentGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/SomeComponentGeneratedExtension.cs similarity index 100% rename from Tests/Tests/Entitas.CodeGenerator/Fixtures/Generated/SomeComponentGeneratedExtension.cs rename to Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/SomeComponentGeneratedExtension.cs diff --git a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/UserComponentGeneratedExtension.cs b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/UserComponentGeneratedExtension.cs index c072314a9..5ad85349b 100644 --- a/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/UserComponentGeneratedExtension.cs +++ b/Tests/Tests/Entitas/CodeGenerator/Fixtures/Generated/UserComponentGeneratedExtension.cs @@ -1,3 +1,11 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Entitas.CodeGenerator.ComponentsGenerator. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ namespace Entitas { public partial class Entity { public UserComponent user { get { return (UserComponent)GetComponent(ComponentIds.User); } } @@ -5,16 +13,14 @@ public partial class Entity { public bool hasUser { get { return HasComponent(ComponentIds.User); } } public Entity AddUser(System.DateTime newTimestamp, bool newIsLoggedIn) { - var componentPool = GetComponentPool(ComponentIds.User); - var component = (UserComponent)(componentPool.Count > 0 ? componentPool.Pop() : new UserComponent()); + var component = CreateComponent(ComponentIds.User); component.timestamp = newTimestamp; component.isLoggedIn = newIsLoggedIn; return AddComponent(ComponentIds.User, component); } public Entity ReplaceUser(System.DateTime newTimestamp, bool newIsLoggedIn) { - var componentPool = GetComponentPool(ComponentIds.User); - var component = (UserComponent)(componentPool.Count > 0 ? componentPool.Pop() : new UserComponent()); + var component = CreateComponent(ComponentIds.User); component.timestamp = newTimestamp; component.isLoggedIn = newIsLoggedIn; ReplaceComponent(ComponentIds.User, component);