Exemplo n.º 1
0
 void InitControlNames()
 {
     // We can't do this in OnEnable since the device has not
     // been assigned yet there when the window is first opened.
     m_ControlIndexStrings = new List <string>(m_Device.controlCount);
     for (int i = 0; i < m_Device.controlCount; i++)
     {
         var control = m_Device.GetControl(i);
         m_ControlIndexStrings.Add(control.index.ToString());
     }
 }
        public void Process(InputDevice inputDevice)
        {
            OutputControl <float> lfMotorControl = inputDevice.GetControl(m_LowFrequencyMotorIndex) as OutputControl <float>;
            OutputControl <float> hfMotorControl = inputDevice.GetControl(m_HighFrequencyMotorIndex) as OutputControl <float>;
            OutputControl <float> ltMotorControl = inputDevice.GetControl(m_LeftTriggerMotorIndex) as OutputControl <float>;
            OutputControl <float> rtMotorControl = inputDevice.GetControl(m_RightTriggerMotorIndex) as OutputControl <float>;

            if ((lfMotorControl != null && lfMotorControl.changedValue) ||
                (hfMotorControl != null && hfMotorControl.changedValue) ||
                (ltMotorControl != null && ltMotorControl.changedValue) ||
                (rtMotorControl != null && rtMotorControl.changedValue))
            {
                float lfMotorSpeed = lfMotorControl != null ? lfMotorControl.value : 0f;
                float hfMotorSpeed = hfMotorControl != null ? hfMotorControl.value : 0f;
                float ltMotorSpeed = ltMotorControl != null ? ltMotorControl.value : 0f;
                float rtMotorSpeed = rtMotorControl != null ? rtMotorControl.value : 0f;

                BinaryWriter writer = new BinaryWriter(outputStream);
                {
                    writer.Write((int)0); // Report Id

                    HidOutputHelpers.WriteOutputHeader(writer, 0x97, 0xF, 1, 1);
                    byte motorsEnabled = (byte)(((ltMotorSpeed != 0f) ? 1 : 0) |
                                                (((rtMotorSpeed != 0f) ? 1 : 0) << 1) |
                                                (((lfMotorSpeed != 0f) ? 1 : 0) << 2) |
                                                (((hfMotorSpeed != 0f) ? 1 : 0) << 3));
                    writer.Write(motorsEnabled);

                    const int kMaxMotorSpeed = 100;

                    HidOutputHelpers.WriteOutputHeader(writer, 0x70, 0xF, 4, 1);
                    writer.Write(GetScaledAndClampedMotorSpeed(ltMotorSpeed, kMaxMotorSpeed));
                    writer.Write(GetScaledAndClampedMotorSpeed(rtMotorSpeed, kMaxMotorSpeed));
                    writer.Write(GetScaledAndClampedMotorSpeed(lfMotorSpeed, kMaxMotorSpeed));
                    writer.Write(GetScaledAndClampedMotorSpeed(hfMotorSpeed, kMaxMotorSpeed));

                    HidOutputHelpers.WriteOutputHeader(writer, 0x50, 0xF, 1, 1);
                    writer.Write((byte)255);

                    HidOutputHelpers.WriteOutputHeader(writer, 0xA7, 0xF, 1, 1);
                    writer.Write((byte)0);
                }

                //var buffer = outputStream.GetBuffer();
                //NativeInputSystem.SendOutput(inputDevice.nativeId, buffer, (int)outputStream.Position);
                outputStream.Position = 0;
            }
        }
Exemplo n.º 3
0
            public void Process(InputDevice inputDevice)
            {
                var rumble = inputDevice.GetControl(m_RumbleIndex) as OutputControl <float>;

                if (rumble != null)
                {
                    m_Writer.Write((int)SendEventHeaderID.EnqueueRumble); // header
                    m_Writer.Write(rumble.value);                         // intensity
                    m_Writer.Write((int)0);                               // channel
                }

                //var buffer = m_OutputStream.GetBuffer();
                //NativeInputSystem.SendOutput(inputDevice.nativeId, buffer, (int)m_OutputStream.Position);
                m_OutputStream.Position = 0;
            }