Example #1
0
        private void createRenderPanel()
        {
            if (renderItem != null)
            {
                renderItem.Close();
            }
            renderItem                     = new TabItemWithClose();
            renderItem.Width               = 150;
            renderItem.Height              = 20;
            renderItem.FontSize            = 13;
            renderItem.Header              = "编辑器";
            renderItem.HorizontalAlignment = HorizontalAlignment.Stretch;
            renderItem.VerticalAlignment   = VerticalAlignment.Stretch;
            RenderPanel rp = new RenderPanel();

            rp.RenderLoaded     += Rp_Loaded;
            rp._MouseButtonDown += Rp__MouseLeftButtonDown;
            rp._MouseButtonUp   += Rp__MouseLeftButtonUp;
            rp._MouseMove       += Rp__MouseMove;
            rp._KeyDown         += Rp__KeyDown;
            rp._KeyUp           += Rp__KeyUp;
            rp._SizeChange      += Rp__SizeChange;
            renderItem.Content   = rp;
            mainWnd.renderPanel.Items.Add(renderItem);
            mainWnd.renderPanel.SelectedItem = renderItem;
        }
Example #2
0
        private void gamePanel_SizeChange(object sender, EventArgs e)
        {
            RenderPanel rp = gameItem.Content as RenderPanel;

            // 在Resize事件中更新目标应用程序的窗体尺寸.
            Win32.SetWindowPos(windowsPlayerHandle, IntPtr.Zero, 0, 0, (int)rp.ActualWidth, (int)rp.ActualHeight, Win32.SWP_NOZORDER);
        }
Example #3
0
        private void createGameWindow()
        {
            RenderPanel rp = null;

            if (gameItem != null)
            {
                rp = gameItem.Content as RenderPanel;
            }
            else
            {
                gameItem         = new TabItemWithClose();
                gameItem.Header  = "Game";
                gameItem.Width   = 150;
                gameItem.Height  = 20;
                gameItem.Closed += GameItem_Closed;
                rp               = new RenderPanel();
                rp._SizeChange  += gamePanel_SizeChange;
                rp.Loaded       += gamePanel_Loaded;
                gameItem.Content = rp;
            }

            mainWnd.renderPanel.Items.Add(gameItem);
            mainWnd.renderPanel.SelectedItem = gameItem;

            Win32.SetParent(windowsPlayerHandle, rp.Handle);
            Int32 wndStyle = Win32.GetWindowLong(windowsPlayerHandle, Win32.GWL_STYLE);

            wndStyle &= ~Win32.WS_BORDER;
            wndStyle &= ~Win32.WS_THICKFRAME;
            Win32.SetWindowLong(windowsPlayerHandle, Win32.GWL_STYLE, wndStyle);
            Win32.SetWindowPos(windowsPlayerHandle, IntPtr.Zero, 0, 0, 0, 0, Win32.SWP_NOMOVE | Win32.SWP_NOSIZE | Win32.SWP_NOZORDER | Win32.SWP_FRAMECHANGED);
        }
Example #4
0
        private void rewBtn_Click(object sender, EventArgs e)
        {
            CurrentRow = 0;
            serialResponseList.Items.Clear();

            sentRowsLbl.Text = "Sent rows: 0";
            mViewDevice.CurrentCodeLineIndex = 0;
            SetupJob();
            RenderPanel.Invalidate();
        }
Example #5
0
        private void Rp__SizeChange(object sender, EventArgs e)
        {
            if (!EngineLoaded)
            {
                return;
            }
            RenderPanel rp = sender as RenderPanel;

            RenderDelegate.ChageFrameSize((int)rp.ActualWidth, (int)rp.ActualHeight);
        }
Example #6
0
        private void ProcessFile(string file)
        {
            if (file == null)
            {
                return;
            }

            if (!File.Exists(file))
            {
                MessageBox.Show("File not found: " + file);
                return;
            }

            try
            {
                StreamReader reader = new StreamReader(file);

                string line;

                SetLoading(true);

                mViewDevice.Clear();

                while ((line = reader.ReadLine()) != null)
                {
                    GCodeParser.ParseLine(line);
                }

                SetLoading(false);

                reader.Close();

                ZoomTextbox.Text = mViewDevice.VisualScale.ToString();

                SetupJob();

                RenderPanel.Invalidate();

                FileNameLabel.Text = Path.GetFileName(file);

                GetConfig().SetString("last.open.file", file);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Example #7
0
        public void DrawScene()
        {
            using (var bmp = new Bitmap(RenderPanel.ClientSize.Width, RenderPanel.ClientSize.Height))
            {
                using (var raw = new RawBitmap(bmp))
                {
                    raw.Clear(Color.Azure);

                    if (_vb != null)
                    {
                        Vector volume      = _vb.Volume;
                        double scaleFactor = Math.Min(bmp.Width, bmp.Height) / 2.0 / Math.Max(volume.X, Math.Max(volume.Y, volume.Z)) * (_zoom / 10.0);

                        // Рисуем объект.

                        Matrix matrix =
                            Matrix.CreateIdentity() *
                            Matrix.CreateScale(scaleFactor, scaleFactor, scaleFactor) *
                            _rotationMatrix *
                            Matrix.CreateTranslate(bmp.Width / 2.0, bmp.Height / 2.0, 0);

                        VertexBuffer tmpVb = _vb.Clone().Mult(matrix);
                        tmpVb.CalcTrianglesNormals();
                        tmpVb.DrawTriangles(raw, Color.GhostWhite, true);

                        // Рисуем тень объекта.

                        matrix =
                            Matrix.CreateIdentity() *
                            Matrix.CreateScale(scaleFactor, scaleFactor, scaleFactor) *
                            _rotationMatrix *
                            Matrix.CreateScale(1, 1, 0) *
                            Matrix.CreateTranslate(-100 * (_zoom / 10.0), 100 * (_zoom / 10.0), -1000) *
                            Matrix.CreateTranslate(bmp.Width / 2.0, bmp.Height / 2.0, 0);

                        tmpVb = _vb.Clone().Mult(matrix);
                        tmpVb.CalcTrianglesNormals();
                        tmpVb.DrawTriangles(raw, Color.Gray, false);
                    }
                }

                using (Graphics gfx = RenderPanel.CreateGraphics())
                    gfx.DrawImageUnscaled(bmp, 0, 0);
            }
        }
Example #8
0
        private void BrowseBtn_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter   = "G-code Files(*.CNC;*.NC;*.TAP;*.TXT)|*.CNC;*.NC;*.TAP;*.TXT|All files (*.*)|*.*";
            openFileDialog1.FileName = "";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = openFileDialog1.FileName;

                if (File.Exists(textBox1.Text))
                {
                    mViewDevice.Clear();

                    using (StreamReader r = new StreamReader(textBox1.Text))
                    {
                        string line       = String.Empty;
                        int    rowCounter = 0;
                        while ((line = r.ReadLine()) != null)
                        {
                            if (line.Trim() != "")
                            {
                                gcodeparser.GCodeParser.ParseLine(line);
                                rowCounter++;
                            }
                        }

                        serialResponseList.Items.Clear();

                        mViewDevice.CurrentCodeLineIndex = 0;

                        SetupJob();

                        RenderPanel.Invalidate();

                        rowsInFileLbl.Text = "Rows: " + rowCounter.ToString();
                    }
                }
            }
        }
Example #9
0
 void CompositionTarget_Rendering(object sender, EventArgs e)
 {
     RenderPanel.Invalidate();
 }
Example #10
0
        private void Panel1_MouseMove(object sender, MouseEventArgs e)
        {
            if (!isStageLoaded)
            {
                return;
            }
            bool draw  = false;
            bool gizmo = false;

            switch (e.Button)
            {
            case MouseButtons.Middle:
                break;

            case MouseButtons.Left:
                if (transformGizmo.TransformGizmoMove(cam.mouseDelta, cam, selectedItems))
                {
                    unsaved = true;
                    if (transformGizmo.SelectedAxes != GizmoSelectedAxes.NONE)
                    {
                        gizmo = true;
                    }
                    NeedPropertyRefresh = true;
                }
                foreach (PointHelper pointHelper in PointHelper.Instances)
                {
                    if (pointHelper.TransformAffected(cam.mouseDelta.X / 2 * cam.MoveSpeed, cam.mouseDelta.Y / 2 * cam.MoveSpeed, cam))
                    {
                        unsaved = true;
                    }
                }
                draw = true;
                break;

            case MouseButtons.None:
                Vector3  mousepos = new Vector3(e.X, e.Y, 0);
                Viewport viewport = d3ddevice.Viewport;
                Matrix   proj     = d3ddevice.GetTransform(TransformState.Projection);
                Matrix   view     = d3ddevice.GetTransform(TransformState.View);
                Vector3  Near     = mousepos;
                Near.Z = 0;
                Vector3 Far = Near;
                Far.Z = -1;

                GizmoSelectedAxes oldSelection = transformGizmo.SelectedAxes;
                transformGizmo.SelectedAxes = transformGizmo.CheckHit(Near, Far, viewport, proj, view, cam);
                if (oldSelection != transformGizmo.SelectedAxes)
                {
                    draw = true;
                    break;
                }

                foreach (PointHelper pointHelper in PointHelper.Instances)
                {
                    GizmoSelectedAxes oldHelperAxes = pointHelper.SelectedAxes;
                    pointHelper.SelectedAxes = pointHelper.CheckHit(Near, Far, viewport, proj, view, cam);
                    if (oldHelperAxes != pointHelper.SelectedAxes)
                    {
                        pointHelper.Draw(d3ddevice, cam);
                        draw = true;
                    }
                }

                break;
            }
            mouseBounds = (wrapAroundScreenEdgesToolStripMenuItem.Checked) ? Screen.GetBounds(ClientRectangle) : RenderPanel.RectangleToScreen(RenderPanel.Bounds);
            EditorCamera.CameraUpdateFlags camresult = cam.UpdateCamera(new Point(Cursor.Position.X, Cursor.Position.Y), mouseBounds, lookKeyDown, zoomKeyDown, cameraKeyDown, hideCursorDuringCameraMovementToolStripMenuItem.Checked, gizmo);

            if (camresult.HasFlag(EditorCamera.CameraUpdateFlags.Redraw) || draw)
            {
                NeedRedraw = true;
            }
        }
Example #11
0
        private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Middle)
            {
                actionInputCollector.KeyDown(Keys.MButton);
            }

            if (!isStageLoaded)
            {
                return;
            }

            switch (e.Button)
            {
            // If the mouse button pressed is not one we're looking for,
            // we can avoid re-drawing the scene by bailing out.
            default:
                return;

            case MouseButtons.Left:
                Item item;
                if (isPointOperation)
                {
                    HitResult res = PickItem(e.Location, out item);
                    if (item != null)
                    {
                        using (PointToDialog dlg = new PointToDialog(res.Position.ToVertex(), item.Position))
                            if (dlg.ShowDialog(this) == DialogResult.OK)
                            {
                                foreach (SETItem it in System.Linq.Enumerable.OfType <SETItem>(selectedItems.GetSelection()))
                                {
                                    it.PointTo(dlg.SelectedLocation);
                                }
                            }
                        isPointOperation = false;

                        LevelData.InvalidateRenderState();
                    }
                    return;
                }
                if (transformGizmo != null)
                {
                    if (moveModeButton.Checked)
                    {
                        transformGizmo.Mode = TransformMode.TRANFORM_MOVE;
                    }
                    else if (rotateModeButton.Checked)
                    {
                        transformGizmo.Mode = TransformMode.TRANSFORM_ROTATE;
                    }
                    else if (scaleModeButton.Checked)
                    {
                        transformGizmo.Mode = TransformMode.TRANSFORM_SCALE;
                    }
                    else
                    {
                        transformGizmo.Mode = TransformMode.NONE;
                    }
                }
                // If we have any helpers selected, don't execute the rest of the method!
                if (transformGizmo.SelectedAxes != GizmoSelectedAxes.NONE)
                {
                    return;
                }

                foreach (PointHelper pointHelper in PointHelper.Instances)
                {
                    if (pointHelper.SelectedAxes != GizmoSelectedAxes.NONE)
                    {
                        return;
                    }
                }

                PickItem(e.Location, out item);

                if (item != null)
                {
                    if (ModifierKeys == Keys.Control)
                    {
                        if (selectedItems.GetSelection().Contains(item))
                        {
                            selectedItems.Remove(item);
                        }
                        else
                        {
                            selectedItems.Add(item);
                        }
                    }
                    else if (!selectedItems.GetSelection().Contains(item))
                    {
                        selectedItems.Clear();
                        selectedItems.Add(item);
                    }
                }
                else if ((ModifierKeys & Keys.Control) == 0)
                {
                    selectedItems.Clear();
                }
                break;

            case MouseButtons.Right:
                actionInputCollector.ReleaseKeys();
                mouseBounds = (wrapAroundScreenEdgesToolStripMenuItem.Checked) ? Screen.GetBounds(ClientRectangle) : RenderPanel.RectangleToScreen(RenderPanel.Bounds);
                cam.UpdateCamera(new System.Drawing.Point(Cursor.Position.X, Cursor.Position.Y), new System.Drawing.Rectangle(), false, false, false, hideCursorDuringCameraMovementToolStripMenuItem.Checked);

                if (isPointOperation)
                {
                    isPointOperation = false;
                    return;
                }
                bool cancopy = false;
                foreach (Item obj in selectedItems.GetSelection())
                {
                    if (obj.CanCopy)
                    {
                        cancopy = true;
                    }
                }
                if (cancopy)
                {
                    /*cutToolStripMenuItem.Enabled = true;
                     *                      copyToolStripMenuItem.Enabled = true;*/
                    deleteToolStripMenuItem.Enabled = true;

                    cutToolStripMenuItem.Enabled  = false;
                    copyToolStripMenuItem.Enabled = false;
                }
                else
                {
                    cutToolStripMenuItem.Enabled    = false;
                    copyToolStripMenuItem.Enabled   = false;
                    deleteToolStripMenuItem.Enabled = false;
                }
                pasteToolStripMenuItem.Enabled = false;
                menuLocation = e.Location;
                contextMenuStrip1.Show(RenderPanel, e.Location);
                break;
            }
        }
 public RenderTests()
 {
     _jpgDevice   = new JPGGraphicsDeviceProvider(512, 360);
     _renderPanel = new RenderPanel(_jpgDevice.GraphicsDevice);
 }