Exemplo n.º 1
0
        public virtual void RemoveCustomReticle(XRBaseInteractor interactor)
        {
            if (interactor == null)
            {
                return;
            }

            // try and find any attached reticle and swap it
            IXRCustomReticleProvider ilv = interactor.transform.GetComponent <IXRCustomReticleProvider>();

            if (ilv != null)
            {
                GameObject reticle;
                bool       setCustomReticle = false;
                if (m_ReticleCache.TryGetValue(interactor, out reticle))
                {
                    Destroy(reticle);
                    m_ReticleCache.Remove(interactor);
                    setCustomReticle = true;
                }
                if (setCustomReticle)
                {
                    ilv.RemoveCustomReticle();
                }
            }
        }
Exemplo n.º 2
0
        public virtual void AttachCustomReticle(XRBaseInteractor interactor)
        {
            if (interactor == null)
            {
                return;
            }

            // try and find any attached reticle and swap it
            IXRCustomReticleProvider ilv = interactor.transform.GetComponent <IXRCustomReticleProvider>();

            if (ilv != null)
            {
                GameObject prevReticle;
                if (m_ReticleCache.TryGetValue(interactor, out prevReticle))
                {
                    Destroy(prevReticle);
                    m_ReticleCache.Remove(interactor);
                }
                if (m_CustomReticle != null)
                {
                    var rInstance = Instantiate(m_CustomReticle);
                    m_ReticleCache.Add(interactor, rInstance);
                    ilv.AttachCustomReticle(rInstance);
                }
            }
        }