Exemple #1
0
        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;
            }
        }
Exemple #2
0
        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);
                }
            }
        }
Exemple #3
0
 private static extern int spnav_wait_event_timeout(ref SpNavEvent ev, int timeout);
Exemple #4
0
 private static extern int spnav_wait_event(ref SpNavEvent ev);