void ManagedSerializableObject::deserialize() { // See if this type even still exists SPtr<ManagedSerializableObjectInfo> currentObjInfo = nullptr; if (!ScriptAssemblyManager::instance().getSerializableObjectInfo(mObjInfo->mTypeInfo->mTypeNamespace, mObjInfo->mTypeInfo->mTypeName, currentObjInfo)) { mManagedInstance = nullptr; mCachedData.clear(); return; } deserialize(createManagedInstance(currentObjInfo->mTypeInfo), currentObjInfo); }
ScriptEditorWidget::ScriptEditorWidget(const String& ns, const String& type, UINT32 defaultWidth, UINT32 defaultHeight, EditorWidgetContainer& parentContainer) : EditorWidgetBase(HString(toWString(type)), ns + "." + type, defaultWidth, defaultHeight, parentContainer) , mNamespace(ns), mTypename(type), mOnInitializeThunk(nullptr), mOnDestroyThunk(nullptr), mUpdateThunk(nullptr) , mManagedInstance(nullptr), mGetDisplayName(nullptr), mScriptOwner(nullptr), mContentsPanel(nullptr) , mIsInitialized(false) { if(createManagedInstance()) { if (mGetDisplayName != nullptr) { MonoObject* displayNameMono = mGetDisplayName->invokeVirtual(mManagedInstance, nullptr); ScriptHString* scriptHString = ScriptHString::toNative(displayNameMono); if (scriptHString != nullptr) { mDisplayName = HString(scriptHString->getInternalValue()); parentContainer.refreshWidgetNames(); } } } }
SPtr<ManagedSerializableObject> ManagedSerializableObject::createNew(const SPtr<ManagedSerializableTypeInfoObject>& type) { SPtr<ManagedSerializableObjectInfo> currentObjInfo = nullptr; // See if this type even still exists if (!ScriptAssemblyManager::instance().getSerializableObjectInfo(type->mTypeNamespace, type->mTypeName, currentObjInfo)) return nullptr; return bs_shared_ptr_new<ManagedSerializableObject>(ConstructPrivately(), currentObjInfo, createManagedInstance(type)); }