public void Drag(ViewportMouseDragEventArgs e) { if (!active.Enabled) { return; } float diffX = -(e.CurrentPosition.X - e.PreviousPosition.X); float diffY = (e.CurrentPosition.Y - e.PreviousPosition.Y); float modifiedDiffX = diffX * 0.01f * active.Camera.Zoom; float modifiedDiffY = diffY * 0.01f * active.Camera.Zoom; switch (mode) { case MouseMode.Select: break; case MouseMode.Pan: active.Camera.Translate(modifiedDiffX, modifiedDiffY); break; case MouseMode.Zoom: float zoom = ((diffX * 2) - diffY) * active.Camera.ZoomSpeed; active.Camera.Zoom += zoom; break; case MouseMode.Rotate: if (active.ProjectionMode == ProjectionType.Perspective) { active.Camera.Rotate(diffX, diffY); } break; } }
public void Drag(ViewportMouseDragEventArgs e) { if (!active.Enabled) { return; } float diffX = -(e.CurrentPosition.X - e.PreviousPosition.X); float diffY = (e.CurrentPosition.Y - e.PreviousPosition.Y); float modifiedDiffX = diffX * 0.01f * active.Camera.Zoom; float modifiedDiffY = diffY * 0.01f * active.Camera.Zoom; switch (mode) { case MouseMode.Select: break; case MouseMode.Pan: active.Camera.Translate(modifiedDiffX, modifiedDiffY); break; case MouseMode.Zoom: float zoom = ((diffX * 2) - diffY) * active.Camera.ZoomSpeed; active.Camera.Zoom += zoom; break; case MouseMode.Rotate: if (active.ProjectionMode == ProjectionType.Perspective) { active.Camera.Rotate(diffX, diffY); } break; } }