Пример #1
0
        public override uint MouseDown(MouseEventArgs e, I3DControl control)
        {
            if (OpenTK.Input.Keyboard.GetState().IsKeyDown(OpenTK.Input.Key.ControlLeft) &&
                e.Button == MouseButtons.Right &&
                control.PickingDepth != control.ZFar)
            {
                float delta = control.PickingDepth + control.CameraDistance;
                control.CameraTarget -= Vector3.UnitX * (float)Math.Sin(control.CamRotX) * (float)Math.Cos(control.CamRotY) * delta;
                control.CameraTarget += Vector3.UnitY * (float)Math.Sin(control.CamRotY) * delta;
                control.CameraTarget += Vector3.UnitZ * (float)Math.Cos(control.CamRotX) * (float)Math.Cos(control.CamRotY) * delta;

                Vector2 normCoords = control.NormMouseCoords(e.Location.X, e.Location.Y);

                float factoffX = (float)(-normCoords.X * control.PickingDepth) * control.FactorX;
                float factoffY = (float)(-normCoords.Y * control.PickingDepth) * control.FactorY;

                control.CameraTarget += Vector3.UnitX * (float)Math.Cos(control.CamRotX) * factoffX;
                control.CameraTarget -= Vector3.UnitX * (float)Math.Sin(control.CamRotX) * (float)Math.Sin(control.CamRotY) * factoffY;
                control.CameraTarget -= Vector3.UnitY * (float)Math.Cos(control.CamRotY) * factoffY;
                control.CameraTarget += Vector3.UnitZ * (float)Math.Sin(control.CamRotX) * factoffX;
                control.CameraTarget += Vector3.UnitZ * (float)Math.Cos(control.CamRotX) * (float)Math.Sin(control.CamRotY) * factoffY;
            }
            base.MouseDown(e, control);
            return(UPDATE_CAMERA);
        }
Пример #2
0
        public override uint MouseMove(MouseEventArgs e, Point lastMouseLoc, I3DControl control)
        {
            if (e.Button == MouseButtons.Left)
            {
                if (depth < desiredDepth - depthAdjust)
                {
                    depth += depthAdjust;
                }
                else if (depth != desiredDepth)
                {
                    depth = desiredDepth;
                }
            }

            return(0);
        }
Пример #3
0
        public override uint MouseWheel(MouseEventArgs e, I3DControl control)
        {
            depth = control.PickingDepth;
            float delta = ((float)e.Delta * Math.Min(0.01f, depth / 500f));

            control.CameraTarget -= Vector3.UnitX * (float)Math.Sin(control.CamRotX) * (float)Math.Cos(control.CamRotY) * delta;
            control.CameraTarget += Vector3.UnitY * (float)Math.Sin(control.CamRotY) * delta;
            control.CameraTarget += Vector3.UnitZ * (float)Math.Cos(control.CamRotX) * (float)Math.Cos(control.CamRotY) * delta;

            Vector2 normCoords = control.NormMouseCoords(e.Location.X, e.Location.Y);

            float factoffX = (float)(-normCoords.X * delta) * control.FactorX;
            float factoffY = (float)(-normCoords.Y * delta) * control.FactorY;

            control.CameraTarget += Vector3.UnitX * (float)Math.Cos(control.CamRotX) * factoffX;
            control.CameraTarget -= Vector3.UnitX * (float)Math.Sin(control.CamRotX) * (float)Math.Sin(control.CamRotY) * factoffY;
            control.CameraTarget -= Vector3.UnitY * (float)Math.Cos(control.CamRotY) * factoffY;
            control.CameraTarget += Vector3.UnitZ * (float)Math.Sin(control.CamRotX) * factoffX;
            control.CameraTarget += Vector3.UnitZ * (float)Math.Cos(control.CamRotX) * (float)Math.Sin(control.CamRotY) * factoffY;
            return(UPDATE_CAMERA);
        }
Пример #4
0
        public override uint MouseMove(MouseEventArgs e, Point lastMouseLoc, I3DControl control)
        {
            float deltaX = e.Location.X - lastMouseLoc.X;
            float deltaY = e.Location.Y - lastMouseLoc.Y;

            if (e.Button == MouseButtons.Right)
            {
                control.CamRotX += deltaX * 0.00390625f;
                control.CamRotY += deltaY * 0.00390625f;
                return(UPDATE_CAMERA);
            }
            else if (e.Button == MouseButtons.Left)
            {
                base.MouseMove(e, lastMouseLoc, control);

                if (OpenTK.Input.Keyboard.GetState().IsKeyDown(OpenTK.Input.Key.ControlLeft))
                {
                    float delta = ((float)deltaY * -5 * Math.Min(0.01f, depth / 500f));
                    control.CameraTarget -= Vector3.UnitX * (float)Math.Sin(control.CamRotX) * (float)Math.Cos(control.CamRotY) * delta;
                    control.CameraTarget += Vector3.UnitY * (float)Math.Sin(control.CamRotY) * delta;
                    control.CameraTarget += Vector3.UnitZ * (float)Math.Cos(control.CamRotX) * (float)Math.Cos(control.CamRotY) * delta;
                }
                else
                {
                    //code from Whitehole

                    deltaX *= Math.Min(maxCamMoveSpeed, depth * control.FactorX);
                    deltaY *= Math.Min(maxCamMoveSpeed, depth * control.FactorY);

                    control.CameraTarget += Vector3.UnitX * deltaX * (float)Math.Cos(control.CamRotX);
                    control.CameraTarget -= Vector3.UnitX * deltaY * (float)Math.Sin(control.CamRotX) * (float)Math.Sin(control.CamRotY);
                    control.CameraTarget -= Vector3.UnitY * deltaY * (float)Math.Cos(control.CamRotY);
                    control.CameraTarget += Vector3.UnitZ * deltaX * (float)Math.Sin(control.CamRotX);
                    control.CameraTarget += Vector3.UnitZ * deltaY * (float)Math.Cos(control.CamRotX) * (float)Math.Sin(control.CamRotY);
                }

                return(UPDATE_CAMERA);
            }
            return(0);
        }
Пример #5
0
        public Tree3DForm()
        {
            InitializeComponent();

            tree = new Tree3DWithCache()
            {
                MaxLife          = 64,
                ThickHeightRatio = 0.05f,
                BranchingPercent = 0.3f
            };

            tree.PixelSet += (oldx, oldy, oldz, x, y, z, c) =>
            {
                //using (Graphics g = Graphics.FromImage(bmp))
                //{
                //    using (Pen p = new Pen(c, 2f))
                //    {
                //        if(oldx != default(int) && oldy != default(int))
                //            g.DrawLine(p, new Point(oldx, tree.Boundaries.Height - 1 - oldy), new Point(x, tree.Boundaries.Height - 1 - y));
                //    }
                //}
                bmp.SetPixel(x, tree.Boundaries.Height - 1 - y, c);
            };
            propGrid.SelectedObject = tree;


            // TODO create a decent 3d control
            System.Windows.Forms.Integration.ElementHost host = new System.Windows.Forms.Integration.ElementHost();
            host.Dock  = DockStyle.Fill;
            wnd3d      = Cell3DVisualizer.WindowManager.CreateControl();
            host.Child = (System.Windows.UIElement)wnd3d;
            pnl3Dhost.Controls.Add(host);

            wnd3d.SetCameraPosition(64, 0, -64);
            wnd3d.SetCameraLookDirection(-64, 0, 64);



            //wnd3d.ShowWindow();
        }
Пример #6
0
 public override uint Deselect(int index, I3DControl control)
 {
     control.DetachPickingRedrawer();
     return(base.Deselect(index, control));
 }
Пример #7
0
 public override uint DeselectAll(I3DControl control)
 {
     Selected = false;
     control.DetachPickingRedrawer();
     return(0);
 }
Пример #8
0
 public override uint SelectAll(I3DControl control)
 {
     Selected = true;
     control.AttachPickingRedrawer();
     return(0);
 }
Пример #9
0
 public override uint MouseUp(MouseEventArgs e, I3DControl control)
 {
     PropertyChanged?.Invoke(this, new EventArgs());
     return(base.MouseUp(e, control));
 }
Пример #10
0
 public virtual uint Deselect(int index, I3DControl control)
 {
     return(0);
 }
 public virtual uint KeyUp(KeyEventArgs e, I3DControl control)
 {
     return(0);
 }
 public virtual uint MouseClick(MouseEventArgs e, I3DControl control)
 {
     return(0);
 }
Пример #13
0
 public override uint MouseWheel(MouseEventArgs e, I3DControl control)
 {
     control.CameraDistance *= 1f - e.Delta * 0.001f;
     return(UPDATE_CAMERA);
 }
 public override uint MouseMove(MouseEventArgs e, Point lastMousePos, I3DControl control)
 {
     return(REPICK);
 }
 public virtual uint MouseLeaveEntirely(I3DControl control)
 {
     return(0);
 }
 public virtual uint MouseLeave(int index, I3DControl control)
 {
     return(0);
 }
 public virtual uint MouseEnter(int index, I3DControl control)
 {
     return(0);
 }
Пример #18
0
 public override uint MouseDown(MouseEventArgs e, I3DControl control)
 {
     desiredDepth = control.PickingDepth;
     return(0);
 }
 public virtual uint MouseMove(MouseEventArgs e, Point lastMousePos, I3DControl control)
 {
     return(0);
 }