// ------------------------------------------- /* * UpdateScrollRectItemsVisibility */ private void UpdateScrollRectItemsVisibility(ScrollRectVR _scrollRect, GameObject _target) { Transform allChilds = _target.transform.parent; int hidingTotalNumber = 0; for (int k = 0; k < allChilds.childCount; k++) { Transform childScroll = allChilds.GetChild(k); if (childScroll.gameObject.GetComponent <CanvasGroup>() != null) { if (Utilities.IsVisibleFrom(_scrollRect, childScroll.GetComponent <RectTransform>())) { childScroll.gameObject.GetComponent <CanvasGroup>().alpha = 1; } else { childScroll.gameObject.GetComponent <CanvasGroup>().alpha = 0; hidingTotalNumber++; } } } }
// ------------------------------------------- /* * Global manager of events */ private void OnBaseScreenBasicEvent(string _nameEvent, params object[] _list) { if (this == null) { return; } if (this.gameObject == null) { return; } if (!this.gameObject.activeSelf) { return; } if (_nameEvent == UIEventController.EVENT_SCREENMANAGER_CLEAR_LIST_SELECTORS) { if (this.gameObject == (GameObject)_list[0]) { ClearListSelectors(); if (_list.Length > 1) { m_disableActionButtonInteraction = (bool)_list[1]; } } } if (_nameEvent == UIEventController.EVENT_SCREENMANAGER_RECALCULATE_LIST_SELECTORS) { if (this.gameObject == (GameObject)_list[0]) { ClearListSelectors(); AddAutomaticallyButtons(m_screen); if (_list.Length > 1) { m_disableActionButtonInteraction = (bool)_list[1]; } } } if (_nameEvent == UIEventController.EVENT_SCREENMANAGER_RELOAD_SCREEN_DATA) { bool forceReaload = false; if (_list.Length > 0) { forceReaload = true; } if (AutomaticallyAddButtons || forceReaload) { ClearListSelectors(); AddAutomaticallyButtons(m_screen); if (forceReaload) { Utilities.ApplyMaterialOnImages(m_screen, YourVRUIScreenController.Instance.MaterialDrawOnTop); } } } if (_nameEvent == UIEventController.EVENT_SCREENMANAGER_RELOAD_SCREEN_AND_DISABLE) { ClearListSelectors(); AddAutomaticallyButtons(m_screen); Utilities.ApplyMaterialOnImages(m_screen, YourVRUIScreenController.Instance.MaterialDrawOnTop); GameObject targetObject = (GameObject)_list[0]; if (Utilities.FindGameObjectInChilds(this.gameObject, targetObject)) { HideSelectorsOnScrollRect(targetObject); } } if (m_disableActionButtonInteraction) { if (_nameEvent == KeysEventInputController.ACTION_BUTTON_DOWN) { m_disableActionButtonInteraction = false; } } if (m_selectors == null) { return; } if (m_selectors.Count == 0) { return; } if (_nameEvent == EVENT_SCREEN_DESTROYED_VIEW) { GameObject characterOrigin = (GameObject)_list[0]; if (m_characterOrigin == characterOrigin) { GameObject.Destroy(m_screen); return; } } if (_nameEvent == UIEventController.EVENT_SCREENMANAGER_CLEAR_SELECTOR_DATA) { ClearListSelectors(); } if (!m_disableActionButtonInteraction) { if (m_highlightSelector) { if (_nameEvent == ButtonVRView.EVENT_SELECTED_VR_BUTTON_COMPONENT) { if (!YourVRUIScreenController.Instance.KeysEnabled) { GameObject componentSelected = (GameObject)_list[0]; int indexSelected = IsComponentInsideScreen(componentSelected); if (((indexSelected != m_selectionButton) || !m_firstHighlightConsumed) && (indexSelected != -1)) { m_firstHighlightConsumed = true; EnableSelectedComponent(componentSelected); } } } } } if (_nameEvent == KeysEventInputController.ACTION_BACK_BUTTON) { if (YourVRUIScreenController.Instance.KeysEnabled) { UIEventController.Instance.DispatchUIEvent(YourVRUIScreenController.EVENT_SCREENMANAGER_ENABLE_KEYS_INPUT, false); } else { UIEventController.Instance.DispatchUIEvent(KeysEventInputController.ACTION_CANCEL_BUTTON); } } if (_nameEvent == KeysEventInputController.ACTION_BUTTON_DOWN) { if (!m_disableActionButtonInteraction) { if ((m_selectionButton >= 0) && (m_selectionButton < m_selectors.Count)) { if (m_selectors[m_selectionButton] != null) { if (m_selectors[m_selectionButton].GetComponent <ButtonVRView>() != null) { if (m_selectors[m_selectionButton].activeSelf) { // Debug.LogError("INVOKE BUTTON[" + m_selectors[m_selectionButton].transform.name + "]"); m_selectors[m_selectionButton].GetComponent <ButtonVRView>().InvokeButton(); } } } } } } if (_nameEvent == ButtonVRView.EVENT_CHECK_ELEMENT_CORNER_OUT_OF_LIST) { /* * if (!m_disableActionButtonInteraction) * { * if (YourVRUIScreenController.Instance.DisplayHighlightedItemInList) * { * GameObject targetObject = (GameObject)_list[0]; * Vector3 dataElement = GetGameObjectElementInsideScrollRect(targetObject); * if ((dataElement.x != -1) && (dataElement.y != -1) && (dataElement.z != -1)) * { * Utilities.MoveScrollWithSiblings(m_scrollRectsVR[(int)dataElement.y], targetObject); * UpdateScrollRectItemsVisibility(m_scrollRectsVR[(int)dataElement.y], targetObject); * } * } * } */ } if (_nameEvent == KeysEventInputController.JOYSTICK_DOWN_PRESSED) { m_enableScrollDown = true; } if (_nameEvent == KeysEventInputController.JOYSTICK_UP_PRESSED) { m_enableScrollUp = true; } if (_nameEvent == KeysEventInputController.JOYSTICK_LEFT_PRESSED) { m_enableScrollLeft = true; } if (_nameEvent == KeysEventInputController.JOYSTICK_RIGHT_PRESSED) { m_enableScrollRight = true; } if ((_nameEvent == KeysEventInputController.JOYSTICK_DOWN_RELEASED) || (_nameEvent == KeysEventInputController.JOYSTICK_UP_RELEASED) || (_nameEvent == KeysEventInputController.JOYSTICK_RIGHT_RELEASED) || (_nameEvent == KeysEventInputController.JOYSTICK_LEFT_RELEASED)) { m_enableScrollDown = false; m_enableScrollUp = false; m_enableScrollLeft = false; m_enableScrollRight = false; } if (_nameEvent == EVENT_SCREEN_CHECK_ELEMENT_BELONGS_TO_SCROLLRECT) { GameObject targetObject = (GameObject)_list[0]; m_initialPositionOnScrollList = -1; Vector3 dataElement = GetGameObjectElementInsideScrollRect(targetObject); bool elementIsInsideScrollRect = ((dataElement.x != -1) && (dataElement.y != -1) && (dataElement.z != -1)); bool isVerticalGrid = false; if (elementIsInsideScrollRect) { isVerticalGrid = m_scrollRectsVR[(int)dataElement.y].IsVerticalGrid(); } UIEventController.Instance.DispatchUIEvent(EVENT_SCREEN_RESPONSE_ELEMENT_BELONGS_TO_SCROLLRECT, targetObject, elementIsInsideScrollRect, isVerticalGrid); } if (_nameEvent == EVENT_SCREEN_MOVED_SCROLL_RECT) { GameObject targetObject = (GameObject)_list[0]; float angleDiferenceFromOrigin = (float)_list[1]; bool directionToMove = (bool)_list[2]; Vector3 dataElement = GetGameObjectElementInsideScrollRect(targetObject); bool elementIsInsideScrollRect = ((dataElement.x != -1) && (dataElement.y != -1) && (dataElement.z != -1)); if (elementIsInsideScrollRect) { ScrollRectVR scrollRectVR = m_scrollRectsVR[(int)dataElement.y]; if (m_initialPositionOnScrollList == -1) { if (scrollRectVR.IsVerticalGrid()) { m_initialPositionOnScrollList = scrollRectVR.ScrollRectObject.verticalNormalizedPosition; } else { m_initialPositionOnScrollList = scrollRectVR.ScrollRectObject.horizontalNormalizedPosition; } } float finalNormalizedPosition = 0; float angleBaseMovement = (scrollRectVR.IsVerticalGrid() ? 45 : 90); if (directionToMove) { finalNormalizedPosition = m_initialPositionOnScrollList + (angleDiferenceFromOrigin / angleBaseMovement); } else { finalNormalizedPosition = m_initialPositionOnScrollList - (angleDiferenceFromOrigin / angleBaseMovement); } if (finalNormalizedPosition < 0) { finalNormalizedPosition = 0; } if (finalNormalizedPosition > 1) { finalNormalizedPosition = 1; } if (scrollRectVR.IsVerticalGrid()) { scrollRectVR.ScrollRectObject.verticalNormalizedPosition = finalNormalizedPosition; } else { scrollRectVR.ScrollRectObject.horizontalNormalizedPosition = finalNormalizedPosition; } UpdateScrollRectItemsVisibility(scrollRectVR, targetObject); } } if (_nameEvent == EVENT_SCREEN_DISABLE_ACTION_BUTTON_INTERACTION) { m_disableActionButtonInteraction = (bool)_list[0]; if (m_disableActionButtonInteraction) { EnableSelectedComponent(null); } } bool keepSearching = true; // KEYS ACTION if (_nameEvent == KeysEventInputController.ACTION_KEY_UP_PRESSED) { UIEventController.Instance.DispatchUIEvent(YourVRUIScreenController.EVENT_SCREENMANAGER_ENABLE_KEYS_INPUT, true); do { m_selectionButton--; if (m_selectionButton < 0) { m_selectionButton = m_selectors.Count - 1; } if (m_selectors[m_selectionButton] == null) { keepSearching = true; } else { keepSearching = !m_selectors[m_selectionButton].activeSelf; } } while (keepSearching); EnableSelector(); } if (_nameEvent == KeysEventInputController.ACTION_KEY_DOWN_PRESSED) { UIEventController.Instance.DispatchUIEvent(YourVRUIScreenController.EVENT_SCREENMANAGER_ENABLE_KEYS_INPUT, true); do { m_selectionButton++; if (m_selectionButton > m_selectors.Count - 1) { m_selectionButton = 0; } if (m_selectors[m_selectionButton] == null) { keepSearching = true; } else { keepSearching = !m_selectors[m_selectionButton].activeSelf; } } while (keepSearching); EnableSelector(); } if (_nameEvent == KeysEventInputController.ACTION_KEY_LEFT_PRESSED) { UIEventController.Instance.DispatchUIEvent(YourVRUIScreenController.EVENT_SCREENMANAGER_ENABLE_KEYS_INPUT, true); do { m_selectionButton--; if (m_selectionButton < 0) { m_selectionButton = m_selectors.Count - 1; } if (m_selectors[m_selectionButton] == null) { keepSearching = true; } else { keepSearching = !m_selectors[m_selectionButton].activeSelf; } } while (keepSearching); EnableSelector(); } if (_nameEvent == KeysEventInputController.ACTION_KEY_RIGHT_PRESSED) { UIEventController.Instance.DispatchUIEvent(YourVRUIScreenController.EVENT_SCREENMANAGER_ENABLE_KEYS_INPUT, true); do { m_selectionButton++; if (m_selectionButton > m_selectors.Count - 1) { m_selectionButton = 0; } if (m_selectors[m_selectionButton] == null) { keepSearching = true; } else { keepSearching = !m_selectors[m_selectionButton].activeSelf; } } while (keepSearching); EnableSelector(); } if (_nameEvent == KeysEventInputController.ACTION_RECENTER) { RunRefocusScreen(true, true); } if (_nameEvent == EVENT_SCREEN_ENABLE_ALPHA_ZERO_IMAGE) { m_enableAlphaZero = (bool)_list[0]; for (int i = 0; i < m_selectors.Count; i++) { if (m_selectors[i].GetComponent <Image>() != null) { if (m_selectors[i].GetComponent <Image>().color.a == 0) { m_selectors[i].GetComponent <BoxCollider>().enabled = m_enableAlphaZero; } } } } }