Exemple #1
0
        public static void ResetInputAxes()
        {
            InputConfiguration inputConfig = _instance._currentConfiguration;

            for (int i = 0; i < inputConfig.axes.Count; i++)
            {
                inputConfig.axes[i].Reset();
            }
            Input.ResetInputAxes();
        }
        public static InputConfiguration GetInputConfiguration(string name)
        {
            InputConfiguration inputConfig = null;

            if (_instance._configurationTable.TryGetValue(name, out inputConfig))
            {
                return(inputConfig);
            }

            return(null);
        }
Exemple #3
0
        private void WriteInputConfiguration(InputConfiguration inputConfig, XmlWriter writer)
        {
            writer.WriteStartElement("InputConfiguration");
            writer.WriteAttributeString("name", inputConfig.name);
            foreach (AxisConfiguration axisConfig in inputConfig.axes)
            {
                WriteAxisConfiguration(axisConfig, writer);
            }

            writer.WriteEndElement();
        }
Exemple #4
0
        private static bool AnyInput(InputConfiguration inputConfig)
        {
            for (int i = 0; i < inputConfig.axes.Count; i++)
            {
                if (inputConfig.axes[i].AnyInput)
                {
                    return(true);
                }
            }

            return(false);
        }
		public static InputConfiguration Duplicate(InputConfiguration source)
		{
			InputConfiguration inputConfig = new InputConfiguration();
			inputConfig.name = source.name;
			
			inputConfig.axes = new List<AxisConfiguration>(source.axes.Count);
			for(int i = 0; i < source.axes.Count; i++)
			{
				inputConfig.axes.Add(AxisConfiguration.Duplicate(source.axes[i]));
			}
			
			return inputConfig;
		}
        public static void ResetInputConfiguration(PlayerID playerID)
        {
            InputConfiguration inputConfig = _instance.GetInputConfigurationByPlayerID(playerID);

            if (inputConfig != null)
            {
                int count = inputConfig.axes.Count;
                for (int i = 0; i < count; i++)
                {
                    inputConfig.axes[i].Reset();
                }
            }
        }
        private void Initialize()
        {
            _playerOneConfig   = null;
            _playerTwoConfig   = null;
            _playerThreeConfig = null;
            _playerFourConfig  = null;

            if (inputConfigurations.Count == 0)
            {
                return;
            }

            PopulateLookupTables();

            if (!string.IsNullOrEmpty(playerOneDefault) && _configurationTable.ContainsKey(playerOneDefault))
            {
                _playerOneConfig = _configurationTable[playerOneDefault];
            }
            else
            {
                if (inputConfigurations.Count > 0)
                {
                    _playerOneConfig = inputConfigurations[0];
                }
            }

            if (!string.IsNullOrEmpty(playerTwoDefault) && _configurationTable.ContainsKey(playerTwoDefault))
            {
                _playerTwoConfig = _configurationTable[playerTwoDefault];
            }

            if (!string.IsNullOrEmpty(playerThreeDefault) && _configurationTable.ContainsKey(playerThreeDefault))
            {
                _playerThreeConfig = _configurationTable[playerThreeDefault];
            }

            if (!string.IsNullOrEmpty(playerFourDefault) && _configurationTable.ContainsKey(playerFourDefault))
            {
                _playerFourConfig = _configurationTable[playerFourDefault];
            }

            foreach (InputConfiguration inputConfig in inputConfigurations)
            {
                foreach (AxisConfiguration axisConfig in inputConfig.axes)
                {
                    axisConfig.Initialize();
                }
            }

            Input.ResetInputAxes();
        }
        public static bool DeleteAxisConfiguration(string inputConfigName, string axisName)
        {
            InputConfiguration inputConfig = GetInputConfiguration(inputConfigName);
            AxisConfiguration  axisConfig  = GetAxisConfiguration(inputConfigName, axisName);

            if (inputConfig != null && axisConfig != null)
            {
                _instance._axesTable[inputConfig.name].Remove(axisConfig.name);
                inputConfig.axes.Remove(axisConfig);
                return(true);
            }

            return(false);
        }
Exemple #9
0
        public static InputConfiguration Duplicate(InputConfiguration source)
        {
            InputConfiguration inputConfig = new InputConfiguration();

            inputConfig.name = source.name;

            inputConfig.axes = new List <AxisConfiguration>(source.axes.Count);
            for (int i = 0; i < source.axes.Count; i++)
            {
                inputConfig.axes.Add(AxisConfiguration.Duplicate(source.axes[i]));
            }

            return(inputConfig);
        }
Exemple #10
0
        private void UpdateInputConfiguration(InputConfiguration inputConfig, PlayerID playerID)
        {
            if (inputConfig != null)
            {
                for (int i = 0; i < inputConfig.axes.Count; i++)
                {
                    inputConfig.axes[i].Update();
                }

                if (RemoteUpdate != null)
                {
                    RemoteUpdate(playerID);
                }
            }
        }
Exemple #11
0
        private InputConfiguration ReadInputConfiguration(XmlNode node)
        {
            InputConfiguration inputConfig = new InputConfiguration();

            inputConfig.name = ReadAttribute(node, "name", "Unnamed Configuration");

            var axisConfigNodes = node.SelectNodes("AxisConfiguration");

            foreach (XmlNode child in axisConfigNodes)
            {
                inputConfig.axes.Add(ReadAxisConfiguration(child));
            }

            return(inputConfig);
        }
Exemple #12
0
        public static InputConfiguration CreateInputConfiguration(string name)
        {
            if (_instance._configurationTable.ContainsKey(name))
            {
                throw new ArgumentException(string.Format("An input configuration with the name {0} already exists", name));
            }

            InputConfiguration inputConfig = new InputConfiguration(name);

            _instance.inputConfigurations.Add(inputConfig);
            _instance._configurationTable.Add(name, inputConfig);
            _instance._axesTable.Add(name, new Dictionary <string, AxisConfiguration>());

            return(inputConfig);
        }
Exemple #13
0
        public static InputConfiguration CreateInputConfiguration(string name)
        {
            if (_instance._configurationTable.ContainsKey(name))
            {
                Debug.LogError(string.Format("An input configuration named \'{0}\' already exists", name));
                return(null);
            }

            InputConfiguration inputConfig = new InputConfiguration(name);

            _instance.inputConfigurations.Add(inputConfig);
            _instance._configurationTable.Add(name, inputConfig);
            _instance._axesTable.Add(name, new Dictionary <string, AxisConfiguration>());

            return(inputConfig);
        }
        public InputConfiguration LoadSelective(string inputConfigName)
        {
            InputConfiguration inputConfig = null;

            using (XmlReader reader = CreateXmlReader())
            {
                while (reader.Read())
                {
                    if (reader.IsStartElement("InputConfiguration") && reader["name"] == inputConfigName)
                    {
                        inputConfig = ReadInputConfiguration(reader);
                        break;
                    }
                }
            }

            return(inputConfig);
        }
Exemple #15
0
        private InputConfiguration ReadInputConfiguration(XmlReader reader)
        {
            InputConfiguration inputConfig = new InputConfiguration();

            inputConfig.name = reader["name"];

            while (reader.Read())
            {
                if (!reader.IsStartElement("AxisConfiguration"))
                {
                    break;
                }

                inputConfig.axes.Add(ReadAxisConfiguration(reader));
            }

            return(inputConfig);
        }
Exemple #16
0
        /// <summary>
        /// Returns true if any axis of the active input configuration is receiving input.
        /// </summary>
        public static bool AnyInput()
        {
            InputConfiguration inputConfig = _instance._currentConfiguration;

            if (inputConfig != null)
            {
                int count = inputConfig.axes.Count;
                for (int i = 0; i < count; i++)
                {
                    if (inputConfig.axes[i].AnyInput)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Exemple #17
0
        public static AxisConfiguration CreateAnalogButton(string inputConfigName, string buttonName, int joystick, int axis)
        {
            InputConfiguration inputConfig = GetInputConfiguration(inputConfigName);

            if (inputConfig == null)
            {
                Debug.LogError(string.Format("An input configuration named \'{0}\' does not exist", inputConfigName));
                return(null);
            }
            if (_instance._axesTable[inputConfigName].ContainsKey(buttonName))
            {
                Debug.LogError(string.Format("The input configuration named {0} already contains an axis configuration named {1}", inputConfigName, buttonName));
                return(null);
            }
            if (axis < 0 || axis >= AxisConfiguration.MaxJoystickAxes)
            {
                Debug.LogError("Joystick axis is out of range. Cannot create new analog button.");
                return(null);
            }
            if (joystick < 0 || joystick >= AxisConfiguration.MaxJoysticks)
            {
                Debug.LogError("Joystick is out of range. Cannot create new analog button.");
                return(null);
            }

            AxisConfiguration axisConfig = new AxisConfiguration(buttonName);

            axisConfig.type        = InputType.AnalogButton;
            axisConfig.joystick    = joystick;
            axisConfig.axis        = axis;
            axisConfig.positive    = KeyCode.None;
            axisConfig.negative    = KeyCode.None;
            axisConfig.altPositive = KeyCode.None;
            axisConfig.altNegative = KeyCode.None;
            axisConfig.Initialize();
            inputConfig.axes.Add(axisConfig);

            var table = _instance._axesTable[inputConfigName];

            table.Add(buttonName, axisConfig);

            return(axisConfig);
        }
Exemple #18
0
 private void SetInputConfigurationByPlayerID(PlayerID playerID, InputConfiguration inputConfig)
 {
     if (playerID == PlayerID.One)
     {
         _playerOneConfig = inputConfig;
     }
     else if (playerID == PlayerID.Two)
     {
         _playerTwoConfig = inputConfig;
     }
     else if (playerID == PlayerID.Three)
     {
         _playerThreeConfig = inputConfig;
     }
     else if (playerID == PlayerID.Four)
     {
         _playerFourConfig = inputConfig;
     }
 }
Exemple #19
0
        public static AxisConfiguration CreateAnalogAxis(string inputConfigName, string axisName, int joystick, int axis, float sensitivity, float deadZone)
        {
            InputConfiguration inputConfig = GetInputConfiguration(inputConfigName);

            if (inputConfig == null)
            {
                Debug.LogError(string.Format("An input configuration named \'{0}\' does not exist", inputConfigName));
                return(null);
            }
            if (_instance._axesTable[inputConfigName].ContainsKey(axisName))
            {
                Debug.LogError(string.Format("The input configuration named {0} already contains an axis configuration named {1}", inputConfigName, axisName));
                return(null);
            }
            if (axis < 0 || axis >= AxisConfiguration.MaxJoystickAxes)
            {
                Debug.LogError("Joystick axis is out of range. Cannot create new analog axis.");
                return(null);
            }
            if (joystick < 0 || joystick >= AxisConfiguration.MaxJoysticks)
            {
                Debug.LogError("Joystick is out of range. Cannot create new analog axis.");
                return(null);
            }

            AxisConfiguration axisConfig = new AxisConfiguration(axisName);

            axisConfig.type        = InputType.AnalogAxis;
            axisConfig.axis        = axis;
            axisConfig.joystick    = joystick;
            axisConfig.deadZone    = deadZone;
            axisConfig.sensitivity = sensitivity;
            axisConfig.Initialize();
            inputConfig.axes.Add(axisConfig);

            var table = _instance._axesTable[inputConfigName];

            table.Add(axisName, axisConfig);

            return(axisConfig);
        }
Exemple #20
0
        /// <summary>
        /// Changes the active input configuration.
        /// </summary>
        public static void SetInputConfiguration(string name, PlayerID playerID)
        {
            if (_instance.IsInputConfigurationInUse(name))
            {
                Debug.LogErrorFormat("The input configuration named \'{0}\' is already being used by a player", name);
                return;
            }

            InputConfiguration inputConfig = null;

            if (_instance._configurationTable.TryGetValue(name, out inputConfig))
            {
                _instance.SetInputConfigurationByPlayerID(playerID, inputConfig);
                ResetInputConfiguration(playerID);
                _instance.RaiseInputConfigurationChangedEvent(playerID);
            }
            else
            {
                Debug.LogError(string.Format("An input configuration named \'{0}\' does not exist", name));
            }
        }
Exemple #21
0
        public static AxisConfiguration CreateAnalogButton(string inputConfigName, string buttonName, int joystick, int axis)
        {
            InputConfiguration inputConfig = GetInputConfiguration(inputConfigName);

            if (inputConfig == null)
            {
                throw new ArgumentException(string.Format("An input configuration named \'{0}\' does not exist", inputConfigName));
            }
            if (_instance._axesTable[inputConfigName].ContainsKey(buttonName))
            {
                string error = string.Format("The input configuration named {0} already contains an axis configuration named {1}", inputConfigName, buttonName);
                throw new ArgumentException(error);
            }
            if (axis < 0 || axis >= AxisConfiguration.MaxJoystickAxes)
            {
                throw new ArgumentOutOfRangeException("axis");
            }
            if (joystick < 0 || joystick >= AxisConfiguration.MaxJoysticks)
            {
                throw new ArgumentOutOfRangeException("joystick");
            }

            AxisConfiguration axisConfig = new AxisConfiguration(buttonName);

            axisConfig.type        = InputType.AnalogButton;
            axisConfig.joystick    = joystick;
            axisConfig.axis        = axis;
            axisConfig.positive    = KeyCode.None;
            axisConfig.negative    = KeyCode.None;
            axisConfig.altPositive = KeyCode.None;
            axisConfig.altNegative = KeyCode.None;
            axisConfig.Initialize();
            inputConfig.axes.Add(axisConfig);

            var table = _instance._axesTable[inputConfigName];

            table.Add(buttonName, axisConfig);

            return(axisConfig);
        }
Exemple #22
0
        public static AxisConfiguration CreateAnalogAxis(string configuration, string name, int joystick, int axis, float sensitivity, float deadZone)
        {
            InputConfiguration inputConfig = GetConfiguration(configuration);

            if (inputConfig == null)
            {
                throw new ArgumentException("Unable to find any input configuration named " + configuration);
            }
            if (_instance._axesTable[configuration].ContainsKey(name))
            {
                string error = string.Format("The input configuration named {0} already contains an axis configuration named {1}", configuration, name);
                throw new ArgumentException(error);
            }
            if (axis < 0 || axis > 9)
            {
                throw new ArgumentOutOfRangeException("axis");
            }
            if (joystick < 0 || joystick > 3)
            {
                throw new ArgumentOutOfRangeException("joystick");
            }

            AxisConfiguration axisConfig = new AxisConfiguration(name);

            axisConfig.type        = InputType.AnalogAxis;
            axisConfig.axis        = axis;
            axisConfig.joystick    = joystick;
            axisConfig.deadZone    = deadZone;
            axisConfig.sensitivity = sensitivity;
            axisConfig.Initialize();
            inputConfig.axes.Add(axisConfig);

            var table = _instance._axesTable[configuration];

            table.Add(name, axisConfig);

            return(axisConfig);
        }
Exemple #23
0
		private void Initialize()
		{
            _playerOneConfig = null;
            _playerTwoConfig = null;
            _playerThreeConfig = null;
            _playerFourConfig = null;

            if (inputConfigurations.Count == 0)
				return;
			
			PopulateLookupTables();

            if (!string.IsNullOrEmpty(playerOneDefault) && _configurationTable.ContainsKey(playerOneDefault))
            {
                _playerOneConfig = _configurationTable[playerOneDefault];
            }
            else
            {
                if(inputConfigurations.Count > 0)
                    _playerOneConfig = inputConfigurations[0];
            }

            if (!string.IsNullOrEmpty(playerTwoDefault) && _configurationTable.ContainsKey(playerTwoDefault))
            {
                _playerTwoConfig = _configurationTable[playerTwoDefault];
            }

            if (!string.IsNullOrEmpty(playerThreeDefault) && _configurationTable.ContainsKey(playerThreeDefault))
            {
                _playerThreeConfig = _configurationTable[playerThreeDefault];
            }

            if (!string.IsNullOrEmpty(playerFourDefault) && _configurationTable.ContainsKey(playerFourDefault))
            {
                _playerFourConfig = _configurationTable[playerFourDefault];
            }

            foreach (InputConfiguration inputConfig in inputConfigurations)
			{
				foreach(AxisConfiguration axisConfig in inputConfig.axes)
				{
					axisConfig.Initialize();
				}
			}

            Input.ResetInputAxes();
        }
		private void WriteInputConfiguration(InputConfiguration inputConfig, XmlWriter writer)
		{
			writer.WriteStartElement("InputConfiguration");
			writer.WriteAttributeString("name", inputConfig.name);
			foreach(AxisConfiguration axisConfig in inputConfig.axes)
			{
				WriteAxisConfiguration(axisConfig, writer);
			}
			
			writer.WriteEndElement();
		}
		private void DisplayInputConfigurationFields(InputConfiguration inputConfig, Rect screenRect)
		{
			GUILayout.BeginArea(screenRect);
			_mainPanelScrollPos = EditorGUILayout.BeginScrollView(_mainPanelScrollPos);
			inputConfig.name = EditorGUILayout.TextField("Name", inputConfig.name);
			EditorGUILayout.Space();

			GUI.enabled = (!EditorApplication.isPlaying && _inputManager.playerOneDefault != inputConfig.name);
			if(GUILayout.Button("Make Player One Default", GUILayout.Width(200.0f), GUILayout.Height(25.0f)))
			{
				_inputManager.playerOneDefault = inputConfig.name;
			}

            GUI.enabled = (!EditorApplication.isPlaying && _inputManager.playerTwoDefault != inputConfig.name);
            if (GUILayout.Button("Make Player Two Default", GUILayout.Width(200.0f), GUILayout.Height(25.0f)))
            {
                _inputManager.playerTwoDefault = inputConfig.name;
            }

            GUI.enabled = (!EditorApplication.isPlaying && _inputManager.playerThreeDefault != inputConfig.name);
            if (GUILayout.Button("Make Player Three Default", GUILayout.Width(200.0f), GUILayout.Height(25.0f)))
            {
                _inputManager.playerThreeDefault = inputConfig.name;
            }

            GUI.enabled = (!EditorApplication.isPlaying && _inputManager.playerFourDefault != inputConfig.name);
            if (GUILayout.Button("Make Player Four Default", GUILayout.Width(200.0f), GUILayout.Height(25.0f)))
            {
                _inputManager.playerFourDefault = inputConfig.name;
            }

            //GUI.enabled = (EditorApplication.isPlaying && _InputManager.PlayerOneConfiguration.name != inputConfig.name);
            //if(GUILayout.Button("Switch To", GUILayout.Width(135.0f), GUILayout.Height(20.0f)))
            //{
            //	_InputManager.SetInputConfiguration(inputConfig.name, PlayerID.One);
            //}

            GUI.enabled = true;
			
			EditorGUILayout.EndScrollView();
			GUILayout.EndArea();
		}
        private void DisplayAxisConfigurationFields(InputConfiguration inputConfigx, AxisConfiguration axisConfig, Rect screenRect)
        {
            GUIContent gravityInfo = new GUIContent("Gravity", "The speed(in units/sec) at which a digital axis falls towards neutral.");
            GUIContent sensitivityInfo = new GUIContent("Sensitivity", "The speed(in units/sec) at which an axis moves towards the target value.");
            GUIContent snapInfo = new GUIContent("Snap", "If input switches direction, do we snap to neutral and continue from there? For digital axes only.");
            GUIContent deadZoneInfo = new GUIContent("Dead Zone", "Size of analog dead zone. Values within this range map to neutral.");

            GUILayout.BeginArea(screenRect);
            _mainPanelScrollPos = GUILayout.BeginScrollView(_mainPanelScrollPos);
            axisConfig.name = EditorGUILayout.TextField("Name", axisConfig.name);
            axisConfig.description = EditorGUILayout.TextField("Description", axisConfig.description);

            //	Positive Key
            EditorToolbox.KeyCodeField(ref _keyString, ref _editingPositiveKey, "Positive",
                                       "editor_positive_key", axisConfig.positive);
            ProcessKeyString(ref axisConfig.positive, ref _editingPositiveKey);
            //	Negative Key
            EditorToolbox.KeyCodeField(ref _keyString, ref _editingNegativeKey, "Negative",
                                       "editor_negative_key", axisConfig.negative);
            ProcessKeyString(ref axisConfig.negative, ref _editingNegativeKey);
            //	Alt Positive Key
            EditorToolbox.KeyCodeField(ref _keyString, ref _editingAltPositiveKey, "Alt Positive",
                                       "editor_alt_positive_key", axisConfig.altPositive);
            ProcessKeyString(ref axisConfig.altPositive, ref _editingAltPositiveKey);
            //	Alt Negative key
            EditorToolbox.KeyCodeField(ref _keyString, ref _editingAltNegativeKey, "Alt Negative",
                                       "editor_alt_negative_key", axisConfig.altNegative);
            ProcessKeyString(ref axisConfig.altNegative, ref _editingAltNegativeKey);

            axisConfig.gravity = EditorGUILayout.FloatField(gravityInfo, axisConfig.gravity);
            axisConfig.deadZone = EditorGUILayout.FloatField(deadZoneInfo, axisConfig.deadZone);
            axisConfig.sensitivity = EditorGUILayout.FloatField(sensitivityInfo, axisConfig.sensitivity);
            axisConfig.snap = EditorGUILayout.Toggle(snapInfo, axisConfig.snap);
            axisConfig.invert = EditorGUILayout.Toggle("Invert", axisConfig.invert);
            axisConfig.type = (InputType)EditorGUILayout.EnumPopup("Type", axisConfig.type);
            axisConfig.axis = EditorGUILayout.Popup("Axis", axisConfig.axis, _axisOptions);
            axisConfig.joystick = EditorGUILayout.Popup("Joystick", axisConfig.joystick, _joystickOptions);

            if(EditorApplication.isPlaying)
            {
                EditorGUILayout.Space();
                GUI.enabled = false;
                EditorGUILayout.FloatField("Raw Axis", axisConfig.GetAxisRaw());
                EditorGUILayout.FloatField("Axis", axisConfig.GetAxis());
                EditorGUILayout.Toggle("Button", axisConfig.GetButton());
                GUI.enabled = true;
            }

            GUILayout.EndScrollView();
            GUILayout.EndArea();
        }
        private void ImportSelectedMapping()
        {
            if(_configurator == null)
            {
                EditorUtility.DisplayDialog("Error", "Unable to import joystick mapping. Did you close the advanced input editor?", "Close");
                return;
            }

            InputConfiguration inputConfig = new InputConfiguration(_mappings[_selection].Name.Replace(' ', '_'));
            foreach(AxisMapping am in _mappings[_selection])
            {
                if(am.ScanType == MappingWizard.ScanType.Button)
                {
                    AxisConfiguration axisConfig = new AxisConfiguration(am.Name);
                    axisConfig.type = InputType.Button;
                    axisConfig.positive = am.Key;
                    inputConfig.axes.Add(axisConfig);
                }
                else
                {
                    if(am.JoystickAxis < 0 || am.JoystickAxis >= AxisConfiguration.MaxJoystickAxes)
                    {
                        Debug.LogError("Joystick axis is out of range. Cannot import axis configuration: " + am.Name);
                        continue;
                    }

                    AxisConfiguration axisConfig = new AxisConfiguration(am.Name);
                    axisConfig.type = InputType.AnalogAxis;
                    axisConfig.axis = am.JoystickAxis;
                    axisConfig.joystick = 0;
                    axisConfig.deadZone = 0.0f;
                    axisConfig.sensitivity = 1.0f;
                    inputConfig.axes.Add(axisConfig);
                }
            }

            _configurator.AddInputConfiguration(inputConfig);
        }
 private void SetInputConfigurationByPlayerID(PlayerID playerID, InputConfiguration inputConfig)
 {
     if (playerID == PlayerID.One)
         _playerOneConfig = inputConfig;
     else if (playerID == PlayerID.Two)
         _playerTwoConfig = inputConfig;
     else if (playerID == PlayerID.Three)
         _playerThreeConfig = inputConfig;
     else if (playerID == PlayerID.Four)
         _playerFourConfig = inputConfig;
 }
        private static bool AnyInput(InputConfiguration inputConfig)
        {
            if (inputConfig != null)
            {
                int count = inputConfig.axes.Count;
                for (int i = 0; i < count; i++)
                {
                    if (inputConfig.axes[i].AnyInput)
                        return true;
                }
            }

            return false;
        }
        public static InputConfiguration CreateInputConfiguration(string name)
		{
			if(_instance._configurationTable.ContainsKey(name))
			{
				Debug.LogError(string.Format("An input configuration named \'{0}\' already exists", name));
				return null;
			}
			
			InputConfiguration inputConfig = new InputConfiguration(name);
			_instance.inputConfigurations.Add(inputConfig);
			_instance._configurationTable.Add(name, inputConfig);
			_instance._axesTable.Add(name, new Dictionary<string, AxisConfiguration>());
			
			return inputConfig;
		}
		private InputConfiguration ReadInputConfiguration(XmlReader reader)
		{
			InputConfiguration inputConfig = new InputConfiguration();
			inputConfig.name = reader["name"];
			
			while(reader.Read())
			{
				if(!reader.IsStartElement("AxisConfiguration"))
					break;
				
				inputConfig.axes.Add(ReadAxisConfiguration(reader));
			}
			
			return inputConfig;
		}
        public static InputConfiguration CreateInputConfiguration(string name)
        {
            if (_instance._configurationTable.ContainsKey (name))
                throw new ArgumentException (string.Format ("An input configuration named \'{0}\' already exists", name));

            InputConfiguration inputConfig = new InputConfiguration (name);
            _instance.inputConfigurations.Add (inputConfig);
            _instance._configurationTable.Add (name, inputConfig);
            _instance._axesTable.Add (name, new Dictionary<string, AxisConfiguration> ());

            return inputConfig;
        }
        private void Initialize()
        {
            if (inputConfigurations.Count == 0)
                return;

            PopulateLookupTables ();
            if (string.IsNullOrEmpty (defaultConfiguration) || !_configurationTable.ContainsKey (defaultConfiguration))
                _currentConfiguration = inputConfigurations [0];
            else
                _currentConfiguration = _configurationTable [defaultConfiguration];

            foreach (InputConfiguration inputConfig in inputConfigurations) {
                foreach (AxisConfiguration axisConfig in inputConfig.axes) {
                    axisConfig.Initialize ();
                }
            }
            ResetInputAxes ();
        }
        private void UpdateInputConfiguration(InputConfiguration inputConfig, PlayerID playerID)
        {
            if (inputConfig != null)
            {
                for (int i = 0; i < inputConfig.axes.Count; i++)
                    inputConfig.axes[i].Update();

                if (RemoteUpdate != null)
                    RemoteUpdate(playerID);
            }
        }
 public void AddInputConfiguration(InputConfiguration configuration)
 {
     _inputManager.inputConfigurations.Add(configuration);
     _selectionPath.Clear();
     _selectionPath.Add(_inputManager.inputConfigurations.Count - 1);
     Repaint();
 }
		private void Initialize()
		{
            _playerOneConfig = null;
            _playerTwoConfig = null;
            _playerThreeConfig = null;
            _playerFourConfig = null;

            if (inputConfigurations.Count == 0)
				return;
			
			PopulateLookupTables();
			if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer || Application.platform == RuntimePlatform.WindowsWebPlayer)
			{
				_playerOneConfig = _configurationTable [Config_Name_Windows];
                _playerTwoConfig = _configurationTable[Config_Name_Windows];
                _playerThreeConfig = _configurationTable[Config_Name_Windows];
                _playerFourConfig = _configurationTable[Config_Name_Windows];
            }
			else if (Application.platform == RuntimePlatform.OSXEditor || Application.platform == RuntimePlatform.OSXPlayer || Application.platform == RuntimePlatform.OSXWebPlayer)
			{
				_playerOneConfig = _configurationTable [Config_Name_OSX];
                _playerTwoConfig = _configurationTable[Config_Name_OSX];
                _playerThreeConfig = _configurationTable[Config_Name_OSX];
                _playerFourConfig = _configurationTable[Config_Name_OSX];
            }
            else if (Application.platform == RuntimePlatform.LinuxPlayer)
			{
				_playerOneConfig = _configurationTable [Config_Name_Linux];
                _playerTwoConfig = _configurationTable[Config_Name_Linux];
                _playerThreeConfig = _configurationTable[Config_Name_Linux];
                _playerFourConfig = _configurationTable[Config_Name_Linux];
            }

			/*
            if (!string.IsNullOrEmpty(playerOneDefault) && _configurationTable.ContainsKey(playerOneDefault))
            {
                _playerOneConfig = _configurationTable[playerOneDefault];
            }
            else
            {
                if(inputConfigurations.Count > 0)
                    _playerOneConfig = inputConfigurations[0];
            }

            if (!string.IsNullOrEmpty(playerTwoDefault) && _configurationTable.ContainsKey(playerTwoDefault))
            {
                _playerTwoConfig = _configurationTable[playerTwoDefault];
            }

            if (!string.IsNullOrEmpty(playerThreeDefault) && _configurationTable.ContainsKey(playerThreeDefault))
            {
                _playerThreeConfig = _configurationTable[playerThreeDefault];
            }

            if (!string.IsNullOrEmpty(playerFourDefault) && _configurationTable.ContainsKey(playerFourDefault))
            {
                _playerFourConfig = _configurationTable[playerFourDefault];
            }
            */

            foreach (InputConfiguration inputConfig in inputConfigurations)
			{
				foreach(AxisConfiguration axisConfig in inputConfig.axes)
				{
					axisConfig.Initialize();
				}
			}

            Input.ResetInputAxes();
        }
        private void DisplayInputConfigurationFields(InputConfiguration inputConfig, Rect screenRect)
        {
            GUILayout.BeginArea(screenRect);
            _mainPanelScrollPos = EditorGUILayout.BeginScrollView(_mainPanelScrollPos);
            inputConfig.name = EditorGUILayout.TextField("Name", inputConfig.name);
            EditorGUILayout.Space();
            EditorGUILayout.BeginHorizontal();
            GUI.enabled = (!EditorApplication.isPlaying && _inputManager.defaultConfiguration != inputConfig.name);
            if(GUILayout.Button("Make Default", GUILayout.Width(135.0f), GUILayout.Height(20.0f)))
            {
                _inputManager.defaultConfiguration = inputConfig.name;
            }
            GUI.enabled = (EditorApplication.isPlaying && InputManager.CurrentConfiguration.name != inputConfig.name);
            if(GUILayout.Button("Switch To", GUILayout.Width(135.0f), GUILayout.Height(20.0f)))
            {
                InputManager.SetInputConfiguration(inputConfig.name);
            }
            GUI.enabled = true;

            EditorGUILayout.EndHorizontal();
            EditorGUILayout.EndScrollView();
            GUILayout.EndArea();
        }
Exemple #38
0
        private void Start()
        {
            InputConfiguration inputConfig = InputManager.GetInputConfiguration(_inputConfiguration);

            if (inputConfig == null)
            {
                Debug.LogWarning(string.Format("An input configuration named \'{0}\' does not exist", _inputConfiguration), this);
                return;
            }

            int axisCount           = inputConfig.axes.Count;
            int joystickButtonCount = (int)KeyCode.Joystick1Button19 - (int)KeyCode.Joystick1Button0 + 1;

            //	All new axes will be added at the end of the list so it's safe to iterate normally to
            //	the initial number of axes
            for (int i = 0; i < axisCount; i++)
            {
                AxisConfiguration orig = inputConfig.axes[i];
                if (!orig.name.EndsWith("_P1"))
                {
                    continue;
                }

                if (orig.joystick > 0)
                {
                    Debug.LogError(string.Format("Cannot clone axis {0} of configuration {1} because joystick is {2} instead of 0", orig.name, _inputConfiguration, orig.joystick), this);
                    continue;
                }

                if ((orig.positive != KeyCode.None && ((int)orig.positive < (int)KeyCode.Joystick1Button0 || (int)orig.positive > (int)KeyCode.Joystick1Button19)) ||
                    (orig.altPositive != KeyCode.None && ((int)orig.altPositive < (int)KeyCode.Joystick1Button0 || (int)orig.altPositive > (int)KeyCode.Joystick1Button19)) ||
                    (orig.negative != KeyCode.None && ((int)orig.negative < (int)KeyCode.Joystick1Button0 || (int)orig.negative > (int)KeyCode.Joystick1Button19)) ||
                    (orig.altNegative != KeyCode.None && ((int)orig.altNegative < (int)KeyCode.Joystick1Button0 || (int)orig.altNegative > (int)KeyCode.Joystick1Button19)))
                {
                    Debug.LogError(string.Format("Cannot clone axis {0} of configuration {1} because some key codes are invalid", orig.name, _inputConfiguration), this);
                    continue;
                }

                for (int c = 0; c < _numberOfClones; c++)
                {
                    string            axisName = orig.name.Substring(0, orig.name.Length - 3) + "_P" + (c + 2);
                    AxisConfiguration clone    = InputManager.CreateEmptyAxis(_inputConfiguration, axisName);
                    clone.Copy(orig);
                    clone.name = axisName;
                    if (orig.positive != KeyCode.None)
                    {
                        clone.positive = (KeyCode)((int)orig.positive + (c + 1) * joystickButtonCount);
                    }
                    if (orig.altPositive != KeyCode.None)
                    {
                        clone.altPositive = (KeyCode)((int)orig.altPositive + (c + 1) * joystickButtonCount);
                    }
                    if (orig.negative != KeyCode.None)
                    {
                        clone.negative = (KeyCode)((int)orig.negative + (c + 1) * joystickButtonCount);
                    }
                    if (orig.altNegative != KeyCode.None)
                    {
                        clone.altNegative = (KeyCode)((int)orig.altNegative + (c + 1) * joystickButtonCount);
                    }
                    clone.joystick = c + 1;
                    clone.Initialize();
                }
            }
        }