Beispiel #1
0
        public static InputAction CreateMouseAxis(string controlSchemeName, string axisName, int axis, float sensitivity)
        {
            ControlScheme scheme = GetControlScheme(controlSchemeName);

            if (scheme == null)
            {
                Debug.LogError(string.Format("A control scheme named \'{0}\' does not exist", controlSchemeName));
                return(null);
            }
            if (m_instance.m_actionLookup[controlSchemeName].ContainsKey(axisName))
            {
                Debug.LogError(string.Format("The control scheme named {0} already contains an action named {1}", controlSchemeName, axisName));
                return(null);
            }
            if (axis < 0 || axis >= InputBinding.MAX_MOUSE_AXES)
            {
                Debug.LogError("Mouse axis is out of range. Cannot create new mouse axis.");
                return(null);
            }

            InputAction  action  = scheme.CreateNewAction(axisName);
            InputBinding binding = action.CreateNewBinding();

            binding.Type        = InputType.MouseAxis;
            binding.Axis        = axis;
            binding.Sensitivity = sensitivity;

            action.Initialize();
            m_instance.m_actionLookup[controlSchemeName][axisName] = action;

            return(action);
        }
Beispiel #2
0
        public static InputAction CreateRemoteAxis(string controlSchemeName, string axisName)
        {
            ControlScheme scheme = GetControlScheme(controlSchemeName);

            if (scheme == null)
            {
                Debug.LogError(string.Format("A control scheme named \'{0}\' does not exist", controlSchemeName));
                return(null);
            }
            if (m_instance.m_actionLookup[controlSchemeName].ContainsKey(axisName))
            {
                Debug.LogError(string.Format("The control scheme named {0} already contains an action named {1}", controlSchemeName, axisName));
                return(null);
            }

            InputAction  action  = scheme.CreateNewAction(axisName);
            InputBinding binding = action.CreateNewBinding();

            binding.Type = InputType.RemoteAxis;

            action.Initialize();
            m_instance.m_actionLookup[controlSchemeName][axisName] = action;

            return(action);
        }
Beispiel #3
0
        public static InputAction CreateDigitalAxis(string controlSchemeName, string axisName, KeyCode positive, KeyCode negative,
                                                    KeyCode altPositive, KeyCode altNegative, float gravity, float sensitivity)
        {
            ControlScheme scheme = GetControlScheme(controlSchemeName);

            if (scheme == null)
            {
                Debug.LogError(string.Format("A control scheme named \'{0}\' does not exist", controlSchemeName));
                return(null);
            }
            if (m_instance.m_actionLookup[controlSchemeName].ContainsKey(axisName))
            {
                Debug.LogError(string.Format("The control scheme named {0} already contains an action named {1}", controlSchemeName, axisName));
                return(null);
            }

            InputAction  action  = scheme.CreateNewAction(axisName);
            InputBinding primary = action.CreateNewBinding();

            primary.Type        = InputType.DigitalAxis;
            primary.Positive    = positive;
            primary.Negative    = negative;
            primary.Gravity     = gravity;
            primary.Sensitivity = sensitivity;

            InputBinding secondary = action.CreateNewBinding(primary);

            secondary.Positive = altPositive;
            secondary.Negative = altNegative;

            action.Initialize();
            m_instance.m_actionLookup[controlSchemeName][axisName] = action;

            return(action);
        }
Beispiel #4
0
        public static InputAction CreateButton(string controlSchemeName, string buttonName, KeyCode primaryKey, KeyCode secondaryKey)
        {
            ControlScheme scheme = GetControlScheme(controlSchemeName);

            if (scheme == null)
            {
                Debug.LogError(string.Format("A control scheme named \'{0}\' does not exist", controlSchemeName));
                return(null);
            }
            if (m_instance.m_actionLookup[controlSchemeName].ContainsKey(buttonName))
            {
                Debug.LogError(string.Format("The control scheme named {0} already contains an action named {1}", controlSchemeName, buttonName));
                return(null);
            }

            InputAction  action  = scheme.CreateNewAction(buttonName);
            InputBinding primary = action.CreateNewBinding();

            primary.Type     = InputType.Button;
            primary.Positive = primaryKey;

            InputBinding secondary = action.CreateNewBinding(primary);

            secondary.Positive = secondaryKey;

            action.Initialize();
            m_instance.m_actionLookup[controlSchemeName][buttonName] = action;

            return(action);
        }
Beispiel #5
0
		public static InputAction CreateAnalogButton(string controlSchemeName, string buttonName, int joystick, int axis)
		{
			ControlScheme scheme = GetControlScheme(controlSchemeName);
			if(scheme == null)
			{
				Debug.LogError(string.Format("A control scheme named \'{0}\' does not exist", controlSchemeName));
				return null;
			}
			if(m_instance.m_actionLookup[controlSchemeName].ContainsKey(buttonName))
			{
				Debug.LogError(string.Format("The input configuration named {0} already contains an action named {1}", controlSchemeName, buttonName));
				return null;
			}
			if(axis < 0 || axis >= InputBinding.MAX_JOYSTICK_AXES)
			{
				Debug.LogError("Joystick axis is out of range. Cannot create new analog button.");
				return null;
			}
			if(joystick < 0 || joystick >= InputBinding.MAX_JOYSTICKS)
			{
				Debug.LogError("Joystick is out of range. Cannot create new analog button.");
				return null;
			}

			InputAction action = scheme.CreateNewAction(buttonName);
			InputBinding binding = action.CreateNewBinding();
			binding.Type = InputType.AnalogButton;
			binding.Joystick = joystick;
			binding.Axis = axis;

			action.Initialize();
			m_instance.m_actionLookup[controlSchemeName][buttonName] = action;

			return action;
		}
Beispiel #6
0
        private void ReadInputAction_V2(ControlScheme scheme, XmlNode node)
        {
            string      name   = ReadAttribute(node, "name", "Unnamed Action");
            InputAction action = scheme.CreateNewAction(name);

            action.Description = ReadNode(SelectSingleNode(node, "Description"));

            var bindingNodes = SelectNodes(node, "Binding");

            foreach (XmlNode child in bindingNodes)
            {
                ReadInputBinding_V2(action, child);
            }
        }
Beispiel #7
0
		/// <summary>
		/// Creates an uninitialized input action. It's your responsability to configure it properly.
		/// </summary>
		public static InputAction CreateEmptyAction(string controlSchemeName, string actionName)
		{
			ControlScheme scheme = GetControlScheme(controlSchemeName);
			if(scheme == null)
			{
				Debug.LogError(string.Format("A control scheme named \'{0}\' does not exist", controlSchemeName));
				return null;
			}
			if(m_instance.m_actionLookup[controlSchemeName].ContainsKey(actionName))
			{
				Debug.LogError(string.Format("The control scheme named {0} already contains an action named {1}", controlSchemeName, actionName));
				return null;
			}

			InputAction action = scheme.CreateNewAction(actionName);
			m_instance.m_actionLookup[controlSchemeName][actionName] = action;

			return action;
		}
Beispiel #8
0
        public static InputAction CreateAnalogAxis(string controlScheme, string axisName, int joystick, int axis, float sensitivity, float deadZone)
        {
            ControlScheme scheme = GetControlScheme(controlScheme);

            if (scheme == null)
            {
                Debug.LogError(string.Format("A control scheme named \'{0}\' does not exist", controlScheme));
                return(null);
            }
            if (m_instance.m_actionLookup[controlScheme].ContainsKey(axisName))
            {
                Debug.LogError(string.Format("The control scheme named {0} already contains an action named {1}", controlScheme, axisName));
                return(null);
            }
            if (axis < 0 || axis >= InputBinding.MAX_JOYSTICK_AXES)
            {
                Debug.LogError("Joystick axis is out of range. Cannot create new analog axis.");
                return(null);
            }
            if (joystick < 0 || joystick >= InputBinding.MAX_JOYSTICKS)
            {
                Debug.LogError("Joystick is out of range. Cannot create new analog axis.");
                return(null);
            }

            InputAction  action  = scheme.CreateNewAction(axisName);
            InputBinding binding = action.CreateNewBinding();

            binding.Type        = InputType.AnalogAxis;
            binding.Axis        = axis;
            binding.Joystick    = joystick;
            binding.DeadZone    = deadZone;
            binding.Sensitivity = sensitivity;

            action.Initialize();
            m_instance.m_actionLookup[controlScheme][axisName] = action;

            return(action);
        }
Beispiel #9
0
        private void ReadInputAction_V1(ControlScheme scheme, XmlNode node)
        {
            string       name    = ReadAttribute(node, "name", "Unnamed Axis");
            InputAction  action  = scheme.CreateNewAction(name);
            InputBinding binding = action.CreateNewBinding();

            foreach (XmlNode child in node.ChildNodes)
            {
                switch (child.LocalName)
                {
                case "description":
                    action.Description = child.InnerText;
                    break;

                case "positive":
                    binding.Positive = InputBinding.StringToKey(child.InnerText);
                    break;

                case "negative":
                    binding.Negative = InputBinding.StringToKey(child.InnerText);
                    break;

                case "deadZone":
                    binding.DeadZone = ReadAsFloat(child);
                    break;

                case "gravity":
                    binding.Gravity = ReadAsFloat(child, 1.0f);
                    break;

                case "sensitivity":
                    binding.Sensitivity = ReadAsFloat(child, 1.0f);
                    break;

                case "snap":
                    binding.Snap = ReadAsBool(child);
                    break;

                case "invert":
                    binding.Invert = ReadAsBool(child);
                    break;

                case "type":
                    binding.Type = InputBinding.StringToInputType(child.InnerText);
                    break;

                case "axis":
                    binding.Axis = ReadAsInt(child);
                    break;

                case "joystick":
                    binding.Joystick = ReadAsInt(child);
                    break;
                }
            }

            if (binding.Type == InputType.Button || binding.Type == InputType.DigitalAxis)
            {
                XmlNode      altPositiveNode = SelectSingleNode(node, "altPositive");
                XmlNode      altNegativeNode = SelectSingleNode(node, "altNegative");
                InputBinding secondary       = action.CreateNewBinding(binding);
                secondary.Positive = InputBinding.StringToKey(altPositiveNode.InnerText);
                secondary.Negative = InputBinding.StringToKey(altNegativeNode.InnerText);
            }
        }