public void WaitEvent(int millis = -1) { SpNavEvent sev = new SpNavEvent(); int ev_type; if (millis == -1) { ev_type = spnav_wait_event(ref sev); } else { ev_type = spnav_wait_event_timeout(ref sev, (int)millis); } switch (ev_type) { case SPNAV_EVENT_BUTTON: var e = sev.button; Button(this, new ButtonEventArgs(e.press, e.bnum)); break; case SPNAV_EVENT_MOTION: var ev = sev.motion; Motion(this, new MotionEventArgs(ev.x, ev.y, ev.z, ev.rx, ev.ry, ev.rz)); break; default: break; } }
public SpaceNavEvent WaitEvent() { lock (padlock) { SpNavEvent sev = new SpNavEvent(); spnav_wait_event(ref sev); switch (sev.type) { case SPNAV_EVENT_BUTTON: return(new SpaceNavButtonEvent(Convert.ToBoolean(sev.button.press), sev.button.bnum)); case SPNAV_EVENT_MOTION: var ev = sev.motion; return(new SpaceNavMotionEvent(ev.x, ev.y, ev.z, ev.rx, ev.ry, ev.rz)); default: return(null); } } }
private static extern int spnav_wait_event_timeout(ref SpNavEvent ev, int timeout);
private static extern int spnav_wait_event(ref SpNavEvent ev);