fix cast bug in Entity.GetComponents
parent
74ec2f6320
commit
987b30ceae
|
@ -107,9 +107,9 @@ namespace Encompass
|
||||||
|
|
||||||
internal IEnumerable<KeyValuePair<Guid, TComponent>> GetComponentsByEntityAndType<TComponent>(Guid entityID) where TComponent : struct, IComponent
|
internal IEnumerable<KeyValuePair<Guid, TComponent>> GetComponentsByEntityAndType<TComponent>(Guid entityID) where TComponent : struct, IComponent
|
||||||
{
|
{
|
||||||
var entity_components = GetComponentsByEntity(entityID).Select((kv) => new KeyValuePair<Guid, TComponent>(kv.Key, (TComponent)kv.Value));
|
var entityComponentsByType = GetComponentsByEntity(entityID).Where((pair) => componentIDToType[pair.Key] == typeof(TComponent)).Select((pair) => new KeyValuePair<Guid, TComponent>(pair.Key, (TComponent)pair.Value));
|
||||||
var active_components_by_type = GetActiveComponentsByType<TComponent>();
|
var activeComponentsByType = GetActiveComponentsByType<TComponent>();
|
||||||
return entity_components.Intersect(active_components_by_type);
|
return activeComponentsByType.Intersect(entityComponentsByType);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal IEnumerable<KeyValuePair<Guid, IComponent>> GetComponentsByEntityAndType(Guid entityID, Type type)
|
internal IEnumerable<KeyValuePair<Guid, IComponent>> GetComponentsByEntityAndType(Guid entityID, Type type)
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
|
using FluentAssertions;
|
||||||
using Encompass;
|
using Encompass;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Tests
|
namespace Tests
|
||||||
{
|
{
|
||||||
|
@ -93,11 +95,13 @@ namespace Tests
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool calledOnDraw = false;
|
static bool calledOnDraw = false;
|
||||||
|
static IEnumerable<KeyValuePair<Guid, TestDrawComponent>> resultComponents;
|
||||||
[Renders(typeof(TestDrawComponent), typeof(AComponent), typeof(CComponent))]
|
[Renders(typeof(TestDrawComponent), typeof(AComponent), typeof(CComponent))]
|
||||||
class CalledRenderer : EntityRenderer
|
class CalledRenderer : EntityRenderer
|
||||||
{
|
{
|
||||||
public override void Render(Entity entity)
|
public override void Render(Entity entity)
|
||||||
{
|
{
|
||||||
|
resultComponents = entity.GetComponents<TestDrawComponent>();
|
||||||
calledOnDraw = true;
|
calledOnDraw = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -110,12 +114,12 @@ namespace Tests
|
||||||
|
|
||||||
AComponent aComponent;
|
AComponent aComponent;
|
||||||
CComponent cComponent;
|
CComponent cComponent;
|
||||||
TestDrawComponent testDrawComponent = default(TestDrawComponent);
|
TestDrawComponent testDrawComponent;
|
||||||
|
|
||||||
var entity = worldBuilder.CreateEntity();
|
var entity = worldBuilder.CreateEntity();
|
||||||
entity.AddComponent(aComponent);
|
entity.AddComponent(aComponent);
|
||||||
entity.AddComponent(cComponent);
|
entity.AddComponent(cComponent);
|
||||||
entity.AddDrawComponent(testDrawComponent, 2);
|
var testDrawComponentID = entity.AddDrawComponent(testDrawComponent, 2);
|
||||||
|
|
||||||
var world = worldBuilder.Build();
|
var world = worldBuilder.Build();
|
||||||
|
|
||||||
|
@ -124,6 +128,7 @@ namespace Tests
|
||||||
|
|
||||||
Assert.IsTrue(renderer.IsTracking(entity.id));
|
Assert.IsTrue(renderer.IsTracking(entity.id));
|
||||||
Assert.IsTrue(calledOnDraw);
|
Assert.IsTrue(calledOnDraw);
|
||||||
|
resultComponents.Should().Contain(new KeyValuePair<Guid, TestDrawComponent>(testDrawComponentID, testDrawComponent));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue