public static bool HasAnyFlag(this DeviceObjectId objectId, DeviceObjectTypeFlags flags)
 {
     return(((int)objectId.Flags & (int)flags) != 0);
 }
Esempio n. 2
0
        /// <summary>
        /// Initializes a joystick device using the specified global unique identifier.
        /// </summary>
        /// <param name="handle">A pointer to the application's master form.</param>
        /// <param name="g">The GUID of the device to initialize.</param>
        public static void DInputInit(IntPtr handle, Guid g)
        {
            if (JSDevice != null)
            {
                JSDevice.Unacquire();
                JSDevice = null;
            }

            JSDevice = new Joystick(input, g);
            int xAxisOffset = 0, yAxisOffset = 0;
            int nextOffset = 0;

            //            JSDevice.Properties.AutoCenter = true;
            foreach (DeviceObjectInstance d in JSDevice.GetObjects())
            {
                if ((d.ObjectId.Flags & DeviceObjectTypeFlags.ForceFeedbackActuator) == DeviceObjectTypeFlags.ForceFeedbackActuator)
                {
                    if (nextOffset == 0)
                    {
                        xAxisOffset = d.Offset;
                    }
                    else
                    {
                        yAxisOffset = d.Offset;
                    }
                    nextOffset++;
                }
                if (d.ObjectType == ObjectGuid.XAxis)
                {
                    JSDevice.GetObjectPropertiesById(
                        d.ObjectId).Range = new InputRange(-5, 5);
                    JSDevice.GetObjectPropertiesById(
                        d.ObjectId).DeadZone = 1000;
                }
                if (d.ObjectType == ObjectGuid.YAxis)
                {
                    JSDevice.GetObjectPropertiesById(d.ObjectId).Range = new InputRange(-9, 9);
                    JSDevice.GetObjectPropertiesById(
                        d.ObjectId).DeadZone = 1000;
                }
                if (d.ObjectType == ObjectGuid.Slider)
                {
                    JSDevice.GetObjectPropertiesById(
                        d.ObjectId).Range = new InputRange(0, 11);
                    JSSliderId            = d.ObjectId;
                    useSlider             = true;
                }
                if (d.ObjectType == ObjectGuid.ZAxis)
                {
                    JSDevice.GetObjectPropertiesById(
                        d.ObjectId).Range = new InputRange(0, 11);
                    jsZId = d.ObjectId;
                    useZ  = true;
                }
                if (d.ObjectType == ObjectGuid.RzAxis)
                {
                    JSDevice.GetObjectPropertiesById(
                        d.ObjectId).Range = new InputRange(-5, 5);
                }
            }             //for
            if (useSlider && useZ)
            {
                useSlider = false;
            }
            JSDevice.SetCooperativeLevel(handle,
                                         CooperativeLevel.Background | CooperativeLevel.Exclusive);
            JSDevice.Acquire();
            updateJSState();
            TheJSButtons = JSState.Buttons;
            if (nextOffset > 0)
            {
                if (!dInputInitFD(JSDevice, xAxisOffset,
                                  yAxisOffset, nextOffset))
                {
                    OggBuffer error = DSound.loadOgg(DSound.SoundPath + "\\ffbd.ogg");
                    error.play();
                    while (error.isPlaying())
                    {
                        Thread.Sleep(10);
                    }
                    error.stopOgg();
                    error = null;
                    forceFeedbackEnabled = false;
                }
                else
                {
                    forceFeedbackEnabled = true;
                }
            }
        }
 public static bool HasFlags(this DeviceObjectId objectId, DeviceObjectTypeFlags flags)
 {
     return(((int)objectId.Flags & (int)flags) == (int)flags);
 }
Esempio n. 4
0
        /// <summary>
        /// Initializes a joystick device using the specified global unique identifier.
        /// </summary>
        /// <param name="handle">A pointer to the application's master form.</param>
        /// <param name="g">The GUID of the device to initialize.</param>
        public static ForceFeedbackStatus DInputInit(IntPtr handle, Guid g)
        {
            if (JSDevice != null)
            {
                JSDevice.Unacquire();
                JSDevice = null;
            }

            JSDevice = new Joystick(input, g);
            int xAxisOffset = 0, yAxisOffset = 0;
            int nextOffset = 0;

            //            JSDevice.Properties.AutoCenter = true;
            foreach (DeviceObjectInstance d in JSDevice.GetObjects())
            {
                if ((d.ObjectId.Flags & DeviceObjectTypeFlags.ForceFeedbackActuator) == DeviceObjectTypeFlags.ForceFeedbackActuator)
                {
                    if (nextOffset == 0)
                    {
                        xAxisOffset = d.Offset;
                    }
                    else
                    {
                        yAxisOffset = d.Offset;
                    }
                    nextOffset++;
                }
                if (d.ObjectType == ObjectGuid.XAxis)
                {
                    JSDevice.GetObjectPropertiesById(
                        d.ObjectId).Range = new InputRange(-5, 5);
                    JSDevice.GetObjectPropertiesById(
                        d.ObjectId).DeadZone = 1000;
                }
                if (d.ObjectType == ObjectGuid.YAxis)
                {
                    JSDevice.GetObjectPropertiesById(d.ObjectId).Range = new InputRange(-9, 9);
                    JSDevice.GetObjectPropertiesById(
                        d.ObjectId).DeadZone = 1000;
                }
                if (d.ObjectType == ObjectGuid.Slider)
                {
                    JSDevice.GetObjectPropertiesById(
                        d.ObjectId).Range = new InputRange(0, 11);
                    JSSliderId            = d.ObjectId;
                    useSlider             = true;
                }
                if (d.ObjectType == ObjectGuid.ZAxis)
                {
                    JSDevice.GetObjectPropertiesById(
                        d.ObjectId).Range = new InputRange(0, 11);
                    jsZId = d.ObjectId;
                    useZ  = true;
                }
                if (d.ObjectType == ObjectGuid.RzAxis)
                {
                    JSDevice.GetObjectPropertiesById(
                        d.ObjectId).Range = new InputRange(-5, 5);
                }
            }             //for
            if (useSlider && useZ)
            {
                useSlider = false;
            }
            JSDevice.SetCooperativeLevel(handle,
                                         CooperativeLevel.Background | CooperativeLevel.Exclusive);
            JSDevice.Acquire();
            updateJSState();
            TheJSButtons = JSState.Buttons;
            if (nextOffset > 0)
            {
                if (!dInputInitFD(JSDevice, xAxisOffset, yAxisOffset, nextOffset))
                {
                    forceFeedbackEnabled = false;
                    return(ForceFeedbackStatus.couldNotInitialize);
                }
                else
                {
                    forceFeedbackEnabled = true;
                    return(ForceFeedbackStatus.initialized);
                }
            }
            return(ForceFeedbackStatus.noForceFeedback);
        }