encompass-cs/encompass-cs/Engines/ComponentMessageEmitter.cs

25 lines
863 B
C#
Raw Normal View History

2019-07-18 21:02:57 +00:00
using System.Reflection;
namespace Encompass.Engines
{
internal class ComponentMessageEmitter<TComponent> : Engine where TComponent : struct, IComponent
{
public ComponentMessageEmitter() : base()
{
2019-07-19 01:20:38 +00:00
sendTypes.Add(typeof(ComponentMessage<TComponent>));
2019-07-18 21:02:57 +00:00
}
public override void Update(double dt)
{
2019-08-01 23:44:29 +00:00
foreach (var (componentID, component) in ReadComponentsFromWorld<TComponent>())
2019-07-18 21:02:57 +00:00
{
ComponentMessage<TComponent> componentMessage;
2019-08-01 23:44:29 +00:00
componentMessage.entity = GetEntityByComponentID(componentID);
2019-07-18 21:02:57 +00:00
componentMessage.componentID = componentID;
componentMessage.component = component;
SendMessage(componentMessage);
2019-08-01 23:24:57 +00:00
SendExistingComponentMessage(componentMessage);
2019-07-18 21:02:57 +00:00
}
}
}
}