MaterialInterfaceDestroyed.patch (1,698 bytes)
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;
}