private void onMouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { this.selection.Region = Rectangle.Empty; this.selectedRegion = this.selection.Region; foreach (MapEntity entity in EntitiesToSelect) { if (!SelectedEntities.Contains <MapEntity>(entity)) { if (!ShiftDown) { SelectedEntities.Add(entity); } } if (ShiftDown) { SelectedEntities.Remove(entity); } } EntitiesToSelect.Clear(); } }
private void EntityChanged(object sender, PropertyChangedEventArgs e) { IVisualElement entity = (IVisualElement)sender; if (e.PropertyName == "IsSelected") { if (entity.IsSelected && !SelectedEntities.Contains(entity)) { SelectedEntities.Add(entity); } else if (!entity.IsSelected && SelectedEntities.Contains(entity)) { SelectedEntities.Remove(entity); } } }
public void SetSelectedItem(TEntity entity) { foreach (var item in SelectedEntities.ToList().Where(item => !Equals(item, entity))) { SelectedEntities.Remove(item); } if (!SelectedEntities.Contains(entity)) { SelectedEntities.Add(entity); } _operationScopeContext.SelectItemsAsync <TEntity>(SelectedEntities); if (_editEntityOperationMediator != null) { _editEntityOperationMediator.PerformOperation(); } }
public void SelectEntry([NotNull] ResourceTableEntry entry) { if (!ResourceManager.TableEntries.Contains(entry)) { return; } var entity = entry.Container; if (!SelectedEntities.Contains(entity)) { SelectedEntities.Add(entity); } SelectedTableEntries.Clear(); SelectedTableEntries.Add(entry); }
private void SelectedEntities_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { // handle items where selection was removed foreach (IVisualElement element in MapEntities) { if (!SelectedEntities.Contains(element)) { element.IsSelected = false; } } // set selection position _selectionLocation = new Point(0, 0); foreach (IVisualElement element in SelectedEntities) { _selectionLocation.X += element.X; _selectionLocation.Y += element.Y; } _selectionLocation.X /= SelectedEntities.Count; _selectionLocation.Y /= SelectedEntities.Count; OnPropertyChanged("EntitiesSelected"); OnPropertyChanged("SelectionLocation"); // set correct gizmo orientation if (_selectedEntities.Count == 1 && !GizmoIsRotating) { GizmoOrientation = _selectedEntities[0].Orientation; } else if (!GizmoIsRotating) { GizmoOrientation = 0; } // update rotation capabilities AllowRotation = true; foreach (IVisualElement entity in SelectedEntities) { if (entity is VisualCornerManipulator) { AllowRotation = false; } } }
public void SelectEntry([NotNull] ResourceTableEntry entry) { if (!ResourceManager.TableEntries.Contains(entry)) { return; } var entity = entry.Container; ClearFiltersRequest?.Invoke(this, EventArgs.Empty); if (!SelectedEntities.Contains(entity)) { SelectedEntities.Add(entity); } SelectedTableEntries.Clear(); SelectedTableEntries.Add(entry); }
public void Tick() { float deltaTime = m_dtStopwatch.ElapsedMilliseconds / 1000f; m_dtStopwatch.Restart(); m_gizmos.ResetList(); // Update all of the entities in this world so they can move around, etc. foreach (WComponent component in m_componentList) { component.Tick(deltaTime); } // Poll for new debug primitives. if (Map != null) { foreach (var room in Map.Rooms) { if (!room.Visible) { continue; } foreach (var ent in room.Entities) { if (!Map.LayerIsVisible(ent.Layer)) { continue; } if (SelectedEntities.Contains(ent)) { ent.OnDrawGizmosSelected(); } else { ent.OnDrawGizmos(); } } } if (Map.Stage != null) { if (Map.Stage.Visible) { foreach (var ent in Map.Stage.Entities) { if (!Map.LayerIsVisible(ent.Layer)) { continue; } if (SelectedEntities.Contains(ent)) { ent.OnDrawGizmosSelected(); } else { ent.OnDrawGizmos(); } } } } } // Badly placed hack to test stuff. if (Input.GetMouseButtonDown(0)) { Ray mouseRay = m_renderSystem.m_editorCamera.ViewportPointToRay(Input.MousePosition); var hitResults = RaycastAll(mouseRay); Console.WriteLine("Hit {0} Objects.", hitResults.Count); for (int i = 0; i < hitResults.Count; i++) { Console.WriteLine("\t{0}", hitResults[i]); } // If they're holding control, toggle the status of whether or not it is selected. if (Input.GetKey(System.Windows.Input.Key.LeftCtrl)) { foreach (var result in hitResults) { if (SelectedEntities.Contains(result)) { SelectedEntities.Remove(result); } else { SelectedEntities.Add(result); } } } else { SelectedEntities.Clear(); if (hitResults.Count > 0) { SelectedEntities.Add(hitResults[0]); } } } // Finalize the debug primitive list. m_gizmos.FinalizePrimitiveBatch(); // Update the render system this frame and draw everything. m_renderSystem.RenderFrame(); // Update the internal input state so that we can compare against the previous state, ie: for first press, etc. m_input.Internal_UpdateInputState(); }
public bool IsSelected(IUnit unit) { return(SelectedEntities.Contains(unit)); }
private void HandleMouseInput() { if (Input.GetMouseButtonDown(0)) { CancelBuildMode(); isSelecting = true; mouseStartPosition = Input.mousePosition; } if (Input.GetMouseButtonUp(0)) { bool isMultiselecting = Input.GetButton("Multiselect"); if (!isMultiselecting) { DeselectAll(false); } if (isSelecting) { Bounds bounds = GetViewportBounds(mouseStartPosition, Input.mousePosition); if (bounds.size.x > 0.01 && bounds.size.y > 0.01) { //selection box is large enough, select entities inside IEnumerable <Entity> entitiesToConsider; if (OverallStateManager.Instance.IsOfflineTest) { entitiesToConsider = FindObjectsOfType <Entity>(); } else { entitiesToConsider = clientEntityManager.MySquad.Values; } foreach (Entity hitEntity in entitiesToConsider.Where(x => IsWithinBounds(bounds, x.transform.position))) { if (!SelectedEntities.Contains(hitEntity)) { SelectEntity(hitEntity); } else if (isMultiselecting) { DeselectEntity(hitEntity, true); } } uiManager.UpdateSelectedEntities(SelectedEntities); } else { //selection box is too small, do point selection Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity, LayerManager.Instance.clickableMask)) { Entity hitEntity = hit.transform.gameObject.GetComponentInParent <Entity>(); if (hitEntity != null && hitEntity.playerId == clientGameManager.MyPlayer.id) { if (!SelectedEntities.Contains(hitEntity)) { SelectEntity(hitEntity); } else if (isMultiselecting) { DeselectEntity(hitEntity, true); } } } uiManager.UpdateSelectedEntities(SelectedEntities); } } isSelecting = false; } if (Input.GetMouseButtonUp(1)) { if (SelectedEntities.Count > 0) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity, LayerManager.Instance.clickableMask)) { Entity hitEntity = hit.transform.gameObject.GetComponentInParent <Entity>(); if (hitEntity != null && hitEntity.teamId != clientGameManager.MyPlayer.teamId) { IssueAttackCommand(SelectedEntities .Where(x => x.CanAttackTarget(hitEntity)) .Select(x => x.uniqueId).ToList(), hitEntity.uniqueId); } else { IssueMoveCommand(SelectedEntities.Where(x => x.canMove).Select(x => x.uniqueId).ToList(), hit.point); } } } } }