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); }
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); }
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); }
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); }
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(); }
public override uint Deselect(int index, I3DControl control) { control.DetachPickingRedrawer(); return(base.Deselect(index, control)); }
public override uint DeselectAll(I3DControl control) { Selected = false; control.DetachPickingRedrawer(); return(0); }
public override uint SelectAll(I3DControl control) { Selected = true; control.AttachPickingRedrawer(); return(0); }
public override uint MouseUp(MouseEventArgs e, I3DControl control) { PropertyChanged?.Invoke(this, new EventArgs()); return(base.MouseUp(e, control)); }
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); }
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); }
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); }