UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DatasmithSceneReceiver.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Map.h"
7#include "DirectLinkCommon.h"
11#include "Templates/UniquePtr.h"
12
13#define UE_API DATASMITHCORE_API
14
16class IDatasmithScene;
17namespace DirectLink { class FElementSnapshot; }
18namespace DirectLink { class FSceneSnapshot; }
19
26{
27public:
29 {
30 public:
31 virtual void OnOpenDelta() = 0;
32 virtual void OnNewScene(const DirectLink::FSceneIdentifier& SceneId) = 0;
35 virtual void OnRemovedElement(DirectLink::FSceneGraphId ElementId) = 0;
36 virtual void OnCloseDelta() = 0;
37 };
38
39public:
41
42 // Register a listner that will be notified of important scene edition events
43 void SetChangeListener(ISceneChangeListener* Listener) { ChangeListener = Listener; }
44
45 // Get the reconstructed DatasmithScene. Can be null.
47
48private: // DirectLink::ISceneReceiver API
49 UE_API virtual void FinalSnapshot(const DirectLink::FSceneSnapshot& SceneSnapshot) override;
50
51 struct FSceneState;
52
53 UE_API TUniquePtr<FSceneState> ParseSnapshot(const DirectLink::FSceneSnapshot& SceneSnapshot);
54
55private:
56 struct FDatasmithElementPointers : public DirectLink::IReferenceResolutionProvider
57 {
58 // IReferenceResolutionProvider API
60 void Reset() { ElementsSharedPtrs.Reset(); }
61 void Remove(DirectLink::FSceneGraphId NodeId) { ElementsSharedPtrs.Remove(NodeId); }
62 void Add(DirectLink::FSceneGraphId Id, TSharedPtr<IDatasmithElement> Element) { ElementsSharedPtrs.Add(Id, Element); }
64 };
65
66 struct FFinalizableNode
67 {
70 };
71
72 ISceneChangeListener* ChangeListener = nullptr;
73
74 struct FSceneHashTable
75 {
77 static FSceneHashTable FromSceneSnapshot(const DirectLink::FSceneSnapshot& SceneSnapshot);
78 };
79
80 struct FSceneState
81 {
84 FDatasmithElementPointers Elements;
85 FSceneHashTable HashTable;
86 };
87
89};
90
91
92#undef UE_API
#define UE_API
Definition DatasmithSceneReceiver.h:13
Definition DatasmithSceneReceiver.h:29
virtual void OnAddElement(DirectLink::FSceneGraphId, TSharedPtr< IDatasmithElement > Element)=0
virtual void OnNewScene(const DirectLink::FSceneIdentifier &SceneId)=0
virtual void OnChangedElement(DirectLink::FSceneGraphId, TSharedPtr< IDatasmithElement > Element)=0
virtual void OnRemovedElement(DirectLink::FSceneGraphId ElementId)=0
Definition DatasmithSceneReceiver.h:26
void SetChangeListener(ISceneChangeListener *Listener)
Definition DatasmithSceneReceiver.h:43
UE_API TSharedPtr< IDatasmithScene > GetScene() const
Definition DatasmithSceneReceiver.cpp:43
UE_API FDatasmithSceneReceiver()
Definition DatasmithSceneReceiver.cpp:37
Definition IDatasmithSceneElements.h:28
Definition IDatasmithSceneElements.h:1466
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition UniquePtr.h:107
@ Element
Definition Visu.h:18