namespace VRTK.Examples { using UnityEngine; using System.Collections.Generic; public class RendererOffOnDash : MonoBehaviour { private bool wasSwitchedOff = false; private List dashTeleporters = new List(); private void OnEnable() { foreach (var teleporter in VRTK_ObjectCache.registeredTeleporters) { var dashTeleporter = teleporter.GetComponent(); if (dashTeleporter) { dashTeleporters.Add(dashTeleporter); } } foreach (var dashTeleport in dashTeleporters) { dashTeleport.WillDashThruObjects += new DashTeleportEventHandler(RendererOff); dashTeleport.DashedThruObjects += new DashTeleportEventHandler(RendererOn); } } private void OnDisable() { foreach (var dashTeleport in dashTeleporters) { dashTeleport.WillDashThruObjects -= new DashTeleportEventHandler(RendererOff); dashTeleport.DashedThruObjects -= new DashTeleportEventHandler(RendererOn); } } private void RendererOff(object sender, DashTeleportEventArgs e) { GameObject go = this.transform.gameObject; foreach (RaycastHit hit in e.hits) { if (hit.collider.gameObject == go) { SwitchRenderer(go, false); break; } } } private void RendererOn(object sender, DashTeleportEventArgs e) { GameObject go = this.transform.gameObject; if (wasSwitchedOff) { SwitchRenderer(go, true); } } private void SwitchRenderer(GameObject go, bool enable) { go.GetComponent().enabled = enable; wasSwitchedOff = !enable; } } }