namespace VRTK.Examples { using UnityEngine; public class SnapDropZoneGroup_Switcher : MonoBehaviour { private VRTK_SnapDropZone cubeZone; private VRTK_SnapDropZone sphereZone; private void Start() { cubeZone = transform.Find("Cube_SnapDropZone").gameObject.GetComponent(); sphereZone = transform.Find("Sphere_SnapDropZone").GetComponent(); cubeZone.ObjectEnteredSnapDropZone += new SnapDropZoneEventHandler(DoCubeZoneSnapped); cubeZone.ObjectSnappedToDropZone += new SnapDropZoneEventHandler(DoCubeZoneSnapped); cubeZone.ObjectExitedSnapDropZone += new SnapDropZoneEventHandler(DoCubeZoneUnsnapped); cubeZone.ObjectUnsnappedFromDropZone += new SnapDropZoneEventHandler(DoCubeZoneUnsnapped); sphereZone.ObjectEnteredSnapDropZone += new SnapDropZoneEventHandler(DoSphereZoneSnapped); sphereZone.ObjectSnappedToDropZone += new SnapDropZoneEventHandler(DoSphereZoneSnapped); sphereZone.ObjectExitedSnapDropZone += new SnapDropZoneEventHandler(DoSphereZoneUnsnapped); sphereZone.ObjectUnsnappedFromDropZone += new SnapDropZoneEventHandler(DoSphereZoneUnsnapped); } private void DoCubeZoneSnapped(object sender, SnapDropZoneEventArgs e) { if (sphereZone.GetCurrentSnappedObject() == null) { sphereZone.gameObject.SetActive(false); } } private void DoCubeZoneUnsnapped(object sender, SnapDropZoneEventArgs e) { if (cubeZone.GetCurrentSnappedObject() == null) { sphereZone.gameObject.SetActive(true); } } private void DoSphereZoneSnapped(object sender, SnapDropZoneEventArgs e) { if (cubeZone.GetCurrentSnappedObject() == null) { cubeZone.gameObject.SetActive(false); } } private void DoSphereZoneUnsnapped(object sender, SnapDropZoneEventArgs e) { if (sphereZone.GetCurrentSnappedObject() == null) { cubeZone.gameObject.SetActive(true); } } } }