public void PostUpdate(ulong updateTick, float deltaTime) { // Apply post-processing to controls. foreach (InputControl control in Controls.IgnoreNulls()) { if (control.RawValue != null) { control.UpdateWithValue(control.RawValue.Value, updateTick); } else if (control.PreValue != null) { control.UpdateWithValue(ProcessAnalogControlValue(control, deltaTime), updateTick); } control.PostUpdate(updateTick); if (control.HasChanged) { LastChangeTick = updateTick; } } // Update two-axis controls. LeftStick.Update(LeftStickX, LeftStickY, updateTick); RightStick.Update(RightStickX, RightStickY, updateTick); Vector2 dpv = DPadVector; DPad.Update(dpv.x, dpv.y, updateTick); }
public void Update(float delta) { if (!controllerInitted) { return; } RightStick.Update(); LeftStick.Update(); }
public void Update(float delta) { GameController.Update(delta); PcController.Update(delta); PcAltController.Update(delta); RightStick.Update(); LeftStick.Update(); //Updating Dpad to use it's joystick emulator _actionDPad.Update(delta); //Updating KeyboardOnlyDpad to use it's joystick emulator _keyboardDPad.Update(delta); UpdateSticks(); }
public void PostUpdate(ulong updateTick, float deltaTime) { // Apply post-processing to controls. int controlCount = Controls.GetLength(0); for (int i = 0; i < controlCount; i++) { var control = Controls[i]; if (control != null) { if (control.RawValue.HasValue) { control.UpdateWithValue(control.RawValue.Value, updateTick); } else if (control.PreValue.HasValue) { control.UpdateWithValue(ProcessAnalogControlValue(control, deltaTime), updateTick); } control.PostUpdate(updateTick); if (control.HasChanged) { LastChangeTick = updateTick; } } } // Update two-axis controls. LeftStick.Update(LeftStickX, LeftStickY, updateTick); RightStick.Update(RightStickX, RightStickY, updateTick); var dpv = DPadVector; DPad.Update(dpv.x, dpv.y, updateTick); }
public void Update(GameTime gameTime) { var dt = (float)gameTime.ElapsedGameTime.TotalMilliseconds; totalTime += dt; var state = TouchPanel.GetState(); TouchLocation?leftTouch = null, rightTouch = null; if (tapStartCount > state.Count) { tapStartCount = state.Count; } foreach (TouchLocation loc in state) { if (loc.State == TouchLocationState.Released) { int tapStartId = -1; for (int i = 0; i < tapStartCount; ++i) { if (tapStarts[i].Id == loc.Id) { tapStartId = i; break; } } if (tapStartId >= 0) { for (int i = tapStartId; i < tapStartCount - 1; ++i) { tapStarts[i] = tapStarts[i + 1]; } tapStartCount--; } continue; } else if (loc.State == TouchLocationState.Pressed && tapStartCount < tapStarts.Length) { tapStarts[tapStartCount] = new TapStart(loc.Id, totalTime, loc.Position); tapStartCount++; } if (LeftStick.touchLocation.HasValue && loc.Id == LeftStick.touchLocation.Value.Id) { leftTouch = loc; continue; } if (RightStick.touchLocation.HasValue && loc.Id == RightStick.touchLocation.Value.Id) { rightTouch = loc; continue; } if (!loc.TryGetPreviousLocation(out TouchLocation locPrev)) { locPrev = loc; } if (!LeftStick.touchLocation.HasValue) { if (LeftStick.StartRegion.Contains((int)locPrev.Position.X, (int)locPrev.Position.Y)) { if (LeftStick.Style == TouchStickStyle.Fixed) { if (Vector2.Distance(locPrev.Position, LeftStick.StartLocation) < aliveZoneSize) { leftTouch = locPrev; } } else { leftTouch = locPrev; LeftStick.StartLocation = leftTouch.Value.Position; if (LeftStick.StartLocation.X < LeftStick.StartRegion.Left + edgeSpacing) { LeftStick.StartLocation.X = LeftStick.StartRegion.Left + edgeSpacing; } if (LeftStick.StartLocation.Y > LeftStick.StartRegion.Bottom - edgeSpacing) { LeftStick.StartLocation.Y = LeftStick.StartRegion.Bottom - edgeSpacing; } } continue; } } if (!RightStick.touchLocation.HasValue && locPrev.Id != RightStick.lastExcludedRightTouchId) { if (RightStick.StartRegion.Contains((int)locPrev.Position.X, (int)locPrev.Position.Y)) { bool excluded = false; foreach (Rectangle r in RightStick.startExcludeRegions) { if (r.Contains((int)locPrev.Position.X, (int)locPrev.Position.Y)) { excluded = true; RightStick.lastExcludedRightTouchId = locPrev.Id; continue; } } if (excluded) { continue; } RightStick.lastExcludedRightTouchId = -1; if (RightStick.Style == TouchStickStyle.Fixed) { if (Vector2.Distance(locPrev.Position, RightStick.StartLocation) < aliveZoneSize) { rightTouch = locPrev; } } else { rightTouch = locPrev; RightStick.StartLocation = rightTouch.Value.Position; if (RightStick.StartLocation.X > RightStick.StartRegion.Right - edgeSpacing) { RightStick.StartLocation.X = RightStick.StartRegion.Right - edgeSpacing; } if (RightStick.StartLocation.Y > RightStick.StartRegion.Bottom - edgeSpacing) { RightStick.StartLocation.Y = RightStick.StartRegion.Bottom - edgeSpacing; } } continue; } } } LeftStick.Update(state, leftTouch, dt); RightStick.Update(state, rightTouch, dt); }