private void StickStateUpdater(StickState state) { stickStateControl.HeightAxis = state.Height; stickStateControl.YawAxis = state.Yaw; stickStateControl.RollAxis = state.Roll; stickStateControl.PitchAxis = state.Pitch; if (_remoteControl) { if (_keyBoardEnabled) { var roll = _roll; var pitch = _pitch; var yaw = _yaw; var h = _height; _tello.SendRcCommand(roll, pitch, h, yaw); } else { var roll = Normalize(state.Roll, rollDead.Value); var pitch = -Normalize(state.Pitch, pitchDead.Value); var h = -Normalize(state.Height, heightDead.Value); var yaw = Normalize(state.Yaw, yawDead.Value); _tello.SendRcCommand(roll, pitch, h, yaw); } } MethodInvoker dele = delegate() { stickStateControl.Invalidate(); }; Invoke(dele); }
public ControllerStickBinding(ControllerStick leftOrRight, Vector2 v, StickState newS, StickState oldS = StickState.Any) { side = leftOrRight; position = v; newState = newS; oldState = oldS; }
internal void ThreadButtonState() { int LastSearchTime = Config.ButtonStateUpdateInterval; while (true) { if (Form.NTRConnection.HardwarePID != null) { SearchCriteria Criteria = new SearchCriteria(); Criteria.ProcessID = BitConverter.ToUInt32(Utilities.GetByteArrayFromByteString(Form.NTRConnection.HardwarePID), 0); Criteria.DataType = DataTypeExact.Bytes1; Criteria.StartAddress = BUTTON_STATES_START; Criteria.Length = BUTTON_STATES_SIZE; Criteria.SearchType = SearchTypeBase.Unknown; Criteria.SearchValue = new byte[] { 0 }; Criteria.Size = 1; Criteria.HideSearch = true; Form.NTRConnection.SearchCriteria.Add(Criteria); Form.NTRConnection.SendReadMemoryPacket(Criteria); ButtonState = (ButtonState)Criteria.AddressesFound[BUTTON_STATES_START + Offset_Button][0]; ShoulderState = (ShoulderState)Criteria.AddressesFound[BUTTON_STATES_START + Offset_Shoulder][0]; StickState = (StickState)Criteria.AddressesFound[BUTTON_STATES_START + Offset_Stick][0]; StickHoriz = Criteria.AddressesFound[BUTTON_STATES_START + Offset_Horiz][0]; StickVert = Criteria.AddressesFound[BUTTON_STATES_START + Offset_Vert][0]; LastSearchTime = Math.Max(LastSearchTime, (int)Criteria.Duration); Form.NTRConnection.SetCurrentOperationText2 = ButtonState.ToString() + "|" + ShoulderState.ToString() + "|" + StickState.ToString() + "|" + StickHoriz + "|" + StickVert + "|" + LastSearchTime; } Thread.Sleep(LastSearchTime * 2); } }
void Init() { Instance = this; m_orignalPos = transform.localPosition; m_point = transform.Find("stick"); VirtualStickState = StickState.InActiveState; }
private void StickUpdater_Tick(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); foreach (var stick in Joystick.GetDevices()) { sb.AppendLine("Stick " + stick.Name); List <double> axes = stick.GetAxisStates(); for (int i = 0; i < stick.Axes.Count; i++) { sb.AppendLine(stick.Axes[i] + " axis = " + axes[i].ToString()); } List <bool> button = stick.GetButtonStates(); for (int i = 0; i < stick.Buttons.Count; i++) { sb.AppendLine(stick.Buttons[i] + " = " + button[i].ToString()); } } sb.AppendLine(DateTime.Now.ToLongTimeString()); StickState.BeginInvoke(new Action(() => StickState.Text = sb.ToString())); }
/* UI事件响应 */ void OnStickDrag(GameObject gameObject, PointerEventData eventData) { Vector2 touchPos = eventData.position; SetStickPos(touchPos); mStickState = StickState.Move; SendStickMove(); }
/// <summary> /// 显示遥杆 /// </summary> void ShowStick() { if (m_canUse == false) { return; } Vector2 touchPos = UICamera.currentTouch.pos; SetPointPos(touchPos); VirtualStickState = StickState.MoveState; }
public void InputStick(Stick hatSwitch, StickState hatStateX, StickState hatStateY) { if (!Available()) { return; } var stream = client.GetStream(); byte[] data = new byte[3]; data[0] = (byte)(0x80 | ((byte)hatSwitch << 4)); data[1] = (byte)hatStateX; data[2] = (byte)hatStateY; stream.Write(data, 0, data.Length); }
protected override void OnLoad() { RectTransform transform = Root.gameObject.GetComponent <RectTransform>(); transform.offsetMin = new Vector2(0.0f, 0.0f); // left bottom transform.offsetMax = new Vector2(0.0f, 0.0f); // right top mJoystickTransform = Root.Find("Joystick").GetComponent <RectTransform>(); mStickTransform = Root.Find("Joystick/Stick").GetComponent <RectTransform>(); mStickPointTransform = Root.Find("Joystick/Point").GetComponent <RectTransform>(); mOrigionJoystickPosition = mJoystickTransform.localPosition; mStickState = StickState.InActive; EventListener.Get(mJoystickTransform.gameObject).onDrag += OnStickDrag; EventListener.Get(mJoystickTransform.gameObject).onEndDrag += onStickEndDrag; }
private void Worker(object para) { var setter = (Action <StickState>)para; var di = new DirectInput(); var devices = di.GetDevices(DeviceClass.GameControl, DeviceEnumerationFlags.AllDevices); Joystick joystick = null; if (devices.Any()) { joystick = new Joystick(di, devices.First().InstanceGuid); joystick.Acquire(); } try { while (true) { Thread.Sleep(1000 / SamplingRate); StickState localState; if (joystick != null) { var state = joystick.GetCurrentState(); localState = new StickState { Yaw = state.RotationZ / (float)ushort.MaxValue, Pitch = state.Y / (float)ushort.MaxValue, Roll = state.X / (float)ushort.MaxValue, Height = state.Sliders[0] / (float)ushort.MaxValue }; } else { localState = new StickState { Yaw = 0.5f, Pitch = 0.5f, Height = 0.5f, Roll = 0.5f }; } setter(localState); } } catch (ThreadAbortException) { return; } }
void onStickEndDrag(GameObject gameObject, PointerEventData eventDat) { mStickTransform.anchoredPosition = mStickPointTransform.anchoredPosition; if (mStickState == StickState.Move) { MessageCenter.Instance.AskStopMove(); } SelfPlayer player = PlayerManager.Instance.LocalPlayer; if (player != null && player.FSM != null) // && player.FSM.State == EFSMState.ADMOVE { player.OnFSMStateChange(EntityFreeFSM.Instance); } mStickState = StickState.InActive; }
private void OnDisable() { VirtualStickState = StickState.InActiveState; }
private void AddStickKeyBinding(ControllerStick stick, Microsoft.Xna.Framework.Vector2 comparisonVector, StickState comparisonState, StickState oldComparisonState, System.Windows.Forms.Keys key, CommandTarget commandTarget, InputMode inputMode) { bindings.AddRange(ControllerInputBinding.createStickKeyBinding(stick, comparisonVector, comparisonState, oldComparisonState, key, inputMode, commandTarget)); }
private void AddStickCursorMoveBinding(ControllerStick stick, Microsoft.Xna.Framework.Vector2 comparisonVector, StickState comparisonState, StickState oldComparisonState, MouseMoveType moveType, UIntVector moveScale, CommandTarget commandTarget, InputMode bindingMode = InputMode.All) { bindings.Add(ControllerInputBinding.createStickCursorMoveBinding(stick, comparisonVector, comparisonState, oldComparisonState, moveType, moveScale, commandTarget, bindingMode)); }
internal static ControllerInputBinding createStickCursorMoveBinding(ControllerStick stick, Microsoft.Xna.Framework.Vector2 comparisonVector, StickState comparisonState, StickState oldState, MouseMoveType moveType, Types.UIntVector moveScale, CommandTarget commandTarget, InputMode applicableMode) { ControllerInputBinding newBinding = new ControllerInputBinding(); newBinding.stick = new ControllerStickBinding(stick, comparisonVector, comparisonState, oldState); CursorMoveCommand newCommand = new CursorMoveCommand(); newCommand.mouseMove = new MouseMove(); newCommand.mouseMove.commandTarget = commandTarget; newCommand.mouseMove.moveType = moveType; newCommand.mouseMove.moveScale = moveScale; newCommand.applicableMode = applicableMode; newBinding.commands.Add(newCommand); //bindings.Add(newBinding); return(newBinding); }
internal static ControllerInputBinding[] createStickKeyBinding(ControllerStick stick, Microsoft.Xna.Framework.Vector2 comparisonVector, StickState comparisonState, StickState oldState, System.Windows.Forms.Keys key, InputMode applicableMode = InputMode.All, CommandTarget target = CommandTarget.None) { ControllerInputBinding downResult = new ControllerInputBinding(); downResult.stick = new ControllerStickBinding(stick, comparisonVector, comparisonState, oldState); KeyboardCommand newCommand = new KeyboardCommand(); newCommand.key = key; newCommand.commandState = ButtonState.Down; newCommand.applicableMode = applicableMode; newCommand.target = target; downResult.commands.Add(newCommand); ControllerInputBinding upResult = new ControllerInputBinding(); upResult = new ControllerInputBinding(); upResult.stick = new ControllerStickBinding(stick, comparisonVector, comparisonState, oldState); newCommand = new KeyboardCommand(); newCommand.key = key; newCommand.commandState = ButtonState.Up; newCommand.applicableMode = applicableMode; newCommand.target = target; upResult.commands.Add(newCommand); return(new ControllerInputBinding[2] { downResult, upResult }); }