using UnityEngine; namespace MS_Outline.Demo { /// /// Enables glow on any object with GlowOutlineTarget when the mouse hovers over it. /// Attach this to any active GameObject in the scene (e.g., Main Camera). /// public class MouseHoverGlow : MonoBehaviour { [Tooltip("The camera to use for raycasting. If not set, Camera.main will be used.")] [SerializeField] private Camera raycastCamera; [Tooltip("Maximum distance for the raycast.")] [SerializeField] private float maxRaycastDistance = 100f; [Tooltip("Layer mask for the raycast. Leave as Everything to hit all layers.")] [SerializeField] private LayerMask layerMask = ~0; private GlowOutlineTarget currentHoveredTarget; private void Start() { if (raycastCamera == null) raycastCamera = Camera.main; } private void Update() { if (raycastCamera == null) return; Ray ray = raycastCamera.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out RaycastHit hit, maxRaycastDistance, layerMask)) { var target = hit.collider.GetComponentInParent(); if (target != currentHoveredTarget) { // Disable glow on previous target if (currentHoveredTarget != null) currentHoveredTarget.DisableGlow(); // Enable glow on new target currentHoveredTarget = target; if (currentHoveredTarget != null) currentHoveredTarget.EnableGlow(); } } else { // Mouse is not over any collider if (currentHoveredTarget != null) { currentHoveredTarget.DisableGlow(); currentHoveredTarget = null; } } } private void OnDisable() { // Clean up when disabled if (currentHoveredTarget != null) { currentHoveredTarget.DisableGlow(); currentHoveredTarget = null; } } } }