29 lines
723 B
C#
29 lines
723 B
C#
using System.Reflection;
|
|
|
|
namespace Encompass.Engines
|
|
{
|
|
public abstract class Spawner<TMessage> : Engine where TMessage : struct, IMessage
|
|
{
|
|
protected Spawner() : base()
|
|
{
|
|
var readsAttribute = GetType().GetCustomAttribute<Reads>(false);
|
|
if (readsAttribute != null)
|
|
{
|
|
readsAttribute.readTypes.Add(typeof(TMessage));
|
|
}
|
|
|
|
receiveTypes.Add(typeof(TMessage));
|
|
}
|
|
|
|
public override void Update(double dt)
|
|
{
|
|
foreach (var message in ReadMessages<TMessage>())
|
|
{
|
|
Spawn(message);
|
|
}
|
|
}
|
|
|
|
protected abstract void Spawn(TMessage message);
|
|
}
|
|
}
|