private void AsteroidForm_Load(object sender, EventArgs e) { //force fullscreen //WindowState = FormWindowState.Maximized; //create game control instance VGInput = new GameInput.Input(); //create key up and down events this.KeyUp += VGInput.XboxGame_KeyUp; this.KeyDown += VGInput.XboxGame_KeyDown; //create death sound engine death = new ISoundEngine(); //call method to initialize game variables and lists ResetGameWorld(); }
public static bool Prefix(bool useKeyboard, bool useController) { XRInputManager xrInput = GetXRInputManager(); if (!xrInput.hasControllers()) { return(true); } float unscaledTime = Time.unscaledTime; for (int i = 0; i < GameInput.inputs.Count; i++) { GameInput.InputState inputState = default; GameInput.InputState prevInputState = GameInput.inputStates[i]; inputState.timeDown = prevInputState.timeDown; bool wasHeld = (prevInputState.flags & GameInput.InputStateFlags.Held) > 0U; GameInput.Input currentInput = GameInput.inputs[i]; GameInput.Device device = currentInput.device; KeyCode key = currentInput.keyCode; if (key != KeyCode.None) { bool pressed = xrInput.GetXRInput(key); GameInput.InputStateFlags prevState = GameInput.inputStates[i].flags; if (pressed && (prevState == GameInput.InputStateFlags.Held && prevState == GameInput.InputStateFlags.Down)) { inputState.flags |= GameInput.InputStateFlags.Held; } if (pressed && prevState == GameInput.InputStateFlags.Up) { inputState.flags |= GameInput.InputStateFlags.Down; } if (!pressed) { inputState.flags |= GameInput.InputStateFlags.Up; } if (inputState.flags != 0U && !PlatformUtils.isConsolePlatform && (GameInput.controllerEnabled || device != GameInput.Device.Controller)) { GameInput.lastDevice = device; } } else { float axisValue = GameInput.axisValues[(int)currentInput.axis]; bool isPressed; if (GameInput.inputs[i].axisPositive) { isPressed = (axisValue > currentInput.axisDeadZone); } else { isPressed = (axisValue < -currentInput.axisDeadZone); } if (isPressed) { inputState.flags |= GameInput.InputStateFlags.Held; } if (isPressed && !wasHeld) { inputState.flags |= GameInput.InputStateFlags.Down; } if (!isPressed && wasHeld) { inputState.flags |= GameInput.InputStateFlags.Up; } } if ((inputState.flags & GameInput.InputStateFlags.Down) != 0U) { int lastIndex = GameInput.lastInputPressed[(int)device]; int newIndex = i; inputState.timeDown = unscaledTime; if (lastIndex > -1) { GameInput.Input lastInput = GameInput.inputs[lastIndex]; bool isSameTime = inputState.timeDown == GameInput.inputStates[lastIndex].timeDown; bool lastAxisIsGreater = Mathf.Abs(GameInput.axisValues[(int)lastInput.axis]) > Mathf.Abs(GameInput.axisValues[(int)currentInput.axis]); if (isSameTime && lastAxisIsGreater) { newIndex = lastIndex; } } GameInput.lastInputPressed[(int)device] = newIndex; } if ((device == GameInput.Device.Controller && !useController) || (device == GameInput.Device.Keyboard && !useKeyboard)) { inputState.flags = 0U; if (wasHeld) { inputState.flags |= GameInput.InputStateFlags.Up; } } GameInput.inputStates[i] = inputState; } return(false); }