#ifndef XNA_PLATFORM_INIT_HPP #define XNA_PLATFORM_INIT_HPP #include "../default.hpp" #include "../csharp/type.hpp" #include "../content/typereadermanager.hpp" #include "../platforminit.hpp" namespace xna { struct PlatformInit { static void Init() { InitRegisteredTypes(); InitActivadors(); } static void InitRegisteredTypes(); static void InitActivadors(); private: template <typename T> static void insertRegisteredReader(String const& readerName) { const auto reader = typeof<T>(); //Type::NameOfRegisteredTypes.insert({ "xna::" + readerName, reader }); Type::NameOfRegisteredTypes.insert({ reader->FullName(), reader }); Type::NameOfRegisteredTypes.insert({ "Microsoft.Xna.Framework.Content." + readerName, reader }); } template <typename T> static void insertRegisteredReader(String const& readerName, String const& microsoftNameFullName) { const auto reader = typeof<T>(); //Type::NameOfRegisteredTypes.insert({ "xna::" + readerName, reader }); Type::NameOfRegisteredTypes.insert({ reader->FullName(), reader }); Type::NameOfRegisteredTypes.insert({ microsoftNameFullName, reader }); } template <typename T> static void insertActivadorReader() { ContentTypeReaderActivador::SetActivador(typeof<T>(), []() -> sptr<ContentTypeReader> { auto obj = New <T>(); return reinterpret_pointer_cast<ContentTypeReader>(obj); }); } }; } #endif