public override bool Equals(object obj) { if ((obj == null) || (!(obj is XInputState))) { return(false); } XInputState source = (XInputState)obj; return((PacketNumber == source.PacketNumber) && (Gamepad.Equals(source.Gamepad))); }
public static extern int XInputGetState ( int dwUserIndex, // [in] Index of the gamer associated with the device ref XInputState pState // [out] Receives the current state );
public void Copy(XInputState source) { PacketNumber = source.PacketNumber; Gamepad.Copy(source.Gamepad); }
private void DiffUpdateTick(float dt) { XInputState controllerState = new XInputState(); XInputGetState(0, ref controllerState); TwoPointIncreaseTriggerBonus = Math.Min(MaxTwoPointIncreaseTriggerBonus, TwoPointIncreaseTriggerBonus + dt * TwoPointIncreaseTriggerBonusFillSpeed); TwoPointDecreaseTriggerBonus = Math.Max(MaxTwoPointDecreaseTriggerBonus, TwoPointDecreaseTriggerBonus - dt * TwoPointDecreaseTriggerBonusFillSpeed); float speed = TwoPointNeutralSpeed; if (controllerState.Gamepad.bRightTrigger > 100) { if (!bRightTriggered) { CurrentTwoPointScore += TwoPointIncreaseTriggerBonus; TwoPointIncreaseTriggerBonus = 0f; } bRightTriggered = true; speed = TwoPointIncreaseSpeed; DisplayDiffScore = "Good"; } else { bRightTriggered = false; } if (controllerState.Gamepad.bLeftTrigger > 100) { if (!bLeftTriggered) { CurrentTwoPointScore += TwoPointDecreaseTriggerBonus; TwoPointDecreaseTriggerBonus = 0f; } bLeftTriggered = true; speed = TwoPointDecreaseSpeed; DisplayDiffScore = "Bad"; } else { bLeftTriggered = false; } if ((!bLeftTriggered && !bRightTriggered)) { DisplayDiffScore = "Neutral"; } else if (bLeftTriggered && bRightTriggered) { DisplayDiffScore = "Both"; } CurrentTwoPointScore = Math.Max(0f, CurrentTwoPointScore + speed * dt); DiffNetData dnd = new DiffNetData(TwoPointJudgeId, CurrentTwoPointScore, SecondsSinceRoutineStart); if (bIsClientConnected) { if (bRoutineRecording) { CurrentDiffScoreInterval += dt; if (CurrentDiffScoreInterval > SendDiffScoreInterval) { CurrentDiffScoreInterval = 0f; Dispatcher.BeginInvoke(DispatcherPriority.Background, new System.Threading.ThreadStart(() => { SendToServerNetData("DiffResult", dnd); })); CurrentTwoPointBackupList.Add(dnd); TwoPointFinishRoutine(); } } } }