Some of the changes to the engine could be done without breaking anything, though some required introducing more preprocessor soup (#if #else #endif) due to breaking framework changes. Ideally once dotnet core matures then we can move towards NETStandard libraries for all platforms.
- UWP forces all file IO to be asynchronous, so the simplest solution was to use a synchronous wrapper specifically for the WindowsUniversal libraries.
- Minor API changes were needed (e.g. replacing Delegate.CreateDelegate with MethodInfo.CreateDelegate, generic use of SystemException with System.Exception).
- Replace all Stream.Close() with Stream.Dispose() where a using block is not used for automatic cleanup.
- Remove all errant use of System.Console.Write() for debugging.
- Identifying the main UI thread using Task.CurrentId instead of Thread.CurrentThread.ManagedThreadId (access to threads is not exposed in UWP).
- Inserting GetTypeInfo() into various reflection method calls and properties due to a very UWP specific workaround.
Not everything is quite implemented yet (serialization, audio etc) but I'll return to finish this up once the main refactoring is complete.