UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MeshComponent.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3
4#pragma once
5
6#include "CoreMinimal.h"
11
12#include "MeshComponent.generated.h"
13
16
24class UMeshComponent : public UPrimitiveComponent
25{
27
28public:
30 UPROPERTY(EditAnywhere, AdvancedDisplay, Category=Rendering, Meta=(ToolTip="Material overrides."))
31 TArray<TObjectPtr<class UMaterialInterface>> OverrideMaterials;
32
33 UFUNCTION(BlueprintCallable, Category="Rendering|Material")
34 ENGINE_API virtual TArray<class UMaterialInterface*> GetMaterials() const;
35
37 virtual bool UseNaniteOverrideMaterials() const { return false; }
38
40 ENGINE_API virtual int32 GetNumOverrideMaterials() const;
41
43 UPROPERTY(EditAnywhere, BlueprintReadOnly, AdvancedDisplay, Category=Rendering)
45
47 UPROPERTY(EditAnywhere, BlueprintReadOnly, AdvancedDisplay, Category=Rendering)
49
51 UFUNCTION(BlueprintCallable, Category="Rendering|Material")
52 ENGINE_API class UMaterialInterface* GetOverlayMaterial() const;
53
55 UFUNCTION(BlueprintCallable, Category="Rendering|Material")
56 ENGINE_API void SetOverlayMaterial(class UMaterialInterface* NewOverlayMaterial);
57
59 UFUNCTION(BlueprintCallable, Category="Rendering|Material")
60 ENGINE_API float GetOverlayMaterialMaxDrawDistance() const;
61
63 UFUNCTION(BlueprintCallable, Category="Rendering|Material")
64 ENGINE_API void SetOverlayMaterialMaxDrawDistance(float InMaxDrawDistance);
65
71 UPROPERTY(EditAnywhere, BlueprintReadOnly, AdvancedDisplay, Category=Rendering)
72 TArray<TObjectPtr<class UMaterialInterface>> MaterialSlotsOverlayMaterial;
73
81 ENGINE_API void GetMaterialSlotsOverlayMaterial(TArray<TObjectPtr<class UMaterialInterface>>& OutMaterialSlotOverlayMaterials) const;
82
83#if WITH_EDITOR
84 /*
85 * Make sure the Override array is using only the space it should use.
86 * 1. The override array cannot be bigger then the number of mesh material.
87 * 2. The override array must not end with a nullptr UMaterialInterface.
88 */
90
91 /*
92 * Make sure the MaterialSlotsOverlayMaterial is using only the space it should use.
93 * - The data should be only on existing mesh material slot.
94 */
96#endif
97
101 ENGINE_API void EmptyOverrideMaterials();
102
106 ENGINE_API bool HasOverrideMaterials();
107
108#if WITH_EDITOR
109 ENGINE_API virtual void PostEditChangeChainProperty(FPropertyChangedChainEvent& PropertyChangedEvent) override;
110#endif
111
112 //~ Begin UPrimitiveComponent Interface
113 ENGINE_API virtual int32 GetNumMaterials() const override;
114 ENGINE_API virtual UMaterialInterface* GetMaterial(int32 ElementIndex) const override;
115 ENGINE_API virtual UMaterialInterface* GetMaterialByName(FName MaterialSlotName) const override;
116 ENGINE_API virtual void SetMaterial(int32 ElementIndex, UMaterialInterface* Material) override;
117 ENGINE_API virtual void SetMaterialByName(FName MaterialSlotName, class UMaterialInterface* Material) override;
118 ENGINE_API virtual void GetUsedMaterials(TArray<UMaterialInterface*>& OutMaterials, bool bGetDebugMaterials = false) const override;
119 //~ End UPrimitiveComponent Interface
120
122 UE_DEPRECATED(5.7, "Please use GetMaterialRelevance with EShaderPlatform argument and not ERHIFeatureLevel::Type")
123 ENGINE_API virtual FMaterialRelevance GetMaterialRelevance(ERHIFeatureLevel::Type InFeatureLevel) const;
125
130 ENGINE_API virtual void SetTextureForceResidentFlag( bool bForceMiplevelsToBeResident );
131
132#if WITH_EDITOR
138#endif
139
146 UFUNCTION(BlueprintCallable, Category = "Rendering")
147 ENGINE_API virtual void PrestreamTextures( float Seconds, bool bPrioritizeCharacterTextures, int32 CinematicTextureGroups = 0 );
148
155 UFUNCTION(BlueprintCallable, Category = "Rendering", meta=(ScriptName="PrestreamMeshLods;PrestreamMeshLODs"))
156 virtual bool PrestreamMeshLODs( float Seconds ) { return false; }
157
165 ENGINE_API virtual void RegisterLODStreamingCallback(FLODStreamingCallback&& Callback, int32 LODIdx, float TimeoutSecs, bool bOnStreamIn);
174
176 virtual bool GetMaterialStreamingData(int32 MaterialIndex, FPrimitiveMaterialInfo& MaterialData) const { return false; }
177
180
182 ENGINE_API FColor GetWireframeColorForSceneProxy() const;
183
184#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
189 ENGINE_API virtual void LogMaterialsAndTextures(FOutputDevice& Ar, int32 Indent) const;
190#endif
191
193 virtual UTexture* GetMeshPaintTexture() const { return nullptr; }
197 virtual void SetMeshPaintTextureOverride(UTexture* OverrideTexture) {}
199 virtual int32 GetMeshPaintTextureCoordinateIndex() const { return 0; }
200
201public:
202
204 UFUNCTION(BlueprintCallable, Category = "Rendering|Material")
205 ENGINE_API void SetScalarParameterValueOnMaterials(const FName ParameterName, const float ParameterValue);
206
208 UFUNCTION(BlueprintCallable, Category = "Rendering|Material")
209 ENGINE_API void SetVectorParameterValueOnMaterials(const FName ParameterName, const FVector ParameterValue);
210
212 UFUNCTION(BlueprintCallable, Category = "Rendering|Material")
213 ENGINE_API void SetColorParameterValueOnMaterials(const FName ParameterName, const FLinearColor ParameterValue);
214
221 float GetScalarParameterDefaultValue(const FName ParameterName)
222 {
223 FMaterialParameterCache* ParameterCache = MaterialParameterCache.Find(ParameterName);
224 return (ParameterCache ? ParameterCache->ScalarParameterDefaultValue : 0.f);
225 }
226
228 ENGINE_API const TArray<TObjectPtr<UMaterialInterface>>& GetComponentMaterialSlotsOverlayMaterial() const;
229
234
235protected:
236
237 //~ Begin UObject Interface.
238 ENGINE_API virtual void BeginDestroy() override;
239 //~ End UObject Interface.
240
242 virtual UMaterialInterface* GetDefaultOverlayMaterial() const { return nullptr; };
243
245 virtual float GetDefaultOverlayMaterialMaxDrawDistance() const { return 0.f; };
246
248 ENGINE_API void CacheMaterialParameterNameIndices();
249
251 ENGINE_API void MarkCachedMaterialParameterNameIndicesDirty();
252
265
266public:
267
269 UPROPERTY(EditAnywhere, AdvancedDisplay, BlueprintReadOnly, Category = MaterialParameters)
270 uint8 bEnableMaterialParameterCaching : 1;
271
273
275 uint8 bCachedMaterialParameterIndicesAreDirty : 1;
276
278};
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
EShaderPlatform
Definition RHIShaderPlatform.h:11
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition NameTypes.h:617
Definition OutputDevice.h:133
Definition TextureStreamingTypes.h:223
Definition Array.h:670
Definition ContainerAllocationPolicies.h:830
Definition SortedMap.h:20
Definition MaterialInterface.h:296
Definition MeshComponent.h:25
virtual void SetMeshPaintTextureOverride(UTexture *OverrideTexture)
Definition MeshComponent.h:197
virtual UTexture * GetMeshPaintTexture() const
Definition MeshComponent.h:193
virtual UMaterialInterface * GetDefaultOverlayMaterial() const
Definition MeshComponent.h:242
virtual float GetDefaultOverlayMaterialMaxDrawDistance() const
Definition MeshComponent.h:245
virtual void GetDefaultMaterialSlotsOverlayMaterial(TArray< TObjectPtr< UMaterialInterface > > &OutMaterialSlotOverlayMaterials) const
Definition MeshComponent.h:233
virtual void SetMeshPaintTexture(UTexture *Texture)
Definition MeshComponent.h:195
virtual bool GetMaterialStreamingData(int32 MaterialIndex, FPrimitiveMaterialInfo &MaterialData) const
Definition MeshComponent.h:176
virtual int32 GetMeshPaintTextureCoordinateIndex() const
Definition MeshComponent.h:199
Definition Texture.h:1219
Definition SceneComponent.h:24
Definition VirtualTextureRecreate.cpp:16
Definition Color.h:486
Definition Color.h:48
Definition MaterialRelevance.h:13
Definition NameTypes.h:1639
Definition TextureStreamingTypes.h:188
Definition UnrealType.h:7001
Definition ObjectPtr.h:488
Definition MeshComponent.h:255
TArray< int32 > ScalarParameterMaterialIndices
Definition MeshComponent.h:257
TArray< int32 > VectorParameterMaterialIndices
Definition MeshComponent.h:259