using System.Collections.Generic; using RoR2; using UnityEngine; public class UnseenHandIndicator : MonoBehaviour { public Color customColor = Color.magenta; private Dictionary pairs = new Dictionary(); private void OnTriggerEnter(Collider other) { AddIndictator(other); } private void OnTriggerExit(Collider other) { DelIndictator(other); } private void AddIndictator(Collider target) { if (pairs.ContainsKey(target)) { return; } CharacterModel characterModel = target.GetComponent()?.modelTransform?.GetComponent(); if (characterModel == null || characterModel.body.teamComponent.teamIndex != TeamIndex.Monster) { return; } CharacterModel.RendererInfo[] baseRendererInfos = characterModel.baseRendererInfos; for (int i = 0; i < baseRendererInfos.Length; i++) { CharacterModel.RendererInfo rendererInfo = baseRendererInfos[i]; if (!rendererInfo.ignoreOverlays) { Highlight highlight = base.gameObject.AddComponent(); highlight.CustomColor = customColor; highlight.highlightColor = Highlight.HighlightColor.custom; highlight.targetRenderer = rendererInfo.renderer; highlight.strength = 1f; highlight.isOn = true; pairs.Add(target, highlight); break; } } } private void DelIndictator(Collider target) { if (pairs.ContainsKey(target)) { Object.Destroy(pairs[target]); pairs.Remove(target); } } }