UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ModelComponent.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"
9#include "Model.h"
13#include "ModelComponent.generated.h"
14
17class ULightComponent;
20
21//
22// Forward declarations
23//
24class FModelElement;
25
32UCLASS(MinimalAPI)
34{
36
37private:
40
42 int32 ComponentIndex;
43
44public:
45
47 UPROPERTY()
48 TObjectPtr<class UBodySetup> ModelBodySetup;
49
53
56
57public:
58
59#if WITH_EDITOR
64#endif // WITH_EDITOR
65
70 void CommitSurfaces();
71
75 void BuildRenderData();
76
80 void ShrinkElements();
81
83 ENGINE_API void GetSurfaceLightMapResolution( int32 SurfaceIndex, int32 QualityScale, int32& Width, int32& Height, FMatrix& WorldToMap, TArray<int32>* GatheredNodes=NULL ) const;
84
86 ENGINE_API void CopyElementsFrom(UModelComponent* OtherModelComponent);
87
88 //~ Begin UPrimitiveComponent Interface.
89 virtual void CreateRenderState_Concurrent(FRegisterComponentContext* Context) override;
90 virtual void DestroyRenderState_Concurrent() override;
91 virtual bool GetLightMapResolution( int32& Width, int32& Height ) const override;
92 virtual int32 GetStaticLightMapResolution() const override;
93 virtual void GetLightAndShadowMapMemoryUsage( int32& LightMapMemoryUsage, int32& ShadowMapMemoryUsage ) const override;
94 virtual FBoxSphereBounds CalcBounds(const FTransform& LocalToWorld) const override;
95 virtual FPrimitiveSceneProxy* CreateSceneProxy() override;
96 virtual bool ShouldRecreateProxyOnUpdateTransform() const override;
97#if WITH_EDITOR
99 virtual void AddMapBuildDataGUIDs(TSet<FGuid>& InGUIDs) const override;
100#endif
103 virtual void GetUsedMaterials(TArray<UMaterialInterface*>& OutMaterials, bool bGetDebugMaterials = false) const override;
104 virtual class UBodySetup* GetBodySetup() override { return ModelBodySetup; };
105 virtual int32 GetNumMaterials() const override;
106 virtual UMaterialInterface* GetMaterial(int32 MaterialIndex) const override;
107 virtual UMaterialInterface* GetMaterialFromCollisionFaceIndex(int32 FaceIndex, int32& SectionIndex) const override;
108 virtual bool IsPrecomputedLightingValid() const override;
109 //~ End UPrimitiveComponent Interface.
110
111 //~ Begin UActorComponent Interface.
112 virtual void InvalidateLightingCacheDetailed(bool bInvalidateBuildEnqueuedLighting, bool bTranslationOnly) override;
113 virtual void PropagateLightingScenarioChange() override;
114 //~ End UActorComponent Interface.
115
116 //~ Begin UObject Interface.
117 virtual void Serialize(FArchive& Ar) override;
118 virtual void PostLoad() override;
119#if WITH_EDITOR
120 virtual void PostEditUndo() override;
121#endif // WITH_EDITOR
122 virtual bool IsNameStableForNetworking() const override;
123 static void AddReferencedObjects(UObject* InThis, FReferenceCollector& Collector);
124 //~ End UObject Interface.
125
126 //~ Begin Interface_CollisionDataProvider Interface
127 virtual bool GetPhysicsTriMeshData(struct FTriMeshCollisionData* CollisionData, bool InUseAllTriData) override;
128 virtual bool GetTriMeshSizeEstimates(struct FTriMeshCollisionDataEstimates& OutTriMeshEstimates, bool bInUseAllTriData) const override;
129 virtual bool ContainsPhysicsTriMeshData(bool InUseAllTriData) const override;
130 virtual bool WantsNegXTriMesh() override { return false; }
131 //~ End Interface_CollisionDataProvider Interface
132
133
135 void CreateModelBodySetup();
136
137#if WITH_EDITOR
140
143
151 virtual bool GenerateElements(bool bBuildRenderData);
152#endif // WITH_EDITOR
153
154 //
155 // Accessors.
156 //
157
158 UModel* GetModel() const { return Model; }
159 const TIndirectArray<FModelElement>& GetElements() const { return Elements; }
161
168 static FModelElement* CreateNewTempElement(UModelComponent* Component);
169
176 ENGINE_API static void ApplyTempElements(bool bLightingWasSuccessful);
177
178
179private:
182
184 friend class UModel;
185 friend class FStaticLightingSystem;
186
187protected:
189 virtual bool SupportsStaticLighting() const override
190 {
191 return true;
192 }
193};
194
195
#define NULL
Definition oodle2base.h:134
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 GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
ELightMapInteractionType
Definition SceneTypes.h:111
@ LMIT_Texture
Definition SceneTypes.h:114
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition LightingBuildOptions.h:14
Definition Model.h:626
TArray< uint16 > Nodes
Definition Model.h:636
Definition PrimitiveSceneProxy.h:296
Definition UObjectGlobals.h:2492
Definition ActorComponent.h:47
Definition TextureStreamingTypes.h:223
Definition Interface_CollisionDataProvider.h:23
Definition Array.h:670
Definition IndirectArray.h:20
Definition UnrealString.h.inl:34
Definition BodySetup.h:128
Definition MaterialInterface.h:296
Definition ModelComponent.h:34
virtual bool WantsNegXTriMesh() override
Definition ModelComponent.h:130
const TIndirectArray< FModelElement > & GetElements() const
Definition ModelComponent.h:159
virtual ELightMapInteractionType GetStaticLightingType() const override
Definition ModelComponent.h:101
UModel * GetModel() const
Definition ModelComponent.h:158
TIndirectArray< FModelElement > & GetElements()
Definition ModelComponent.h:160
friend void SetDebugLightmapSample(TArray< UActorComponent * > *Components, UModel *Model, int32 iSurf, FVector ClickLocation)
virtual class UBodySetup * GetBodySetup() override
Definition ModelComponent.h:104
virtual bool SupportsStaticLighting() const override
Definition ModelComponent.h:189
Definition Model.h:401
Definition Object.h:95
virtual COREUOBJECT_API bool IsNameStableForNetworking() const
Definition Obj.cpp:5942
static COREUOBJECT_API void AddReferencedObjects(UObject *InThis, FReferenceCollector &Collector)
Definition GarbageCollection.cpp:6401
Definition StaticLighting.h:506
Definition Interface_CollisionDataProviderCore.h:68
Definition Interface_CollisionDataProviderCore.h:28
Definition ObjectPtr.h:488
Definition BoxSphereBounds.h:25