public override void RemoveDetailEntities() { if (!SelectedEntities.Any()) { return; } var entityKey = Repository.GetPrimaryKey(Entity); foreach (var selectedEntity in SelectedEntities) { var detailKey = DetailsRepository.GetPrimaryKey(selectedEntity); var junction = JunctionRepository.First(GetJunctionPredicate(entityKey, detailKey)); JunctionRepository.Remove(junction); } SaveChangesAndNotify(SelectedEntities); SelectedEntities.Clear(); }
private void DeselectAll(bool alsoStopSelecting = true) { foreach (Entity entity in SelectedEntities) { if (entity != null) { DeselectEntity(entity, false); } } SelectedEntities.Clear(); if (alsoStopSelecting) { isSelecting = false; } SetTargeting(null, 0); uiManager.UpdateSelectedEntities(SelectedEntities); }
//-------------------------------------------------------------------------------------------------- void Context_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if (e.PropertyName == nameof(CoreContext.Document)) { SelectedEntities.Clear(); Entities.Clear(); Entities.Add(CoreContext.Current.Document); } else if (e.PropertyName == nameof(InteractiveContext.WorkspaceController)) { SelectedEntities.Clear(); if (_WorkspaceController != null) { _WorkspaceController.Selection.SelectionChanged -= Selection_SelectionChanged; } _WorkspaceController = InteractiveContext.Current.WorkspaceController; if (_WorkspaceController != null) { _WorkspaceController.Selection.SelectionChanged += Selection_SelectionChanged; } } }
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(); }