コード例 #1
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            if (MainWindow.mainWindow.ObjectComboBox != null)
            {
                MainComboBox.ItemsSource = MainWindow.mainWindow.ObjectComboBox.ItemsSource as ObservableCollection <ComboBoxObjectInfoItem>;
            }

            if (MainWindowViewModel.viewModel.objectManager.SelectionObject.Selection != null && MainWindowViewModel.viewModel.objectManager.SelectionObject.Selection.Count > 0)
            {
                var items = MainWindow.mainWindow.ObjectComboBox.ItemsSource as ObservableCollection <ComboBoxObjectInfoItem>;

                MainComboBox.IsEnabled = true;

                for (int i = 0; i < items.Count; i++)
                {
                    ComboBoxObjectInfoItem item = items.ElementAt(i);

                    var selectedObj = MainWindowViewModel.viewModel.objectManager.SelectionObject.Selection[0] as MapGameObject;

                    if (selectedObj != null && item != null && item.GameObject != null && selectedObj != null && item.GameObject.ClassName == selectedObj.Info.ClassName)
                    {
                        MainComboBox.SelectedIndex = i;
                    }
                }
            }

            var compInfos = new ObservableCollection <ComboBoxComponentInfoItem>();

            ComponentComboBox.ItemsSource = compInfos;

            if (MainWindow.mainWindow.projectManager.objectInformation.ComponentInfos != null)
            {
                foreach (ComponentInfo componentInfo in MainWindow.mainWindow.projectManager.objectInformation.ComponentInfos)
                {
                    compInfos.Add(new ComboBoxComponentInfoItem()
                    {
                        RealName      = componentInfo.RealName,
                        ComponentInfo = componentInfo
                    });
                }
            }


            UpdateProperties();
        }
コード例 #2
0
        public void UpdateSelection()
        {
            ComboBox comboBox = MainWindow.mainWindow.ObjectComboBox;


            if (comboBox.SelectedItem != null && SelectionType == SelectionType.OBJECT)
            {
                ComboBoxObjectInfoItem item = comboBox.SelectedItem as ComboBoxObjectInfoItem;

                if (item != null)
                {
                    objectManager.PreviewObject.CurrentAnimation = item.GameObject.DefaultAnimation;

                    objectManager.PreviewObject.Properties = item.GameObject.Properties;

                    objectManager.PreviewObject.Info = item.GameObject;
                }
            }
        }
コード例 #3
0
        public void WPFMouseDown(MouseEventArgs e)
        {
            ComboBox comboBox = MainWindow.mainWindow.ObjectComboBox;

            ComboBoxObjectInfoItem item = comboBox.SelectedItem as ComboBoxObjectInfoItem;
            Vector2 worldPos            = Vector2.Transform(new Vector2((float)e.GetPosition(MainWindow.mainWindow.Viewport).X, (float)e.GetPosition(MainWindow.mainWindow.Viewport).Y), Matrix.Invert(objectManager.CurrentCamera.Transform));

            // Placing objects
            if (e.LeftButton == MouseButtonState.Pressed && SelectionType == SelectionType.OBJECT && item != null && !guiManager.UIHovered)
            {
                MapGameObject mapObject = new MapGameObject(item.GameObject.Copy());

                if (item.GameObject == null)
                {
                    Console.WriteLine("GameObjectInfo is null!");
                }

                mapObject.SetPosition(objectManager.PreviewObject.GetPosition());

                mapObject.CurrentAnimation = objectManager.PreviewObject.CurrentAnimation;
                mapObject.Properties       = item.GameObject.Properties;
                mapObject.Info             = item.GameObject.Copy();
                mapObject.HelperRectangles = item.GameObject.HelperRectangles;

                objectManager.GetObjects().Add(mapObject);

                UpdateObjectTree();
            }

            // Selecting objects
            if (e.LeftButton == MouseButtonState.Pressed && SelectionType == SelectionType.SELECTION && !guiManager.UIHovered)
            {
                // Ensure the mouse is not already over a selected object.
                bool isSelectionHovered = false;

                foreach (GameObject obj in objectManager.SelectionObject.Selection)
                {
                    if (obj.GetBoundingBox().Intersects(new Rectangle((int)worldPos.X, (int)worldPos.Y, 1, 1)))
                    {
                        isSelectionHovered = true;
                    }
                }

                if (!isSelectionHovered || (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift)))
                {
                    if (!Keyboard.IsKeyDown(Key.LeftShift) && !Keyboard.IsKeyDown(Key.RightShift))
                    {
                        objectManager.SelectionObject.Selection = new List <GameObject>();
                    }


                    foreach (GameObject obj in objectManager.GetObjects())
                    {
                        if (new Rectangle((int)worldPos.X, (int)worldPos.Y, 1, 1).Intersects(obj.GetBoundingBox()) && !objectManager.SelectionObject.Selection.Contains(obj) && obj != objectManager.PreviewObject && obj.Visible)
                        {
                            if (!Keyboard.IsKeyDown(Key.LeftShift) && !Keyboard.IsKeyDown(Key.RightShift))
                            {
                                if (objectManager.SelectionObject.Selection.Count == 0)
                                {
                                    objectManager.SelectionObject.Selection.Add(obj);
                                }

                                else
                                {
                                    objectManager.SelectionObject.Selection[0] = obj;
                                }
                            }
                            else
                            {
                                objectManager.SelectionObject.Selection.Add(obj);
                            }

                            GameObjectAnimated animObj = objectManager.SelectionObject.Selection[0] as GameObjectAnimated;

                            if (animObj != null && animObj.CurrentAnimation != null)
                            {
                                animObj.CurrentAnimation.SetCurrentMS(0);
                                animObj.CurrentAnimation.Play();
                            }
                            if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))
                            {
                                break;
                            }
                        }
                    }
                }
            }

            if (e.LeftButton == MouseButtonState.Pressed)
            {
                UpdateLayerBox();
            }

            if (e.LeftButton == MouseButtonState.Pressed && objectManager.SelectionObject.Selection.Count > 0)
            {
                OldPositions = new List <Vector2>();

                foreach (GameObject obj in objectManager.SelectionObject.Selection)
                {
                    OldPositions.Add(obj.GetPosition());
                }

                isMoving = true;
            }

            /// OBJECT MOVING

            // Get relative position to origin of selection
            if (objectManager.SelectionObject.Selection != null)
            {
                foreach (GameObject gameObject in objectManager.SelectionObject.Selection)
                {
                    if (gameObject is MapGameObject)
                    {
                        grabOffset[gameObject] = worldPos - gameObject.GetPosition();
                    }
                }
            }
        }