Index: NoesisTypeClass.cpp
===================================================================
--- NoesisTypeClass.cpp	(revision 12575)
+++ NoesisTypeClass.cpp	(working copy)
@@ -2854,17 +2831,34 @@
 
 Noesis::BaseComponent* CallbackCreateMaterialWrapper(Noesis::Symbol Name)
 {
-	NoesisTypeClass* TypeClass = (NoesisTypeClass*)Noesis::Reflection::GetType(Name);
-	UMaterialInterface* Material = TypeClass->Material;
-	UMaterial* BaseMaterial = Material->GetBaseMaterial();
-	if (BaseMaterial->MaterialDomain == MD_UI)
+	/*NoesisTypeClass* TypeClass = (NoesisTypeClass*)Noesis::Reflection::GetType(Name);
+	UMaterialInterface* Material = TypeClass->Material;*/
+
+	FString UnrealTypeName = UTF8_TO_TCHAR(Name.Str());
+	FString GamePath = PathFromRegisterName_GameAsset(UnrealTypeName);
+	UMaterialInterface* Material = LoadObject<UMaterialInterface>(nullptr, *GamePath, nullptr, LOAD_NoWarn);
+	if (Material == nullptr)
 	{
-		return new NoesisUIMaterialWrapper(Material);
+		FString ModulePath = PathFromRegisterName_ModuleAsset(UnrealTypeName);
+		if (!ModulePath.IsEmpty())
+		{
+			Material = LoadObject<UMaterialInterface>(nullptr, *ModulePath, nullptr, LOAD_NoWarn);
+		}
 	}
-	else if (BaseMaterial->MaterialDomain == MD_PostProcess)
+
+	if (Material != nullptr)
 	{
-		return new NoesisPostProcessMaterialWrapper(Material);
+		UMaterial* BaseMaterial = Material->GetBaseMaterial();
+		if (BaseMaterial->MaterialDomain == MD_UI)
+		{
+			return new NoesisUIMaterialWrapper(Material);
+		}
+		else if (BaseMaterial->MaterialDomain == MD_PostProcess)
+		{
+			return new NoesisPostProcessMaterialWrapper(Material);
+		}
 	}
+
 	return nullptr;
 }
 