Exemplo n.º 1
0
    void Start()
    {
        menuButton     = null;
        dragMenuButton = null;

        XmlElement unityElem = getReal3D.Plugin.getApplicationConfigXml();

        if (unityElem == null)
        {
            return;
        }

        XmlNodeList menus = unityElem.GetElementsByTagName("menu");

        if (menus.Count == 0)
        {
            return;
        }

        XmlElement menu = menus.Item(0) as XmlElement;

        width               = readFromAttribute(menu, "width");
        depth               = readFromAttribute(menu, "depth");
        maxRotationSpeed    = readFromAttribute(menu, "max_rotation_speed");
        maxTranslationSpeed = readFromAttribute(menu, "max_translation_speed");
        menuButton          = readStringFromAttribute(menu, "button");
        dragMenuButton      = readStringFromAttribute(menu, "drag_button");

        if (menuButton != null)
        {
            WandEventModule wandEventModule = FindObjectOfType(typeof(WandEventModule)) as WandEventModule;
            wandEventModule.submitButtonName = menuButton;
        }
    }
Exemplo n.º 2
0
    void Start()
    {
        m_canvas = GetComponent<Canvas>() as Canvas;
        m_rectTransform = gameObject.transform as RectTransform;
        MenuSettings ms = GetComponentInParent<MenuSettings>() as MenuSettings;
        if(ms.dragMenuButton != null) {
            m_wandButton = ms.dragMenuButton;
        }
        m_originalParent = transform.parent;

        //WandEventModule wandEventModule = FindObjectOfType(typeof(WandEventModule)) as WandEventModule;
        wandEventModule = FindObjectOfType(typeof(WandEventModule)) as WandEventModule;
        m_sameButtonAsEventModule = wandEventModule.submitButtonName == m_wandButton;
    }
    // Process is called by UI system to process events
    public override void Process()
    {
        _singleton = this;

        // send update events if there is a selected object - this is important for InputField to receive keyboard events
        SendUpdateEventToSelectedObject();

        // see if there is a UI element that is currently being looked at
        PointerEventData lookData = GetLookPointerEventData();

        currentLook = lookData.pointerCurrentRaycast.gameObject;

        // handle enter and exit events (highlight)
        // using the function that is already defined in BaseInputModule
        HandlePointerExitAndEnter(lookData, currentLook);

        // update cursor
        UpdateCursor(lookData);


        // button down handling
        _buttonUsed = false;
        if (getReal3D.Input.GetButtonDown(submitButtonName))
        {
            ClearSelection();
            lookData.pressPosition       = lookData.position;
            lookData.pointerPressRaycast = lookData.pointerCurrentRaycast;
            lookData.pointerPress        = null;
            if (currentLook != null)
            {
                currentPressed = currentLook;
                GameObject newPressed = null;

                newPressed = ExecuteEvents.ExecuteHierarchy(currentPressed, lookData, ExecuteEvents.pointerDownHandler);
                if (newPressed == null)
                {
                    // some UI elements might only have click handler and not pointer down handler
                    newPressed = ExecuteEvents.ExecuteHierarchy(currentPressed, lookData, ExecuteEvents.pointerClickHandler);
                    if (newPressed != null)
                    {
                        currentPressed = newPressed;
                    }
                }
                else
                {
                    currentPressed = newPressed;
                    // we want to do click on button down at same time, unlike regular mouse processing
                    // which does click when mouse goes up over same object it went down on
                    // reason to do this is head tracking might be jittery and this makes it easier to click buttons
                    ExecuteEvents.Execute(newPressed, lookData, ExecuteEvents.pointerClickHandler);
                }

                if (newPressed != null)
                {
                    lookData.pointerPress = newPressed;
                    currentPressed        = newPressed;
                    Select(currentPressed);
                    _buttonUsed = true;
                }

                if (ExecuteEvents.Execute(currentPressed, lookData, ExecuteEvents.beginDragHandler) || true)
                {
                    lookData.pointerDrag = currentPressed;
                    currentDragging      = currentPressed;
                }
            }
        }


        // have to handle button up even if looking away
        if (getReal3D.Input.GetButtonUp(submitButtonName))
        {
            if (currentDragging)
            {
                ExecuteEvents.Execute(currentDragging, lookData, ExecuteEvents.endDragHandler);
                if (currentLook != null)
                {
                    ExecuteEvents.ExecuteHierarchy(currentLook, lookData, ExecuteEvents.dropHandler);
                }
                lookData.pointerDrag = null;
                currentDragging      = null;
            }
            if (currentPressed)
            {
                ExecuteEvents.Execute(currentPressed, lookData, ExecuteEvents.pointerUpHandler);
                lookData.rawPointerPress = null;
                lookData.pointerPress    = null;
                currentPressed           = null;
            }
        }

        // drag handling
        if (currentDragging != null)
        {
            ExecuteEvents.Execute(currentDragging, lookData, ExecuteEvents.dragHandler);
        }
    }
    // Process is called by UI system to process events
    public override void Process()
    {
        _singleton = this;

        // send update events if there is a selected object - this is important for InputField to receive keyboard events
        SendUpdateEventToSelectedObject();

        // see if there is a UI element that is currently being looked at
        PointerEventData lookData = GetLookPointerEventData();
        currentLook = lookData.pointerCurrentRaycast.gameObject;

        // handle enter and exit events (highlight)
        // using the function that is already defined in BaseInputModule
        HandlePointerExitAndEnter(lookData, currentLook);

        // update cursor
        UpdateCursor(lookData);

        // button down handling
        _buttonUsed = false;
        if(getReal3D.Input.GetButtonDown(submitButtonName)) {
            ClearSelection();
            lookData.pressPosition = lookData.position;
            lookData.pointerPressRaycast = lookData.pointerCurrentRaycast;
            lookData.pointerPress = null;
            if(currentLook != null) {
                currentPressed = currentLook;
                GameObject newPressed = null;

                newPressed = ExecuteEvents.ExecuteHierarchy(currentPressed, lookData, ExecuteEvents.pointerDownHandler);
                if(newPressed == null) {
                    // some UI elements might only have click handler and not pointer down handler
                    newPressed = ExecuteEvents.ExecuteHierarchy(currentPressed, lookData, ExecuteEvents.pointerClickHandler);
                    if(newPressed != null) {
                        currentPressed = newPressed;
                    }
                }
                else {
                    currentPressed = newPressed;
                    // we want to do click on button down at same time, unlike regular mouse processing
                    // which does click when mouse goes up over same object it went down on
                    // reason to do this is head tracking might be jittery and this makes it easier to click buttons
                    ExecuteEvents.Execute(newPressed, lookData, ExecuteEvents.pointerClickHandler);
                }

                if(newPressed != null) {
                    lookData.pointerPress = newPressed;
                    currentPressed = newPressed;
                    Select(currentPressed);
                    _buttonUsed = true;
                }

                if(ExecuteEvents.Execute(currentPressed, lookData, ExecuteEvents.beginDragHandler) || true) {
                    lookData.pointerDrag = currentPressed;
                    currentDragging = currentPressed;
                }

            }
        }

        // have to handle button up even if looking away
        if(getReal3D.Input.GetButtonUp(submitButtonName)) {
            if(currentDragging) {
                ExecuteEvents.Execute(currentDragging, lookData, ExecuteEvents.endDragHandler);
                if(currentLook != null) {
                    ExecuteEvents.ExecuteHierarchy(currentLook, lookData, ExecuteEvents.dropHandler);
                }
                lookData.pointerDrag = null;
                currentDragging = null;
            }
            if(currentPressed) {
                ExecuteEvents.Execute(currentPressed, lookData, ExecuteEvents.pointerUpHandler);
                lookData.rawPointerPress = null;
                lookData.pointerPress = null;
                currentPressed = null;
            }
        }

        // drag handling
        if(currentDragging != null) {
            ExecuteEvents.Execute(currentDragging, lookData, ExecuteEvents.dragHandler);
        }
    }