Пример #1
0
        // -------------------------------------------

        /*
         * 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++;
                    }
                }
            }
        }
Пример #2
0
        // -------------------------------------------

        /*
         * 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;
                        }
                    }
                }
            }
        }