In the hopes it helps, locally I’ve managed to patch this by changing things to be uint64.
I’ll be on holiday, so won’t really be able to make a pull request, but here’s a patch file.
`+++ ./Engine/Plugins/TextureGraph/Source/TextureGraphEditor/Private/EdGraph/TG_EdGraphSchema.cpp
— ./Engine/Plugins/TextureGraph/Source/TextureGraphEditor/Private/EdGraph/TG_EdGraphSchema.cpp
208c208
< const uint32 InputType = 1; //GetMaterialValueType(InputPin);
const uint64 InputType = 1; //GetMaterialValueType(InputPin);
230c230
< const uint32 OutputType = 1; //GetMaterialValueType(InputPin);
const uint64 OutputType = 1; //GetMaterialValueType(InputPin);
+++ ./Engine/Source/Editor/MaterialEditor/Private/MaterialEditorUtilities.cpp
— ./Engine/Source/Editor/MaterialEditor/Private/MaterialEditorUtilities.cpp
695c695
< uint32 FromPinType = 0;
uint64 FromPinType = 0;
743c743
< bool FMaterialEditorUtilities::HasCompatibleConnection(UClass* ExpressionClass, uint32 TestType, EEdGraphPinDirection TestDirection, bool bMaterialFunction)
bool FMaterialEditorUtilities::HasCompatibleConnection(UClass* ExpressionClass, uint64 TestType, EEdGraphPinDirection TestDirection, bool bMaterialFunction)
+++ ./Engine/Source/Editor/MaterialEditor/Private/MaterialNodes/SGraphSubstrateMaterial.cpp
— ./Engine/Source/Editor/MaterialEditor/Private/MaterialNodes/SGraphSubstrateMaterial.cpp
458c458
< const uint32 PinType = UMaterialGraphSchema::GetMaterialValueType(Pin);
const uint64 PinType = UMaterialGraphSchema::GetMaterialValueType(Pin);
+++ ./Engine/Source/Editor/MaterialEditor/Public/MaterialEditorUtilities.h
— ./Engine/Source/Editor/MaterialEditor/Public/MaterialEditorUtilities.h
303c303
< static bool HasCompatibleConnection(UClass* ExpressionClass, uint32 TestType, EEdGraphPinDirection TestDirection, bool bMaterialFunction);
static bool HasCompatibleConnection(UClass* ExpressionClass, uint64 TestType, EEdGraphPinDirection TestDirection, bool bMaterialFunction);
+++ ./Engine/Source/Editor/UnrealEd/Classes/MaterialGraph/MaterialGraphSchema.h
— ./Engine/Source/Editor/UnrealEd/Classes/MaterialGraph/MaterialGraphSchema.h
53c53
< UNREALED_API void SetFunctionInputType(class UMaterialExpressionFunctionInput* FunctionInput, uint32 MaterialValueType) const;
UNREALED_API void SetFunctionInputType(class UMaterialExpressionFunctionInput* FunctionInput, uint64 MaterialValueType) const;
257c257
< UNREALED_API static uint32 GetMaterialValueType(const UEdGraphPin* MaterialPin);
UNREALED_API static uint64 GetMaterialValueType(const UEdGraphPin* MaterialPin);
304c304
< bool HasCompatibleConnection(const FAssetData& FunctionAssetData, uint32 TestType, EEdGraphPinDirection TestDirection) const;
bool HasCompatibleConnection(const FAssetData& FunctionAssetData, uint64 TestType, EEdGraphPinDirection TestDirection) const;
+++ ./Engine/Source/Editor/UnrealEd/Private/MaterialGraphSchema.cpp
— ./Engine/Source/Editor/UnrealEd/Private/MaterialGraphSchema.cpp
112c112
< void FMaterialGraphSchemaAction_NewNode::SetFunctionInputType(UMaterialExpressionFunctionInput* FunctionInput, uint32 MaterialValueType) const
void FMaterialGraphSchemaAction_NewNode::SetFunctionInputType(UMaterialExpressionFunctionInput* FunctionInput, uint64 MaterialValueType) const
354,355c354,355
< uint32 InputType = GetMaterialValueType(InputPin);
< uint32 OutputType = GetMaterialValueType(OutputPin);
uint64 InputType = GetMaterialValueType(InputPin);
uint64 OutputType = GetMaterialValueType(OutputPin);
401c401
< uint32 UMaterialGraphSchema::GetMaterialValueType(const UEdGraphPin* MaterialPin)
uint64 UMaterialGraphSchema::GetMaterialValueType(const UEdGraphPin* MaterialPin)
554c554
< const uint32 InputType = GetMaterialValueType(InputPin);
const uint64 InputType = GetMaterialValueType(InputPin);
577c577
< const uint32 OutputType = GetMaterialValueType(InputPin);
const uint64 OutputType = GetMaterialValueType(InputPin);
913c913
< uint32 FromPinType = 0;
uint64 FromPinType = 0;
1091c1091
< bool UMaterialGraphSchema::HasCompatibleConnection(const FAssetData& FunctionAssetData, uint32 TestType, EEdGraphPinDirection TestDirection) const
bool UMaterialGraphSchema::HasCompatibleConnection(const FAssetData& FunctionAssetData, uint64 TestType, EEdGraphPinDirection TestDirection) const
1095,1096c1095,1096
< uint32 CombinedInputTypes = FunctionAssetData.GetTagValueRef(GET_MEMBER_NAME_CHECKED(UMaterialFunctionInterface, CombinedInputTypes));
< uint32 CombinedOutputTypes = FunctionAssetData.GetTagValueRef(GET_MEMBER_NAME_CHECKED(UMaterialFunctionInterface, CombinedOutputTypes));
uint64 CombinedInputTypes = FunctionAssetData.GetTagValueRef(GET_MEMBER_NAME_CHECKED(UMaterialFunctionInterface, CombinedInputTypes));
uint64 CombinedOutputTypes = FunctionAssetData.GetTagValueRef(GET_MEMBER_NAME_CHECKED(UMaterialFunctionInterface, CombinedOutputTypes));
+++ ./Engine/Source/Runtime/Engine/Private/Materials/MaterialExpressions.cpp
— ./Engine/Source/Runtime/Engine/Private/Materials/MaterialExpressions.cpp
391c391
< void GetMaterialValueTypeDescriptions(const uint32 MaterialValueType, TArray& OutDescriptions)
void GetMaterialValueTypeDescriptions(const uint64 MaterialValueType, TArray& OutDescriptions)
394c394
< uint32 MaskedFloatType = MaterialValueType & MCT_Float;
uint64 MaskedFloatType = MaterialValueType & MCT_Float;
418c418
< uint32 MaskedTextureType = MaterialValueType & MCT_Texture;
uint64 MaskedTextureType = MaterialValueType & MCT_Texture;
460c460
< bool CanConnectMaterialValueTypes(const uint32 InputType, const uint32 OutputType)
bool CanConnectMaterialValueTypes(const uint64 InputType, const uint64 OutputType)
+++ ./Engine/Source/Runtime/Engine/Public/Materials/MaterialFunctionInterface.h
— ./Engine/Source/Runtime/Engine/Public/Materials/MaterialFunctionInterface.h
167c167
< uint32 CombinedInputTypes;
uint64 CombinedInputTypes;
170c170
< uint32 CombinedOutputTypes;
uint64 CombinedOutputTypes;
+++ ./Engine/Source/Runtime/Engine/Public/MaterialShared.h
— ./Engine/Source/Runtime/Engine/Public/MaterialShared.h
2020c2020
< extern ENGINE_API void GetMaterialValueTypeDescriptions(const uint32 MaterialValueType, TArray& OutDescriptions);
extern ENGINE_API void GetMaterialValueTypeDescriptions(const uint64 MaterialValueType, TArray& OutDescriptions);
2023c2023
< extern ENGINE_API bool CanConnectMaterialValueTypes(const uint32 InputType, const uint32 OutputType);
extern ENGINE_API bool CanConnectMaterialValueTypes(const uint64 InputType, const uint64 OutputType);`
I suspect really what you want to do is have:
`using EMaterialValueUnderlyingType = uint64;
enum EMaterialValueType : EMaterialValueUnderlyingType;And have \
EMaterialValueUnderlyingType` be used for the various bit masking operators, for a slightly more conceptually pure solution.
Many thanks,
Alister