|
|
- namespace VRTK.Examples
- {
- using UnityEngine;
- using System.Collections.Generic;
-
- public class RendererOffOnDash : MonoBehaviour
- {
- private bool wasSwitchedOff = false;
- private List<VRTK_DashTeleport> dashTeleporters = new List<VRTK_DashTeleport>();
-
- private void OnEnable()
- {
- foreach (var teleporter in VRTK_ObjectCache.registeredTeleporters)
- {
- var dashTeleporter = teleporter.GetComponent<VRTK_DashTeleport>();
- 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<Renderer>().enabled = enable;
- wasSwitchedOff = !enable;
- }
- }
- }
|