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;
|
2019-07-19 03:31:31 +00:00
|
|
|
SendMessage(componentMessage);
|
2019-08-01 23:24:57 +00:00
|
|
|
SendExistingComponentMessage(componentMessage);
|
2019-07-18 21:02:57 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|