Search Unity

  1. Unity 2019.2 is now released.
    Dismiss Notice

Rewired - Advanced Input for Unity

Discussion in 'Assets and Asset Store' started by guavaman, Sep 25, 2014.

  1. aaversa

    aaversa

    Joined:
    Sep 5, 2016
    Posts:
    19
    Ah thanks for responding here, I didn't want to send a 3rd email in a row :)

    I'm still a little confused here. To clarify again:

    1. I clear ALL player prefs.
    2. I start the game. Default arrow key movement is loaded.
    3. Using Control Mapper ingame, I rebind arrow key movement to WASD.
    4. I confirm that ONLY WASD is active.
    5. I close the game.
    6. I load the game again - both arrow keys and WASD are active.

    Since I'm trying to diagnose the problem of mappings not saving/loading correctly, at NO point in steps 1-6 am I using LoadMaps / RemoveMaps etc. There is nothing in script that is saving or loading maps of any kind.

    Why, in step #6, are two mappings loaded? Shouldn't PlayerPrefs ONLY contain what the player is using? Otherwise, what is the purpose of PlayerPrefs as storage at all?

    For the purposes of this specific issue, all I'm trying to do is save and load changes that the user has made to their key bindings. Forget for a moment my whole preset layout thing.
     
    Last edited: May 30, 2017
  2. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    Sorry about the delay. I was working on the attached zip.

    Edit: Sorry, I didn't read your above post very well and didn't see that you said you cleared Player Prefs because I was eager to post this example. That does not sound right... Will get back to you in another post. Put this Layouts thing on hold and we'll deal with the current problem first.

    You were working with maps in different Layouts before using Control Mapper which saves maps when controllers are attached, detached, and when the UI is closed. You have saved XML data in PlayerPrefs that has Keyboard Maps in the same category in both Default and WASD layouts. Because all Keyboard Maps that are saved to XML will be loaded by UserDataStore, it's loading maps in both layouts that it finds. Clear your PlayerPrefs and this will stop. However, it will start again once you save multiple keyboard maps in the same category with different Layouts with Control Mapper.

    The only way to solve this is to change the UserDataStore to only load maps from one Layout, not all it finds. I have attached a Zip file that does exactly this. It's a new UserDataStore component and a new class called PersistentPlayerSettings.

    Using the PersistentPlayerSettings class, you can specify persistent Layouts for each Player, for each Controller Type, for each Map Category. These persistent settings are saved and loaded in PlayerPrefs so your "current layouts" settings will persist between runs. When UserDataStore loads controller maps, it will now use your "current layouts" settings to load only those maps found in your specified "current layouts."

    There is an additional class called LayoutHelper which can help you easily switch between layouts. It will handle both loading from the Rewired Input Manager defaults and/or any saved XML. (Loaded saved XML will override defaults.) An example scene is included with a script that shows how to use the LayoutHelper to change your current layout.

    By default, PersistentPlayerSettings will load its data on start. Change the loadOnStart constant at the top of the class if you don't want it to do that.

    This system could be expanded to persist even more Player data between runs as needed.

    Edit: The file has been updated.
     

    Attached Files:

    Last edited: May 31, 2017
  3. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    I can't reproduce anything like that using the Control Mapper demo scene. Can you try the same thing using the demo scene? Also, can you show me a picture of the Keyboard Maps you have assigned to your Player in the Rewired Input Manager so I can try reproducing it?
     
  4. aaversa

    aaversa

    Joined:
    Sep 5, 2016
    Posts:
    19
    I'm so beyond confused by this issue now... Would it be possible to do Skype / screensharing to show you what's going on? I simply can't make sense of it.

    My best guess is that when I use RemoveMaps to try and clear old bindings, this clears the data INGAME but does not clear anything from PlayerPrefs. I don't understand why this is the case. If the bindings have changed in the Control Mapper... Why wouldn't that overwrite the original bindings in PlayerPrefs also?
     

    Attached Files:

  5. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    We can try if need be but I'd like to just get the information first and see if I can figure it out. Please send me a screenshot of the Keyboard Map assignment screen on the Players page. Like this:

    players.png

    I need to know whether you have maps assigned to the Player in multiple Layouts. If you have too many to fit on the screen shot, just list them as text instead like this:

    Category: Default
    Layout: Default

    Category: Default
    Layout: WASD

    That is correct. Remove maps does not have any effect on saved XML. It only removes map in the Player class. XML data is entirely separate and is not handled by any part of the Rewired API except UserDataStore.

    Some background that's not really relevant to your issue, but anyway... User save data was meant to be handled by the developer. It was not made an integral part of the Rewired system for maximum flexibility. The included PlayerPrefs system is just a basic default implementation for convenience. This could be replaced by a more robust database system, binary save files, or even cloud saving. It's really up to the developer's needs. It was not designed to be one-size-fits all. Some developers might need to save per-user-account input configurations. Some may want to parse the saved data and modify it for various reasons before loading. This is all possible because the system isn't designed to just work in one way.

    It would, as long as you closed the Control Mapper window before stopping the Play mode. If you don't do that, it won't save it.
     
    Last edited: May 30, 2017
  6. aaversa

    aaversa

    Joined:
    Sep 5, 2016
    Posts:
    19
    OK, I've attached that screenshot here.

    I still can't wrap my head around the difference between the control mapper settings vs. XML vs. player prefs.

    Again - I am staring at my Control Mapper post-initial game load, and the only movement bindings are clearly W/A/S/D. I hit "Done". I confirm with Debug.Log that the only bindings are WASD. I close the game, re-open it - *NO* LoadMap is run at all - and the Default mapping (arrow keys) has loaded, with WASD on top.
     

    Attached Files:

  7. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    I'll try to explain:
    • UserDataStore - Base class component that makes saving and loading persistent data easier.
    • UserDataStore_PlayerPrefs - A sub-class of UserDataStore that saves the data to PlayerPrefs. UserDataStore saves XML strings to PlayerPrefs. The XML strings are nothing but a dump of the data from all the Controller Maps, Input Behaviours, Calibration settings, etc. from the various Rewired objects.
    • XML - Just the data format this information is saved in.
    • Control Mapper - Calls Save and Load on UserDataStore when it needs to save and loads information.
    If you are not using UserDataStore or Control Mapper, Rewired does absolutely no saving and loading of any data. Nothing is persisted between sessions otherwise. No part of the Rewired API saves, loads, or modifies any stored persistent data.

    UserDataStore can be replaced with a totally different system that for example saves to the cloud or a database and Control Mapper will still work.

    Okay, that's not supposed to happen. I can't reproduce it in my testing. Can you try the same thing using the Control Mapper demo scene and tell me the results?
     
    Last edited: May 30, 2017
  8. aaversa

    aaversa

    Joined:
    Sep 5, 2016
    Posts:
    19
    No, it does not happen in the demo scene. However the demo scene does not have any default layouts as far as I can tell.

    If I'm understanding you correctly - and I'm probably not? - When I do my ONE-TIME removemaps to get rid of the default arrow key binding, this doesn't actually change the data in UserDataStore? Because if it did, then that default data would not load back up again.

    What I'm trying to do should be really really simple. But I've spent like 10 hours on it. I would be more than happy to pay the price of the plugin again for your help in getting this working or at least understanding what steps I need to take in order to do so. I'm just totally stuck and wasting so much dev time on it.

    It should be so simple. On game load, I want to load up one of two default mapping layouts (arrow keys, or WASD). I already have this in and working. And then I want to make sure that from that point on, that data (and any other changes the player makes to those bindings) is saved and recalled. That's it! And I can't get it working.
     
  9. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    Okay, then it's something in your setup. It's most likely some obscure bug. Can you send me the scene?

    Demo scene does have Default layouts. Default layout always exist.

    Yes, you are understanding correctly. player.controllers.maps.RemoveMaps does not change anything in UserDataStore. It just removes the maps from the Player object.

    I know you are frustrated. Please be patient. I'm trying my best to figure out what is wrong and help you. What you are seeing should not be happening.

    Is there any way you can send me your scene? All I would need is the Rewired Input Manager, the Control Mapper, and any script that is making any kind of change.
     
  10. aaversa

    aaversa

    Joined:
    Sep 5, 2016
    Posts:
    19
    I don't know how to get you those things. Can I just put the .scene in a folder and zip it? How do I include the other materials?
     
  11. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    Yes, as long as the Rewired Input Manager isn't a prefab instance, if it is I'll need the prefab file. If you have a script that calls something to change any maps, just include that in the ZIP. It doesn't matter if it needs other classes. I can just rem out things that are unnecessary. Please send the file either as a PM or to my email.
     
  12. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    For anyone reading, the issue has been resolved. It was as I had suspected related to the switching of Layouts while using Control Mapper causing it to load multiple maps in the same Map Category in different Layouts. The solution I posted in this message worked, changing the UserDataStore system to load only from the currently set layout id. I've updated the file in that post with a couple of fixes and a new method in the LayoutHelper class to restore defaults using the currently set layout id.

    Changing mutually-exclusive layouts wasn't a feature built into Control Mapper or the default UserDataStore_PlayerPrefs, so using them together doesn't automatically work. If you need that feature, see the file posted in the message linked above.
     
  13. PatrikL

    PatrikL

    Joined:
    May 11, 2014
    Posts:
    5
    I'm new to this awesome plugin, and I was wondering what the best way to write my unit tests around it is.

    For example:

    Code (CSharp):
    1. foreach (var player in ReInput.players.Players)
    2. {
    3.     if (player.GetButtonDown("Fire"))
    4.     {
    5.         // Do stuff
    6.     }
    7. }
    Here I would like to be able to make a certain players GetButtonDown("Fire") to return true under certain conditions.
    I was thinking about using NSubstitute, but I couldn't find any interfaces to work with.

    Its perfectly fine to solve this by wrapping what I need in my own interfaces, but I was just wondering if anyone else had a take on this.
     
  14. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    You cannot modify the values of Actions in any way except by using a Custom Controller to input values into the system. That will still not be sufficient for your purposes since the ButtonDown state is calculated based on all the incoming values to that Action over two frames, meaning you can't force it into a Down state because it may be already pressed by another contributing controller and the state is calculated based on the total value
     
  15. FlaxenFlash

    FlaxenFlash

    Joined:
    Oct 15, 2015
    Posts:
    27
    Sorry it took so long to reply to this. I haven't been on the forums much recently. My G29 firmware version is 89.0.25. My Logitech Software version is 8.91.48 if that is any help.
     
  16. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    Thanks! I got access to a G29 and am updating the definition in the next release to match the current driver and firmware. I wasn't able to determine why some users' G29's don't match your settings, so I'm going to assume they're using old firmware and will have to update.
     
  17. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,455
    No problem at all. Thanks for posting your firmware and driver details. It certainly seems like outdated firmware on other G29 wheels is the problem. I have heard other people mention other type of problems with the G920 wheel that were solved by using the latest firmware and drivers too.

    @guavaman looking forward to your next Rewired release. Glad that your G29 testing matched @FlaxenFlash 's results.
     
  18. MatrixNAN

    MatrixNAN

    Joined:
    Apr 11, 2013
    Posts:
    9
    Do you support PS4 move controllers?
     
  19. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    No. You would have to use the PS4 Unity API to get the data from them. Rewired has no gesture binding system anyway which would be required to use motion controls in an Action based system. You can do it through Custom Controllers if you wanted to anyway.
     
  20. Mooshoo-Labs

    Mooshoo-Labs

    Joined:
    Aug 21, 2014
    Posts:
    18
    Hi guavaman,

    I just updated my version of Rewired to the latest 1.1.2.0.

    But now when I create a new axis or button for a custom controller I cannot see the properties of said axis/button.

    Here is a screenshot to illustrate what I mean:


    Cheers,
    T.
     
  21. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    See the patch notice at the top of the front page of the documentation:
    http://guavaman.com/projects/rewired/docs/
     
  22. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    4,607
    Does that mean that we can sniff out the motion control of the joycon too?
     
  23. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    They will not bindable in the Player-Action system, but the data will be accessible through a Controller Extension just like the DS4. You could write a script to watch the movements and trigger Actions using a Custom Controller.
     
    Last edited: Jun 6, 2017
    neoshaman likes this.
  24. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    648
    I did not see it in your Unity asset store page or web site documentation: Does Rewired support @Invector Third Person Controller Template?
     
  25. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    wood333 likes this.
  26. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    648
    I believe that on your main asset store page, the link you have to Inventory Pro is old and connects to the prior deprecated version. You might consider redirecting it to the current version which I believe to be:

    https://www.assetstore.unity3d.com/en/#!/content/66801
     
  27. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    I wasn't aware he deprecated it and released a new package. I will update the documentation and the store page with the new link when I release the next update.
     
    wood333 likes this.
  28. KAJed

    KAJed

    Joined:
    Mar 15, 2013
    Posts:
    12
    Is there any way to have rewired use default controls for ALL controllers? Or do you absolutely need to wire in every controller you want to officially support?
     
  29. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,658
    I have Motion Controller by Ootii and I want to be able to create player control input where if you press both mouse buttons simultaneously that that maps to moving forward as well as allowing you to look around and direct the player in the direction the camera is looking. This is a common control scheme for games like World of Warcraft, LOTRO, etc. Can this be done with Rewired?
     
  30. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    Here is the documentation on mulit-button Actions:
    http://guavaman.com/projects/rewired/docs/HowTos.html#button-combos

     
  31. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,658
    Not exactly what I was hoping for, but I think I could work with that. I love the player-centric concept and how easy it will be to map input for different systems such as PC and console. I will probably get this and see how well it works. I have a game for PC and Wii U and the control schemes are going to be very different.
     
  32. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    There's no need to buy it to see if it works. Get the free trial.

    See the FAQ on WiiU support: http://guavaman.com/projects/rewired/docs/FAQ.html#wiiu-support
     
  33. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,658
    Thanks. I'll try the trial first.
     
  34. MatrixNAN

    MatrixNAN

    Joined:
    Apr 11, 2013
    Posts:
    9
    Thank you for the information. I am getting interested in these motion controllers. I really love rewired is there any chance these types of controllers would be supported in the future. I know this is not a simple request so I understand if the answer is no. The gesture analysis is not a simple thing. I thought about digging into deep learning for it but I think I saw another asset that was already doing the gesture analysis. https://www.assetstore.unity3d.com/en/#!/content/64218

    Cheers,
    Nathaniel Nesler
     
  35. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    There's very little chance Rewired will ever support all the various types of motion analysis. That asset you point to costs twice as much as Rewired and all it does is gesture analysis. Using such analysis would have completely different requirements from the editor perspective and from the game-side code perspective, requiring something completely separate from the Player-Action system. It would essentially have to be a separate system.
     
  36. KJoanette

    KJoanette

    Joined:
    Jun 8, 2013
    Posts:
    58
    Hey guavaman, I'm having an issue with the XBox 360 Controller (via USB) on Windows 7.

    All of the GUIDs seem to match the XBox 360 mapping (when I examine the only live Joystick) but it appears to be using the default dual analog controls.

    Any thoughts? I have an Xbox 360 mapping setup but it just doesn't wanna use it.
     
  37. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    Are you loading saved XML data? Are you using Control Mapper?

    If you have both a Dual Analog Gamepad Template mapping and an Xbox 360 Controller specific mapping for a particular Layout/Category combination, it will always use the Xbox 360 Controller specific mapping instead of the Dual Analog Gamepad Template mapping. If you assigned a Joystick Map to the Player in a specific Category/Layout and a map exists for that only as a Dual Analog Gamepad Template map, it will use that.
     
  38. KJoanette

    KJoanette

    Joined:
    Jun 8, 2013
    Posts:
    58
    Awesome, thank you!
     
  39. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    Did you get it to work?
     
  40. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,455
    @guavaman

    Rewired 1.1.3.0 is available in the asset store.

    That is cool to have native support for Nintendo Switch platform! (Requires a separate download which can be obtained through the Nintendo Developer Portal.)

    Updated Logitech G29 racing wheel definition.

    Love the flight controller MKII Gladiator too ... great stuff.

    I just did a quick look at the version information from the unity asset store. Did not post everything in that version.
     
    guavaman likes this.
  41. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    @longroadhwy I did not expect the Asset Store to approve this update so quickly! Very nice. Here's the release notes:

    1.1.3.0:

    Changes:
    - Added native support for Nintendo Switch platform. (Requires a separate download which can be obtained through the Nintendo Developer Portal.)
    - Touch Joystick: Added Stick Bounds property to allow settings the stick movement bounds to a circle or square shape.
    - Rewired Editor: Added option to export Action Category constants to separate classes.
    - Rewired Editor: Added option to export constants in all caps.

    API Changes:
    - Added Joystick.deviceInstanceGuid property.
    - Added Player.SetVibration method.
    - Added Player.GetVibration method.
    - Added Player.StopVibration method.
    - Added ControlMapper.restoreDefaultsDelegate property.
    - Added TouchJoystick.stickBounds property.
    - Added TouchJoystick.StickBounds enum.

    New Controller Definitions:
    - Mayflash N64 Controller Adapter for PC USB (2-port)
    - VKB-Sim Gladiator MKII

    Modified Controller Definitions:
    - Logitech G29: Updated all platforms for current firmware and driver version, added OSX and Windows fallback definitions.

    Bug Fixes:
    - Rewired Editor: Fixed bug preventing Custom Controller element properties from displaying.
    - Hardware Joystick Map Editor: Fixed exception thrown when setting an axis to be the source of a button in Raw Input and Direct Input.
    - Fixed compile error on Nintendo Switch platform.
    - Control Mapper: Fixed bug preventing custom entries in Language Data from working.
     
  42. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,455
    I am happy the Unity asset store approved it so quickly. Great stuff! Thanks for the full release notes.

    That is amazing to have Nintendo Switch console support too.

    Downloading now! I just love flight controllers. :):):)
     
    guavaman likes this.
  43. KJoanette

    KJoanette

    Joined:
    Jun 8, 2013
    Posts:
    58
    I did. Mentioning that it wouldn't use the Xbox 360 controls if the category wasn't assigned was what did it.
     
    guavaman likes this.
  44. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,455
    Last edited: Jun 15, 2017
  45. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    In case you missed it, the latest release of Rewired added a square touch joystick bounds option.
     
  46. jons190

    jons190

    Joined:
    Sep 13, 2016
    Posts:
    226
    Ho Guavaman. It's Jon from over at the RFPS forum. I saw your reply to my post and wanted to come over here to pick up the thread.

    So basically what I have is: I am building a 3D First person shooter VR game for Gear VR/Oculus. I am using the RFPS prefab as the base engine with Unity and the Oculus SDK and then building to a samsung android device. Also the game requires a bluethooth gamepad due to all the various controls and buttons used. I am also using a bridge script, developed by Tony Li to bridge the input from RFPS/Unity and Rewired.

    Config:
    Unity 5.4.3f
    RFPS 1.24
    Rewired 1.2xxxx (the latest version, D/L yesterday)
    Tony Li/s input bridge script.v 1.0?
    Android 5.0
    OSDK 1.1.0

    For the most part, everything works alright. (There seems to be a strange disconnect from default input mapping to android to gamepad, that no one on the forums seems to fully understand, hence the need for rewired)

    I have all the RFPS controls mapped for a steelseries XL game controller and am currently trying to get he default dual axis controller template setup in addition to the steelseries profile so that general/generic gamepads will just work fine in the android build on Gear VR.

    But then I saw the control mapper option in the new build of rewired (I recently just upgraded from 1.1.0 to the newest) and through that was a great way to allow the end user to map any control platform they have, instead of me trying to keep up a series of game definitions in my game.

    I then tried to set it up twice in two different projects and got the same results. I drop in the prefab in my first scene and set the control mapper to Start on startup.

    It works perfectly in the Unity editor on the PC, but when I build to the android device and play on the Gear VR, it completely passes the Control Mapper (may be getting a black screen, not sure as it loads quick) and loads the first screen.


    So that's it in a nut shell. Any thoughts on this would be greatly appreciated. I'd love to have the control mapper working in my game.

    Also, I am a fairly Noob when it comes to C#-ing. I've only being using unity for about 6-8 months or so....

    On a side note: My Gear VR controller just showed up and I'd like to get that working as well. I think I remember reading form a month or two back that you recommended setting up a "custom controller type" to get the Gear VR controller working in Rewired. Is that still your recommendation as a best practice?


    Thanks in advance!
    -jon-
     
  47. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    3,865
    There's nothing about Control Mapper that could cause this that I know of. It's just a Game Object hierarchy. If it's in the scene and activated, it will display. I would suspect something else like you are loading a different starting scene in your build that you are not testing in the editor causing you to see different results. Or you are doing some kind of Application.LoadLevel call in the build you are not doing in the editor causing it to destroy the Control Mapper Game Object. I suggest you build a single scene with Control Mapper to the device and just verify that it appears, probably in a new blank project just to show that it works. (I can't imagine anything that would cause this to not work.) Then go hunting for what's causing it to skip/close/destroy it. Debug log the list of objects in the scene and their active state and see if the Control Mapper hierarchy is even still there. This will tell you whether you destroyed/unloaded it.

    If the object is in the scene and active, then perhaps it has something to do with the camera/canvas modes.


    The GearVR Controller requires a special SDK to work. Rewired does not include any wrapping and maintanance of 3rd party SDKs for any controllers. All controllers requiring an SDK to work can only be used through Custom Controllers. In addition, Android support is 100% UnityEngine.Input dependent and no native input library is available for this platform at this time.
     
  48. jons190

    jons190

    Joined:
    Sep 13, 2016
    Posts:
    226

    --------------------


    Coolio! I'll try these debugging steps. I can almost be 90% it's something I am doing wrong.
    However you said:
    "If the object is in the scene and active, then perhaps it has something to do with the camera/canvas modes."

    Oddly enough, I've traced a few of my bugs to this exact reason. Something about the way the Oculus SDK translates the camera views in VR from unity that can get a tad black box wonky at times. I have found little info on the Oculus docs that explains exactly what goes on in this translation, so it's always a tad of a mystery how it all works.

    Anyway, Thanks mate! If I find out anything new or different, I will update the thread.....
     
  49. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    9,792
    Here's the integration steps jons190 is referring to in case it's any help.
     
    guavaman likes this.
  50. HittmanA

    HittmanA

    Joined:
    Jul 27, 2016
    Posts:
    45
    I had a question, say I need to get what type of controller a person is using (a.k.a. DualShock4, Xbox controller, Keyboard and mouse, etc.). How can I do this? Thanks in advance!