/*--------------------------------------------------------------------------------------------*/ public virtual void TreeUpdate() { HoverItem hoverItem = GetComponent <HoverItem>(); DestroyRenderersIfNecessary(); TryRebuildWithItemType(hoverItem.ItemType); //// HoverItemHighlightState highState = GetComponent <HoverItemHighlightState>(); HoverItemSelectionState selState = GetComponent <HoverItemSelectionState>(); HoverRenderer activeRenderer = ((HoverRenderer)ButtonRenderer ?? SliderRenderer); UpdateRenderer(activeRenderer, hoverItem); UpdateRendererCanvas(activeRenderer, hoverItem); UpdateRendererIndicator(activeRenderer, highState, selState); if (ButtonRenderer != null) { UpdateButtonSettings(highState); } if (SliderRenderer != null) { UpdateSliderSettings(hoverItem); UpdateSliderSettings(hoverItem, highState); } Controllers.TryExpireControllers(); }
/*--------------------------------------------------------------------------------------------*/ private void FillCursorLists() { for (int i = 0; i < vItems.Count; i++) { HoverItemData data = vItems[i].Data; IItemDataSelectable selData = (IItemDataSelectable)data; HoverItemHighlightState highState = data.GetComponent <HoverItemHighlightState>(); ICursorData cursorData = highState.NearestHighlight.Value.Cursor; if (cursorData.Idle.Progress >= 1) { selData.DeselectStickySelections(); continue; } HoverItemSelectionState selState = data.GetComponent <HoverItemSelectionState>(); HoverRenderer rend = data.GetComponent <HoverItemRendererUpdater>().ActiveRenderer; var info = new StickySelectionInfo { ItemWorldPosition = rend.GetCenterWorldPosition(), SelectionProgress = selState.SelectionProgress }; cursorData.ActiveStickySelections.Add(info); } }
/*--------------------------------------------------------------------------------------------*/ private void UpdateRendererCanvas(HoverRenderer pRenderer, HoverItem pHoverItem) { HoverCanvasDataUpdater canvasUp = pRenderer.GetCanvasDataUpdater(); if (canvasUp == null) { return; } IItemData data = pHoverItem.Data; IItemDataCheckbox checkboxData = (data as IItemDataCheckbox); IItemDataRadio radioData = (data as IItemDataRadio); IItemDataSelector selectorData = (data as IItemDataSelector); IItemDataSticky stickyData = (data as IItemDataSticky); IItemDataSlider sliderData = (data as IItemDataSlider); var icon = HoverCanvasDataUpdater.IconPairType.Unspecified; if (checkboxData != null) { icon = (checkboxData.Value ? HoverCanvasDataUpdater.IconPairType.CheckboxOn : HoverCanvasDataUpdater.IconPairType.CheckboxOff); } else if (radioData != null) { icon = (radioData.Value ? HoverCanvasDataUpdater.IconPairType.RadioOn : HoverCanvasDataUpdater.IconPairType.RadioOff); } else if (selectorData != null) { if (selectorData.Action == SelectorActionType.NavigateIn) { icon = HoverCanvasDataUpdater.IconPairType.NavigateIn; } else if (selectorData.Action == SelectorActionType.NavigateOut) { icon = HoverCanvasDataUpdater.IconPairType.NavigateOut; } } else if (stickyData != null) { icon = HoverCanvasDataUpdater.IconPairType.Sticky; } else if (sliderData != null) { icon = HoverCanvasDataUpdater.IconPairType.Slider; } canvasUp.Controllers.Set(HoverCanvasDataUpdater.LabelTextName, this); canvasUp.Controllers.Set(HoverCanvasDataUpdater.IconTypeName, this); canvasUp.LabelText = (sliderData == null ? data.Label : sliderData.GetFormattedLabel(sliderData)); canvasUp.IconType = icon; }
/*--------------------------------------------------------------------------------------------*/ private void UpdateRendererIndicator(HoverRenderer pRenderer, HoverItemHighlightState pHighState, HoverItemSelectionState pSelState) { HoverIndicator rendInd = pRenderer.GetIndicator(); rendInd.Controllers.Set(HoverIndicator.HighlightProgressName, this); rendInd.Controllers.Set(HoverIndicator.SelectionProgressName, this); rendInd.HighlightProgress = pHighState.MaxHighlightProgress; rendInd.SelectionProgress = pSelState.SelectionProgress; if (pSelState.WasSelectedThisFrame) { rendInd.LatestSelectionTime = DateTime.UtcNow; } }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ private void UpdateChildRenderer(HoverRenderer pChildRend) { HoverAlphaRendererUpdater rendUp = pChildRend.GetComponent <HoverAlphaRendererUpdater>(); if (rendUp == null) { return; } rendUp.Controllers.Set(SortingLayerName, this); rendUp.Controllers.Set(MasterAlphaName, this); rendUp.Controllers.Set(EnabledAlphaName, this); rendUp.Controllers.Set(DisabledAlphaName, this); rendUp.SortingLayer = SortingLayer; rendUp.MasterAlpha = MasterAlpha; rendUp.EnabledAlpha = EnabledAlpha; rendUp.DisabledAlpha = DisabledAlpha; }
/*--------------------------------------------------------------------------------------------*/ public virtual void TreeUpdate() { HoverRenderer hoverRend = GetComponent <HoverRenderer>(); int childRendCount = hoverRend.GetChildRendererCount(); int childFillCount = hoverRend.GetChildFillCount(); float currAlpha = MasterAlpha * (hoverRend.IsEnabled ? EnabledAlpha : DisabledAlpha); for (int i = 0; i < childRendCount; i++) { UpdateChildRenderer(hoverRend.GetChildRenderer(i)); } for (int i = 0; i < childFillCount; i++) { UpdateChildFill(hoverRend.GetChildFill(i), currAlpha); } UpdateChildCanvas(hoverRend.GetCanvas(), currAlpha); Controllers.TryExpireControllers(); }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ private void UpdateRenderer(HoverRenderer pRenderer, HoverItem pHoverItem) { pRenderer.Controllers.Set(HoverRenderer.IsEnabledName, this); pRenderer.IsEnabled = pHoverItem.Data.IsEnabled; }