Exemple #1
0
    // Update is called once per frame
    void Update()
    {
        if (UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
        {
            canvas.gameObject.SetActive(false);
            if (toSpawn != null)
            {
                toSpawn.hologram.gameObject.SetActive(false);
            }
            return;
        }
        canvas.gameObject.SetActive(true);
        transform.position = (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition);

        if (toSpawn != null)
        {
            toSpawn.hologram.gameObject.SetActive(true);
        }

        if (Input.GetMouseButtonDown(0))
        {
            GameObject newO = Instantiate(toSpawn.prefab.gameObject);
            newO.transform.position = transform.position;
            spawned.Add(newO.GetComponent <Spawnable>());
        }

        if (!UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
        {
            Spawnable toDelete        = null;
            float     closestDistance = Mathf.Infinity;
            foreach (Collider2D d in Physics2D.OverlapCircleAll(transform.position, deleteRadius))
            {
                Spawnable s = d.GetComponentInParent <Spawnable>();
                if (s != null)
                {
                    Vector2 closestOnCollider = d.ClosestPoint(transform.position);
                    float   dist = Vector2.Distance(closestOnCollider, transform.position);
                    if (toDelete == null || dist < closestDistance)
                    {
                        toDelete = s;
                    }
                }
            }

            if (toDelete != deleteHover)
            {
                if (deleteHover != null)
                {
                    deleteHover.Untint();
                }

                deleteHover = toDelete;
                if (deleteHover != null)
                {
                    deleteHover.Tint(deleteTint);
                }
            }

            if (Input.GetMouseButtonUp(1))
            {
                if (deleteHover != null)
                {
                    Destroy(deleteHover.gameObject);
                    deleteHover = null;
                }
            }

            deleteTooltip.SetActive(deleteHover != null);
        }
    }