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