예제 #1
0
        public OpenVREvents(bool lazyLoadEvents = false)
        {
            if (OpenVRHelpers.IsUsingSteamVRInput())
            {
                enabled = false; //let the steamvr plugin handle events
                return;
            }

            instance = this;
            events   = new OpenVREvent[(int)EVREventType.VREvent_VendorSpecific_Reserved_End];

            vrEvent     = new VREvent_t();
            vrEventSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(VREvent_t));

            if (lazyLoadEvents == false)
            {
                for (int eventIndex = 0; eventIndex < events.Length; eventIndex++)
                {
                    events[eventIndex] = new OpenVREvent();
                }
            }
            else
            {
                preloadedEvents = true;
            }

            RegisterDefaultEvents();
        }
예제 #2
0
            private void PollEvents(object stateIgnored)
            {
                VREvent_t vrEvent = new VREvent_t();

                while (hmd.PollNextEvent(ref vrEvent, (uint)Marshal.SizeOf <VREvent_t>()))
                {
                    OpenVREvent?.Invoke(this, new OpenVREventArgs(vrEvent));
                }
            }
예제 #3
0
        public void Add(API.EVREventType eventType, UnityAction <API.VREvent_t> action, bool removeOtherListeners = false)
        {
            int eventIndex = (int)eventType;

            if (preloadedEvents == false && events[eventIndex] == null)
            {
                events[eventIndex] = new OpenVREvent();
            }

            if (removeOtherListeners)
            {
                events[eventIndex].RemoveAllListeners();
            }

            events[eventIndex].AddListener(action);
        }
예제 #4
0
        public OpenVREvents(bool lazyLoadEvents = false)
        {
            instance = this;
            events   = new OpenVREvent[(int)API.EVREventType.VREvent_VendorSpecific_Reserved_End];

            vrEvent     = new API.VREvent_t();
            vrEventSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(API.VREvent_t));

            if (lazyLoadEvents == false)
            {
                for (int eventIndex = 0; eventIndex < events.Length; eventIndex++)
                {
                    events[eventIndex] = new OpenVREvent();
                }
            }
            else
            {
                preloadedEvents = true;
            }

            RegisterDefaultEvents();
        }
예제 #5
0
        public void Add(EVREventType eventType, UnityAction <VREvent_t> action, bool removeOtherListeners = false)
        {
            if (!enabled)
            {
                Debug.LogError("[OpenVR XR Plugin] This events class is currently not enabled, please use SteamVR_Events instead.");
                return;
            }

            int eventIndex = (int)eventType;

            if (preloadedEvents == false && events[eventIndex] == null)
            {
                events[eventIndex] = new OpenVREvent();
            }

            if (removeOtherListeners)
            {
                events[eventIndex].RemoveAllListeners();
            }

            events[eventIndex].AddListener(action);
        }