/*--------------------------------------------------------------------------------------------*/
        private void TryUpdateColor(HoverMesh pHoverMesh)
        {
            Controllers.Set(SettingsControllerMap.MeshColors, this);

            vCurrColor = GetDisplayColor(pHoverMesh);

            if (FlashColorMilliseconds > 0)
            {
                TimeSpan test = DateTime.UtcNow - GetComponent <HoverIndicator>().LatestSelectionTime;

                if (test.TotalMilliseconds < FlashColorMilliseconds)
                {
                    vCurrColor = Color.Lerp(FlashColor, vCurrColor,
                                            (float)test.TotalMilliseconds / FlashColorMilliseconds);
                }
            }

            if (!pHoverMesh.DidRebuildMesh && Alpha == vPrevAlpha && vCurrColor == vPrevColor)
            {
                return;
            }

            Color colorForAllVertices = DisplayUtil.FadeColor(vCurrColor, Alpha);

            pHoverMesh.Builder.CommitColors(colorForAllVertices);
        }
        /*--------------------------------------------------------------------------------------------*/
        private void UpdateTrackColor(Color pColor)
        {
            HoverFillSlider fill       = GetComponentInChildren <HoverFillSlider>();
            Color           fadedColor = DisplayUtil.FadeColor(pColor, 0.25f);

            UpdateTrackSegmentColor(fill.SegmentA, fadedColor);
            UpdateTrackSegmentColor(fill.SegmentB, fadedColor);
            UpdateTrackSegmentColor(fill.SegmentC, fadedColor);
            UpdateTrackSegmentColor(fill.SegmentD, fadedColor);
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        private void SetTheme(Theme pTheme)
        {
            HoverFillButton[] buttonFills  = GetComponentsInChildren <HoverFillButton>(true);
            HoverFillSlider[] sliderFills  = GetComponentsInChildren <HoverFillSlider>(true);
            HoverCanvas[]     canvases     = GetComponentsInChildren <HoverCanvas>(true);
            Color             fadeBgCol    = DisplayUtil.FadeColor(pTheme.BackgroundColor, vCurrBgAlpha);
            Color             fadeTrackCol = DisplayUtil.FadeColor(pTheme.SliderTrackColor, vCurrBgAlpha);

            foreach (HoverFillButton fill in buttonFills)
            {
                SetMeshColors(fill.Background, fadeBgCol, pTheme.FlashColor);
                SetMeshColors(fill.Highlight, pTheme.HighlightColor, pTheme.FlashColor);
                SetMeshColors(fill.Selection, pTheme.SelectionColor, pTheme.FlashColor);
                SetMeshColors(fill.Edge, pTheme.EdgeColor, pTheme.FlashColor);
            }

            foreach (HoverFillSlider fill in sliderFills)
            {
                SetMeshColors(fill.SegmentA, fadeTrackCol, pTheme.FlashColor, pTheme.SliderFillColor);
                SetMeshColors(fill.SegmentB, fadeTrackCol, pTheme.FlashColor, pTheme.SliderFillColor);
                SetMeshColors(fill.SegmentC, fadeTrackCol, pTheme.FlashColor, pTheme.SliderFillColor);
                SetMeshColors(fill.SegmentD, fadeTrackCol, pTheme.FlashColor, pTheme.SliderFillColor);

                foreach (HoverMesh tickMesh in fill.Ticks)
                {
                    SetMeshColors(tickMesh, pTheme.SliderTickColor, pTheme.FlashColor);
                }
            }

            foreach (HoverCanvas canvas in canvases)
            {
                canvas.Label.TextComponent.color = pTheme.TextColor;
                //canvas.IconInner.ImageComponent.color = pTheme.IconColor;
                //canvas.IconOuter.ImageComponent.color = pTheme.IconColor;

                //get all icons, including custom ones (like the Hovercast "open" button)
                RawImage[] iconImages = canvas.GetComponentsInChildren <RawImage>(true);

                foreach (RawImage iconImage in iconImages)
                {
                    iconImage.color = pTheme.IconColor;
                }
            }

            vCurrTheme = pTheme;
        }