diff --git a/TODO b/TODO index 6a8a4e6..4e18f97 100644 --- a/TODO +++ b/TODO @@ -1,2 +1,2 @@ - look at test coverage -- docs \ No newline at end of file +- docs diff --git a/encompass-cs/MessageManager.cs b/encompass-cs/MessageManager.cs index 3f2d723..0829dc4 100644 --- a/encompass-cs/MessageManager.cs +++ b/encompass-cs/MessageManager.cs @@ -8,28 +8,25 @@ namespace Encompass { private readonly Dictionary> messageTypeToMessages = new Dictionary>(); - internal void AddMessage(TMessage message) where TMessage : struct, IMessage + internal void RegisterMessageType(Type messageType) { - if (!messageTypeToMessages.ContainsKey(typeof(TMessage))) - { - messageTypeToMessages.Add(typeof(TMessage), new List()); + if (!messageTypeToMessages.ContainsKey(messageType)) { + messageTypeToMessages.Add(messageType, new List()); } - - messageTypeToMessages[typeof(TMessage)].Add(message); } internal void AddMessage(IMessage message) { var type = message.GetType(); - if (!messageTypeToMessages.ContainsKey(type)) - { - messageTypeToMessages.Add(type, new List()); - } - messageTypeToMessages[type].Add(message); } + internal void AddMessage(IMessage message) where TMessage : struct, IMessage + { + messageTypeToMessages[typeof(TMessage)].Add(message); + } + internal void ClearMessages() { foreach (var entry in messageTypeToMessages) diff --git a/encompass-cs/WorldBuilder.cs b/encompass-cs/WorldBuilder.cs index 47060f3..7c41418 100644 --- a/encompass-cs/WorldBuilder.cs +++ b/encompass-cs/WorldBuilder.cs @@ -86,6 +86,11 @@ namespace Encompass var messageReceiveTypes = engine.receiveTypes; var messageSendTypes = engine.sendTypes; + foreach (var messageType in messageReceiveTypes.Union(messageSendTypes)) + { + messageManager.RegisterMessageType(messageType); + } + foreach (var messageType in messageReceiveTypes.Intersect(messageSendTypes)) { if ((messageType.IsGenericType && messageType.GetGenericTypeDefinition() == typeof(PendingComponentMessage<>)))