protected void CompileAndShareReferences(GraphInterlink requester, HashSet <GraphInterlink> commonInterlinks, Dictionary <string, UnityGraphObject> commonVariablesByID)
        {
            if (commonInterlinks.Contains(this))
            {
                return;
            }

            if (!AssociatedLinks.Contains(requester))
            {
                AssociatedLinks.Add(requester);
            }

            commonInterlinks.Add(this);
            interlinks = commonInterlinks;

            for (int i = 0; i < ConnectedUnityObjects.Count; i++)
            {
                UnityGraphObject obj = ConnectedUnityObjects[i];

                if (commonVariablesByID.ContainsKey(obj.ID))
                {
                    Debug.LogWarning("More than one object with ID " + obj.ID + " detected. Only one will be kept.");
                }
                else
                {
                    commonVariablesByID.Add(obj.ID, obj);
                }
            }
            VariablesByID = commonVariablesByID;

            for (int i = 0; i < AssociatedLinks.Count; i++)
            {
                AssociatedLinks[i].CompileAndShareReferences(this, commonInterlinks, commonVariablesByID);
            }
        }
        void Awake()
        {
            if (AssociatedInterlink == null)
            {
                AssociatedInterlink = GetComponent <GraphInterlink>();
            }

            UpdateListeners();
            UpdateAppearence();
        }
 protected void ValidateVariableConnections(GraphInterlink interlink)
 {
     for (int i = interlink.ConnectedUnityObjects.Count - 1; i >= 0; i--)
     {
         UnityGraphObject obj = interlink.ConnectedUnityObjects[i];
         if (!interlink.IsInRange(obj.gameObject))
         {
             Debug.LogWarning("Object not in range of graph " + name + ": " + obj.ID);
             interlink.ConnectedUnityObjects.RemoveAt(i);
             if (VariablesByID != null)
             {
                 VariablesByID.Remove(obj.ID);
             }
         }
     }
 }