Hi, I am trying to assign a dynamic material instance to a static mesh and then set a vector parameter value in the material with the following line of code but it crashes the editor every time. (this is in AMyActor BeginPlay)
MyDynamicMaterial->SetVectorParameterValue("Color", Green);
I have these in the header file:
UPROPERTY()
UMaterial* MyBaseMaterial;
UPROPERTY()
UMaterialInstanceDynamic* MyDynamicMaterial;
This in the constructor:
ConstructorHelpers::FObjectFinder<UMaterial> MaterialFinder(TEXT("Material'/Game/Materials/MyMaterial.MyMaterial'"));
if (MaterialFinder.Object)
{
MyBaseMaterial = (UMaterial*)MaterialFinder.Object;
}
And finally, this in Begin Play:
MyDynamicMaterial = (UMaterialInstanceDynamic*)MyBaseMaterial;
MyMesh->SetMaterial(0, MyDynamicMaterial);
if (MyDynamicMaterial)
{
MyDynamicMaterial->SetVectorParameterValue("Color", Green);
}
“Green” is declared as an FLinearColor in the header file. The material instance gets applied to the mesh but I cannot change the vector parameter value. I get the following error code:
Access violation - code c0000005 (first/second chance not available)
UE4Editor_Engine!FMaterialRenderProxy::InvalidateUniformExpressionCache() [d:\buildfarm\buildmachine_++ue4+release-4.11\engine\source\runtime\engine\private\materials\materialshared.cpp:1744]
UE4Editor_Engine!FMaterialInstanceResource::RenderThread_UpdateParameter<FLinearColor>() [d:\buildfarm\buildmachine_++ue4+release-4.11\engine\source\runtime\engine\private\materials\materialinstancesupport.h:118]
UE4Editor_Engine!EURCMacro_SetMIParameterValue<FVectorParameterValue>::DoTask() [d:\buildfarm\buildmachine_++ue4+release-4.11\engine\source\runtime\engine\private\materials\materialinstance.cpp:322]
UE4Editor_Engine!TGraphTask<EURCMacro_SetMIParameterValue<FVectorParameterValue> >::ExecuteTask() [d:\buildfarm\buildmachine_++ue4+release-4.11\engine\source\runtime\core\public\async askgraphinterfaces.h:886]
UE4Editor_Core!FNamedTaskThread::ProcessTasksNamedThread() [d:\buildfarm\buildmachine_++ue4+release-4.11\engine\source\runtime\core\private\async askgraph.cpp:779]
UE4Editor_Core!FNamedTaskThread::ProcessTasksUntilQuit() [d:\buildfarm\buildmachine_++ue4+release-4.11\engine\source\runtime\core\private\async askgraph.cpp:526]
UE4Editor_RenderCore!RenderingThreadMain() [d:\buildfarm\buildmachine_++ue4+release-4.11\engine\source\runtime\rendercore\private\renderingthread.cpp:310]
UE4Editor_RenderCore!FRenderingThread::Run() [d:\buildfarm\buildmachine_++ue4+release-4.11\engine\source\runtime\rendercore\private\renderingthread.cpp:417]
UE4Editor_Core!FRunnableThreadWin::Run() [d:\buildfarm\buildmachine_++ue4+release-4.11\engine\source\runtime\core\private\windows\windowsrunnablethread.cpp:74]
I am pretty new to this, any help would be really appreciated.
Thanks.