예제 #1
0
        /// <summary>
        /// Will either return the delta of an axis from KeyAixs, or will smooth a key between 0 (not held) and 1 (held down)
        /// </summary>
        public float GetAxis(string KeyName)
        {
            HardKey key = Find(KeyName);

            if (Time.frameCount > BindingValues[key.ID, 0])
            {
                BindingValues[key.ID, 1] = BindingValues[key.ID, 2];

                if (!key.CheckPrimary(typeof(KeyAxis)) && (KeyCode)key.Primary != KeyCode.None || !key.CheckSecondary(typeof(KeyAxis)) && (KeyCode)key.SecondaryAxis != KeyCode.None)
                {
                    BindingValues[key.ID, 2] = Mathf.Clamp(Mathf.MoveTowards(BindingValues[key.ID, 2], GetKey(KeyName) ? 1f : 0f, key.Sensitivity * timeDifference), -1, 1);
                }
                else
                {
                    BindingValues[key.ID, 2] = (GetAxis(key.PrimaryAxis) + GetAxis(key.SecondaryAxis) + (key.isPrimaryControllerAxis ? GetController(key.PrimaryCont) : 0f) + (key.isSecondaryControllerAxis ? GetController(key.SecondaryCont) : 0f)) * key.Sensitivity;
                }
            }
            else
            {
                return(BindingValues[key.ID, 2]);
            }

            BindingValues[key.ID, 0] = lastFrame;
            return(BindingValues[key.ID, 2]);
        }
예제 #2
0
        /// <summary>
        /// DONT USE UNLESS YOU KNOW WHAT YOU'RE DOING. MANAGER AUTO SAVES INPUTS DONT BOTHER WITH THIS OKEY..
        /// </summary>
        public static void SaveXML(HardKey[] keys, string location)
        {
            XmlWriterSettings settings = new XmlWriterSettings();

            settings.OmitXmlDeclaration = false;
            settings.Indent             = true;
            XmlWriter writer = XmlWriter.Create(location, settings);

            writer.WriteStartElement("KeyBindings");
            for (int i = 0; i < keys.Length; i++)
            {
                HardKey key = keys[i];
                writer.WriteStartElement("Input");
                writer.WriteAttributeString("Name", key.Name);

                string prefixprime = key.CheckPrimary(typeof(KeyCode)) ? SavePrefixs[0] : key.CheckPrimary(typeof(KeyAxis)) ? SavePrefixs[1] : SavePrefixs[2];
                string prefixsecon = key.CheckSecondary(typeof(KeyCode)) ? SavePrefixs[0] : key.CheckSecondary(typeof(KeyAxis)) ? SavePrefixs[1] : SavePrefixs[2];

                writer.WriteAttributeString("Primary", prefixprime + "." + key.Primary.ToString());
                writer.WriteAttributeString("Secondary", prefixsecon + "." + key.Secondary.ToString());

                writer.WriteAttributeString("Sensitivity", key.Sensitivity.ToString());
                writer.WriteEndElement();
            }

            writer.WriteFullEndElement();
            writer.WriteEndDocument();
            writer.Close();
        }
예제 #3
0
        /// <summary>
        /// Returns a prettier, formatted string for display in game to show what button a key is bound to.
        /// </summary>
        public static string MakeKeycodePretty(string KeyName, bool GetPrimary = true)
        {
            HardKey key  = hardManager.Current().Find(KeyName);
            string  name = key.Primary.ToString();

            KeyCode       keycode       = key.PrimaryKey;
            KeyController keycontroller = key.PrimaryCont;
            KeyAxis       keyaxis       = key.PrimaryAxis;

            if (GetPrimary)
            {
                name = key.Primary.ToString();
            }
            else
            {
                name          = key.Secondary.ToString();
                keycode       = key.SecondaryKey;
                keycontroller = key.SecondaryCont;
                keyaxis       = key.SecondaryAxis;
            }

            if (key.CheckPrimary(typeof(KeyCode)) && GetPrimary || key.CheckSecondary(typeof(KeyCode)) && !GetPrimary)
            {
                if (name.Contains("Alpha"))
                {
                    return(name.Replace("Alpha", ""));
                }
                else if (name.Contains("Keypad"))
                {
                    return(name.Replace("Keypad", "Keypad "));
                }
                else if (name.Contains("Left"))
                {
                    return(name.Replace("Left", "Left "));
                }
                else if (name.Contains("Right"))
                {
                    return(name.Replace("Right", "Right "));
                }
                else if (name.Contains("Up"))
                {
                    return(name.Replace("Up", "Up "));
                }
                else if (name.Contains("Down"))
                {
                    return(name.Replace("Down", "Down "));
                }
                else if (name.Contains("Mouse0"))
                {
                    return("Left Mouse");
                }
                else if (name.Contains("Mouse1"))
                {
                    return("Right Mouse");
                }
                else if (name.Contains("Mouse2"))
                {
                    return("Middle Mouse");
                }
                else if (name.Contains("Mouse"))
                {
                    return("Mouse " + name.Replace("Mouse", ""));
                }
            }
            else if (key.CheckPrimary(typeof(KeyAxis)) && GetPrimary || key.CheckSecondary(typeof(KeyAxis)) && !GetPrimary)
            {
                if (keyaxis == KeyAxis.MouseX)
                {
                    return("Mouse X");
                }
                else if (keyaxis == KeyAxis.MouseY)
                {
                    return("Mouse Y");
                }
                else if (keyaxis == KeyAxis.ScrollWheel)
                {
                    return("Scroll Wheel");
                }
                else if (keyaxis == KeyAxis.ScrollWheelDown)
                {
                    return("Scroll Wheel Down");
                }
                else if (keyaxis == KeyAxis.ScrollWheelUp)
                {
                    return("Scroll Wheel Up");
                }
            }
            else if (key.CheckPrimary(typeof(KeyController)) && GetPrimary || key.CheckSecondary(typeof(KeyController)) && !GetPrimary)
            {
                switch (keycontroller)
                {
                case KeyController.LeftStickX:
                    return("Left Stick X");

                case KeyController.LeftStickY:
                    return("Left Stick Y");

                case KeyController.RightStickX:
                    return("Right Stick X");

                case KeyController.RightStickY:
                    return("Right Stick Y");

                case KeyController.DPadX:
                    return("D-PAD X");

                case KeyController.DPadY:
                    return("D-PAD Y");

                case KeyController.LeftTrigger:
                    return("Left Trigger");

                case KeyController.RightTrigger:
                    return("Right Trigger");

                case KeyController.LeftStickUp:
                    return("Left Stick Up");

                case KeyController.LeftStickDown:
                    return("Left Stick Down");

                case KeyController.LeftStickLeft:
                    return("Left Stick Left");

                case KeyController.LeftStickRight:
                    return("Left Stick Right");

                case KeyController.RightStickUp:
                    return("Right Stick Up");

                case KeyController.RightStickDown:
                    return("Right Stick Down");

                case KeyController.RightStickLeft:
                    return("Right Stick Left");

                case KeyController.RightStickRight:
                    return("Right Stick Right");

                case KeyController.DPadUp:
                    return("D-PAD Up");

                case KeyController.DPadDown:
                    return("D-PAD Down");

                case KeyController.DPadLeft:
                    return("D-PAD Left");

                case KeyController.DPadRight:
                    return("D-PAD Right");
                }
            }

            return(name);
        }