예제 #1
0
    public void OnInputClicked(InputClickedEventData eventData)
    {
        switch (m_state)
        {
        case State.Scanning:
            SetState(State.FinalizeScan);
            break;

        case State.Playing:
            m_magnetOn = !m_magnetOn;
            if (m_magnetOn)
            {
                MonoBehaviour[] objects = FindObjectsOfType <MonoBehaviour>();
                foreach (MonoBehaviour obj in objects)
                {
                    IMagnetic magnetic = obj as IMagnetic;
                    if (magnetic != null)
                    {
                        float distance = (magnet.transform.position - obj.transform.position).magnitude;
                        if (distance < 1)
                        {
                            AttachToMagnet(obj.gameObject);
                            magnetic.OnMagnet(true);
                            m_magnetObjects.Add(obj.gameObject);
                        }
                    }
                }
            }
            else
            {
                foreach (GameObject obj in m_magnetObjects)
                {
                    DetachFromMagnet(obj);
                    obj.GetComponent <IMagnetic>().OnMagnet(false);
                }
                m_magnetObjects.Clear();
            }
            break;
        }
    }