示例#1
0
    public void Update()
    {
        GameObject selectionGameObject = CheckForSelection();

        if (!selection)
        {
            if (selectionGameObject)
            {
                RUISSelectable selectableObject = selectionGameObject.GetComponent <RUISSelectable>();
                //also search in parents if we didn't find RUISSelectable on this gameobject to allow for multi-piece collider hierarchies
                while (!selectableObject && selectionGameObject.transform.parent != null)
                {
                    selectionGameObject = selectionGameObject.transform.parent.gameObject;
                    selectableObject    = selectionGameObject.GetComponent <RUISSelectable>();
                }

                if (selectableObject && selectableObject.IsSelectable())
                {
                    if (selectableObject != highlightedObject)
                    {
                        if (highlightedObject != null)
                        {
                            highlightedObject.OnSelectionHighlightEnd();
                        }

                        selectableObject.OnSelectionHighlight();
                        highlightedObject = selectableObject;
                    }

                    if ((!grabWhileButtonDown && wand.SelectionButtonWasPressed()) || (grabWhileButtonDown && wand.SelectionButtonIsDown()))
                    {
                        selection = selectableObject;

                        if (highlightedObject != null)
                        {
                            highlightedObject.OnSelectionHighlightEnd();
                            highlightedObject = null;
                        }


                        BeginSelection();

                        selectionButtonReleasedAfterSelection = false;
                    }
                }
            }

            if (!selectionGameObject || !selectionGameObject.GetComponent <RUISSelectable>())
            {
                if (highlightedObject != null)
                {
                    highlightedObject.OnSelectionHighlightEnd();
                    highlightedObject = null;
                }
            }
        }
        else if (wand.SelectionButtonWasReleased())
        {
            if (!toggleSelection ||
                (toggleSelection && selectionButtonReleasedAfterSelection) ||
                !wand.IsSelectionButtonStandard())
            {
                EndSelection();
            }
            else
            {
                selectionButtonReleasedAfterSelection = true;
            }
        }
    }