Example #1
0
        /// <summary>
        /// Creates a device baed on description.
        /// </summary>
        /// <param name="desc"></param>
        /// <returns></returns>
        public InputDevice CreateDevice(InputDeviceDescriptor desc)
        {
            lock (syncRoot)
            {
                AssertInitialized();

                InputDevice.DeviceBucket bucket;
                // We first search in cache.
                if (inputDevices.TryGetValue(desc, out bucket))
                {
                    lock (bucket)
                    {
                        if (bucket.UseCount > 0)
                        {
                            bucket.UseCount++;
                            return(new InputDevice(this, bucket, desc));
                        }
                    }
                }

                // Otherwise, we create it.
                bucket        = new InputDevice.DeviceBucket();
                bucket.Device = inputService.Create(desc);

                inputDevices[desc] = bucket;

                return(new InputDevice(this, bucket, desc));
            }
        }
Example #2
0
        internal InputDevice(InputService service,
                             DeviceBucket bucket, InputDeviceDescriptor desc)
        {
            this.service = service;
            this.bucket  = bucket;
            this.desc    = desc;

            this.buttonStates = new bool[desc.ButtonCount];
            this.axisStates   = new long[desc.AxisCount];
        }