diff --git a/src/MessageDepot.cs b/src/MessageDepot.cs index a5a66e9..ef91f6d 100644 --- a/src/MessageDepot.cs +++ b/src/MessageDepot.cs @@ -24,11 +24,16 @@ internal class MessageDepot return Lookup().Some(); } - public ReadOnlySpan Read() where TMessage : struct + public ReadOnlySpan ReadAll() where TMessage : struct { return Lookup().All(); } + public TMessage ReadFirst() where TMessage : struct + { + return Lookup().First(); + } + public void Clear() { foreach (var storage in storages.Values) diff --git a/src/MessageStorage.cs b/src/MessageStorage.cs index bf180cc..8bfe24f 100644 --- a/src/MessageStorage.cs +++ b/src/MessageStorage.cs @@ -38,6 +38,11 @@ internal class MessageStorage : MessageStorage where TMessage : struct return new ReadOnlySpan(messages, 0, count); } + public TMessage First() + { + return messages[0]; + } + public override void Clear() { count = 0; diff --git a/src/System.cs b/src/System.cs index cc00c8e..1c166a1 100644 --- a/src/System.cs +++ b/src/System.cs @@ -38,7 +38,12 @@ public abstract class System : EntityComponentReader protected ReadOnlySpan ReadMessages() where TMessage : struct { - return MessageDepot.Read(); + return MessageDepot.ReadAll(); + } + + protected TMessage ReadMessage() where TMessage : struct + { + return MessageDepot.ReadFirst(); } protected bool SomeMessage() where TMessage : struct