public void Setup()
 {
     _groupA = new Group <MyTestEntity>(Matcher <MyTestEntity> .AllOf(CID.ComponentA));
     _entityWithAComponent1 = TestTools.CreateEntity().AddComponentA();
     _entityWithAComponent2 = TestTools.CreateEntity().AddComponentA();
     _didDispatch           = 0;
 }
Exemplo n.º 2
0
        public static MyTestEntity CreateEntity()
        {
            var entity = new MyTestEntity();

            entity.Initialize(0, CID.TotalComponents, new Stack <IComponent> [CID.TotalComponents]);
            return(entity);
        }
    /// <summary>
    /// Copies components on this entity at <paramref name="indices"/> in the <see cref="MyTestComponentsLookup"/> to
    /// <paramref name="copyToEntity"/>. If <paramref name="replaceExisting"/> is true any of the components that
    /// <paramref name="copyToEntity"/> has that this entity has will be replaced, otherwise they will be skipped.
    /// </summary>
    public void CopyTo(MyTestEntity copyToEntity, bool replaceExisting, params int[] indices)
    {
        for (var i = 0; i < indices.Length; ++i)
        {
            var index = indices[i];

            // Validate that the index is within range of the component lookup
            if (index < 0 && index >= MyTestComponentsLookup.TotalComponents)
            {
                const string OUT_OF_RANGE_WARNING =
                    "Component Index [{0}] is out of range for [{1}].";

                const string HINT = "Please ensure any CopyTo indices are valid.";

                throw new IndexOutOfLookupRangeException(
                          string.Format(OUT_OF_RANGE_WARNING, index, nameof(MyTestComponentsLookup)),
                          HINT);
            }

            if (!HasComponent(index))
            {
                continue;
            }

            if (!copyToEntity.HasComponent(index) || replaceExisting)
            {
                var component = GetComponent(index);
                copyToEntity.CopyComponentTo(component);
            }
        }
    }
 private void HandleUpdateEntityWithAComponent(MyTestEntity entity, IComponent component)
 {
     _groupA.UpdateEntity(
         entity,
         CID.ComponentA,
         Component.A,
         component);
 }
 public void Setup()
 {
     _ctx     = new MyTestContext();
     _entity  = _ctx.CreateEntity();
     _target  = _ctx.CreateEntity();
     _nameAge = new NameAgeComponent
     {
         name = "Max", age = 42
     };
 }
        public void PrimaryEntityIndexThrowsWhenAddingEntityForTheSameKey()
        {
            SetupActivatedPrimaryEntityIndex();

            var nameAgeComponent = new NameAgeComponent();

            nameAgeComponent.name = NAME;
            _entity = _context.CreateEntity();

            Assert.Throws <EntityIndexException>(() => _entity.AddComponent(CID.ComponentA, nameAgeComponent));
        }
Exemplo n.º 7
0
 public void Setup()
 {
     _context        = new MyTestContext();
     _defaultEntity  = TestTools.CreateEntity();
     _originalEntity = _context.CreateEntity();
     _targetEntity   = _context.CreateEntity();
     _nameAge        = new NameAgeComponent
     {
         name = "Max", age = 42
     };
     _didDispatch = 0;
 }
        public void ReactivatedPrimaryEntityIndexAddsNewEntities()
        {
            SetupReactivatedPrimaryEntityIndex();

            var nameAgeComponent = new NameAgeComponent();

            nameAgeComponent.name = "Jack";
            _entity = _context.CreateEntity();
            _entity.AddComponent(CID.ComponentA, nameAgeComponent);

            Assert.AreEqual(_entity, _primaryIndex.GetEntity("Jack"));
        }
Exemplo n.º 9
0
        private void SetupGroupEntities()
        {
            eAB1 = _defaultContext.CreateEntity();
            eAB1.AddComponentA();
            eAB1.AddComponentB();

            eAB2 = _defaultContext.CreateEntity();
            eAB2.AddComponentA();
            eAB2.AddComponentB();

            eA = _defaultContext.CreateEntity();
            eA.AddComponentA();
        }
Exemplo n.º 10
0
        private void AssertHasNotComponentA(MyTestEntity e)
        {
            var components = e.GetComponents();

            Assert.AreEqual(0, components.Length);

            var indices = e.GetComponentIndices();

            Assert.AreEqual(0, indices.Length);
            Assert.IsFalse(e.HasComponentA());
            Assert.IsFalse(e.HasComponents(_indicesA));
            Assert.IsFalse(e.HasAnyComponent(_indicesA));
        }
 static void AssertEntities(IReactiveSystemSpy system, MyTestEntity entity, int didExecute = 1)
 {
     if (entity == null)
     {
         Assert.AreEqual(0, system.DidExecute);
         Assert.IsNull(system.Entities);
     }
     else
     {
         Assert.AreEqual(didExecute, system.DidExecute);
         Assert.AreEqual(1, system.Entities.Length);
         Assert.Contains(entity, system.Entities);
     }
 }
    /// <summary>
    /// Copies all components on this entity to <paramref name="copyToEntity"/>; if <paramref name="replaceExisting"/>
    /// is true any of the components that <paramref name="copyToEntity"/> has that this entity has will be replaced,
    /// otherwise they will be skipped.
    /// </summary>
    public void CopyTo(MyTestEntity copyToEntity, bool replaceExisting)
    {
        for (var i = 0; i < MyTestComponentsLookup.TotalComponents; ++i)
        {
            if (!HasComponent(i))
            {
                continue;
            }

            if (!copyToEntity.HasComponent(i) || replaceExisting)
            {
                var component = GetComponent(i);
                copyToEntity.CopyComponentTo(component);
            }
        }
    }
        public void SetupMultipleKeyEntityIndex()
        {
            _context = new MyTestContext();
            _group   = _context.GetGroup(Matcher <MyTestEntity> .AllOf(CID.ComponentA));
            _index   = new EntityIndex <MyTestEntity, string>("TestIndex", _group, (e, c) =>
            {
                return(e == _entity1
                                        ? new[] { "1", "2" }
                                        : new[] { "2", "3" });
            });

            _entity1 = _context.CreateEntity();
            _entity1.AddComponentA();
            _entity2 = _context.CreateEntity();
            _entity2.AddComponentA();
        }
        public void SetupMultipleKeyPrimaryEntityIndex()
        {
            _context      = new MyTestContext();
            _group        = _context.GetGroup(Matcher <MyTestEntity> .AllOf(CID.ComponentA));
            _primaryIndex = new PrimaryEntityIndex <MyTestEntity, string>("TestIndex", _group, (e, c) =>
            {
                return(c is NameAgeComponent nameAge
                                        ? new[] { nameAge.name + "1", nameAge.name + "2" }
                                        : new[] { ((NameAgeComponent)e.GetComponent(CID.ComponentA)).name + "1", ((NameAgeComponent)e.GetComponent(CID.ComponentA)).name + "2" });
            });

            var nameAgeComponent = new NameAgeComponent();

            nameAgeComponent.name = NAME;
            _entity = _context.CreateEntity();
            _entity.AddComponent(CID.ComponentA, nameAgeComponent);
        }
        public void SetupActivatedSingleKeyEntityIndex()
        {
            _context = new MyTestContext();
            _group   = _context.GetGroup(Matcher <MyTestEntity> .AllOf(CID.ComponentA));
            _index   = new EntityIndex <MyTestEntity, string>("TestIndex", _group, (e, c) =>
            {
                return(c is NameAgeComponent nameAge
                                        ? nameAge.name
                                        : ((NameAgeComponent)e.GetComponent(CID.ComponentA)).name);
            });

            _nameAgeComponent      = new NameAgeComponent();
            _nameAgeComponent.name = NAME;
            _entity1 = _context.CreateEntity();
            _entity1.AddComponent(CID.ComponentA, _nameAgeComponent);
            _entity2 = _context.CreateEntity();
            _entity2.AddComponent(CID.ComponentA, _nameAgeComponent);
        }
        public void Setup()
        {
            _eA = TestTools.CreateEntity();
            _eA.AddComponentA();

            _eB = TestTools.CreateEntity();
            _eB.AddComponentB();

            _eC = TestTools.CreateEntity();
            _eC.AddComponentC();

            _eAb = TestTools.CreateEntity();
            _eAb.AddComponentA();
            _eAb.AddComponentB();

            _eAbc = TestTools.CreateEntity();
            _eAbc.AddComponentA();
            _eAbc.AddComponentB();
            _eAbc.AddComponentC();
        }
        public void SetupActivatedPrimaryEntityIndex()
        {
            _context      = new MyTestContext();
            _group        = _context.GetGroup(Matcher <MyTestEntity> .AllOf(MyTestComponentsLookup.ComponentA));
            _primaryIndex = new PrimaryEntityIndex <MyTestEntity, string>(
                "TestIndex",
                _group,
                (e, c) =>
            {
                return(c is NameAgeComponent nameAge
                                                ? nameAge.name
                                                : ((NameAgeComponent)e.GetComponent(MyTestComponentsLookup.ComponentA)).name);
            });

            var nameAgeComponent = new NameAgeComponent();

            nameAgeComponent.name = NAME;

            _entity = _context.CreateEntity();
            _entity.AddComponent(MyTestComponentsLookup.ComponentA, nameAgeComponent);
        }
        public void ReactiveSystemCollectsCreatedEntitiesInExecuteOnAdded()
        {
            SetupReactiveSystemAdded();

            var          e1 = CreateEntityAb();
            MyTestEntity e2 = null;

            _system.executeAction = entities =>
            {
                if (e2 == null)
                {
                    e2 = CreateEntityAb();
                }
            };

            _system.Execute();
            AssertEntities(_system, e1);

            _system.Execute();
            AssertEntities(_system, e2, 2);
        }
Exemplo n.º 19
0
        private void AssertHasComponentA(MyTestEntity e, IComponent componentA = null)
        {
            if (componentA == null)
            {
                componentA = Component.A;
            }

            Assert.AreEqual(componentA, e.GetComponentA());

            var components = e.GetComponents();

            Assert.AreEqual(1, components.Length);
            Assert.Contains(componentA, components);

            var indices = e.GetComponentIndices();

            Assert.AreEqual(1, indices.Length);
            Assert.Contains(MyTestComponentsLookup.ComponentA, indices);

            Assert.IsTrue(e.HasComponentA());
            Assert.IsTrue(e.HasComponents(_indicesA));
            Assert.IsTrue(e.HasAnyComponent(_indicesA));
        }
    /// <summary>
    /// Copies all components on this entity to <paramref name="copyToEntity"/>.
    /// </summary>
    public void CopyTo(MyTestEntity copyToEntity)
    {
        for (var i = 0; i < MyTestComponentsLookup.TotalComponents; ++i)
        {
            if (HasComponent(i))
            {
                if (copyToEntity.HasComponent(i))
                {
                    throw new EntityAlreadyHasComponentException(
                              i,
                              "Cannot copy component '" +
                              MyTestComponentsLookup.ComponentNames[i] +
                              "' to " +
                              this +
                              "!",
                              "If replacement is intended, please call CopyTo() with `replaceExisting` set to true.");
                }

                var component = GetComponent(i);
                copyToEntity.CopyComponentTo(component);
            }
        }
    }
Exemplo n.º 21
0
    /// <summary>
    /// Applies all components in the blueprint to <paramref name="entity"/>.
    /// </summary>
    /// <param name="entity"></param>
    public void ApplyToEntity(MyTestEntity entity)
    {
        for (var i = 0; i < _components.Count; i++)
        {
            var component = _components[i];
            if (_components[i] == null)
            {
                continue;
            }

            var index = MyTestComponentsLookup.GetComponentIndex(component);
            if (index != -1)
            {
                entity.CopyComponentTo(component);
            }
            else
            {
                Debug.LogWarningFormat(
                    JCMG.EntitasRedux.RuntimeConstants.COMPONENT_INDEX_DOES_NOT_EXIST_FOR_TYPE_FORMAT,
                    component.GetType(),
                    typeof(MyTestComponentsLookup));
            }
        }
    }
Exemplo n.º 22
0
 private void AssertContainsNot(MyTestEntity entity)
 {
     Assert.AreEqual(0, _groupA.Count);
     Assert.IsEmpty(_groupA.GetEntities());
     Assert.IsFalse(_groupA.ContainsEntity(entity));
 }
 public void Setup()
 {
     _context = new MyTestContext();
     _entity  = _context.CreateEntity();
 }
Exemplo n.º 24
0
 private void HandleAddEntityWithAComponent(MyTestEntity entity)
 {
     Handle(entity, MyTestComponentsLookup.ComponentA, entity.GetComponentA());
 }
Exemplo n.º 25
0
 private void HandleSilently(MyTestEntity entity)
 {
     _groupA.HandleEntitySilently(entity);
 }
Exemplo n.º 26
0
 public void Setup()
 {
     _context       = new MyTestContext();
     _defaultEntity = TestTools.CreateEntity();
     _didDispatch   = 0;
 }
Exemplo n.º 27
0
 private void Handle(MyTestEntity entity, int index, IComponent component)
 {
     _groupA.HandleEntity(entity, index, component);
 }
Exemplo n.º 28
0
 private void HandleRemoveEntityWithAComponent(MyTestEntity entity, IComponent component)
 {
     Handle(entity, CID.ComponentA, component);
 }
Exemplo n.º 29
0
 private void HandleAddEntityWithBComponent(MyTestEntity entity)
 {
     Handle(entity, CID.ComponentB, entity.GetComponentB());
 }