using System; using System.Linq; using UnityEditor; using UnityEngine; namespace Unity.VisualScripting { public sealed class GraphPointerData { #if UNITY_6000_4_OR_NEWER [Serialize] private EntityId rootObjectInstanceID; #else [Serialize] private int rootObjectInstanceID; #endif [Serialize] private Guid[] parentElementGuids; private GraphPointerData(GraphPointer pointer) { #if UNITY_6000_4_OR_NEWER rootObjectInstanceID = pointer.rootObject.GetEntityId(); #else rootObjectInstanceID = pointer.rootObject.GetInstanceID(); #endif parentElementGuids = pointer.parentElementGuids.ToArray(); } public static GraphPointerData FromPointer(GraphPointer pointer) { if (pointer == null || !pointer.isValid) { return null; } return new GraphPointerData(pointer); } public GraphReference ToReference(bool ensureValid) { UnityEngine.Object obj; #if UNITY_6000_3_OR_NEWER obj = EditorUtility.EntityIdToObject(rootObjectInstanceID); #else obj = EditorUtility.InstanceIDToObject(rootObjectInstanceID); #endif return GraphReference.New(obj, parentElementGuids, ensureValid); } } }