/*--------------------------------------------------------------------------------------------*/ public IList <IRadioItem> GetRadioSiblings(IRadioItem pSelectedItem) { var siblings = new List <IRadioItem>(); //GC_ALLOC string id = pSelectedItem.GroupId; for (int panelI = 0; panelI < FullPanels.Length; panelI++) { IHoverboardPanelState panel = FullPanels[panelI]; for (int layoutI = 0; layoutI < panel.Layouts.Count; layoutI++) { IHoverboardLayoutState layout = panel.Layouts[layoutI]; for (int itemI = 0; itemI < layout.Items.Count; itemI++) { IRadioItem radItem = (layout.Items[itemI].Item as IRadioItem); if (radItem == null || radItem == pSelectedItem || radItem.GroupId != id) { continue; } siblings.Add(radItem); } } } return(siblings); }
/*--------------------------------------------------------------------------------------------*/ public IRadioItem[] GetRadioSiblings(IRadioItem pSelectedItem) { var siblings = new List <IRadioItem>(); string id = pSelectedItem.GroupId; foreach (IHoverboardPanelState panel in Panels) { foreach (IHoverboardLayoutState layout in panel.Layouts) { foreach (IBaseItemState item in layout.Items) { IRadioItem radItem = (item.Item as IRadioItem); if (radItem == null || radItem == pSelectedItem || radItem.GroupId != id) { continue; } siblings.Add(radItem); } } } return(siblings.ToArray()); }
/*--------------------------------------------------------------------------------------------*/ private void DeselectRadioSiblings(IRadioItem pSelectedRadioItem) { IList <IRadioItem> siblings; if (vRadioSiblingsFunc != null) { siblings = vRadioSiblingsFunc(pSelectedRadioItem); } else { siblings = new List <IRadioItem>(); foreach (IBaseItem item in vActiveItems) { IRadioItem radItem = (item as IRadioItem); if (radItem != null && radItem != pSelectedRadioItem) { siblings.Add(radItem); } } } for (int i = 0; i < siblings.Count; i++) { siblings[i].Value = false; } }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ private void HandleItemSelected(ISelectableItem pItem) { IRadioItem radItem = (pItem as IRadioItem); if (radItem != null) { DeselectRadioSiblings(radItem); } LastSelectedItem = pItem; OnItemSelected(this, pItem); }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ private void DeselectRemainingRadioGroupMembers(IRadioItem pRadioData) { HoverItemsManager itemsMan = GetComponent<HoverItemsManager>(); string groupId = pRadioData.GroupId; Func<HoverItem, bool> filter = (tryItem => { IRadioItem match = (tryItem.Data as IRadioItem); return (match != null && match != pRadioData && match.GroupId == groupId); }); itemsMan.FillListWithMatchingItems(vItemsBuffer, filter); for ( int i = 0 ; i < vItemsBuffer.Count ; i++ ) { ((IRadioItem)vItemsBuffer[i].Data).Value = false; } }
/*--------------------------------------------------------------------------------------------*/ private void DeselectRadioSiblings(IRadioItem pSelectedRadioItem) { foreach (IBaseItem item in vActiveItems) { if (item == pSelectedRadioItem) { continue; } IRadioItem radItem = (item as IRadioItem); if (radItem == null) { continue; } radItem.Value = false; } }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ public void Awake() { vHoverHierarchy = gameObject.AddComponent <HovercastItemHierarchy>(); vHoverHierarchy.Title = "Hovercast VR"; vHoverItems = new HovercastItem[4]; for (int i = 0; i < vHoverItems.Length; ++i) { var itemObj = new GameObject("Item " + i); itemObj.transform.SetParent(gameObject.transform, false); HovercastItem hoverItem = itemObj.AddComponent <HovercastItem>(); hoverItem.Label = "Item " + i; hoverItem.Type = HovercastItem.HovercastItemType.Radio; hoverItem.RadioValue = (i == 0); vHoverItems[i] = hoverItem; IRadioItem radioItem = (IRadioItem)hoverItem.GetItem(); radioItem.OnSelected += HandleRadioItemSelected; } }
/*--------------------------------------------------------------------------------------------*/ private void DeselectRadioSiblings(IRadioItem pSelectedRadioItem) { IRadioItem[] siblings; if (vRadioSiblingsFunc != null) { siblings = vRadioSiblingsFunc(pSelectedRadioItem); } else { siblings = vActiveItems .Where(x => x != pSelectedRadioItem) .Select(x => (x as IRadioItem)) .Where(x => x != null) .ToArray(); } foreach (IRadioItem radItem in siblings) { radItem.Value = false; } }
/*--------------------------------------------------------------------------------------------*/ public IList<IRadioItem> GetRadioSiblings(IRadioItem pSelectedItem) { var siblings = new List<IRadioItem>(); //GC_ALLOC string id = pSelectedItem.GroupId; for ( int panelI = 0 ; panelI < FullPanels.Length ; panelI++ ) { IHoverboardPanelState panel = FullPanels[panelI]; for ( int layoutI = 0 ; layoutI < panel.Layouts.Count ; layoutI++ ) { IHoverboardLayoutState layout = panel.Layouts[layoutI]; for ( int itemI = 0 ; itemI < layout.Items.Count ; itemI++ ) { IRadioItem radItem = (layout.Items[itemI].Item as IRadioItem); if ( radItem == null || radItem == pSelectedItem || radItem.GroupId != id ) { continue; } siblings.Add(radItem); } } } return siblings; }