Beispiel #1
0
        private void SelectNavNode(NavigatorNode selected)
        {
            if (_selectedNode != null)
            {
                _selectedNode.Deselect();
            }

            if (!selected.selected)
            {
                selected.SelectBy();
            }

            float delta = selected.transform.localPosition.x + selected.nodeSide * (selected.nodeSize.x / 2f);

            if (Mathf.Abs(delta) > 0f && _selectedNode != null)
            {
                if (selected.nodeData.children.Count > 0)
                {
                    ClearSameChildNodes(selected);
                }

                ClearUpLevel(selected, _selectedNode);
                NavigatorNode mainLineParent = null;
                while (mainLineParent == null && _selectedNode.nodeData.nodeId != 1000)
                {
                    if (_selectedNode.nodeLevel == 0)
                    {
                        mainLineParent = _selectedNode;
                    }
                    else
                    {
                        _selectedNode = _selectedNode.parent;
                    }
                }

                int row = (mainLineParent == null) ? 0 : mainLineParent.nodeRow;
                _selectedNode = selected;
                Action postAction = () =>
                {
                    RestoreDefaultNodes(row, mainLineParent, selected);
                    ClearFarNodes(selected);
                    CreateNodesAfterSelected();
                    _selectedNode           = selected;
                    _selectedNode.nodeState = NavigatorNode.Navigator_state.Selected;
                    _homeNode.Deselect();
                    RepositoryController.Instance.isAction = true;
                };
                StartCoroutine(MoveNodes(-delta, postAction));
            }
            else
            {
                _selectedNode = selected;
                RepositoryController.Instance.isAction = true;
            }
        }