コード例 #1
0
        protected override void OnModelPropertyChanged(string propertyName)
        {
            RaisePropertyChanged(propertyName);

            if (propertyName == "Presentation")
            {
                ShowCyclesCommand.RaiseCanExecuteChanged();
                RemoveNodesWithoutEdgesCommand.RaiseCanExecuteChanged();
                ShowNodesOutsideClustersCommand.RaiseCanExecuteChanged();
                RemoveNodesReachableFromMultipleClustersCommand.RaiseCanExecuteChanged();
                FoldUnfoldAllClustersCommand.RaiseCanExecuteChanged();
                AddVisibleNodesOutsideClustersToClusterCommand.RaiseCanExecuteChanged();
                DeselectAllCommand.RaiseCanExecuteChanged();
                HomeCommand.RaiseCanExecuteChanged();
                InvalidateLayoutCommand.RaiseCanExecuteChanged();
                PrintGraphCommand.RaiseCanExecuteChanged();

                BuildClustersMenu();
                BuildSelectedNodesMenu();

                if (myTransformationsModuleObserver != null)
                {
                    mySelectionObserver.ModuleChanged -= OnSelectionChanged;
                    mySelectionObserver.Dispose();
                    mySelectionObserver = null;

                    myTransformationsModuleObserver.ModuleChanged -= OnTransformationsModuleChanged;
                    myTransformationsModuleObserver.Dispose();
                    myTransformationsModuleObserver = null;
                }

                if (Presentation != null)
                {
                    var transformations = Presentation.GetModule <ITransformationModule>();
                    myTransformationsModuleObserver = transformations.CreateObserver();
                    myTransformationsModuleObserver.ModuleChanged += OnTransformationsModuleChanged;

                    mySelectionObserver = Presentation.GetPropertySetFor <Selection>().CreateObserver();
                    mySelectionObserver.ModuleChanged += OnSelectionChanged;
                }
            }
        }
コード例 #2
0
        public BaseDataModel()
        {
            // setup
            ContentScale     = 1;
            SelectedEntities = new ObservableCollection <IVisualElement>();
            SelectedEntities.CollectionChanged += SelectedEntities_CollectionChanged;
            CornerManipulators = new ObservableCollection <VisualCornerManipulator>();
            MapEntities        = new ObservableCollection <IVisualElement>();

            // commands
            UndoCommand            = new UndoCommand(this);
            RedoCommand            = new RedoCommand(this);
            CopyCommand            = new CopyCommand(this);
            PasteCommand           = new PasteCommand(this);
            DeleteCommand          = new DeleteCommand(this);
            DeselectAllCommand     = new DeselectAllCommand(this);
            EditEntityCommand      = new EditEntityCommand(this);
            CreateMarkerCommand    = new CreateMarkerCommand(this);
            ShowManipulationPoints = new ShowManipulationPoints(this);
            CreateWallCommand      = new CreateWallCommand(this);
            CreateDoorCommand      = new CreateDoorCommand(this);
        }
コード例 #3
0
        //Test if any objects were clicked
        private void checkSelect()
        {
            //Stores the command that needs to be executed
            EditCommand selectionCommand = null;

            //If escape is pressed, deselect all
            if (Input.GetKeyDown(KeyCode.Escape))
            {
                selectionCommand = new DeselectAllCommand();
            }
            //If escape was not pressed, check for shortcut commands
            else
            {
                if (selectAllShortcut.Pressed())
                {
                    if (selectedObjects.Count > 0)
                    {
                        selectionCommand = new DeselectAllCommand();
                    }
                    else
                    {
                        selectionCommand = new SelectAllCommand();
                    }
                }

                if (invertSelectionShortcut.Pressed())
                {
                    selectionCommand = new InvertSelectionCommand();
                }
            }

            //If the mouse was clicked and the cursor is not over the UI, check if any objects were selected
            if (Input.GetMouseButtonUp(0) && !EventSystem.current.IsPointerOverGameObject(-1))
            {
                RaycastHit hit;
                Ray        ray    = mainCamera.ScreenPointToRay(Input.mousePosition);
                bool       rayHit = Physics.Raycast(ray, out hit, Mathf.Infinity);

                //Check if nothing was hit or the hit object isn't selectable
                if (!rayHit || hit.transform.gameObject.tag != "Selectable")
                {
                    //If not in additive mode and there is a selection, deselect all
                    if (!Input.GetKey(KeyCode.LeftControl) && Instance.selectedObjects.Count > 0)
                    {
                        selectionCommand = new DeselectAllCommand();
                    }
                }
                //If an object was clicked, select it
                else
                {
                    //Select the parent of the object
                    GameObject parentObject = GetParent(hit.transform.gameObject);

                    //If left control is not held, deselect all objects and select the clicked object
                    if (!Input.GetKey(KeyCode.LeftControl))
                    {
                        //If the clicked object is already the only selected object, skip it
                        if (Instance.selectedObjects.Count == 1 &&
                            Instance.selectedObjects.Contains(parentObject))
                        {
                            return;
                        }

                        selectionCommand = new SelectReplaceCommand(parentObject);
                    }
                    //If left control is held, select or deselect the object based on if its currently selected
                    else
                    {
                        if (!selectedObjects.Contains(parentObject))
                        {
                            selectionCommand = new SelectAdditiveCommand(parentObject);
                        }
                        else
                        {
                            selectionCommand = new DeselectObjectCommand(parentObject);
                        }
                    }
                }
            }

            //If a selection was made, execute its associated command and add it to the history
            if (selectionCommand != null)
            {
                selectionCommand.ExecuteEdit();
                EditHistory.Instance.AddCommand(selectionCommand);
            }
        }