UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DatasmithSceneGraphSharedState.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5
6#include "DirectLinkCommon.h"
7#include "DirectLinkLog.h"
9
10#include "Algo/Transform.h"
11
22
23
24template<typename T>
26{
27 // this kind of proxy could use type flags to allow/prevent null references, etc
28public:
29 TDatasmithReferenceProxy(const TSharedPtr<T>& Reference = nullptr)
30 : Inner(Reference)
31 {}
32
33 virtual int32 Num() const override { return 1; }
34
36 {
37 return Inner.Get();
38 }
39
41 {
42 Inner = nullptr;
43 if (NodeIds.Num() >= 1)
44 {
45 if (NodeIds.Num() > 1)
46 {
47 UE_LOG(LogDirectLink, Error, TEXT("Bad argument type: several references provided in a simple ref"));
48 return;
49 }
50
52 check(Node.IsValid());
54 }
55 }
56
57 const TSharedPtr<T>& View() const { return Inner; }
58 TSharedPtr<T>& Edit() { return Inner; }
59
60public:
62};
63
64
65template<typename T>
67{
68 using SizeType = typename TArray<TSharedPtr<T>>::SizeType;
69
70public:
71 virtual int32 Num() const override
72 {
73 return Inner.Num();
74 }
75
77 {
78 return Inner[Index].Get();
79 }
80
82 {
83 Inner.Reset(NodeIds.Num());
84 Algo::Transform(NodeIds, Inner, [&](DirectLink::FSceneGraphId NodeId)
85 {
86 // #ue_directlink_quality validate type through property "type" ?
88 check(Node.IsValid());
89 return StaticCastSharedPtr<T>(Node);
90 });
91 }
92
93
94 // simpler access to the inner array...
95 const TSharedPtr<T>& operator[](int32 Index) const { return Inner[Index]; }
97 bool IsValidIndex(SizeType Index) const { return Inner.IsValidIndex(Index); }
98 SizeType Add(const TSharedPtr<T>& Element) { return Inner.Add(Element); }
99 SizeType Add(TSharedPtr<T>&& Element) { return Inner.Add(MoveTemp(Element)); }
100 SizeType Remove(const TSharedPtr<T>& Item) { return Inner.Remove(Item); }
102 void Empty() { return Inner.Empty(); }
103
104 const TArray<TSharedPtr<T>>& View() const { return Inner; }
105 TArray<TSharedPtr<T>>& Edit() { return Inner; }
106
107private:
109};
#define check(expr)
Definition AssertionMacros.h:314
#define TEXT(x)
Definition Platform.h:1272
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 UE_LOG(CategoryName, Verbosity, Format,...)
Definition LogMacros.h:270
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition DatasmithSceneGraphSharedState.h:13
FDatasmithSceneGraphSharedState(const DirectLink::FSceneIdentifier &InSceneId)
Definition DatasmithSceneGraphSharedState.h:17
Definition Array.h:670
SizeType Remove(const ElementType &Item)
Definition Array.h:3091
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void RemoveAt(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2083
void Reset(SizeType NewSize=0)
Definition Array.h:2246
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_NODEBUG UE_FORCEINLINE_HINT bool IsValidIndex(SizeType Index) const
Definition Array.h:1122
void Empty(SizeType Slack=0)
Definition Array.h:2273
Definition DatasmithSceneGraphSharedState.h:67
bool IsValidIndex(SizeType Index) const
Definition DatasmithSceneGraphSharedState.h:97
virtual DirectLink::ISceneGraphNode * GetNode(int32 Index) const override
Definition DatasmithSceneGraphSharedState.h:76
TArray< TSharedPtr< T > > & Edit()
Definition DatasmithSceneGraphSharedState.h:105
virtual void SetNodes(DirectLink::IReferenceResolutionProvider &ResolutionProvider, const TArray< DirectLink::FSceneGraphId > &NodeIds) override
Definition DatasmithSceneGraphSharedState.h:81
SizeType Add(TSharedPtr< T > &&Element)
Definition DatasmithSceneGraphSharedState.h:99
virtual int32 Num() const override
Definition DatasmithSceneGraphSharedState.h:71
const TArray< TSharedPtr< T > > & View() const
Definition DatasmithSceneGraphSharedState.h:104
SizeType Add(const TSharedPtr< T > &Element)
Definition DatasmithSceneGraphSharedState.h:98
const TSharedPtr< T > & operator[](int32 Index) const
Definition DatasmithSceneGraphSharedState.h:95
void Empty()
Definition DatasmithSceneGraphSharedState.h:102
void RemoveAt(int32 Index)
Definition DatasmithSceneGraphSharedState.h:101
SizeType Remove(const TSharedPtr< T > &Item)
Definition DatasmithSceneGraphSharedState.h:100
TSharedPtr< T > & operator[](int32 Index)
Definition DatasmithSceneGraphSharedState.h:96
Definition DatasmithSceneGraphSharedState.h:26
virtual void SetNodes(DirectLink::IReferenceResolutionProvider &ResolutionProvider, const TArray< DirectLink::FSceneGraphId > &NodeIds) override
Definition DatasmithSceneGraphSharedState.h:40
const TSharedPtr< T > & View() const
Definition DatasmithSceneGraphSharedState.h:57
virtual DirectLink::ISceneGraphNode * GetNode(int32 Index) const override
Definition DatasmithSceneGraphSharedState.h:35
virtual int32 Num() const override
Definition DatasmithSceneGraphSharedState.h:33
TDatasmithReferenceProxy(const TSharedPtr< T > &Reference=nullptr)
Definition DatasmithSceneGraphSharedState.h:29
TSharedPtr< T > Inner
Definition DatasmithSceneGraphSharedState.h:61
TSharedPtr< T > & Edit()
Definition DatasmithSceneGraphSharedState.h:58
Definition SharedPointer.h:692
UE_FORCEINLINE_HINT ObjectType * Get() const
Definition SharedPointer.h:1065
UE_FORCEINLINE_HINT const bool IsValid() const
Definition SharedPointer.h:1085
void Transform(const InT &Input, OutT &&Output, TransformT Trans)
Definition Transform.h:66
U16 Index
Definition radfft.cpp:71