UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
LandscapeEditLayerMergeRenderContext.inl
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
8
10{
11
12#if WITH_EDITOR
13
14template <typename T, typename>
15bool UE::Landscape::EditLayers::FMergeRenderContext::HasBlackboardItem() const
16{
18 {
19 if (const T* TypedItem = Item.template GetPtr<T>())
20 {
21 return true;
22 }
23 }
24 return false;
25}
26
27template <typename T, typename... TArgs, typename>
28T& UE::Landscape::EditLayers::FMergeRenderContext::AddBlackboardItem(TArgs&&... InArgs)
29{
30 T* Item = BlackboardItems.Add_GetRef(TInstancedStruct<T>::Make(Forward<TArgs>(InArgs)...)).template GetMutablePtr<T>();
31 return *Item;
32}
33
34template <typename T, typename>
35T* UE::Landscape::EditLayers::FMergeRenderContext::TryGetBlackboardItem()
36{
38 {
39 if (T* TypedItem = Item.template GetMutablePtr<T>())
40 {
41 return TypedItem;
42 }
43 }
44 return nullptr;
45}
46
47template <typename T, typename>
48T& UE::Landscape::EditLayers::FMergeRenderContext::GetBlackboardItem()
49{
51 {
52 if (T* TypedItem = Item.template GetMutablePtr<T>())
53 {
54 return *TypedItem;
55 }
56 }
57 check(false);
58
59 // this is absolutely wrong, but we shouldn't ever reach that line and we need to return something anyway :
61 return *reinterpret_cast<T*>(&DummyItem);
62}
63
64template <typename T, typename... TArgs, typename>
65T& UE::Landscape::EditLayers::FMergeRenderContext::GetOrCreateBlackboardItem(TArgs&&... InArgs)
66{
67 T* Item = TryGetBlackboardItem<T>();
68 if (Item == nullptr)
69 {
70 Item = BlackboardItems.Add_GetRef(TInstancedStruct<T>::Make(Forward<TArgs>(InArgs)...)).template GetMutablePtr<T>();
71 }
72 check(Item != nullptr);
73 return *Item;
74}
75
76template <typename T, typename>
77TArray<T*> UE::Landscape::EditLayers::FMergeRenderContext::GetBlackboardItems()
78{
79 TArray<T*> Items;
81 {
82 if (T* TypedItem = Item.template GetMutablePtr<T>())
83 {
84 Items.Add(TypedItem);
85 }
86 }
87 return Items;
88}
89
90#endif // WITH_EDITOR
91
92} //namespace UE::Landscape::EditLayers
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition Array.h:670
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
Definition Landscape.h:55
Definition LandscapeEditLayerMergeRenderBlackboardItem.h:18
Definition InstancedStruct.h:307