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; } }