Skip to content

How to chain user mouse handlers in rgl

2 messages · Dieter Menne, Duncan Murdoch

#
Dear Rglers,

With rgl, I would like to set marker when a button is pressed, but leave the
standard trackball handling otherwise. Thanks to Duncan and Oleg for helping
me handling key down.

How do I say in a custom mouse handler "after having done your work, forward
to standard trackball once only"? The example below shows the idea, but it
works only once, then reverts to standard trackball handling.

Dieter

#----------------------
library(rgl)
r3dDefaults
open3d()
shade3d(cube3d(color=rep(rainbow(6),rep(4,6))))


btn3d <- function() {
  begin <- function(x, y) {
    # Add checking for key down later
    cat(x,y,"\n")
    # Forward to trackball (no easier way?)
    newhandler <- par3d("mouseMode")
    newhandler[1] <- "trackball"
    par3d(mouseMode =  newhandler)
   }
   rgl.setMouseCallbacks(1, begin)
 }

btn3d()
#
On 01/03/2008 5:41 AM, Dieter Menne wrote:
I don't think there's currently an easy way to do that.  What you would 
have to do is to replicate the trackball handler in yours.  (You can see 
what it does in the src/rglview.cpp in the rgl source.)

If you want to write the R code (and docs for it) to fix this, I'll put 
it into rgl.

Duncan Murdoch