#pragma once #include "BsScriptEnginePrerequisites.h" #include "BsManagedSerializableObjectInfo.h" #include "BsModule.h" #include namespace BansheeEngine { class BS_SCR_BE_EXPORT ScriptAssemblyManager : public Module { public: ScriptAssemblyManager(); ~ScriptAssemblyManager(); void loadAssemblyInfo(const String& assemblyName); void refreshAssemblyInfo(); bool getSerializableObjectInfo(const String& ns, const String& typeName, std::shared_ptr& outInfo); bool hasSerializableObjectInfo(const String& ns, const String& typeName); Vector getScriptAssemblies() const; MonoClass* getSystemArrayClass() const { return mSystemArrayClass; } MonoClass* getSystemGenericListClass() const { return mSystemGenericListClass; } MonoClass* getSystemGenericDictionaryClass() const { return mSystemGenericDictionaryClass; } MonoClass* getComponentClass() const { return mComponentClass; } MonoClass* getMissingComponentClass() const { return mMissingComponentClass; } MonoClass* getSceneObjectClass() const { return mSceneObjectClass; } ManagedSerializableTypeInfoPtr determineType(MonoClass* monoClass); private: UnorderedMap> mAssemblyInfos; bool mBaseTypesInitialized; MonoClass* mSystemArrayClass; MonoClass* mSystemGenericListClass; MonoClass* mSystemGenericDictionaryClass; MonoClass* mComponentClass; MonoClass* mSceneObjectClass; MonoClass* mMissingComponentClass; MonoClass* mSerializeObjectAttribute; MonoClass* mDontSerializeFieldAttribute; MonoClass* mSerializeFieldAttribute; MonoClass* mHideInInspectorAttribute; void clearScriptObjects(); void initializeBaseTypes(); }; }