├── .gitignore ├── Assets └── Controller Input Manager │ ├── ControllerManager.cs │ └── Demo │ ├── ControllerTest.cs │ ├── PlayerOneControl │ └── Scene.unity ├── InputManager.asset ├── InputManagerAdder ├── .vs │ └── InputManagerAdder │ │ └── v15 │ │ └── Server │ │ └── sqlite3 │ │ ├── db.lock │ │ └── storage.ide └── InputManagerAdder │ ├── App.config │ ├── App.xaml │ ├── App.xaml.cs │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings │ ├── Resources │ └── InputManager.asset │ ├── bin │ └── Release │ │ └── InputManagerAdder.exe.config │ └── obj │ ├── Debug │ ├── App.g.cs │ ├── App.g.i.cs │ ├── InputManagerAdder.Properties.Resources.resources │ ├── InputManagerAdder.csproj.FileListAbsolute.txt │ ├── InputManagerAdder.g.resources │ ├── InputManagerAdder_MarkupCompile.lref │ ├── MainWindow.baml │ ├── MainWindow.g.cs │ ├── MainWindow.g.i.cs │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ └── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs │ └── Release │ ├── App.g.cs │ ├── App.g.i.cs │ ├── InputManagerAdder.Properties.Resources.resources │ ├── InputManagerAdder.csproj.FileListAbsolute.txt │ ├── InputManagerAdder.g.resources │ ├── InputManagerAdder_MarkupCompile.i.lref │ ├── InputManagerAdder_MarkupCompile.lref │ ├── MainWindow.baml │ ├── MainWindow.g.cs │ ├── MainWindow.g.i.cs │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ └── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs ├── LICENSE ├── NetCoreInputAdder ├── NetCoreInputAdder.csproj ├── Program.cs └── obj │ ├── NetCoreInputAdder.csproj.nuget.cache │ ├── NetCoreInputAdder.csproj.nuget.g.props │ ├── NetCoreInputAdder.csproj.nuget.g.targets │ └── project.assets.json └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Folders 2 | Library/ 3 | Temp/ 4 | Temp.meta 5 | .vs/ 6 | ProjectSettings/ 7 | UnityPackageManager/ 8 | 9 | # Autosaves 10 | *auto_* 11 | 12 | 13 | # File types 14 | *.suo 15 | *.csproj 16 | *.unityproj 17 | *.sln 18 | *.userprefs 19 | *.pidb 20 | *.swp 21 | *.meta 22 | 23 | # Mac punk 24 | .DS_Store 25 | -------------------------------------------------------------------------------- /Assets/Controller Input Manager/ControllerManager.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using System.Linq; 5 | using System.IO; 6 | using System.Text; 7 | using System; 8 | 9 | namespace Controller 10 | { 11 | /// 12 | /// Possible Pressed Buttons up, down, left, and right are only useable on mac 13 | /// 14 | public enum PressedButton { A, B, X, Y, RB, LB, LS, RS, START, BACK, UP, DOWN, LEFT, RIGHT,UNDEFINED}; 15 | /// 16 | /// All axis of input Dpad axis are unavailable on mac 17 | /// 18 | public enum InputAxis { LEFTX, LEFTY, RIGHTX, RIGHTY, DPADX, DPADY, RT, LT,UNDEFINED }; 19 | public class Gamepad 20 | { 21 | public int gamePadId = 1; 22 | 23 | private Dictionary mappedController = new Dictionary(); 24 | 25 | 26 | #if UNITY_STANDALONE_OSX 27 | private KeyCode UP,DOWN,LEFT,RIGHT; 28 | #endif 29 | /// 30 | /// Supply a InputAxis enum and it will return value identical to the Unity Input Manager 31 | /// 32 | /// 33 | /// 34 | public float GetAxis(Enum axis) 35 | { 36 | if (Enum.IsDefined(typeof(KeyCode), mappedController[axis])) 37 | { 38 | return Input.GetKey((KeyCode)Enum.Parse(typeof(KeyCode), mappedController[axis].ToString())) == true ?1:0; 39 | } 40 | return Input.GetAxis(mappedController[axis].ToString()); 41 | } 42 | 43 | /// 44 | /// Supply a PressedButton and it will return a valueIdentical to the Unity Input Manager 45 | /// 46 | /// 47 | /// 48 | public bool GetButtonDown(Enum button) 49 | { 50 | if (Enum.IsDefined(typeof(KeyCode), mappedController[button])) 51 | { 52 | return Input.GetKeyDown((KeyCode)Enum.Parse(typeof(KeyCode), mappedController[button].ToString())); 53 | } 54 | return false; 55 | } 56 | 57 | /// 58 | /// Supply a PressedButton and it will return a valueIdentical to the Unity Input Manager 59 | /// 60 | /// 61 | /// 62 | public bool GetButtonUp(Enum button) 63 | { 64 | if (Enum.IsDefined(typeof(KeyCode), mappedController[button])) 65 | { 66 | return Input.GetKeyUp((KeyCode)Enum.Parse(typeof(KeyCode), mappedController[button].ToString())); 67 | } 68 | return false; 69 | } 70 | 71 | /// 72 | /// Supply a PressedButton and it will return a valueIdentical to the Unity Input Manager 73 | /// 74 | /// 75 | /// 76 | public bool GetButton(Enum button) 77 | { 78 | if (Enum.IsDefined(typeof(KeyCode), mappedController[button])) 79 | { 80 | return Input.GetKey((KeyCode)Enum.Parse(typeof(KeyCode), mappedController[button].ToString())); 81 | } 82 | return Mathf.Abs(Input.GetAxis(mappedController[button].ToString())) > 0; 83 | } 84 | 85 | /// 86 | /// Checks if any button is pressed and returns the first found pressed 87 | /// 88 | /// 89 | public PressedButton AnyButtonPressed() 90 | { 91 | Enum[] keys = mappedController.Keys.ToArray(); 92 | for (int i = 0; i < keys.Length; i++) 93 | { 94 | if (Enum.IsDefined(typeof(PressedButton), keys[i].ToString())) 95 | { 96 | if (Input.GetKey((KeyCode)Enum.Parse(typeof(KeyCode), mappedController[keys[i]].ToString()))) 97 | { 98 | return (PressedButton)Enum.Parse(typeof(PressedButton), keys[i].ToString()); 99 | } 100 | } 101 | } 102 | return PressedButton.UNDEFINED; 103 | } 104 | 105 | /// 106 | /// Checks if any button has been released and returns the first found released 107 | /// 108 | /// 109 | public PressedButton AnyButtonReleased() 110 | { 111 | Enum[] keys = mappedController.Keys.ToArray(); 112 | for (int i = 0; i < keys.Length; i++) 113 | { 114 | if (Enum.IsDefined(typeof(PressedButton), keys[i].ToString())) 115 | { 116 | if (Input.GetKeyUp((KeyCode)Enum.Parse(typeof(KeyCode), mappedController[keys[i]].ToString()))) 117 | { 118 | return (PressedButton)Enum.Parse(typeof(PressedButton), keys[i].ToString()); 119 | } 120 | } 121 | } 122 | return PressedButton.UNDEFINED; 123 | } 124 | 125 | /// 126 | /// Checks if any button gets pressed and returns the first found getting pressed 127 | /// 128 | /// 129 | public PressedButton AnyButtonDown() 130 | { 131 | Enum[] keys = mappedController.Keys.ToArray(); 132 | for (int i = 0; i < keys.Length; i++) 133 | { 134 | if (Enum.IsDefined(typeof(PressedButton), keys[i].ToString())) 135 | { 136 | if (Input.GetKeyDown((KeyCode)Enum.Parse(typeof(KeyCode),mappedController[keys[i]].ToString()))) 137 | { 138 | return (PressedButton)Enum.Parse(typeof(PressedButton),keys[i].ToString()); 139 | } 140 | } 141 | } 142 | return PressedButton.UNDEFINED; 143 | } 144 | 145 | /// 146 | /// Quick hand for checking if the right trigger has not been released 147 | /// 148 | /// 149 | public bool RightTrigger() 150 | { 151 | if (Enum.IsDefined(typeof(KeyCode), mappedController[InputAxis.RT])) 152 | { 153 | return Input.GetKey((KeyCode)Enum.Parse(typeof(KeyCode), mappedController[InputAxis.RT].ToString())); 154 | } 155 | 156 | return Input.GetAxis(mappedController[InputAxis.RT].ToString()) > 0; 157 | } 158 | 159 | /// 160 | /// Quick hand for checking if the left trigger has not been released 161 | /// 162 | /// 163 | public bool LeftTrigger() 164 | { 165 | if (Enum.IsDefined(typeof(KeyCode), mappedController[InputAxis.LT])) 166 | { 167 | return Input.GetKey((KeyCode)Enum.Parse(typeof(KeyCode), mappedController[InputAxis.LT].ToString())); 168 | } 169 | return Input.GetAxis(mappedController[InputAxis.LT].ToString()) > 0; 170 | } 171 | 172 | /// 173 | /// Checks if any axis is activated and returns the first found. 174 | /// 175 | /// 176 | public InputAxis AnyAxis() 177 | { 178 | Enum[] keys = mappedController.Keys.ToArray(); 179 | for (int i = 0; i < keys.Length; i++) 180 | { 181 | if (Enum.IsDefined(typeof(InputAxis), keys[i].ToString())) 182 | { 183 | if (Input.GetAxis(mappedController[keys[i]].ToString()) != 0 ) 184 | { 185 | return (InputAxis) Enum.Parse(typeof(InputAxis),keys[i].ToString()); 186 | } 187 | } 188 | } 189 | return InputAxis.UNDEFINED; 190 | } 191 | 192 | /// 193 | /// Supply an input between 1 and 4 to assign this controller manager to that value 194 | /// 195 | /// 196 | public Gamepad(int controllerID) 197 | { 198 | if(controllerID > 4 || controllerID < 1) 199 | { 200 | Debug.LogError("Please use a number between 1 and 4"); 201 | return; 202 | } 203 | gamePadId = controllerID; 204 | } 205 | 206 | /// 207 | /// Sets all inputs to defaults for platform. 208 | /// 209 | public void ResetToDefault() { 210 | mappedController.Clear(); 211 | string joystickButton = "Joystick" + gamePadId.ToString() + "Button"; 212 | string gamePad = "Gamepad" + gamePadId.ToString() + "A"; 213 | #if UNITY_STANDALONE_LINUX || UNITY_EDITOR_LINUX 214 | mappedController.Add(PressedButton.A, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "0")); 215 | mappedController.Add(PressedButton.B, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "1")); 216 | mappedController.Add(PressedButton.X, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "2")); 217 | mappedController.Add(PressedButton.Y, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "3")); 218 | mappedController.Add(PressedButton.LB, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "4")); 219 | mappedController.Add(PressedButton.RB, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "5")); 220 | mappedController.Add(PressedButton.BACK, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "6")); 221 | mappedController.Add(PressedButton.START, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "7")); 222 | mappedController.Add(PressedButton.LS, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "9")); 223 | mappedController.Add(PressedButton.RS, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "10")); 224 | 225 | mappedController.Add(InputAxis.LEFTX, gamePad + "X"); 226 | mappedController.Add(InputAxis.LEFTY, gamePad + "Y"); 227 | mappedController.Add(InputAxis.RIGHTX, gamePad + "4"); 228 | mappedController.Add(InputAxis.RIGHTY, gamePad + "5"); 229 | mappedController.Add(InputAxis.DPADX, gamePad + "7"); 230 | mappedController.Add(InputAxis.DPADY, gamePad + "8"); 231 | mappedController.Add(InputAxis.RT, gamePad + "3"); 232 | mappedController.Add(InputAxis.LT, gamePad + "6"); 233 | #elif UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN 234 | mappedController.Add(PressedButton.A, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "0")); 235 | mappedController.Add(PressedButton.B, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "1")); 236 | mappedController.Add(PressedButton.X, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "2")); 237 | mappedController.Add(PressedButton.Y, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "3")); 238 | mappedController.Add(PressedButton.LB, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "4")); 239 | mappedController.Add(PressedButton.RB, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "5")); 240 | mappedController.Add(PressedButton.BACK, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "6")); 241 | mappedController.Add(PressedButton.START, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "7")); 242 | mappedController.Add(PressedButton.LS, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "8")); 243 | mappedController.Add(PressedButton.RS, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "9")); 244 | 245 | mappedController.Add(InputAxis.LEFTX, gamePad + "X"); 246 | mappedController.Add(InputAxis.LEFTY, gamePad + "Y"); 247 | mappedController.Add(InputAxis.RIGHTX, gamePad + "4"); 248 | mappedController.Add(InputAxis.RIGHTY, gamePad + "5"); 249 | mappedController.Add(InputAxis.DPADX, gamePad + "6"); 250 | mappedController.Add(InputAxis.DPADY, gamePad + "7"); 251 | mappedController.Add(InputAxis.RT, gamePad + "9"); 252 | mappedController.Add(InputAxis.LT, gamePad + "10"); 253 | #elif UNITY_STANDALONE_MAC || UNITY_EDITOR_MAC 254 | mappedController.Add(PressedButton.A, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "16")); 255 | mappedController.Add(PressedButton.B, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "17")); 256 | mappedController.Add(PressedButton.X, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "18")); 257 | mappedController.Add(PressedButton.Y, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "19")); 258 | mappedController.Add(PressedButton.LB, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "13")); 259 | mappedController.Add(PressedButton.RB, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "14")); 260 | mappedController.Add(PressedButton.BACK, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "10")); 261 | mappedController.Add(PressedButton.START, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "9")); 262 | mappedController.Add(PressedButton.LS, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "11")); 263 | mappedController.Add(PressedButton.RS, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "12")); 264 | mappedController.Add(PressedButton.LS, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "5")); 265 | mappedController.Add(PressedButton.RS, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "6")); 266 | mappedController.Add(PressedButton.LS, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "7")); 267 | mappedController.Add(PressedButton.RS, (KeyCode)Enum.Parse(typeof(KeyCode), joystickButton + "8")); 268 | 269 | mappedController.Add(InputAxis.LEFTX, gamePad + "X"); 270 | mappedController.Add(InputAxis.LEFTY, gamePad + "Y"); 271 | mappedController.Add(InputAxis.RIGHTX, gamePad + "3"); 272 | mappedController.Add(InputAxis.RIGHTY, gamePad + "4"); 273 | mappedController.Add(InputAxis.RT, gamePad + "5"); 274 | mappedController.Add(InputAxis.LT, gamePad + "6"); 275 | #endif 276 | 277 | 278 | 279 | 280 | 281 | } 282 | 283 | /// 284 | /// Switches two item inputs either an axis or a button. Note axes only work for GetButton and GetAxis. Buttons only return 1 or 0 in GetAxis 285 | /// 286 | /// 287 | /// 288 | public void SwitchInputs(Enum a, Enum b) 289 | { 290 | object temp = mappedController[a]; 291 | mappedController[a] = mappedController[b]; 292 | mappedController[b] = temp; 293 | } 294 | 295 | /// 296 | /// Saves to the path with the name provided 297 | /// 298 | /// 299 | public void SaveCustomScheme(string path) 300 | { 301 | string outGoing = ""; 302 | Enum[] buttons = mappedController.Keys.ToArray(); 303 | for(int i =0; i < buttons.Length; i++) 304 | { 305 | outGoing += buttons[i].ToString() + "=" + mappedController[buttons[i]]; 306 | outGoing += System.Environment.NewLine; 307 | } 308 | using (FileStream file = File.Create(path)) 309 | { 310 | file.Write(Encoding.UTF8.GetBytes(outGoing), 0, outGoing.Length); 311 | 312 | } 313 | } 314 | 315 | /// 316 | /// Checks all controllers on default scheme to see if there are any active(buttons pressed or axes moved).static Returns 1-4 if there is an active controller and 0 if not. 317 | /// 318 | /// 319 | public static int GetAnyActiveController(){ 320 | for(int i =1; i <= 4;i++){ 321 | Gamepad gp = new Gamepad(i); 322 | gp.ResetToDefault(); 323 | if(gp.AnyAxis() != InputAxis.UNDEFINED || gp.AnyButtonDown() != PressedButton.UNDEFINED || gp.AnyButtonPressed() != PressedButton.UNDEFINED || gp.AnyButtonReleased()!= PressedButton.UNDEFINED){ 324 | return i; 325 | } 326 | } 327 | return 0; 328 | } 329 | 330 | /// 331 | /// Loads from the path with name provided 332 | /// 333 | /// 334 | public void LoadCustomScheme(string path) 335 | { 336 | StreamReader reader = File.OpenText(path); 337 | string line; 338 | PressedButton parsedButton; 339 | InputAxis parsedAxis; 340 | while((line = reader.ReadLine()) != null) 341 | { 342 | string[] items = line.Split('='); 343 | if (Enum.IsDefined(typeof(PressedButton), items[0])) 344 | { 345 | parsedButton = (PressedButton)Enum.Parse(typeof(PressedButton), items[0]); 346 | if (!mappedController.ContainsKey(parsedButton)) 347 | { 348 | mappedController.Add(parsedButton, (KeyCode)Enum.Parse(typeof(KeyCode), items[1])); 349 | } 350 | else 351 | { 352 | mappedController[parsedButton] = (KeyCode)Enum.Parse(typeof(KeyCode), items[1]); 353 | } 354 | }else if (Enum.IsDefined(typeof(InputAxis), items[0])) 355 | { 356 | parsedAxis = (InputAxis)Enum.Parse(typeof(InputAxis), items[0]); 357 | if (!mappedController.ContainsKey(parsedAxis)) 358 | { 359 | mappedController.Add(parsedAxis, items[1]); 360 | } 361 | else 362 | { 363 | mappedController[parsedAxis] = items[1]; 364 | } 365 | } 366 | } 367 | } 368 | 369 | 370 | 371 | } 372 | } 373 | -------------------------------------------------------------------------------- /Assets/Controller Input Manager/Demo/ControllerTest.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using Controller; 5 | 6 | public class ControllerTest : MonoBehaviour 7 | { 8 | 9 | private Gamepad playerOne; 10 | 11 | [SerializeField] 12 | Transform modifiedObject; 13 | 14 | private MeshFilter mf; 15 | private Material mat; 16 | 17 | [SerializeField] 18 | private Mesh cube, sphere, cylinder, capsule; 19 | 20 | private Camera cam; 21 | 22 | // Use this for initialization 23 | void Start() 24 | { 25 | playerOne = new Gamepad(1); 26 | playerOne.LoadCustomScheme(Application.dataPath + "/Controller Input Manager/Demo/PlayerOneControl"); 27 | mf = modifiedObject.GetComponent(); 28 | mat = modifiedObject.GetComponent().material; 29 | cam = Camera.main; 30 | } 31 | 32 | // Update is called once per frame 33 | void Update() 34 | { 35 | Vector3 leftStick = new Vector3(playerOne.GetAxis(InputAxis.LEFTX), -playerOne.GetAxis(InputAxis.LEFTY), (playerOne.LeftTrigger() ? 1 : 0) - (playerOne.RightTrigger() ? 1 : 0)); 36 | Vector3 rightStick = new Vector3(-playerOne.GetAxis(InputAxis.RIGHTY), 0, -playerOne.GetAxis(InputAxis.RIGHTX)); 37 | Vector2 dPad = new Vector2(playerOne.GetAxis(InputAxis.DPADX), playerOne.GetAxis(InputAxis.DPADY)); 38 | 39 | modifiedObject.Translate(leftStick * 10 * Time.deltaTime, Space.World); 40 | modifiedObject.Rotate(rightStick, 100 * Time.deltaTime, Space.World); 41 | 42 | if (dPad.y > 0) 43 | { 44 | mf.mesh = cube; 45 | } 46 | if (dPad.y < 0) 47 | { 48 | mf.mesh = sphere; 49 | } 50 | if (dPad.x > 0) 51 | { 52 | mf.mesh = cylinder; 53 | } 54 | if (dPad.x < 0) 55 | { 56 | mf.mesh = capsule; 57 | } 58 | 59 | if (playerOne.GetButtonDown(PressedButton.START)) 60 | { 61 | Application.Quit(); 62 | } 63 | 64 | if (playerOne.GetButtonDown(PressedButton.BACK)) 65 | { 66 | cam.gameObject.SetActive(!cam.gameObject.activeInHierarchy); 67 | } 68 | 69 | if (playerOne.GetButtonDown(PressedButton.A)) 70 | { 71 | mat.color = Color.green; 72 | } 73 | 74 | if (playerOne.GetButtonDown(PressedButton.B)) 75 | { 76 | mat.color = Color.red; 77 | } 78 | 79 | if (playerOne.GetButtonDown(PressedButton.X)) 80 | { 81 | mat.color = Color.blue; 82 | } 83 | 84 | if (playerOne.GetButtonDown(PressedButton.Y)) 85 | { 86 | mat.color = Color.yellow; 87 | } 88 | 89 | if (playerOne.GetButton(InputAxis.LT)) 90 | { 91 | modifiedObject.localScale += 2 * Time.deltaTime * Vector3.one; 92 | } 93 | 94 | if (playerOne.GetButton(InputAxis.RT)) 95 | { 96 | modifiedObject.localScale -= 2 * Time.deltaTime * Vector3.one; 97 | } 98 | 99 | if (playerOne.GetButtonDown(PressedButton.LS)) 100 | { 101 | playerOne.SwitchInputs(InputAxis.RT, PressedButton.B); 102 | playerOne.SaveCustomScheme(Application.dataPath + "/Controller Input Manager/Demo/PlayerOneControl"); 103 | } 104 | 105 | if (playerOne.GetButtonDown(PressedButton.RS)) 106 | { 107 | playerOne.SwitchInputs(InputAxis.LEFTX, InputAxis.RIGHTX); 108 | playerOne.SwitchInputs(InputAxis.LEFTY, InputAxis.RIGHTY); 109 | playerOne.SaveCustomScheme(Application.dataPath + "/Controller Input Manager/Demo/PlayerOneControl"); 110 | } 111 | if (playerOne.GetButtonDown(PressedButton.START)) 112 | { 113 | playerOne.ResetToDefault(); 114 | } 115 | 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /Assets/Controller Input Manager/Demo/PlayerOneControl: -------------------------------------------------------------------------------- 1 | A=Joystick1Button1 2 | B=Joystick1Button0 3 | X=Joystick1Button2 4 | Y=Joystick1Button3 5 | LB=Joystick1Button4 6 | RB=Joystick1Button5 7 | BACK=Joystick1Button6 8 | START=Joystick1Button7 9 | LS=Joystick1Button8 10 | RS=Joystick1Button9 11 | LEFTX=Gamepad1A4 12 | LEFTY=Gamepad1A5 13 | RIGHTX=Gamepad1AX 14 | RIGHTY=Gamepad1AY 15 | DPADX=Gamepad1A6 16 | DPADY=Gamepad1A7 17 | RT=Gamepad1A9 18 | LT=Gamepad1A10 19 | -------------------------------------------------------------------------------- /Assets/Controller Input Manager/Demo/Scene.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 8 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641258, b: 0.5748172, a: 1} 42 | --- !u!157 &3 43 | LightmapSettings: 44 | m_ObjectHideFlags: 0 45 | serializedVersion: 11 46 | m_GIWorkflowMode: 0 47 | m_GISettings: 48 | serializedVersion: 2 49 | m_BounceScale: 1 50 | m_IndirectOutputScale: 1 51 | m_AlbedoBoost: 1 52 | m_TemporalCoherenceThreshold: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 1 56 | m_LightmapEditorSettings: 57 | serializedVersion: 9 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_TextureWidth: 1024 61 | m_TextureHeight: 1024 62 | m_AO: 0 63 | m_AOMaxDistance: 1 64 | m_CompAOExponent: 1 65 | m_CompAOExponentDirect: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 0 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 500 79 | m_PVRBounces: 2 80 | m_PVRFilterTypeDirect: 0 81 | m_PVRFilterTypeIndirect: 0 82 | m_PVRFilterTypeAO: 0 83 | m_PVRFilteringMode: 1 84 | m_PVRCulling: 1 85 | m_PVRFilteringGaussRadiusDirect: 1 86 | m_PVRFilteringGaussRadiusIndirect: 5 87 | m_PVRFilteringGaussRadiusAO: 2 88 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 89 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 90 | m_PVRFilteringAtrousPositionSigmaAO: 1 91 | m_LightingDataAsset: {fileID: 0} 92 | m_UseShadowmask: 1 93 | --- !u!196 &4 94 | NavMeshSettings: 95 | serializedVersion: 2 96 | m_ObjectHideFlags: 0 97 | m_BuildSettings: 98 | serializedVersion: 2 99 | agentTypeID: 0 100 | agentRadius: 0.5 101 | agentHeight: 2 102 | agentSlope: 45 103 | agentClimb: 0.4 104 | ledgeDropHeight: 0 105 | maxJumpAcrossDistance: 0 106 | minRegionArea: 2 107 | manualCellSize: 0 108 | cellSize: 0.16666667 109 | manualTileSize: 0 110 | tileSize: 256 111 | accuratePlacement: 0 112 | debug: 113 | m_Flags: 0 114 | m_NavMeshData: {fileID: 0} 115 | --- !u!1 &37303128 116 | GameObject: 117 | m_ObjectHideFlags: 0 118 | m_PrefabParentObject: {fileID: 0} 119 | m_PrefabInternal: {fileID: 0} 120 | serializedVersion: 5 121 | m_Component: 122 | - component: {fileID: 37303130} 123 | - component: {fileID: 37303129} 124 | m_Layer: 0 125 | m_Name: Directional Light 126 | m_TagString: Untagged 127 | m_Icon: {fileID: 0} 128 | m_NavMeshLayer: 0 129 | m_StaticEditorFlags: 0 130 | m_IsActive: 1 131 | --- !u!108 &37303129 132 | Light: 133 | m_ObjectHideFlags: 0 134 | m_PrefabParentObject: {fileID: 0} 135 | m_PrefabInternal: {fileID: 0} 136 | m_GameObject: {fileID: 37303128} 137 | m_Enabled: 1 138 | serializedVersion: 8 139 | m_Type: 1 140 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 141 | m_Intensity: 1 142 | m_Range: 10 143 | m_SpotAngle: 30 144 | m_CookieSize: 10 145 | m_Shadows: 146 | m_Type: 2 147 | m_Resolution: -1 148 | m_CustomResolution: -1 149 | m_Strength: 1 150 | m_Bias: 0.05 151 | m_NormalBias: 0.4 152 | m_NearPlane: 0.2 153 | m_Cookie: {fileID: 0} 154 | m_DrawHalo: 0 155 | m_Flare: {fileID: 0} 156 | m_RenderMode: 0 157 | m_CullingMask: 158 | serializedVersion: 2 159 | m_Bits: 4294967295 160 | m_Lightmapping: 4 161 | m_AreaSize: {x: 1, y: 1} 162 | m_BounceIntensity: 1 163 | m_ColorTemperature: 6570 164 | m_UseColorTemperature: 0 165 | m_ShadowRadius: 0 166 | m_ShadowAngle: 0 167 | --- !u!4 &37303130 168 | Transform: 169 | m_ObjectHideFlags: 0 170 | m_PrefabParentObject: {fileID: 0} 171 | m_PrefabInternal: {fileID: 0} 172 | m_GameObject: {fileID: 37303128} 173 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 174 | m_LocalPosition: {x: 0, y: 3, z: 0} 175 | m_LocalScale: {x: 1, y: 1, z: 1} 176 | m_Children: [] 177 | m_Father: {fileID: 0} 178 | m_RootOrder: 1 179 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 180 | --- !u!1 &112121162 181 | GameObject: 182 | m_ObjectHideFlags: 0 183 | m_PrefabParentObject: {fileID: 0} 184 | m_PrefabInternal: {fileID: 0} 185 | serializedVersion: 5 186 | m_Component: 187 | - component: {fileID: 112121163} 188 | - component: {fileID: 112121164} 189 | m_Layer: 0 190 | m_Name: GameObject 191 | m_TagString: Untagged 192 | m_Icon: {fileID: 0} 193 | m_NavMeshLayer: 0 194 | m_StaticEditorFlags: 0 195 | m_IsActive: 1 196 | --- !u!4 &112121163 197 | Transform: 198 | m_ObjectHideFlags: 0 199 | m_PrefabParentObject: {fileID: 0} 200 | m_PrefabInternal: {fileID: 0} 201 | m_GameObject: {fileID: 112121162} 202 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 203 | m_LocalPosition: {x: 0, y: 1, z: -10} 204 | m_LocalScale: {x: 1, y: 1, z: 1} 205 | m_Children: [] 206 | m_Father: {fileID: 0} 207 | m_RootOrder: 3 208 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 209 | --- !u!114 &112121164 210 | MonoBehaviour: 211 | m_ObjectHideFlags: 0 212 | m_PrefabParentObject: {fileID: 0} 213 | m_PrefabInternal: {fileID: 0} 214 | m_GameObject: {fileID: 112121162} 215 | m_Enabled: 1 216 | m_EditorHideFlags: 0 217 | m_Script: {fileID: 11500000, guid: d0a8fb9d0d9bd8649a6941967d36d43e, type: 3} 218 | m_Name: 219 | m_EditorClassIdentifier: 220 | modifiedObject: {fileID: 1106876394} 221 | cube: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 222 | sphere: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} 223 | cylinder: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} 224 | capsule: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} 225 | --- !u!1 &1106876390 226 | GameObject: 227 | m_ObjectHideFlags: 0 228 | m_PrefabParentObject: {fileID: 0} 229 | m_PrefabInternal: {fileID: 0} 230 | serializedVersion: 5 231 | m_Component: 232 | - component: {fileID: 1106876394} 233 | - component: {fileID: 1106876393} 234 | - component: {fileID: 1106876392} 235 | - component: {fileID: 1106876391} 236 | m_Layer: 0 237 | m_Name: Cube 238 | m_TagString: Untagged 239 | m_Icon: {fileID: 0} 240 | m_NavMeshLayer: 0 241 | m_StaticEditorFlags: 0 242 | m_IsActive: 1 243 | --- !u!23 &1106876391 244 | MeshRenderer: 245 | m_ObjectHideFlags: 0 246 | m_PrefabParentObject: {fileID: 0} 247 | m_PrefabInternal: {fileID: 0} 248 | m_GameObject: {fileID: 1106876390} 249 | m_Enabled: 1 250 | m_CastShadows: 1 251 | m_ReceiveShadows: 1 252 | m_DynamicOccludee: 1 253 | m_MotionVectors: 1 254 | m_LightProbeUsage: 1 255 | m_ReflectionProbeUsage: 1 256 | m_Materials: 257 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 258 | m_StaticBatchInfo: 259 | firstSubMesh: 0 260 | subMeshCount: 0 261 | m_StaticBatchRoot: {fileID: 0} 262 | m_ProbeAnchor: {fileID: 0} 263 | m_LightProbeVolumeOverride: {fileID: 0} 264 | m_ScaleInLightmap: 1 265 | m_PreserveUVs: 1 266 | m_IgnoreNormalsForChartDetection: 0 267 | m_ImportantGI: 0 268 | m_StitchLightmapSeams: 0 269 | m_SelectedEditorRenderState: 3 270 | m_MinimumChartSize: 4 271 | m_AutoUVMaxDistance: 0.5 272 | m_AutoUVMaxAngle: 89 273 | m_LightmapParameters: {fileID: 0} 274 | m_SortingLayerID: 0 275 | m_SortingLayer: 0 276 | m_SortingOrder: 0 277 | --- !u!65 &1106876392 278 | BoxCollider: 279 | m_ObjectHideFlags: 0 280 | m_PrefabParentObject: {fileID: 0} 281 | m_PrefabInternal: {fileID: 0} 282 | m_GameObject: {fileID: 1106876390} 283 | m_Material: {fileID: 0} 284 | m_IsTrigger: 0 285 | m_Enabled: 1 286 | serializedVersion: 2 287 | m_Size: {x: 1, y: 1, z: 1} 288 | m_Center: {x: 0, y: 0, z: 0} 289 | --- !u!33 &1106876393 290 | MeshFilter: 291 | m_ObjectHideFlags: 0 292 | m_PrefabParentObject: {fileID: 0} 293 | m_PrefabInternal: {fileID: 0} 294 | m_GameObject: {fileID: 1106876390} 295 | m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} 296 | --- !u!4 &1106876394 297 | Transform: 298 | m_ObjectHideFlags: 0 299 | m_PrefabParentObject: {fileID: 0} 300 | m_PrefabInternal: {fileID: 0} 301 | m_GameObject: {fileID: 1106876390} 302 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 303 | m_LocalPosition: {x: 0, y: 0, z: 0} 304 | m_LocalScale: {x: 1, y: 1, z: 1} 305 | m_Children: [] 306 | m_Father: {fileID: 0} 307 | m_RootOrder: 2 308 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 309 | --- !u!1 &1824054058 310 | GameObject: 311 | m_ObjectHideFlags: 0 312 | m_PrefabParentObject: {fileID: 0} 313 | m_PrefabInternal: {fileID: 0} 314 | serializedVersion: 5 315 | m_Component: 316 | - component: {fileID: 1824054063} 317 | - component: {fileID: 1824054062} 318 | - component: {fileID: 1824054061} 319 | - component: {fileID: 1824054060} 320 | m_Layer: 0 321 | m_Name: Main Camera 322 | m_TagString: MainCamera 323 | m_Icon: {fileID: 0} 324 | m_NavMeshLayer: 0 325 | m_StaticEditorFlags: 0 326 | m_IsActive: 1 327 | --- !u!81 &1824054060 328 | AudioListener: 329 | m_ObjectHideFlags: 0 330 | m_PrefabParentObject: {fileID: 0} 331 | m_PrefabInternal: {fileID: 0} 332 | m_GameObject: {fileID: 1824054058} 333 | m_Enabled: 1 334 | --- !u!124 &1824054061 335 | Behaviour: 336 | m_ObjectHideFlags: 0 337 | m_PrefabParentObject: {fileID: 0} 338 | m_PrefabInternal: {fileID: 0} 339 | m_GameObject: {fileID: 1824054058} 340 | m_Enabled: 1 341 | --- !u!20 &1824054062 342 | Camera: 343 | m_ObjectHideFlags: 0 344 | m_PrefabParentObject: {fileID: 0} 345 | m_PrefabInternal: {fileID: 0} 346 | m_GameObject: {fileID: 1824054058} 347 | m_Enabled: 1 348 | serializedVersion: 2 349 | m_ClearFlags: 1 350 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 351 | m_NormalizedViewPortRect: 352 | serializedVersion: 2 353 | x: 0 354 | y: 0 355 | width: 1 356 | height: 1 357 | near clip plane: 0.3 358 | far clip plane: 1000 359 | field of view: 60 360 | orthographic: 0 361 | orthographic size: 5 362 | m_Depth: -1 363 | m_CullingMask: 364 | serializedVersion: 2 365 | m_Bits: 4294967295 366 | m_RenderingPath: -1 367 | m_TargetTexture: {fileID: 0} 368 | m_TargetDisplay: 0 369 | m_TargetEye: 3 370 | m_HDR: 1 371 | m_AllowMSAA: 1 372 | m_ForceIntoRT: 0 373 | m_OcclusionCulling: 1 374 | m_StereoConvergence: 10 375 | m_StereoSeparation: 0.022 376 | --- !u!4 &1824054063 377 | Transform: 378 | m_ObjectHideFlags: 0 379 | m_PrefabParentObject: {fileID: 0} 380 | m_PrefabInternal: {fileID: 0} 381 | m_GameObject: {fileID: 1824054058} 382 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 383 | m_LocalPosition: {x: 0, y: 1, z: -10} 384 | m_LocalScale: {x: 1, y: 1, z: 1} 385 | m_Children: [] 386 | m_Father: {fileID: 0} 387 | m_RootOrder: 0 388 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 389 | -------------------------------------------------------------------------------- /InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Gamepad1AX 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: 13 | positiveButton: 14 | altNegativeButton: 15 | altPositiveButton: 16 | gravity: 0.3 17 | dead: 0.1 18 | sensitivity: 1 19 | snap: 0 20 | invert: 0 21 | type: 2 22 | axis: 0 23 | joyNum: 1 24 | - serializedVersion: 3 25 | m_Name: Gamepad1AY 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: 29 | positiveButton: 30 | altNegativeButton: 31 | altPositiveButton: 32 | gravity: 0.3 33 | dead: 0.1 34 | sensitivity: 1 35 | snap: 0 36 | invert: 0 37 | type: 2 38 | axis: 1 39 | joyNum: 1 40 | - serializedVersion: 3 41 | m_Name: Gamepad1A3 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: 46 | altNegativeButton: 47 | altPositiveButton: 48 | gravity: 0.3 49 | dead: 0.1 50 | sensitivity: 1 51 | snap: 0 52 | invert: 0 53 | type: 2 54 | axis: 2 55 | joyNum: 1 56 | - serializedVersion: 3 57 | m_Name: Gamepad1A4 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: 62 | altNegativeButton: 63 | altPositiveButton: 64 | gravity: 0.3 65 | dead: 0.1 66 | sensitivity: 1 67 | snap: 0 68 | invert: 0 69 | type: 2 70 | axis: 3 71 | joyNum: 1 72 | - serializedVersion: 3 73 | m_Name: Gamepad1A5 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: 78 | altNegativeButton: 79 | altPositiveButton: 80 | gravity: 0.3 81 | dead: 0.1 82 | sensitivity: 1 83 | snap: 0 84 | invert: 0 85 | type: 2 86 | axis: 4 87 | joyNum: 1 88 | - serializedVersion: 3 89 | m_Name: Gamepad1A6 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 0.3 97 | dead: 0.1 98 | sensitivity: 1 99 | snap: 0 100 | invert: 0 101 | type: 2 102 | axis: 5 103 | joyNum: 1 104 | - serializedVersion: 3 105 | m_Name: Gamepad1A7 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0.3 113 | dead: 0.1 114 | sensitivity: 1 115 | snap: 0 116 | invert: 0 117 | type: 2 118 | axis: 6 119 | joyNum: 1 120 | - serializedVersion: 3 121 | m_Name: Gamepad1A8 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0.3 129 | dead: 0.1 130 | sensitivity: 1 131 | snap: 0 132 | invert: 0 133 | type: 2 134 | axis: 7 135 | joyNum: 1 136 | - serializedVersion: 3 137 | m_Name: Gamepad1A9 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0.3 145 | dead: 0.1 146 | sensitivity: 1 147 | snap: 0 148 | invert: 0 149 | type: 2 150 | axis: 8 151 | joyNum: 1 152 | - serializedVersion: 3 153 | m_Name: Gamepad1A10 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0.3 161 | dead: 0.1 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 9 167 | joyNum: 1 168 | - serializedVersion: 3 169 | m_Name: Gamepad2AX 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0.3 177 | dead: 0.1 178 | sensitivity: 1 179 | snap: 0 180 | invert: 0 181 | type: 2 182 | axis: 0 183 | joyNum: 2 184 | - serializedVersion: 3 185 | m_Name: Gamepad2AY 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 0.3 193 | dead: 0.1 194 | sensitivity: 1 195 | snap: 0 196 | invert: 0 197 | type: 2 198 | axis: 1 199 | joyNum: 2 200 | - serializedVersion: 3 201 | m_Name: Gamepad2A3 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 0.3 209 | dead: 0.1 210 | sensitivity: 1 211 | snap: 0 212 | invert: 0 213 | type: 2 214 | axis: 2 215 | joyNum: 2 216 | - serializedVersion: 3 217 | m_Name: Gamepad2A4 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 0.3 225 | dead: 0.1 226 | sensitivity: 1 227 | snap: 0 228 | invert: 0 229 | type: 2 230 | axis: 3 231 | joyNum: 2 232 | - serializedVersion: 3 233 | m_Name: Gamepad2A5 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 0.3 241 | dead: 0.1 242 | sensitivity: 1 243 | snap: 0 244 | invert: 0 245 | type: 2 246 | axis: 4 247 | joyNum: 2 248 | - serializedVersion: 3 249 | m_Name: Gamepad2A6 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: 254 | altNegativeButton: 255 | altPositiveButton: 256 | gravity: 0.3 257 | dead: 0.1 258 | sensitivity: 1 259 | snap: 0 260 | invert: 0 261 | type: 2 262 | axis: 5 263 | joyNum: 2 264 | - serializedVersion: 3 265 | m_Name: Gamepad2A7 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: 270 | altNegativeButton: 271 | altPositiveButton: 272 | gravity: 0.3 273 | dead: 0.1 274 | sensitivity: 1 275 | snap: 0 276 | invert: 0 277 | type: 2 278 | axis: 6 279 | joyNum: 2 280 | - serializedVersion: 3 281 | m_Name: Gamepad2A8 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: 286 | altNegativeButton: 287 | altPositiveButton: 288 | gravity: 0.3 289 | dead: 0.1 290 | sensitivity: 1 291 | snap: 0 292 | invert: 0 293 | type: 2 294 | axis: 7 295 | joyNum: 2 296 | - serializedVersion: 3 297 | m_Name: Gamepad2A9 298 | descriptiveName: 299 | descriptiveNegativeName: 300 | negativeButton: 301 | positiveButton: 302 | altNegativeButton: 303 | altPositiveButton: 304 | gravity: 0.3 305 | dead: 0.1 306 | sensitivity: 1 307 | snap: 0 308 | invert: 0 309 | type: 2 310 | axis: 8 311 | joyNum: 2 312 | - serializedVersion: 3 313 | m_Name: Gamepad2A10 314 | descriptiveName: 315 | descriptiveNegativeName: 316 | negativeButton: 317 | positiveButton: 318 | altNegativeButton: 319 | altPositiveButton: 320 | gravity: 0.3 321 | dead: 0.1 322 | sensitivity: 1 323 | snap: 0 324 | invert: 0 325 | type: 2 326 | axis: 9 327 | joyNum: 2 328 | - serializedVersion: 3 329 | m_Name: Gamepad3AX 330 | descriptiveName: 331 | descriptiveNegativeName: 332 | negativeButton: 333 | positiveButton: 334 | altNegativeButton: 335 | altPositiveButton: 336 | gravity: 0.3 337 | dead: 0.1 338 | sensitivity: 1 339 | snap: 0 340 | invert: 0 341 | type: 2 342 | axis: 0 343 | joyNum: 3 344 | - serializedVersion: 3 345 | m_Name: Gamepad3AY 346 | descriptiveName: 347 | descriptiveNegativeName: 348 | negativeButton: 349 | positiveButton: 350 | altNegativeButton: 351 | altPositiveButton: 352 | gravity: 0.3 353 | dead: 0.1 354 | sensitivity: 1 355 | snap: 0 356 | invert: 0 357 | type: 2 358 | axis: 1 359 | joyNum: 3 360 | - serializedVersion: 3 361 | m_Name: Gamepad3A3 362 | descriptiveName: 363 | descriptiveNegativeName: 364 | negativeButton: 365 | positiveButton: 366 | altNegativeButton: 367 | altPositiveButton: 368 | gravity: 0.3 369 | dead: 0.1 370 | sensitivity: 1 371 | snap: 0 372 | invert: 0 373 | type: 2 374 | axis: 2 375 | joyNum: 3 376 | - serializedVersion: 3 377 | m_Name: Gamepad3A4 378 | descriptiveName: 379 | descriptiveNegativeName: 380 | negativeButton: 381 | positiveButton: 382 | altNegativeButton: 383 | altPositiveButton: 384 | gravity: 0.3 385 | dead: 0.1 386 | sensitivity: 1 387 | snap: 0 388 | invert: 0 389 | type: 2 390 | axis: 3 391 | joyNum: 3 392 | - serializedVersion: 3 393 | m_Name: Gamepad3A5 394 | descriptiveName: 395 | descriptiveNegativeName: 396 | negativeButton: 397 | positiveButton: 398 | altNegativeButton: 399 | altPositiveButton: 400 | gravity: 0.3 401 | dead: 0.1 402 | sensitivity: 1 403 | snap: 0 404 | invert: 0 405 | type: 2 406 | axis: 4 407 | joyNum: 3 408 | - serializedVersion: 3 409 | m_Name: Gamepad3A6 410 | descriptiveName: 411 | descriptiveNegativeName: 412 | negativeButton: 413 | positiveButton: 414 | altNegativeButton: 415 | altPositiveButton: 416 | gravity: 0.3 417 | dead: 0.1 418 | sensitivity: 1 419 | snap: 0 420 | invert: 0 421 | type: 2 422 | axis: 5 423 | joyNum: 3 424 | - serializedVersion: 3 425 | m_Name: Gamepad3A7 426 | descriptiveName: 427 | descriptiveNegativeName: 428 | negativeButton: 429 | positiveButton: 430 | altNegativeButton: 431 | altPositiveButton: 432 | gravity: 0.3 433 | dead: 0.1 434 | sensitivity: 1 435 | snap: 0 436 | invert: 0 437 | type: 2 438 | axis: 6 439 | joyNum: 3 440 | - serializedVersion: 3 441 | m_Name: Gamepad3A8 442 | descriptiveName: 443 | descriptiveNegativeName: 444 | negativeButton: 445 | positiveButton: 446 | altNegativeButton: 447 | altPositiveButton: 448 | gravity: 0.3 449 | dead: 0.1 450 | sensitivity: 1 451 | snap: 0 452 | invert: 0 453 | type: 2 454 | axis: 7 455 | joyNum: 3 456 | - serializedVersion: 3 457 | m_Name: Gamepad3A9 458 | descriptiveName: 459 | descriptiveNegativeName: 460 | negativeButton: 461 | positiveButton: 462 | altNegativeButton: 463 | altPositiveButton: 464 | gravity: 0.3 465 | dead: 0.1 466 | sensitivity: 1 467 | snap: 0 468 | invert: 0 469 | type: 2 470 | axis: 8 471 | joyNum: 3 472 | - serializedVersion: 3 473 | m_Name: Gamepad3A10 474 | descriptiveName: 475 | descriptiveNegativeName: 476 | negativeButton: 477 | positiveButton: 478 | altNegativeButton: 479 | altPositiveButton: 480 | gravity: 0.3 481 | dead: 0.1 482 | sensitivity: 1 483 | snap: 0 484 | invert: 0 485 | type: 2 486 | axis: 9 487 | joyNum: 3 488 | - serializedVersion: 3 489 | m_Name: Gamepad4AX 490 | descriptiveName: 491 | descriptiveNegativeName: 492 | negativeButton: 493 | positiveButton: 494 | altNegativeButton: 495 | altPositiveButton: 496 | gravity: 0.3 497 | dead: 0.1 498 | sensitivity: 1 499 | snap: 0 500 | invert: 0 501 | type: 2 502 | axis: 0 503 | joyNum: 4 504 | - serializedVersion: 3 505 | m_Name: Gamepad4AY 506 | descriptiveName: 507 | descriptiveNegativeName: 508 | negativeButton: 509 | positiveButton: 510 | altNegativeButton: 511 | altPositiveButton: 512 | gravity: 0.3 513 | dead: 0.1 514 | sensitivity: 1 515 | snap: 0 516 | invert: 0 517 | type: 2 518 | axis: 1 519 | joyNum: 4 520 | - serializedVersion: 3 521 | m_Name: Gamepad4A3 522 | descriptiveName: 523 | descriptiveNegativeName: 524 | negativeButton: 525 | positiveButton: 526 | altNegativeButton: 527 | altPositiveButton: 528 | gravity: 0.3 529 | dead: 0.1 530 | sensitivity: 1 531 | snap: 0 532 | invert: 0 533 | type: 2 534 | axis: 2 535 | joyNum: 4 536 | - serializedVersion: 3 537 | m_Name: Gamepad4A4 538 | descriptiveName: 539 | descriptiveNegativeName: 540 | negativeButton: 541 | positiveButton: 542 | altNegativeButton: 543 | altPositiveButton: 544 | gravity: 0.3 545 | dead: 0.1 546 | sensitivity: 1 547 | snap: 0 548 | invert: 0 549 | type: 2 550 | axis: 3 551 | joyNum: 4 552 | - serializedVersion: 3 553 | m_Name: Gamepad4A5 554 | descriptiveName: 555 | descriptiveNegativeName: 556 | negativeButton: 557 | positiveButton: 558 | altNegativeButton: 559 | altPositiveButton: 560 | gravity: 0.3 561 | dead: 0.1 562 | sensitivity: 1 563 | snap: 0 564 | invert: 0 565 | type: 2 566 | axis: 4 567 | joyNum: 4 568 | - serializedVersion: 3 569 | m_Name: Gamepad4A6 570 | descriptiveName: 571 | descriptiveNegativeName: 572 | negativeButton: 573 | positiveButton: 574 | altNegativeButton: 575 | altPositiveButton: 576 | gravity: 0.3 577 | dead: 0.1 578 | sensitivity: 1 579 | snap: 0 580 | invert: 0 581 | type: 2 582 | axis: 5 583 | joyNum: 4 584 | - serializedVersion: 3 585 | m_Name: Gamepad4A7 586 | descriptiveName: 587 | descriptiveNegativeName: 588 | negativeButton: 589 | positiveButton: 590 | altNegativeButton: 591 | altPositiveButton: 592 | gravity: 0.3 593 | dead: 0.1 594 | sensitivity: 1 595 | snap: 0 596 | invert: 0 597 | type: 2 598 | axis: 6 599 | joyNum: 4 600 | - serializedVersion: 3 601 | m_Name: Gamepad4A8 602 | descriptiveName: 603 | descriptiveNegativeName: 604 | negativeButton: 605 | positiveButton: 606 | altNegativeButton: 607 | altPositiveButton: 608 | gravity: 0.3 609 | dead: 0.1 610 | sensitivity: 1 611 | snap: 0 612 | invert: 0 613 | type: 2 614 | axis: 7 615 | joyNum: 4 616 | - serializedVersion: 3 617 | m_Name: Gamepad4A9 618 | descriptiveName: 619 | descriptiveNegativeName: 620 | negativeButton: 621 | positiveButton: 622 | altNegativeButton: 623 | altPositiveButton: 624 | gravity: 0.3 625 | dead: 0.1 626 | sensitivity: 1 627 | snap: 0 628 | invert: 0 629 | type: 2 630 | axis: 8 631 | joyNum: 4 632 | - serializedVersion: 3 633 | m_Name: Gamepad4A10 634 | descriptiveName: 635 | descriptiveNegativeName: 636 | negativeButton: 637 | positiveButton: 638 | altNegativeButton: 639 | altPositiveButton: 640 | gravity: 0.3 641 | dead: 0.1 642 | sensitivity: 1 643 | snap: 0 644 | invert: 0 645 | type: 2 646 | axis: 9 647 | joyNum: 4 648 | 649 | -------------------------------------------------------------------------------- /InputManagerAdder/.vs/InputManagerAdder/v15/Server/sqlite3/db.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/beef331/Unity-Controller-Manager/3e953b324a7a1671df05b9423f06368919a77656/InputManagerAdder/.vs/InputManagerAdder/v15/Server/sqlite3/db.lock -------------------------------------------------------------------------------- /InputManagerAdder/.vs/InputManagerAdder/v15/Server/sqlite3/storage.ide: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/beef331/Unity-Controller-Manager/3e953b324a7a1671df05b9423f06368919a77656/InputManagerAdder/.vs/InputManagerAdder/v15/Server/sqlite3/storage.ide -------------------------------------------------------------------------------- /InputManagerAdder/InputManagerAdder/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /InputManagerAdder/InputManagerAdder/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /InputManagerAdder/InputManagerAdder/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | 9 | namespace InputManagerAdder 10 | { 11 | /// 12 | /// Interaction logic for App.xaml 13 | /// 14 | public partial class App : Application 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /InputManagerAdder/InputManagerAdder/MainWindow.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 |