Ejemplo n.º 1
0
 public void SetLeftTriggerState(DualSenseTriggerState state)
 {
     flags1 |= Flags1.LeftTrigger;
     fixed(byte *p = leftTriggerParams)
     {
         SetTriggerState(state, ref leftTriggerMode, p);
     }
 }
Ejemplo n.º 2
0
 public void SetRightTriggerState(DualSenseTriggerState state)
 {
     flags1 |= Flags1.RightTrigger;
     fixed(byte *p = rightTriggerParams)
     {
         SetTriggerState(state, ref rightTriggerMode, p);
     }
 }
Ejemplo n.º 3
0
        private void SetTriggerState(DualSenseTriggerState state, ref byte triggerMode, byte *triggerParams)
        {
            switch (state.EffectType)
            {
            case DualSenseTriggerEffectType.NoResistance:
                triggerMode = 0x00;
                ClearTriggerParams(triggerParams);
                break;

            case DualSenseTriggerEffectType.ContinuousResistance:
                triggerMode = 0x01;
                ClearTriggerParams(triggerParams);
                triggerParams[0] = state.Continuous.StartPosition;
                triggerParams[1] = state.Continuous.Force;
                break;

            case DualSenseTriggerEffectType.SectionResistance:
                triggerMode = 0x02;
                ClearTriggerParams(triggerParams);
                triggerParams[0] = state.Section.StartPosition;
                triggerParams[1] = state.Section.EndPosition;
                triggerParams[2] = state.Section.Force;
                break;

            case DualSenseTriggerEffectType.EffectEx:
                triggerMode = 0x26;
                ClearTriggerParams(triggerParams);
                triggerParams[0] = (byte)(0xff - state.EffectEx.StartPosition);
                triggerParams[1] = (byte)(state.EffectEx.KeepEffect ? 0x02 : 0x00);
                triggerParams[3] = state.EffectEx.BeginForce;
                triggerParams[4] = state.EffectEx.MiddleForce;
                triggerParams[5] = state.EffectEx.EndForce;
                triggerParams[8] = state.EffectEx.Frequency;
                break;

            case DualSenseTriggerEffectType.Calibrate:
                triggerMode = 0xFC;
                ClearTriggerParams(triggerParams);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }