using System.Collections.Generic; using UnityEngine; namespace HurricaneVR.Framework.Components { public class HVRMeshGlowHighlight : HVRGrabbableHoverBase { private readonly HashSet _highlightObjects = new HashSet(); private readonly HashSet _renderers = new HashSet(); void Awake() { var meshes = GetComponentsInChildren(); foreach (var mesh in meshes) { var go = mesh.gameObject; var meshRenderer = go.GetComponent(); if (meshRenderer) { _renderers.Add(meshRenderer); } var highlightObj = new GameObject("HighlightMesh"); highlightObj.transform.SetParent(go.transform, false); var clone = highlightObj.AddComponent(); clone.sharedMesh = mesh.sharedMesh; var newRenderer = highlightObj.AddComponent(); newRenderer.sharedMaterial = Resources.Load("GrabbableHighlight"); _highlightObjects.Add(highlightObj); highlightObj.SetActive(false); } } public override void Hover() { foreach (var highlight in _highlightObjects) { highlight.SetActive(true); } foreach (var r in _renderers) { r.enabled = false; } } public override void Unhover() { foreach (var highlight in _highlightObjects) { highlight.SetActive(false); } foreach (var r in _renderers) { r.enabled = true; } } public override void Enable() { } public override void Disable() { } } }