all component reads use ComponentMessage now
							parent
							
								
									a42123f58d
								
							
						
					
					
						commit
						3deff94dfe
					
				|  | @ -161,7 +161,7 @@ namespace Encompass | |||
|                 throw new IllegalReadException("Engine {0} tried to read undeclared Component {1}", GetType().Name, typeof(TComponent).Name); | ||||
|             } | ||||
| 
 | ||||
|             return componentManager.GetComponentsByEntityAndType<TComponent>(entity.ID); | ||||
|             return ReadMessages<ComponentMessage<TComponent>>().Where((message) => message.entity == entity).Select((message) => (message.componentID, message.component)); | ||||
|         } | ||||
| 
 | ||||
|         protected ValueTuple<Guid, TComponent> GetComponent<TComponent>(Entity entity) where TComponent : struct, IComponent | ||||
|  | @ -176,7 +176,7 @@ namespace Encompass | |||
|                 throw new IllegalReadException("Engine {0} tried to read undeclared Component {1}", GetType().Name, typeof(TComponent).Name); | ||||
|             } | ||||
| 
 | ||||
|             return messageManager.GetMessagesByType<ComponentMessage<TComponent>>().Where((message) => message.entity == entity).Any(); | ||||
|             return ReadMessages<ComponentMessage<TComponent>>().Where((message) => message.entity == entity).Any(); | ||||
|         } | ||||
| 
 | ||||
|         internal void UpdateComponentInWorld<TComponent>(Guid componentID, TComponent newComponent) where TComponent : struct, IComponent | ||||
|  | @ -241,7 +241,7 @@ namespace Encompass | |||
|                 throw new IllegalReadException("Engine {0} tried to read undeclared Message {1}", GetType().Name, typeof(TMessage).Name); | ||||
|             } | ||||
| 
 | ||||
|             return messageManager.GetMessagesByType<TMessage>().Any(); | ||||
|             return ReadMessages<TMessage>().Any(); | ||||
|         } | ||||
| 
 | ||||
|         protected bool SomeComponent<TComponent>() where TComponent : struct, IComponent | ||||
|  | @ -251,7 +251,7 @@ namespace Encompass | |||
|                 throw new IllegalReadException("Engine {0} tried to read undeclared Component {1}", GetType().Name, typeof(TComponent).Name); | ||||
|             } | ||||
| 
 | ||||
|             return componentManager.GetActiveComponentsByType<TComponent>().Any(); | ||||
|             return ReadMessages<ComponentMessage<TComponent>>().Any(); | ||||
|         } | ||||
| 
 | ||||
|         protected void Destroy(Guid entityID) | ||||
|  |  | |||
|  | @ -24,20 +24,6 @@ namespace Tests | |||
|         static IEnumerable<(Guid, MockComponent)> gottenMockComponentIDPairs = Enumerable.Empty<(Guid, MockComponent)>(); | ||||
|         static (Guid, MockComponent) gottenMockComponentIDPair; | ||||
| 
 | ||||
|         [Reads(typeof(EntityMessage), typeof(MockComponent))] | ||||
|         class GetMockComponentsEngine : Engine | ||||
|         { | ||||
|             public override void Update(double dt) | ||||
|             { | ||||
|                 gottenMockComponentIDPairs = Enumerable.Empty<(Guid, MockComponent)>(); | ||||
| 
 | ||||
|                 foreach (var entityMessage in ReadMessages<EntityMessage>()) | ||||
|                 { | ||||
|                     gottenMockComponentIDPairs = GetComponents<MockComponent>(entityMessage.entity); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         [Reads(typeof(EntityMessage), typeof(MockComponent))] | ||||
|         class GetMockComponentEngine : Engine | ||||
|         { | ||||
|  | @ -166,12 +152,51 @@ namespace Tests | |||
|             world.Update(0.01); | ||||
|         } | ||||
| 
 | ||||
|         [Reads(typeof(EntityMessage), typeof(MockComponent))] | ||||
|         class GetMockComponentsEngine : Engine | ||||
|         { | ||||
|             private Entity entity; | ||||
|             private Guid componentAID; | ||||
|             private Guid componentBID; | ||||
|             private Guid componentCID; | ||||
|             private MockComponent componentA; | ||||
|             private MockComponent componentB; | ||||
|             private MockComponent componentC; | ||||
| 
 | ||||
|             public GetMockComponentsEngine( | ||||
|                 Entity entity, | ||||
|                 Guid componentAID, | ||||
|                 MockComponent componentA, | ||||
|                 Guid componentBID, | ||||
|                 MockComponent componentB, | ||||
|                 Guid componentCID, | ||||
|                 MockComponent componentC | ||||
|             ) { | ||||
|                 this.entity = entity; | ||||
|                 this.componentAID = componentAID; | ||||
|                 this.componentA = componentA; | ||||
|                 this.componentBID = componentBID; | ||||
|                 this.componentB = componentB; | ||||
|                 this.componentCID = componentCID; | ||||
|                 this.componentC = componentC; | ||||
|             } | ||||
| 
 | ||||
|             public override void Update(double dt) | ||||
|             { | ||||
|                 foreach (var entityMessage in ReadMessages<EntityMessage>()) | ||||
|                 { | ||||
|                     var results = GetComponents<MockComponent>(entityMessage.entity); | ||||
|                     results.Should().Contain((componentAID, componentA)); | ||||
|                     results.Should().Contain((componentBID, componentB)); | ||||
|                     results.Should().Contain((componentCID, componentC)); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         [Test] | ||||
|         public void GetComponents() | ||||
|         { | ||||
|             var worldBuilder = new WorldBuilder(); | ||||
|             worldBuilder.AddEngine(new GetMockComponentsEngine()); | ||||
| 
 | ||||
|             var entity = worldBuilder.CreateEntity(); | ||||
| 
 | ||||
|             MockComponent mockComponentA; | ||||
|  | @ -190,6 +215,16 @@ namespace Tests | |||
|             var componentBID = worldBuilder.AddComponent(entity, mockComponentB); | ||||
|             var componentCID = worldBuilder.AddComponent(entity, mockComponentC); | ||||
| 
 | ||||
|             worldBuilder.AddEngine(new GetMockComponentsEngine(                 | ||||
|                 entity, | ||||
|                 componentAID, | ||||
|                 mockComponentA, | ||||
|                 componentBID, | ||||
|                 mockComponentB, | ||||
|                 componentCID, | ||||
|                 mockComponentC | ||||
|             )); | ||||
| 
 | ||||
|             EntityMessage entityMessage; | ||||
|             entityMessage.entity = entity; | ||||
|             worldBuilder.EmitMessage(entityMessage); | ||||
|  | @ -197,10 +232,6 @@ namespace Tests | |||
|             var world = worldBuilder.Build(); | ||||
| 
 | ||||
|             world.Update(0.01); | ||||
| 
 | ||||
|             gottenMockComponentIDPairs.Should().Contain((componentAID, mockComponentA)); | ||||
|             gottenMockComponentIDPairs.Should().Contain((componentBID, mockComponentB)); | ||||
|             gottenMockComponentIDPairs.Should().Contain((componentCID, mockComponentC)); | ||||
|         } | ||||
| 
 | ||||
|         [Test] | ||||
|  | @ -422,13 +453,6 @@ namespace Tests | |||
|             public override void Update(double dt) | ||||
|             { | ||||
|                 if (SomeMessage<ActivateComponentMessage>()) | ||||
|                 { | ||||
|                     CheckHasMockComponentMessage checkHasMockComponentMessage; | ||||
|                     checkHasMockComponentMessage.entity = entity; | ||||
|                     checkHasMockComponentMessage.shouldHaveComponent = false; | ||||
|                     EmitMessage(checkHasMockComponentMessage); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     CheckHasMockComponentMessage checkHasMockComponentMessage; | ||||
|                     checkHasMockComponentMessage.entity = entity; | ||||
|  | @ -444,20 +468,11 @@ namespace Tests | |||
|             public override void Update(double dt) | ||||
|             { | ||||
|                 foreach (var checkHasMockComponentMessage in ReadMessages<CheckHasMockComponentMessage>()) | ||||
|                 { | ||||
|                     if (checkHasMockComponentMessage.shouldHaveComponent) | ||||
|                 { | ||||
|                     Assert.IsTrue(HasComponent<MockComponent>(checkHasMockComponentMessage.entity)); | ||||
|                 } | ||||
|                     else | ||||
|                     { | ||||
|                         Assert.IsFalse(HasComponent<MockComponent>(checkHasMockComponentMessage.entity)); | ||||
|             } | ||||
|         } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         // TODO: need to rethink this test because ActivateComponent is instant now | ||||
| 
 | ||||
|         [Test] | ||||
|         public void ActivateComponent() | ||||
|  | @ -485,7 +500,6 @@ namespace Tests | |||
|             var world = worldBuilder.Build(); | ||||
| 
 | ||||
|             world.Update(0.01); | ||||
|             world.Update(0.01); | ||||
|         } | ||||
| 
 | ||||
|         struct DeactivateComponentMessage : IMessage | ||||
|  |  | |||
|  | @ -0,0 +1,24 @@ | |||
| using NUnit.Framework; | ||||
| using FluentAssertions; | ||||
| 
 | ||||
| using Encompass; | ||||
| 
 | ||||
| namespace Tests | ||||
| { | ||||
|     public class EntityTests | ||||
|     { | ||||
|         [Test] | ||||
|         public void Equals() | ||||
|         { | ||||
|             var worldBuilder = new WorldBuilder(); | ||||
|             var entity = worldBuilder.CreateEntity(); | ||||
|             var entityTwo = worldBuilder.CreateEntity(); | ||||
| 
 | ||||
|             var copyEntity = entity; | ||||
| 
 | ||||
|             Assert.AreNotEqual(entity, entityTwo); | ||||
|             Assert.AreEqual(entity, entity); | ||||
|             Assert.IsTrue(entity == copyEntity); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue