Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 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);
            }
        }
        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);
            }
        }
Ejemplo n.º 5
0
 void Init()
 {
     Instance          = this;
     m_orignalPos      = transform.localPosition;
     m_point           = transform.Find("stick");
     VirtualStickState = StickState.InActiveState;
 }
Ejemplo n.º 6
0
        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()));
        }
Ejemplo n.º 7
0
        /* UI事件响应 */

        void OnStickDrag(GameObject gameObject, PointerEventData eventData)
        {
            Vector2 touchPos = eventData.position;

            SetStickPos(touchPos);
            mStickState = StickState.Move;
            SendStickMove();
        }
Ejemplo n.º 8
0
    /// <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);
        }
Ejemplo n.º 10
0
        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;
        }
Ejemplo n.º 11
0
        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;
            }
        }
Ejemplo n.º 12
0
        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;
        }
Ejemplo n.º 13
0
 private void OnDisable()
 {
     VirtualStickState = StickState.InActiveState;
 }
Ejemplo n.º 14
0
 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));
 }
Ejemplo n.º 15
0
 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));
 }
Ejemplo n.º 16
0
        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);
        }
Ejemplo n.º 17
0
        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
            });
        }