예제 #1
0
                internal override void Setup()
                {
                    if (BoundDevice == null)
                    {
                        return;
                    }

                    if (BoundInput == BoundInputTypes.Button)
                    {
                        Joystick stick = BoundDevice as Joystick;
                        if (stick == null)
                        {
                            return;
                        }

                        foreach (var button in stick.Buttons)
                        {
                            if (button.Name.ToLowerInvariant() == BoundInputName.ToLowerInvariant())
                            {
                                ActualControl = button;
                                break;
                            }
                        }
                    }
                    else if (BoundInput == BoundInputTypes.Hat)
                    {
                        Joystick stick = BoundDevice as Joystick;
                        if (stick == null)
                        {
                            return;
                        }

                        string[] parts = BoundInputName.ToLowerInvariant().Split(":".ToCharArray());
                        string   name  = parts[0];
                        TriggerValue = 0.5;
                        if (parts.Length > 1)
                        {
                            double.TryParse(parts[1], out TriggerValue);
                        }

                        foreach (var hat in stick.Hats)
                        {
                            if (hat.Name.ToLowerInvariant() == name)
                            {
                                ActualControl = hat;
                                break;
                            }
                        }
                    }
                    else if (BoundInput == BoundInputTypes.Axis)
                    {
                        Joystick stick = BoundDevice as Joystick;
                        if (stick == null)
                        {
                            return;
                        }

                        string[] parts = BoundInputName.ToLowerInvariant().Split(":".ToCharArray());
                        string   name  = parts[0];
                        TriggerValue = 1;
                        if (parts.Length > 1)
                        {
                            double.TryParse(parts[1], out TriggerValue);
                        }

                        foreach (var axis in stick.Axes)
                        {
                            if (axis.Name.ToLowerInvariant() == name)
                            {
                                ActualControl = axis;
                                break;
                            }
                        }
                    }
                    else if (BoundInput == BoundInputTypes.Key)
                    {
                        Keyboard board = BoundDevice as Keyboard;
                        if (board == null)
                        {
                            return;
                        }

                        Keyboard.KeyCodes code;
                        if (Enum.TryParse(BoundInputName, out code))
                        {
                            BoundIndex = (int)code;
                        }
                    }
                }
예제 #2
0
                internal override void Setup()
                {
                    if (BoundDevice == null)
                    {
                        return;
                    }

                    if (BoundInput == BoundInputTypes.Axis)
                    {
                        Joystick stick = BoundDevice as Joystick;
                        if (stick == null)
                        {
                            return;
                        }

                        foreach (var axis in stick.Axes)
                        {
                            if (axis.Name.ToLowerInvariant() == BoundInputName.ToLowerInvariant())
                            {
                                BoundAxis = axis;
                                break;
                            }
                        }
                    }
                    else if (BoundInput == BoundInputTypes.Button || BoundInput == BoundInputTypes.Key)
                    {
                        string[] parts = BoundInputName.Split(":".ToCharArray());
                        if (BoundInput == BoundInputTypes.Key)
                        {
                            Keyboard board = BoundDevice as Keyboard;
                            if (board == null)
                            {
                                return;
                            }

                            PositiveButton = board.Keys;
                            PositiveIndex  = 0;
                            if (parts[0] != string.Empty)
                            {
                                Keyboard.KeyCodes code;
                                if (Enum.TryParse(parts[0], out code))
                                {
                                    PositiveIndex = (int)code;
                                }
                            }

                            if (parts.Length > 1 || parts[1] != string.Empty)
                            {
                                NegativeButton = board.Keys;
                                Keyboard.KeyCodes code;
                                if (Enum.TryParse(parts[0], out code))
                                {
                                    NegativeIndex = (int)code;
                                }
                            }
                        }
                        else
                        {
                            Joystick stick = BoundDevice as Joystick;
                            if (stick == null)
                            {
                                return;
                            }

                            foreach (var button in stick.Buttons)
                            {
                                if (button.Name.ToLowerInvariant() == parts[0].ToLowerInvariant())
                                {
                                    PositiveButton = button;
                                }
                                else if (parts.Length > 1 && button.Name.ToLowerInvariant() == parts[1].ToLowerInvariant())
                                {
                                    NegativeButton = button;
                                }
                            }
                        }
                    }
                    else if (BoundInput == BoundInputTypes.Hat)
                    {
                        Joystick stick = BoundDevice as Joystick;
                        if (stick == null)
                        {
                            return;
                        }

                        string[] parts = BoundInputName.Split(":".ToCharArray());
                        HatVertAxis = parts.Length > 1 && parts[1].ToUpper() == "V";
                        string name = parts[0].ToLowerInvariant();

                        foreach (var hat in stick.Hats)
                        {
                            if (hat.Name.ToLowerInvariant() == name)
                            {
                                PositiveButton = hat;
                                break;
                            }
                        }
                    }
                }