public void Setup() { _groupA = new Group <MyTestEntity>(Matcher <MyTestEntity> .AllOf(CID.ComponentA)); _entityWithAComponent1 = TestTools.CreateEntity().AddComponentA(); _entityWithAComponent2 = TestTools.CreateEntity().AddComponentA(); _didDispatch = 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)); }
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")); }
private void SetupGroupEntities() { eAB1 = _defaultContext.CreateEntity(); eAB1.AddComponentA(); eAB1.AddComponentB(); eAB2 = _defaultContext.CreateEntity(); eAB2.AddComponentA(); eAB2.AddComponentB(); eA = _defaultContext.CreateEntity(); eA.AddComponentA(); }
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); }
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); } } }
/// <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)); } } }
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(); }
private void HandleAddEntityWithAComponent(MyTestEntity entity) { Handle(entity, MyTestComponentsLookup.ComponentA, entity.GetComponentA()); }
private void HandleSilently(MyTestEntity entity) { _groupA.HandleEntitySilently(entity); }
public void Setup() { _context = new MyTestContext(); _defaultEntity = TestTools.CreateEntity(); _didDispatch = 0; }
private void Handle(MyTestEntity entity, int index, IComponent component) { _groupA.HandleEntity(entity, index, component); }
private void HandleRemoveEntityWithAComponent(MyTestEntity entity, IComponent component) { Handle(entity, CID.ComponentA, component); }
private void HandleAddEntityWithBComponent(MyTestEntity entity) { Handle(entity, CID.ComponentB, entity.GetComponentB()); }