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);
    }
Ejemplo n.º 3
0
        //--------------------------------------------------------------------------------------------------

        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;
                }
            }
        }
Ejemplo n.º 4
0
        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();
        }