thelinuxlich/artemis_CSharp — pull request #56 by Maximusya (2013-12-18 14:12:57+00:00)
Title: ComponentTypeManager initialization

This optional initialization is supposed to solve multi-world multithreading issue. An app with a single world running on a single thread does not need this kind of initialization.

The intention is to call `ComponentTypeManager.Initialize` method once at startup, prior to creating any *EntityWorld* in any thread.

Example usage:
```csharp
// Scans all the app assemblies for the Component types
ComponentTypeManager.Initialize();
```

```csharp
// Initializes using the Types specified
ComponentTypeManager.Initialize(new List
{
typeof(TestBaseComponent),
typeof(TestHealthComponent),
typeof(TestPowerComponent),
typeof(TestPowerComponentPoolable),
typeof(IComponent), // should be filtered out
typeof(ComponentPoolable), // should be filtered out
typeof(TestDerivedComponent), // should be filtered out
});
```

Warning
-----------
The new code in ComponentTypeManager has been tested only in FULLDOTNET environment. METRO-functionality regarding Reflection needs review.