// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Containers/Set.h" #include "Containers/UnrealString.h" #include "EdGraph/EdGraph.h" #include "EdGraph/EdGraphNode.h" #include "HAL/Platform.h" #include "UObject/UObjectGlobals.h" #include "AIGraph.generated.h" class FArchive; class UEdGraphPin; class UObject; UCLASS() class AIGRAPH_API UAIGraph : public UEdGraph { GENERATED_UCLASS_BODY() UPROPERTY() int32 GraphVersion; virtual void OnCreated(); virtual void OnLoaded(); virtual void Initialize(); virtual void UpdateAsset(int32 UpdateFlags = 0); virtual void UpdateVersion(); virtual void MarkVersion(); virtual void OnSubNodeDropped(); virtual void OnNodesPasted(const FString& ImportStr); bool UpdateUnknownNodeClasses(); UE_DEPRECATED(5.6, "This method was only used to fetch error messages and log them. It has been renamed to better fit its purpose. Use UpdateErrorMessages instead.") void UpdateDeprecatedClasses(); /** Sets error messages and logs errors about nodes. */ void UpdateErrorMessages(); void RemoveOrphanedNodes(); void UpdateClassData(); bool IsLocked() const; void LockUpdates(); void UnlockUpdates(); //~ Begin UObject Interface. virtual void Serialize(FArchive& Ar) override; //~ End UObject Interface. protected: /** if set, graph modifications won't cause updates in internal tree structure * flag allows freezing update during heavy changes like pasting new nodes */ uint32 bLockUpdates : 1; virtual void CollectAllNodeInstances(TSet& NodeInstances); virtual bool CanRemoveNestedObject(UObject* TestObject) const; virtual void OnNodeInstanceRemoved(UObject* NodeInstance); UEdGraphPin* FindGraphNodePin(UEdGraphNode* Node, EEdGraphPinDirection Dir); };