예제 #1
0
 private CurrentTool MovePrevious(CurrentTool currentTool)
 {
     return(currentTool == CurrentTool.Resize ? CurrentTool.Color :
            Enum.GetValues(typeof(CurrentTool)).Cast <CurrentTool>()
            .OrderByDescending(t => t)
            .FirstOrDefault(t => (int)t < (int)currentTool));
 }
예제 #2
0
 private void panelWorkflow_MouseMove(object sender, MouseEventArgs e)
 {
     if (e.Button == MouseButtons.Left)
     {
         CurrentTool.OnMouseMove(e.X, e.Y);
     }
 }
예제 #3
0
 private void form_MouseWheel(object sender, MouseEventArgs e)
 {
     if (Control.ModifierKeys.HasFlag(Keys.Control) && Form.Mode == RegionCaptureMode.Annotation)
     {
         if (e.Delta > 0)
         {
             CurrentTool = CurrentTool.Previous <ShapeType>();
         }
         else if (e.Delta < 0)
         {
             CurrentTool = CurrentTool.Next <ShapeType>();
         }
     }
     else
     {
         if (e.Delta > 0)
         {
             Options.MagnifierPixelCount = Math.Min(Options.MagnifierPixelCount + 2, RegionCaptureOptions.MagnifierPixelCountMaximum);
         }
         else if (e.Delta < 0)
         {
             Options.MagnifierPixelCount = Math.Max(Options.MagnifierPixelCount - 2, RegionCaptureOptions.MagnifierPixelCountMinimum);
         }
     }
 }
예제 #4
0
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            Graphics g = e.Graphics;

            //Enable anti-aliasing for prettier vertices!
            g.SmoothingMode   = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
            g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;

            g.FillRectangle(gb, new Rectangle(0, 0, this.Width, this.Height));

            foreach (GUIVertex gv in verts)
            {
                gv.Draw(g);
            }

            foreach (GUIEdge edge in edges)
            {
                edge.Draw(g);
            }

            if (CurrentTool != null)
            {
                CurrentTool.Draw(g);
            }
        }
        //--------------------------------------------------------------------------------------------------

        public void MouseDown(ViewportController viewportController)
        {
            if (_LastDetectedInteractive is AIS_ViewCube viewCube &&
                _LastDetectedOwner is AIS_ViewCubeOwner viewCubeOwner)
            {
                if (!viewportController.LockedToPlane)
                {
                    viewCube.HandleClick(viewCubeOwner);
                }
                return;
            }

            if (CurrentTool != null)
            {
                if (CurrentTool.OnMouseDown(_MouseEventData))
                {
                    // Handled by tool
                    return;
                }
            }

            if (_ToolActions.Any())
            {
                foreach (var toolAction in _ToolActions)
                {
                    if (toolAction.OnMouseDown(_MouseEventData))
                    {
                        // Handled by tool action
                        return;
                    }
                }
            }
            IsSelecting = true;
        }
예제 #6
0
 private void panelForm_MouseUp(object sender, MouseEventArgs e)
 {
     if (e.Button == MouseButtons.Left)
     {
         CurrentTool.OnMouseUp(e.X, e.Y);
     }
 }
예제 #7
0
 void mPanel_MouseDown(object sender, MouseEventArgs e)
 {
     if (CurrentTool != null)
     {
         CurrentTool.OnMouseDown(e.X, e.Y, e);
     }
 }
예제 #8
0
        /// <summary>
        /// Called when the PlayState is entered from the state manager.
        /// </summary>
        public override void OnEnter()
        {
            // Just toss out any pending input.
            DwarfGame.GumInputMapper.GetInputQueue();

            if (!IsInitialized)
            {
                EnterTime = DateTime.Now;
                DiscoverPlayerTools();

                VoxSelector.Selected  += (voxels, button) => CurrentTool.OnVoxelsSelected(voxels, button);
                VoxSelector.Dragged   += (voxels, button) => CurrentTool.OnVoxelsDragged(voxels, button);
                BodySelector.Selected += (bodies, button) =>
                {
                    CurrentTool.OnBodiesSelected(bodies, button);
                    if (CurrentToolMode == "SelectUnits")
                    {
                        SelectedObjects = bodies;
                    }
                };
                BodySelector.MouseOver += (bodies) => CurrentTool.OnMouseOver(bodies);

                // Ensure game is not paused.
                World.Paused             = false;
                DwarfTime.LastTime.Speed = 1.0f;

                // Setup new gui. Double rendering the mouse?
                Gui = new Gui.Root(DwarfGame.GuiSkin);
                Gui.MousePointer = new Gui.MousePointer("mouse", 4, 0);

                World.UserInterface = this;
                CreateGUIComponents();
                IsInitialized = true;

                SoundManager.PlayMusic("main_theme_day");
                World.Time.Dawn += time =>
                {
                    SoundManager.PlaySound(ContentPaths.Audio.Oscar.sfx_gui_daytime, 0.15f);
                    SoundManager.PlayMusic("main_theme_day");
                };

                World.Time.NewNight += time =>
                {
                    SoundManager.PlaySound(ContentPaths.Audio.Oscar.sfx_gui_nighttime, 0.15f);
                    SoundManager.PlayMusic("main_theme_night");
                };

                World.UnpauseThreads();
                AutoSaveTimer = new Timer(GameSettings.Current.AutoSaveTimeMinutes * 60.0f, false, Timer.TimerMode.Real);

                foreach (var contextCommandFactory in AssetManager.EnumerateModHooks(typeof(ContextCommandAttribute), typeof(ContextCommands.ContextCommand), new Type[] { }))
                {
                    ContextCommands.Add(contextCommandFactory.Invoke(null, new Object[] { }) as ContextCommands.ContextCommand);
                }

                World.LogEvent(String.Format("We have arrived at {0}", World.Overworld.Name));
            }

            base.OnEnter();
        }
        private void createPlacement()
        {
            if (currentPlacement != null)
            {
                return;
            }

            var blueprint = CurrentTool?.CreatePlacementBlueprint();

            if (blueprint != null)
            {
                // doing this post-creations as adding the default hit sample should be the case regardless of the ruleset.
                blueprint.HitObject.Samples.Add(new HitSampleInfo {
                    Name = HitSampleInfo.HIT_NORMAL
                });

                placementBlueprintContainer.Child = currentPlacement = blueprint;

                // Fixes a 1-frame position discrepancy due to the first mouse move event happening in the next frame
                updatePlacementPosition();

                updatePlacementSamples();

                updatePlacementNewCombo();
            }
        }
예제 #10
0
        /// <summary>
        /// set the new solid manipulation mode
        /// </summary>
        /// <param name="mode"></param>
        private void SetSolidManipulationMode(string mode)
        {
            CurrentTool?.Deinitialize();

            switch (mode)
            {
            case "brush":
                CurrentTool = new SolidManipulationTool();
                textureProperties.Enabled = true;
                break;

            case "face":
                CurrentTool = new SolidFaceTool();
                textureProperties.Enabled = true;
                break;

            case "vertex":
                CurrentTool = new SolidVertexTool();
                textureProperties.Enabled = false;
                break;
            }

            CurrentTool?.Initialize(this);

            UpdateSolidManipulationToolbar();
            UpdateSolidPropertiesControl();
            UpdateCutCopyPasteToolbar();
            UpdateGroupToolbar();

            RenderViewports();
        }
예제 #11
0
 protected override void OnKeyUp(KeyEventArgs e)
 {
     if (CurrentTool != null)
     {
         CurrentTool.OnKeyUp(e);
     }
 }
예제 #12
0
        private void InitializeDial()
        {
            radialController = RadialController.CreateForCurrentView();

            // Set rotation resolution to 1 degree of sensitivity.
            radialController.RotationResolutionInDegrees = 36;

            // create new dial menu item
            //ToggleMenuItem =
            //    RadialControllerMenuItem.CreateFromFontGlyph("Toggle Light", "\xE793", "Segoe MDL2 Assets");
            //radialController.Menu.Items.Add(ToggleMenuItem);

            BrightnessMenuItem =
                RadialControllerMenuItem.CreateFromFontGlyph("Brightness", "\xE706", "Segoe MDL2 Assets");
            radialController.Menu.Items.Add(BrightnessMenuItem);

            ColorMenuItem =
                RadialControllerMenuItem.CreateFromFontGlyph("Color", "\xE790", "Segoe MDL2 Assets");
            radialController.Menu.Items.Add(ColorMenuItem);

            // clear all default item
            RadialControllerConfiguration config = RadialControllerConfiguration.GetForCurrentView();

            config.SetDefaultMenuItems(new RadialControllerSystemMenuItemKind[] { });

            // bind dial menu item to CurrentTool Enum
            //ToggleMenuItem.Invoked += (sender, args) => thisTool = CurrentTool.ToggleItem;
            BrightnessMenuItem.Invoked += (sender, args) => thisTool = CurrentTool.BrightnessItem;
            ColorMenuItem.Invoked      += (sender, args) => thisTool = CurrentTool.ColorItem;

            // subscribe click and rotation of the dial
            radialController.ButtonClicked   += (sender, args) => { RadialController_ButtonClicked(sender, args); };
            radialController.RotationChanged += (sender, args) => { RadialController_RotationChanged(sender, args); };
        }
예제 #13
0
 public void Commit()
 {
     if (CurrentTool != null)
     {
         CurrentTool.DoCommit();
     }
 }
        //--------------------------------------------------------------------------------------------------

        public bool KeyPressed(Key key)
        {
            if (CurrentTool != null)
            {
                if (CurrentTool.OnKeyPressed(key))
                {
                    return(true);
                }
            }

            if (_ToolActions.Any())
            {
                foreach (var toolAction in _ToolActions)
                {
                    if (toolAction.OnKeyPressed(key))
                    {
                        // Handled by tool action
                        //Workspace.V3dViewer.Redraw();
                        return(true);
                    }
                }
            }

            return(false);
        }
예제 #15
0
        public void Render(DwarfGame game, DwarfTime time, GraphicsDevice g)
        {
            CurrentTool.Render(game, g, time);
            VoxSelector.Render();

            foreach (CreatureAI creature in Faction.SelectedMinions)
            {
                //Drawer2D.DrawZAlignedRect(creature.Position + Vector3.Down * 0.5f, 0.25f, 0.25f, 2, new Color(255, 255, 255, 50));
                creature.Creature.SelectionCircle.IsVisible = true;
                foreach (Task task in creature.Tasks)
                {
                    task.Render(time);
                }

                if (creature.CurrentTask != null)
                {
                    creature.CurrentTask.Render(time);
                }
            }


            DwarfGame.SpriteBatch.Begin();
            BodySelector.Render(DwarfGame.SpriteBatch);
            DwarfGame.SpriteBatch.End();
        }
예제 #16
0
 public void OnBodiesSelected(List <Body> bodies, InputManager.MouseButton button)
 {
     CurrentTool.OnBodiesSelected(bodies, button);
     if (CurrentToolMode == ToolMode.SelectUnits)
     {
         SelectedObjects = bodies;
     }
 }
        //--------------------------------------------------------------------------------------------------

        public bool PrepareUndo()
        {
            if (CurrentTool != null)
            {
                return(CurrentTool.PrepareUndo());
            }
            return(true);
        }
예제 #18
0
        public void StartTool(Tool tool)
        {
            CurrentTool = tool ?? throw new ArgumentNullException(nameof(tool));

            CurrentTool.Manager = this;

            CurrentTool.Start();
        }
예제 #19
0
        //protected override void OnResize(EventArgs e)
        //{
        //    base.OnResize(e);


        //}

        void mPanel_MouseUp(object sender, MouseEventArgs e)
        {
            //  base.OnMouseUp(e);
            if (CurrentTool != null)
            {
                CurrentTool.OnMouseUp(e.X, e.Y);
            }
        }
예제 #20
0
 public void ChangeTool(ToolMode NewTool)
 {
     Tools[NewTool].OnBegin();
     if (CurrentToolMode != NewTool)
     {
         CurrentTool.OnEnd();
     }
     CurrentToolMode = NewTool;
 }
예제 #21
0
        public void NextStep()
        {
            if (CurrentTool is null)
            {
                return;
            }

            CurrentTool.NextStep();
        }
예제 #22
0
        public void PreviousStep()
        {
            if (CurrentTool is null)
            {
                return;
            }

            CurrentTool.PreviousStep();
        }
예제 #23
0
        void mPanel_MouseMove(object sender, MouseEventArgs e)
        {
            if (CurrentTool != null)
            {
                CurrentTool.OnMouseMove(e.X, e.Y);
            }
            RgPoint pt = mScreenDisplay.DisplayTransformation.ToUnit(new PointF(e.X, e.Y));

            Debug.Write(string.Format("X:{0}mm Y:{1}mm", pt.X * 25.4, pt.Y * 25.4));
        }
예제 #24
0
        private void panelWorkflow_MouseDown(object sender, MouseEventArgs e)
        {
            Focus();

            if (e.Button == MouseButtons.Left)
            {
                CurrentTool.OnMouseDown(e.X, e.Y);
                CurrentTool.AfterActivityCreate();
            }
        }
예제 #25
0
        private void panelForm_MouseDown(object sender, MouseEventArgs e)
        {
            Focus();

            if (e.Button == MouseButtons.Left)
            {
                CurrentTool.OnMouseDown(e.X, e.Y);
                CurrentTool.AfterControlCreate();
            }
        }
        //--------------------------------------------------------------------------------------------------

        public bool CanPasteFromClipboard()
        {
            if (CurrentTool != null)
            {
                return(CurrentTool.CanPasteFromClipboard());
            }
            else
            {
                return(InteractiveContext.Current.DocumentController.CanPasteFromClipboard());
            }
        }
        //--------------------------------------------------------------------------------------------------

        public IEnumerable <InteractiveEntity> PasteFromClipboard()
        {
            if (CurrentTool != null)
            {
                return(CurrentTool.PasteFromClipboard());
            }
            else
            {
                return(InteractiveContext.Current.DocumentController.PasteFromClipboard());
            }
        }
        //--------------------------------------------------------------------------------------------------

        public void Delete()
        {
            if (CurrentTool != null)
            {
                CurrentTool.Delete();
            }
            else
            {
                InteractiveContext.Current.DocumentController.Delete(Selection.SelectedEntities);
            }
        }
        //--------------------------------------------------------------------------------------------------

        public bool CanDuplicate()
        {
            if (CurrentTool != null)
            {
                return(CurrentTool.CanDuplicate());
            }
            else
            {
                return(InteractiveContext.Current.DocumentController.CanDuplicate(Selection.SelectedEntities));
            }
        }
예제 #30
0
 public void setCurrentTool(CurrentTool tool)
 {
     this.currentToolEnum = tool;
     if (this.currentTool != null)
     {
         this.currentTool.toolChangeOut();
     }
     this.currentTool = toolsCollection[tool];
     this.currentTool.toolChangeIn();
     //Console.WriteLine(this.currentTool.ToString());
 }
예제 #31
0
        public void sceneEditor()
        {
            Undo.RecordObjects(new Object[] { spriteDeformer }, "Move deformer");
            HandleUtility.AddDefaultControl(GUIUtility.GetControlID(GetHashCode(), FocusType.Passive));
            if (Tools.current != Tool.View)
                Tools.current = Tool.None;

            
            if (Event.current.keyCode == KeyCode.Delete)
            {
                spriteDeformer.RemovePoints(selectedPoints.ToArray());
                selectedPoints.Clear();
                upDateMeshDate(true);
                Event.current.Use();
            }
            foreach (SpritePoint p in spriteDeformer.points)
            {
                Handles.color = colorSets[ColorSet.POINT].standart;
                Vector3 pos = spriteDeformer.SpritePositionToGlobal(p.spritePosition + p.offset2d);
                Handles.SphereCap(0, pos, Quaternion.identity, 0.1f * HandleUtility.GetHandleSize(pos));
            }
            foreach (Edge e in spriteDeformer.edges)
            {
                Handles.color = colorSets[ColorSet.EDGE].standart;
                Handles.DrawLine(spriteDeformer.SpritePositionToGlobal(e.point1.spritePosition + e.point1.offset2d), spriteDeformer.SpritePositionToGlobal(e.point2.spritePosition + e.point2.offset2d));
            }
            foreach (SpritePoint p in selectedPoints)
            {
                Vector3 pos = spriteDeformer.SpritePositionToGlobal(p.spritePosition + p.offset2d);
                Handles.color = colorSets[ColorSet.POINT].selected;
                Handles.SphereCap(0, pos, Quaternion.identity, 0.14f * HandleUtility.GetHandleSize(pos));
            }

            if (deformerTool == null) deformerTool = new DeformerTool(this);
            deformerTool.OnSceneGUI();
            if (Event.current.type == EventType.mouseDown && currentTool == CurrentTool.NONE && Tools.current != Tool.View && Event.current.button == 0)
            {
                if (GUIUtility.hotControl == 0 && !Event.current.alt)
                {
                    startSelectedRect = Event.current.mousePosition;
                    currentTool = CurrentTool.SELECT_RECT;
                }
            }
            if (currentTool == CurrentTool.SELECT_RECT)
            {
                Vector2 currentPos = Event.current.mousePosition;
                Handles.BeginGUI();
                Vector3 upLeft = (startSelectedRect);
                Vector3 downRight = (currentPos);
                Vector3 upRight = (new Vector2(currentPos.x, startSelectedRect.y));
                Vector3 downLeft = (new Vector2(startSelectedRect.x, currentPos.y));
                Vector3[] rectVerts = { upLeft, upRight, downRight, downLeft };

                Handles.color = colorSets[ColorSet.SELECTED_RECTANGLE].standart;
                Handles.DrawSolidRectangleWithOutline(rectVerts, colorSets[ColorSet.SELECTED_RECTANGLE].standart, colorSets[ColorSet.SELECTED_RECTANGLE].over);
                Handles.EndGUI();
                List<SpritePoint> inRecPoints = new List<SpritePoint>();
                foreach (SpritePoint p in spriteDeformer.points)
                {
                    Vector2 pScreenPos = HandleUtility.WorldToGUIPoint(spriteDeformer.SpritePositionToGlobal(p.spritePosition + p.offset2d));
                    Rect r = new Rect(startSelectedRect.x, startSelectedRect.y, currentPos.x - startSelectedRect.x, currentPos.y - startSelectedRect.y);
                    if (r.Contains(pScreenPos, true))
                    {
                        Vector3 pos = spriteDeformer.SpritePositionToGlobal(p.spritePosition + p.offset2d);
                        Handles.color = colorSets[ColorSet.POINT].over;
                        Handles.SphereCap(0, pos, Quaternion.identity, 0.15f * HandleUtility.GetHandleSize(pos));
                        inRecPoints.Add(p);
                    }
                }
                if (Event.current.rawType == EventType.MouseUp)
                {
                    if (!(Event.current.shift || Event.current.control)) 
                        if(!(startSelectedRect == Event.current.mousePosition))
                        selectedPoints.Clear();
                    if (startSelectedRect == Event.current.mousePosition)
                    {
                        SpritePoint clossestP = null;
                        float minD = float.MaxValue;
                        foreach (var item in spriteDeformer.points)
                        {
                            float d = Vector2.Distance(Event.current.mousePosition,
                                HandleUtility.WorldToGUIPoint(
                                spriteDeformer.SpritePositionToGlobal(item.spritePosition + item.offset2d)));
                            if (d < minD)
                            {
                                minD = d;
                                clossestP = item;
                            }
                        }
                        if (minD < 6f)
                        {
                            if (!(Event.current.shift || Event.current.control))
                            {
                                selectedPoints.Clear();   
                            }
                            inRecPoints.Add(clossestP);
                        }

                    }
                    foreach (SpritePoint p in inRecPoints)
                    {
                        if (Event.current.shift && Event.current.control)
                        {
                            if (!selectedPoints.Contains(p))
                                selectedPoints.Add(p);
                        }
                        else
                            if (Event.current.shift)
                            {
                                if (selectedPoints.Contains(p))
                                    selectedPoints.Remove(p);
                                else
                                    selectedPoints.Add(p);
                            }
                            else
                                if (Event.current.control)
                                {
                                    if (selectedPoints.Contains(p))
                                        selectedPoints.Remove(p);
                                }
                                else
                                {
                                    selectedPoints.Add(p);
                                }
                    }
                    if(!spriteDeformer.editorProps.savePivot)deformerTool.recalCulatePivot();
                    currentTool = CurrentTool.NONE;
                }
            }
            
            if (Event.current.rawType == EventType.MouseUp)
            {
                currentTool = CurrentTool.NONE;
            }
        }