//derived classes provide wrappers to this method ( ResetPickerAtValue / date / etc... protected void ResetPickerAtIndex(int index) { _selectedIndex = index; int prevNbOfElements = _nbOfVirtualElements; UpdateVirtualElementsCount(); if (prevNbOfElements == 0) { if (_nbOfVirtualElements > 0) { EnableWidgets(true); } } else if (_nbOfVirtualElements == 0) { EnableWidgets(false); return; } UpdateCurrentValue(); cycler.ResetCycler(); ResetWidgetsContent(); }
protected void ResetAtIndex(int itemCount, int mustSeeElement) { SetItemsCount(itemCount); _leftIndex = mustSeeElement; if (_widgets.Length >= _itemCount) { _leftIndex = 0; } else if ((_leftIndex + _widgets.Length) > (_itemCount)) { _leftIndex = _itemCount - _widgets.Length; } //Debug.Log("### ResetAtIndex > _leftIndex: " + _leftIndex + " mustSee: " + mustSeeElement); scrollView.draggablePanel.ResetPosition(); scrollView.ResetCycler(itemCount); UpdateWidgets(); float lenght = scrollView.spacing; int layout = mustSeeElement - _leftIndex; Vector3 newPosition = Vector3.zero; if (scrollView.draggablePanel.movement == UIScrollView.Movement.Horizontal) { float x = scrollView.draggablePanel.panel.baseClipRegion.x; float z = scrollView.draggablePanel.panel.baseClipRegion.z; float items = z / lenght; //Debug.Log("### ResetAtIndex > x: " + x + " z: " + z + " items: " + items + " lenght: " + lenght + " layout: " + layout); if (layout >= (int)items) { newPosition = new Vector3(-lenght * (Mathf.Clamp((layout - items), 0, float.MaxValue) + 1) - x, 0, 0); } } else if (scrollView.draggablePanel.movement == UIScrollView.Movement.Vertical) { float w = scrollView.draggablePanel.panel.baseClipRegion.w; float y = scrollView.draggablePanel.panel.baseClipRegion.y; float items = w / lenght; if (layout >= (int)items) { newPosition = new Vector3(0, lenght * (Mathf.Clamp((layout - items), 0, float.MaxValue) + 1) - y + lenght / 2, 0); } } scrollView.draggablePanel.MoveRelative(newPosition); }