Пример #1
0
	public static Edge GetDroppedEdge() {
		if (activeMouseovers.Count != 1) {
			return null;
		}
		LinkDrop dropped = activeMouseovers.Single ();
		int index = dropped.transform.GetSiblingIndex();
		NodeController nodeController = dropped.gameObject.GetComponentInParent<NodeController> ();
		return nodeController.node.Inputs [index];
	}
Пример #2
0
    public void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            if (EventSystem.current.currentSelectedGameObject == gameObject)
            {
                foreach (GameObject existingOutLink in FindObjectsOfType <EdgeView>().Where(x => x.Root == transform).Select(x => x.gameObject))
                {
                    Destroy(existingOutLink);
                }
                int            index          = transform.GetSiblingIndex();
                NodeController nodeController = gameObject.GetComponentInParent <NodeController> ();
                Edge           myEdge         = nodeController.node.Outputs [index];
                myEdge.OnRight = null;

                Transform wireParent = GameObject.FindWithTag("LinkParent").transform;
                dragging = GameObject.Instantiate <GameObject> (Resources.Load <GameObject> ("EdgeView")).GetComponent <EdgeView> ();
                dragging.transform.SetParent(wireParent);
                dragging.Root = transform;
            }
        }

        if (Input.GetMouseButtonUp(0))
        {
            if (EventSystem.current.currentSelectedGameObject == gameObject)
            {
                Edge target = LinkDrop.GetDroppedEdge();
                if (target == null)
                {
                    Destroy(dragging.gameObject);
                }
                else
                {
                    int            index          = transform.GetSiblingIndex();
                    NodeController nodeController = gameObject.GetComponentInParent <NodeController> ();
                    Edge           myEdge         = nodeController.node.Outputs [index];

                    if (myEdge.GetType() != target.GetType())
                    {
                        SFXPlayer.PlaySound("LinkFail");
                        Destroy(dragging.gameObject);
                    }
                    else
                    {
                        myEdge.OnRight    = target;
                        dragging.Target   = LinkDrop.CurrentTarget().transform;
                        dragging.IsActive = () => target.IsActive;

                        foreach (EdgeView edge in GameObject.FindObjectsOfType <EdgeView>().Where(x => x.Target == dragging.Target))
                        {
                            if (dragging != edge)
                            {
                                Destroy(edge.gameObject);
                            }
                        }

                        SFXPlayer.PlaySound("CreateLink");
                    }
                }
            }
        }
    }