UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MaterialExpressionMaterialAttributeLayers.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
10#include "MaterialExpressionMaterialAttributeLayers.generated.h"
11
16
24
25UCLASS(hidecategories=Object, MinimalAPI)
27{
29
30 UPROPERTY()
32
33 UPROPERTY(EditAnywhere, Category=Layers)
34 FMaterialLayersFunctions DefaultLayers;
35
36 const TArray<UMaterialFunctionInterface*>& GetLayers() const
37 {
38 return ParamLayers ? ParamLayers->Layers : DefaultLayers.Layers;
39 }
40
41 const TArray<UMaterialFunctionInterface*>& GetBlends() const
42 {
43 return ParamLayers ? ParamLayers->Blends : DefaultLayers.Blends;
44 }
45
46#if WITH_EDITOR
47 const TArray<FText>& GetLayerNames() const
48 {
49 return ParamLayers ? ParamLayers->EditorOnly.LayerNames : DefaultLayers.EditorOnly.LayerNames;
50 }
51
53 {
54 return ParamLayers ? ParamLayers->EditorOnly.RestrictToLayerRelatives : DefaultLayers.EditorOnly.RestrictToLayerRelatives;
55 }
56
58 {
59 return ParamLayers ? ParamLayers->EditorOnly.RestrictToBlendRelatives : DefaultLayers.EditorOnly.RestrictToBlendRelatives;
60 }
61
62 const TArray<FGuid>& GetLayerGuids() const
63 {
64 return ParamLayers ? ParamLayers->EditorOnly.LayerGuids : DefaultLayers.EditorOnly.LayerGuids;
65 }
66
67 const TArray<bool>& GetLayerStates() const
68 {
69 return ParamLayers ? ParamLayers->EditorOnly.LayerStates : DefaultLayers.EditorOnly.LayerStates;
70 }
71#endif // WITH_EDITOR
72
75
77 int32 NumActiveLayerCallers = 0;
78
81
83 int32 NumActiveBlendCallers = 0;
84
87
89 bool bIsLayerGraphBuilt = false;
90
91 //~ Begin UObject Interface
92 virtual void PostLoad() override;
93#if WITH_EDITOR
94 virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
95#endif
96 //~ Begin UObject Interface
97
98#if WITH_EDITOR
100 ENGINE_API void OverrideLayerGraph(const FMaterialLayersFunctions* OverrideLayers);
101#endif // WITH_EDITOR
102
103#if WITH_EDITOR
104 static void LogError(FMaterialCompiler* Compiler, const TCHAR* Format, ...);
105 virtual bool ValidateLayerConfiguration(FMaterialCompiler* Compiler, bool bReportErrors);
106#endif // WITH_EDITOR
107
108#if WITH_EDITORONLY_DATA
111#endif
112
113 UMaterialFunctionInterface* GetParameterAssociatedFunction(const FHashedMaterialParameterInfo& ParameterInfo) const;
114
115 //~ Begin UMaterialExpression Interface
116#if WITH_EDITOR
117 virtual int32 Compile(FMaterialCompiler* Compiler, int32 OutputIndex) override;
118 virtual void GetCaption(TArray<FString>& OutCaptions) const override;
119 virtual void GetExpressionToolTip(TArray<FString>& OutToolTip) override;
120 virtual FName GetInputName(int32 InputIndex) const override;
121 virtual bool IsInputConnectionRequired(int32 InputIndex) const override {return false;}
122 virtual EMaterialValueType GetInputValueType(int32 InputIndex) override;
123 virtual bool IsResultMaterialAttributes(int32 OutputIndex) override {return true;}
124 virtual bool IsResultSubstrateMaterial(int32 OutputIndex) override {return false;}
125#endif
126 //~ End UMaterialExpression Interface
127
128protected:
130 const FMaterialLayersFunctions* ParamLayers = nullptr;
131};
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
constexpr int8 AcceptableNumLayerBlendMAOutputs
Definition MaterialExpressionMaterialAttributeLayers.h:23
constexpr int8 AcceptableNumLayerMAInputs
Definition MaterialExpressionMaterialAttributeLayers.h:21
constexpr int8 AcceptableNumBlendMAInputs
Definition MaterialExpressionMaterialAttributeLayers.h:22
EMaterialValueType
Definition MaterialValueType.h:15
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
Definition MaterialCompiler.h:109
Definition NameTypes.h:617
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition MaterialExpressionMaterialAttributeLayers.h:27
Definition MaterialExpressionMaterialFunctionCall.h:81
Definition MaterialExpression.h:150
Definition MaterialFunctionInterface.h:59
Definition MaterialExpressionIO.h:303
TArray< FText > LayerNames
Definition MaterialLayersFunctions.h:64
TArray< bool > RestrictToLayerRelatives
Definition MaterialLayersFunctions.h:67
TArray< bool > RestrictToBlendRelatives
Definition MaterialLayersFunctions.h:70
TArray< bool > LayerStates
Definition MaterialLayersFunctions.h:61
TArray< FGuid > LayerGuids
Definition MaterialLayersFunctions.h:74
TArray< TObjectPtr< class UMaterialFunctionInterface > > Blends
Definition MaterialLayersFunctions.h:138
TArray< TObjectPtr< class UMaterialFunctionInterface > > Layers
Definition MaterialLayersFunctions.h:135
Definition MaterialLayersFunctions.h:221
FMaterialLayersFunctionsEditorOnlyData EditorOnly
Definition MaterialLayersFunctions.h:237
Definition MaterialParameters.h:33
Definition MaterialParameters.h:96
Definition UnrealType.h:6865
Definition ObjectPtr.h:488