UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
LandscapeEdit.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4LandscapeEdit.h: Classes for the editor to access to Landscape data
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
10#include "RHI.h"
11#include "LandscapeProxy.h"
12#include "Engine/Texture2D.h"
15#include "LandscapeInfo.h"
16#include "LandscapeComponent.h"
17#include "LandscapeEditTypes.h"
21
22#if WITH_EDITOR
25#endif
26
27#include "Landscape.h"
28
29class ULandscapeComponent;
30class ULandscapeInfo;
32
33
34#define MAX_LANDSCAPE_LOD_DISTANCE_FACTOR UE_DEPRECATED_MACRO(5.6, "MAX_LANDSCAPE_LOD_DISTANCE_FACTOR has been deprecated because it is no longer necessary") 10.f
35
36#if WITH_EDITOR
37
40{
41public:
42 virtual void PostUpdateLayerContent() PURE_VIRTUAL(ILandscapeEdModeInterface::PostUpdateLayerContent(), return;);
43 virtual ELandscapeToolTargetType GetLandscapeToolTargetType() const PURE_VIRTUAL(ILandscapeEdModeInterface::GetLandscapeToolTargetType(), return ELandscapeToolTargetType::Invalid;);
44 virtual const ULandscapeEditLayerBase* GetLandscapeSelectedLayer() const PURE_VIRTUAL(ILandscapeEdModeInterface::GetLandscapeSelectedLayer(), return nullptr;);
45 virtual ULandscapeLayerInfoObject* GetSelectedLandscapeLayerInfo() const PURE_VIRTUAL(ILandscapeEdModeInterface::GetSelectedLandscapeLayerInfo(), return nullptr;);
46 UE_DEPRECATED(5.7, "Non-edit layer landscapes are deprecated, all landscapes use the edit layer system now.")
47 virtual void OnCanHaveLayersContentChanged() PURE_VIRTUAL(ILandscapeEdModeInterface::OnCanHaveLayersContentChanged(), return;);
48};
49
51{
52 struct FMipInfo
53 {
54 void* MipData;
56 bool bFull;
57 };
58
61
62 // returns true if we need to block on the render thread before unlocking the mip data
63 bool UpdateTextureData();
64
65 int32 NumMips() { return MipInfo.Num(); }
66
68 {
69 if (MipInfo[MipNum].bFull)
70 {
71 return;
72 }
73
74 check(MipNum < MipInfo.Num());
75 uint32 Width = 1 + InX2 - InX1;
76 uint32 Height = 1 + InY2 - InY1;
77 // Catch situation where we are updating the whole texture to avoid adding redundant regions once the whole region as been included.
78 if (Width == GetMipSizeX(MipNum) && Height == GetMipSizeY(MipNum))
79 {
80 MipInfo[MipNum].bFull = true;
81 MipInfo[MipNum].MipUpdateRegions.Reset();
82 // Push a full region for UpdateTextureData() to process later
83 MipInfo[MipNum].MipUpdateRegions.Emplace(0, 0, 0, 0, Width, Height);
84 return;
85 }
86
87 MipInfo[MipNum].MipUpdateRegions.Emplace(InX1, InY1, InX1, InY1, Width, Height);
88 }
89
90 void* GetMipData(int32 MipNum)
91 {
92 check( MipNum < MipInfo.Num() );
93 if( !MipInfo[MipNum].MipData )
94 {
95 // will Unlock in destructor
96 MipInfo[MipNum].MipData = Texture->Source.LockMip(MipNum);
97 // probably should check that we got the lock :
98 //check( MipInfo[MipNum].MipData != nullptr );
99 // also this return value is usually cast to FColor *
100 // should instead have a function that returns FColor * and ensures the mip actually is BGRA8
101 }
102 return MipInfo[MipNum].MipData;
103 }
104
106 {
107 return FMath::Max(Texture->Source.GetSizeX() >> MipNum, 1);
108 }
109
111 {
112 return FMath::Max(Texture->Source.GetSizeY() >> MipNum, 1);
113 }
114
115private:
117 TArray<FMipInfo> MipInfo;
120};
121
123{
126
127 void SetShouldDirtyPackage(bool bValue) { bShouldDirtyPackage = bValue; }
128 bool GetShouldDirtyPackage() const { return bShouldDirtyPackage; }
129
130 // Texture data access
132
133 // Flush texture updates
134 LANDSCAPE_API void Flush();
135
136 // Texture bulk operations for weightmap reallocation
139 LANDSCAPE_API void CopyTextureFromHeightmap(UTexture2D* Dest, ULandscapeComponent* Comp, int32 MipIndex);
140 LANDSCAPE_API void CopyTextureFromHeightmap(UTexture2D* Dest, int32 DestChannel, ULandscapeComponent* Comp, int32 SrcChannel);
142 LANDSCAPE_API void CopyTextureFromWeightmap(UTexture2D* Dest, int32 DestChannel, ULandscapeComponent* Comp, ULandscapeLayerInfoObject* LayerInfo, int32 MipIndex);
143
144 template<typename TData>
145 void SetTextureValueTempl(UTexture2D* Dest, TData Value);
148
149 template<typename TData>
150 bool EqualTextureValueTempl(UTexture2D* Src, TData Value);
152
153private:
155
159};
160
162{
163 // this constructor will build an interface that works in the current edit layer (uses the ALandscape PrivateEditingLayer state)
165
166 // this constructor will build an interface that works in the specified edit layer : InEditLayerGUID
168
169 // switch the layer this interface works in
171
172 // returns the current layer this interface is working in
174
175 // Misc
177
178 //
179 // Heightmap access
180 //
181 LANDSCAPE_API void SetHeightData(int32 X1, int32 Y1, int32 X2, int32 Y2, const uint16* InData, int32 InStride, bool InCalcNormals, const uint16* InNormalData = nullptr, const uint16* InHeightAlphaBlendData = nullptr, const uint8* InHeightRaiseLowerData = nullptr, bool InCreateComponents = false, UTexture2D* InHeightmap = nullptr, UTexture2D* InXYOffsetmapTexture = nullptr,
182 bool InUpdateBounds = true, bool InUpdateCollision = true, bool InGenerateMips = true);
183
184 // Helper accessor
185 LANDSCAPE_API FORCEINLINE uint16 GetHeightMapData(const ULandscapeComponent* Component, int32 TexU, int32 TexV, FColor* TextureData = NULL);
186 // Helper accessor
187 LANDSCAPE_API FORCEINLINE uint16 GetHeightMapAlphaBlendData(const ULandscapeComponent* Component, int32 TexU, int32 TexV, FColor* TextureData = NULL);
188 // Helper accessor
189 LANDSCAPE_API FORCEINLINE uint8 GetHeightMapFlagsData(const ULandscapeComponent* Component, int32 TexU, int32 TexV, FColor* TextureData = NULL);
190 // Generic
191 template<typename TStoreData>
192 void GetHeightDataTempl(int32& X1, int32& Y1, int32& X2, int32& Y2, TStoreData& StoreData);
193 template<typename TStoreData>
195 template<typename TStoreData>
197 // Without data interpolation, able to get normal data
198 template<typename TStoreData>
199 void GetHeightDataTemplFast(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, TStoreData& StoreData, UTexture2D* InHeightmap = nullptr, TStoreData* NormalData = NULL);
200 // Implementation for fixed array
201 LANDSCAPE_API void GetHeightData(int32& X1, int32& Y1, int32& X2, int32& Y2, uint16* Data, int32 Stride);
202 LANDSCAPE_API void GetHeightDataFast(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, uint16* Data, int32 Stride, uint16* NormalData = NULL, UTexture2D* InHeightmap = nullptr);
203 LANDSCAPE_API void GetHeightAlphaBlendData(int32& X1, int32& Y1, int32& X2, int32& Y2, uint16* Data, int32 Stride);
204 LANDSCAPE_API void GetHeightFlagsData(int32& X1, int32& Y1, int32& X2, int32& Y2, uint8* Data, int32 Stride);
205 // Implementation for sparse array
206 LANDSCAPE_API void GetHeightData(int32& X1, int32& Y1, int32& X2, int32& Y2, TMap<FIntPoint, uint16>& SparseData);
208
209 UE_DEPRECATED(5.7, "XYOffset deprecated with the removal of non-edit layer landscapes")
211
212 //
213 // Weightmap access
214 //
215 // Helper accessor
219 // Without data interpolation
221 void GetWeightDataTemplFast(ULandscapeLayerInfoObject* LayerInfo, const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, TStoreData& StoreData);
222 // Implementation for fixed array
223 LANDSCAPE_API void GetWeightData(ULandscapeLayerInfoObject* LayerInfo, int32& X1, int32& Y1, int32& X2, int32& Y2, uint8* Data, int32 Stride);
224 //void GetWeightData(FName LayerName, int32& X1, int32& Y1, int32& X2, int32& Y2, TArray<uint8>* Data, int32 Stride);
225 LANDSCAPE_API void GetWeightDataFast(ULandscapeLayerInfoObject* LayerInfo, const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, uint8* Data, int32 Stride);
226 LANDSCAPE_API void GetWeightDataFast(ULandscapeLayerInfoObject* LayerInfo, const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, TArray<uint8>* Data, int32 Stride);
227 // Implementation for sparse array
228 LANDSCAPE_API void GetWeightData(ULandscapeLayerInfoObject* LayerInfo, int32& X1, int32& Y1, int32& X2, int32& Y2, TMap<FIntPoint, uint8>& SparseData);
229 //void GetWeightData(FName LayerName, int32& X1, int32& Y1, int32& X2, int32& Y2, TMap<uint64, TArray<uint8>>& SparseData);
230 LANDSCAPE_API void GetWeightDataFast(ULandscapeLayerInfoObject* LayerInfo, const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, TMap<FIntPoint, uint8>& SparseData);
231 LANDSCAPE_API void GetWeightDataFast(ULandscapeLayerInfoObject* LayerInfo, const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, TMap<FIntPoint, TArray<uint8>>& SparseData);
232 // Updates weightmap for LayerInfo
234 UE_DEPRECATED(5.7, "Support for bWeightAdjust and bTotalWeightAdjust have been removed, this function shall be used anymore")
236 // Updates weightmaps for all layers. Data points to packed data for all layers in the landscape info
238 // Delete a layer and re-normalize other layers
240 // Fill a layer and re-normalize other layers
242 // Fill all empty layers and re-normalize layers
244
245 // Replace/merge a layer (across all edit layers and the main runtime layer)
247
249 void GetEditToolTextureData(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, TStoreData& StoreData, TFunctionRef<UTexture2D*(ULandscapeComponent*)> GetComponentTexture);
251
252 // Without data interpolation, Select Data
254 void GetSelectDataTempl(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, TStoreData& StoreData);
255 LANDSCAPE_API void GetSelectData(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, uint8* Data, int32 Stride);
256 LANDSCAPE_API void GetSelectData(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, TMap<FIntPoint, uint8>& SparseData);
257 LANDSCAPE_API void SetSelectData(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, const uint8* Data, int32 Stride);
258
260 void GetLayerContributionDataTempl(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, TStoreData& StoreData);
261 LANDSCAPE_API void GetLayerContributionData(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, uint8* Data, int32 Stride);
262 LANDSCAPE_API void GetLayerContributionData(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, TMap<FIntPoint, uint8>& SparseData);
263 LANDSCAPE_API void SetLayerContributionData(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, const uint8* Data, int32 Stride);
264
266 void GetDirtyDataTempl(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, TStoreData& StoreData);
267 LANDSCAPE_API void GetDirtyData(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, uint8* Data, int32 Stride);
268 LANDSCAPE_API void GetDirtyData(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, TMap<FIntPoint, uint8>& SparseData);
269 LANDSCAPE_API void SetDirtyData(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, const uint8* Data, int32 Stride);
270
271 UE_DEPRECATED(5.7, "XYOffset deprecated with the removal of non-edit layer landscapes")
272 LANDSCAPE_API void SetXYOffsetData(int32 X1, int32 Y1, int32 X2, int32 Y2, const FVector2D* Data, int32 Stride);
273 UE_DEPRECATED(5.7, "XYOffset deprecated with the removal of non-edit layer landscapes")
274 LANDSCAPE_API void SetXYOffsetData(int32 X1, int32 Y1, int32 X2, int32 Y2, const FVector* Data, int32 Stride);
275 // Helper accessor
276 UE_DEPRECATED(5.7, "XYOffset deprecated with the removal of non-edit layer landscapes")
277 LANDSCAPE_API FORCEINLINE FVector2D GetXYOffsetmapData(const ULandscapeComponent* Component, int32 TexU, int32 TexV, FColor* TextureData = NULL);
278
279 UE_DEPRECATED(5.7, "XYOffset deprecated with the removal of non-edit layer landscapes")
280 LANDSCAPE_API void GetXYOffsetData(int32& X1, int32& Y1, int32& X2, int32& Y2, FVector2D* Data, int32 Stride);
281 UE_DEPRECATED(5.7, "XYOffset deprecated with the removal of non-edit layer landscapes")
283 UE_DEPRECATED(5.7, "XYOffset deprecated with the removal of non-edit layer landscapes")
284 LANDSCAPE_API void GetXYOffsetData(int32& X1, int32& Y1, int32& X2, int32& Y2, FVector* Data, int32 Stride);
285 UE_DEPRECATED(5.7, "XYOffset deprecated with the removal of non-edit layer landscapes")
287
288 // Without data interpolation, able to get normal data
289 UE_DEPRECATED(5.7, "XYOffset deprecated with the removal of non-edit layer landscapes")
290 LANDSCAPE_API void GetXYOffsetDataFast(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, FVector2D* Data, int32 Stride);
291 UE_DEPRECATED(5.7, "XYOffset deprecated with the removal of non-edit layer landscapes")
292 LANDSCAPE_API void GetXYOffsetDataFast(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, TMap<FIntPoint, FVector2D>& SparseData);
293 UE_DEPRECATED(5.7, "XYOffset deprecated with the removal of non-edit layer landscapes")
294 LANDSCAPE_API void GetXYOffsetDataFast(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, FVector* Data, int32 Stride);
295 UE_DEPRECATED(5.7, "XYOffset deprecated with the removal of non-edit layer landscapes")
296 LANDSCAPE_API void GetXYOffsetDataFast(const int32 X1, const int32 Y1, const int32 X2, const int32 Y2, TMap<FIntPoint, FVector>& SparseData);
297
300
302
303 UE_DEPRECATED(5.7, "Non-edit layer landscapes are deprecated, all landscapes use the edit layer system now.")
305 UE_DEPRECATED(5.7, "Non-edit layer landscapes are deprecated, all landscapes use the edit layer system now.")
307
308private:
309 int32 ComponentSizeQuads;
310 int32 SubsectionSizeQuads;
311 int32 ComponentNumSubsections;
312 FVector DrawScale;
313
315
316 // if true, we use the LandscapeActor->PrivateEditingLayer, otherwise we use the LocalEditLayerGUID specified below
319
321
322 // Only for Missing Data interpolation... only internal usage
324 void CalcMissingValues(const int32 X1, const int32 X2, const int32 Y1, const int32 Y2,
328
329 // Generic Height Data access
332
333 FORCEINLINE FColor& GetHeightMapColor(const ULandscapeComponent* Component, int32 TexU, int32 TexV, FColor* TextureData);
334
335 // test if layer is allowed for a given texel
336 inline bool IsLayerAllowed(const ULandscapeLayerInfoObject* LayerInfo,
339
340 // counts the total influence of each weight-blended layer on this component
341 // TODO [jonathan.bard] : Remove when we get rid of non-edit layers (this is only used by ChooseReplacementLayer, which is only used by SetAlphaData, when bWeightAdjust == true)
343
344 // chooses a replacement layer to use when erasing from 100% influence on a texel
345 // TODO [jonathan.bard] : Remove when we get rid of non-edit layers (this is only used by SetAlphaData, when bWeightAdjust == true)
347};
348
350{
353 {
354 if (bScopeEnabled)
355 {
356 bPreviousValue = EditInterface.GetShouldDirtyPackage();
357 EditInterface.SetShouldDirtyPackage(false);
358 }
359 }
360
362 {
363 if (bScopeEnabled)
364 {
365 EditInterface.SetShouldDirtyPackage(bPreviousValue);
366 }
367 }
368
370 bool bPreviousValue;
371 bool bScopeEnabled;
372};
373
374template<typename T>
375void FLandscapeEditDataInterface::ShrinkData(TArray<T>& Data, int32 OldMinX, int32 OldMinY, int32 OldMaxX, int32 OldMaxY, int32 NewMinX, int32 NewMinY, int32 NewMaxX, int32 NewMaxY)
376{
380
381 if (NewMinX != OldMinX || NewMinY != OldMinY ||
383 {
384 // if only the MaxY changes we don't need to do the moving, only the truncate
385 if (NewMinX != OldMinX || NewMinY != OldMinY || NewMaxX != OldMaxX)
386 {
387 for (int32 DestY = 0, SrcY = NewMinY - OldMinY; DestY <= NewMaxY - NewMinY; DestY++, SrcY++)
388 {
389// UE_LOG(LogLandscape, Warning, TEXT("Dest: %d, %d = %d Src: %d, %d = %d Width = %d"), 0, DestY, DestY * (1 + NewMaxX - NewMinX), NewMinX - OldMinX, SrcY, SrcY * (1 + OldMaxX - OldMinX) + NewMinX - OldMinX, (1 + NewMaxX - NewMinX));
390 T* DestData = &Data[DestY * (1 + NewMaxX - NewMinX)];
391 const T* SrcData = &Data[SrcY * (1 + OldMaxX - OldMinX) + NewMinX - OldMinX];
392 FMemory::Memmove(DestData, SrcData, (1 + NewMaxX - NewMinX) * sizeof(T));
393 }
394 }
395
396 const int32 NewSize = (1 + NewMaxY - NewMinY) * (1 + NewMaxX - NewMinX);
397 Data.RemoveAt(NewSize, Data.Num() - NewSize);
398 }
399}
400
401//
402// FHeightmapAccessor
403//
404template<bool bInUseInterp>
406{
407 enum { bUseInterp = bInUseInterp };
409 {
412 }
413
415 {
416 LandscapeEdit->SetEditLayer(InEditLayerGUID);
417 }
418
419 FGuid GetEditLayer() const
420 {
421 return LandscapeEdit->GetEditLayer();
422 }
423
424 // accessors
425 void GetData(int32& X1, int32& Y1, int32& X2, int32& Y2, TMap<FIntPoint, uint16>& Data)
426 {
427 LandscapeEdit->GetHeightData(X1, Y1, X2, Y2, Data);
428 }
429
430 void GetData(int32& X1, int32& Y1, int32& X2, int32& Y2, uint16* Data)
431 {
432 LandscapeEdit->GetHeightData(X1, Y1, X2, Y2, Data, 0);
433 }
434
435 void GetDataFast(int32 X1, int32 Y1, int32 X2, int32 Y2, TMap<FIntPoint, uint16>& Data)
436 {
437 LandscapeEdit->GetHeightDataFast(X1, Y1, X2, Y2, Data);
438 }
439
440 void GetDataFast(int32 X1, int32 Y1, int32 X2, int32 Y2, uint16* Data)
441 {
442 LandscapeEdit->GetHeightDataFast(X1, Y1, X2, Y2, Data, 0);
443 }
444
445 // Render the heightmap with overrides on edit layer visibility. Does not modify persistent landscape data like FLandscapeEditDataInterface does.
446 // This function exists mainly as a template customization point to handle uint16 for heights and uint8 for weights.
447 // EvalRect is half-open.
449 {
452 RenderParams.ActiveEditLayers = ActiveEditLayers;
453 RenderParams.CpuResult = OutData;
454
455 return Landscape->SelectiveRenderEditLayersHeightmaps(RenderParams);
456 }
457
458 void SetData(int32 X1, int32 Y1, int32 X2, int32 Y2, const uint16* Data, ELandscapeLayerPaintingRestriction PaintingRestriction = ELandscapeLayerPaintingRestriction::None)
459 {
461 if (LandscapeInfo && LandscapeEdit->GetComponentsInRegion(X1, Y1, X2, Y2, &Components))
462 {
463 // Update data
464 ChangedComponents.Append(Components);
465
466 for (ULandscapeComponent* Component : Components)
467 {
468 Component->RequestHeightmapUpdate();
469 }
470
471 LandscapeEdit->SetHeightData(X1, Y1, X2, Y2, Data, 0, /*InCalcNormals=*/ false);
472 }
473 }
474
475 void Flush()
476 {
477 LandscapeEdit->Flush();
478 }
479
480 virtual ~FHeightmapAccessor()
481 {
482 // Flush here manually so it will release the lock of the textures, as we will re lock for other things afterward
483 Flush();
484
485 delete LandscapeEdit;
487 }
488
489private:
493};
494
495//
496// TAlphamapAccessor
497//
498template<bool bInUseInterp>
500{
501 enum { bUseInterp = bInUseInterp };
505 , LayerInfo(InLayerInfo)
506 {
507 // should be no Layer change during FAlphamapAccessor lifetime...
509 {
510 if (LayerInfo == ALandscapeProxy::VisibilityLayer)
511 {
513 }
514 else
515 {
516 bPerformLegacyWeightBalancing = (LayerInfo->GetBlendMethod() == ELandscapeTargetLayerBlendMethod::FinalWeightBlending);
517 }
518 }
519 }
520
521 void GetData(int32& X1, int32& Y1, int32& X2, int32& Y2, TMap<FIntPoint, uint8>& Data)
522 {
523 LandscapeEdit.GetWeightData(LayerInfo, X1, Y1, X2, Y2, Data);
524 }
525
526 void GetData(int32& X1, int32& Y1, int32& X2, int32& Y2, uint8* Data)
527 {
528 LandscapeEdit.GetWeightData(LayerInfo, X1, Y1, X2, Y2, Data, 0);
529 }
530
531 void GetDataFast(int32 X1, int32 Y1, int32 X2, int32 Y2, TMap<FIntPoint, uint8>& Data)
532 {
533 LandscapeEdit.GetWeightDataFast(LayerInfo, X1, Y1, X2, Y2, Data);
534 }
535
536 void GetDataFast(int32 X1, int32 Y1, int32 X2, int32 Y2, uint8* Data)
537 {
538 LandscapeEdit.GetWeightDataFast(LayerInfo, X1, Y1, X2, Y2, Data, 0);
539 }
540
542 {
544 return false;
545 }
546
547 void SetData(int32 X1, int32 Y1, int32 X2, int32 Y2, const uint8* Data, ELandscapeLayerPaintingRestriction PaintingRestriction)
548 {
550 if (LandscapeEdit.GetComponentsInRegion(X1, Y1, X2, Y2, &Components))
551 {
552 for (ULandscapeComponent* LandscapeComponent : Components)
553 {
554 // Flag both modes depending on client calling SetData
555 LandscapeComponent->RequestWeightmapUpdate();
556 }
557
559 LandscapeEdit.SetAlphaData(LayerInfo, X1, Y1, X2, Y2, Data, /*Stride = */0, PaintingRestriction, /*bWeightAdjust = */bPerformLegacyWeightBalancing, /*bTotalWeightAdjust = */false);
561 //LayerInfo->IsReferencedFromLoadedData = true;
562 }
563 }
564
565 void Flush()
566 {
567 LandscapeEdit.Flush();
568 }
569
571 {
572 LandscapeEdit.SetEditLayer(InEditLayerGUID);
573 }
574
575 FGuid GetEditLayer() const
576 {
577 return LandscapeEdit.GetEditLayer();
578 }
579
580private:
584 ULandscapeLayerInfoObject* LayerInfo;
586};
587
588template<bool bInUseInterp, bool bInUseTotalNormalize>
589struct UE_DEPRECATED(5.7, "Use TAlphamapAccessor instead") FAlphamapAccessor : public TAlphamapAccessor<bInUseInterp>
590{
591};
592
593#endif
594
OODEFFUNC typedef const int const char * function
Definition oodle2.h:710
#define NULL
Definition oodle2base.h:134
#define FORCEINLINE
Definition AndroidPlatform.h:140
#define check(expr)
Definition AssertionMacros.h:314
#define unimplemented()
Definition AssertionMacros.h:321
#define PURE_VIRTUAL(func,...)
Definition CoreMiscDefines.h:103
#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 PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
ELandscapeToolTargetType
Definition LandscapeEditTypes.h:12
ELandscapeLayerPaintingRestriction
Definition LandscapeProxy.h:199
ELandscapeTextureType
Definition LandscapeTextureHash.h:13
ELandscapeTextureUsage
Definition LandscapeTextureHash.h:21
auto GetData(const TStringConversion< Converter, DefaultConversionSize > &Conversion) -> decltype(Conversion.Get())
Definition StringConv.h:802
TextureGroup
Definition TextureDefines.h:29
uint32 Offset
Definition VulkanMemory.cpp:4033
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Landscape.Build.cs:7
Definition ArrayView.h:139
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition LandscapeEditLayer.h:46
Definition LandscapeInfo.h:109
Definition LandscapeLayerInfoObject.h:60
Definition Texture2D.h:26
GeometryCollection::Facades::FMuscleActivationData Data
Definition MuscleActivationConstraints.h:15
constexpr int32 NumMips
Definition DistanceFieldAtlas.h:44
Definition Color.h:486
Definition Guid.h:109
FIntRect Bounds
Definition Landscape.h:249
Definition Landscape.h:259
static UE_FORCEINLINE_HINT void * Memmove(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:109
Definition Optional.h:131
Definition IntPoint.h:25