Пример #1
0
 public void OnChildTriggerEnter(ConnectableNode other, Transform child)
 {
     if (child.name == "LowerTrigger" && other.tag != "Event")
     {
         if (connectedNodes.FirstOrDefault() != other)
         {
             if (!other.before)
             {
                 isAfter = true;
                 ShowPreview(other.transform);
                 previewOwner = this;
                 isBetween    = MoveConnected(connectedNodes, 1);
             }
         }
     }
     else if (child.name == "UpperTrigger")
     {
         if (!other.connectedNodes.Any())
         {
             isAfter = isBetween = false;
             ShowPreview(other.transform);
             previewOwner = this;
         }
     }
 }
Пример #2
0
        public void OnMouseUp()
        {
            dragTarget = dragInvolved = false;

            if (preview)
            {
                if (isAfter)
                {
                    transform.position = preview.transform.position;
                    transform.rotation = preview.transform.rotation;
                    before             = previewOwner;
                    if (before.connectedNodes.FirstOrDefault() != this)
                    {
                        List <ConnectableNode> newConnections = new List <ConnectableNode> {
                            this
                        };
                        newConnections.AddRange(connectedNodes);
                        if (isBetween)
                        {
                            before.connectedNodes[0].before = this;
                            foreach (ConnectableNode a in connectedNodes)
                            {
                                a.connectedNodes.AddRange(before.connectedNodes);
                            }
                            connectedNodes.AddRange(before.connectedNodes);
                            before.UpdateConnections(newConnections, before.connectedNodes[0]);
                        }
                        else
                        {
                            before.UpdateConnections(newConnections);
                        }
                    }
                }
                else
                {
                    ConnectableNode        first          = connectedNodes.Any() ? connectedNodes.LastOrDefault() : this;
                    List <ConnectableNode> newConnections = new List <ConnectableNode> {
                        previewOwner
                    };
                    newConnections.AddRange(previewOwner.connectedNodes);
                    first.UpdateConnections(newConnections);
                    previewOwner.before = this;
                    previewOwner.transform.Find("UpperTrigger").GetComponent <Collider>().enabled = false;
                }
                RemovePreview();
            }

            transform.Find("LowerTrigger").GetComponent <Collider>().enabled = true;
            Collider upperTrigger = transform.Find("UpperTrigger").GetComponent <Collider>();

            if (upperTrigger && !before)
            {
                upperTrigger.GetComponent <Collider>().enabled = true;
            }
            foreach (ConnectableNode a in connectedNodes)
            {
                a.transform.Find("LowerTrigger").GetComponent <Collider>().enabled = true;
                a.dragInvolved = false;
            }
        }
Пример #3
0
        public void UpdateConnections(List <ConnectableNode> newConnections, ConnectableNode after)
        {
            int from = connectedNodes.IndexOf(after);

            connectedNodes.InsertRange(from, newConnections);
            if (before)
            {
                before.UpdateConnections(newConnections, after);
            }
        }
Пример #4
0
        public void UpdateConnections(ConnectableNode disconnected)
        {
            int from = connectedNodes.IndexOf(disconnected);

            connectedNodes.RemoveRange(from, connectedNodes.Count - from);
            if (before)
            {
                before.UpdateConnections(disconnected);
            }
        }
Пример #5
0
 public void OnChildTriggerStay(ConnectableNode other, Transform child)
 {
     if (!preview && other.GetComponent <ConnectableNode>().dragTarget&& other.tag != "Event")
     {
         isAfter = child.name == "LowerTrigger";
         ShowPreview(other.transform);
         previewOwner = this;
         isBetween    = MoveConnected(connectedNodes, 1);
     }
 }
Пример #6
0
 protected void RemovePreview()
 {
     if (preview)
     {
         MoveConnected(connectedNodes);
         Destroy(preview);
         preview      = null;
         previewOwner = null;
     }
 }
Пример #7
0
 public void OnChildTriggerExit(ConnectableNode other, Transform child)
 {
     if (other.dragInvolved && this == previewOwner)
     {
         RemovePreview();
         if (connectedNodes.FirstOrDefault() == other)
         {
             other.before = null;
             UpdateConnections(other);
         }
     }
 }