void Update()
    {
#if !UNITY_EDITOR && UNITY_ANDROID
        t = Input.GetTouch(0);
        if (t.phase == TouchPhase.Began)
        {
            refPos = t.position;
        }
        else
        {
            refPos = Vector3.zero;
        }
#endif
#if UNITY_STANDALONE_WIN || UNITY_EDITOR
        refPos = Input.GetMouseButtonDown(0) ? Input.mousePosition : Vector3.zero;
#endif
        if (refPos == Vector3.zero)
        {
            return;
        }

        foreach (Camera cam in cams)
        {
            if (cam.gameObject.activeInHierarchy)
            {
                ray = cam.ScreenPointToRay(refPos);
                if (Physics.Raycast(ray, out hit, MAX_DIST, interactiveMask))
                {
                    IInputReceiver ir = hit.collider.GetComponentInParent <IInputReceiver>();
                    if (ir != null)
                    {
                        ir.ReceiveInput(cam);
                    }
                }
            }
        }
    }