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(); }
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; } } }
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(); } } } }