Search Unity

Rewired - Advanced Input for Unity

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

  1. garrido86

    garrido86

    Joined:
    Dec 17, 2013
    Posts:
    233
    Is on your controller definition for Bluetooth, Mode 1 of the 8Bitdo NES PRO 30 the D-Pad and Joystick treated separately?

    Btw, will you get your Hands on the 8Bitdo Zero? If not, I could provide a Controller definition for that one.
     
  2. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    Yes. They are separate elements so they are treated separately like all gamepads. Left Stick X/Y map to Left Stick in the Dual Analog Gamepad Template and D-Pad maps to the D-Pad. Unifying the Left Stick and the D-Pad would be incorrect and prevent proper mapping of this controller.

    If you wanted to treat them as the same in your game, just map both the D-Pad and the Left Stick to the same Actions in your Joystick Map (at the Player mapping level, not at the hardware definition level).

    I've ordered one and will add it when arrives. Thanks!
     
    Last edited: Feb 8, 2016
  3. garrido86

    garrido86

    Joined:
    Dec 17, 2013
    Posts:
    233
    No, no! If you maybe remember, I tried to make my own definition for the NES30 Pro but I didn't got the D-Pad and left Joystick to run seperatly. So yeah, I am happy to know that you got that resolved and I am looking forward to see how you have done it.

    Sweet! You will love, it's an very interesting piece of Hardware :) Btw, do you own by any chance the biggest Game Controller collection?:D
     
  4. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    I do remember you made a definition but I didn't catch that it had that flaw. I didn't have any issues with getting the D-Pad to work correctly. It shows up as a hat on Windows, OSX, and Linux. The left stick shows up as two axes. Perhaps it was the mode the joystick was in or even the firmware. I updated to the latest firmware and it corrected the seriously bad calibration on the sticks.

    All of the 8bitdo devices are pretty nice in general. After I receive the new ones (plus 5 more gamepads) later this week, I will have all the 8bitdo controllers except the SFC30 (which will map the same as the SNES30 so I figured why spend more).

    Yes, I do! It's kind of insane at this point. There are piles of controllers in boxes on the wire shelving behind me, stacks of them on the floor next to that, on the table across the room, some in the closet, and even some really big ones in the living room. I also have a bunch that didn't make the cut for having a controller definition made in addition to most of the ones on the list. I'm being swallowed up by controllers! @_@
     
    Last edited: Feb 9, 2016
    garrido86 likes this.
  5. derkoi

    derkoi

    Joined:
    Jul 3, 2012
    Posts:
    2,260
    Hi, I'm trying to add joypad support for my nvidia shield tablet and controller. I've added the control mapping to the Dual Analogue Controller and set up a custom touch interface and all is working fine with an Xbox controller in the editor but when in the build it's not working with my controller. I've checked support unknown gamepads for android and changed the max joysticks to 100.

    Not sure what else I've missed as it normally works fine?
     
  6. Galaks

    Galaks

    Joined:
    Feb 8, 2016
    Posts:
    12
    Hi, thank you for your previous answer.

    I made a custom controller with a button. When I want to trigger my button I use SetButtonValue(0, true) and so once I detected the action I have to reset the button with SetButtonValue(0, false). Is there an other way to simulate the pressure with only a frame and so don’t need to reset the value?
    Thank you again.
     
  7. garrido86

    garrido86

    Joined:
    Dec 17, 2013
    Posts:
    233
    Impressive, you really should do once a video about your collection! I love this kind of collections with obscure and awesome hardware :)
     
    guavaman likes this.
  8. longroadhwy

    longroadhwy

    Joined:
    May 4, 2014
    Posts:
    1,551
    The very first post in the Rewired thread has a great picture of the variety of controllers that Rewired supports. Detecting controllers is one thing but having all of the individual USB elements named so you can map them directly is amazing.

    I would much rather have @guavaman spend his time adding the controller definitions to Rewired than making a video of controllers. I think youtube will have you covered for controllers of all types. You might have to break it down by specific groups. If you look at Flight Simulation there are videos that cover most of those consumer controllers quite well. I have not seen videos for the professional $5,000 flight pedals and similar devices. For racing wheels there many sim racing video channels that cover most of those wheels quite nicely. RailDriver (for trains) has many different videos of it working with different games. Farm Simulation Controller has many videos especially since it is so new. Ship Console (boats/sail ships/etc) has very few videos that I have found. Arcade Guns (Light guns) there several on that one. Gamepads seem mostly generic to me but the manufacturers seem to be still cranking out different varieties.

    When it comes to the standalone platforms (Windows/Linux/MAC OS) to have the same controllers (especially flight controllers) supported across them all is amazing. Many games have a limit of 3 usb devices that can be detected so you have to use special software (often by the manufacturer) to get around such issues to have more controllers. With Rewired it is easy to say I want 15 usb controllers per player. This is wonderful for flight simulation or other complex controller environments or just for testing purposes.

    I would be interesting to know if there is any input system on any platform that comes close to supporting as many different controllers as nicely as Rewired does. I think it definitely sets a very high standard for input devices when it comes to controller support that will be very hard to match.
     
    Last edited: Feb 9, 2016
    guavaman likes this.
  9. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    The controller you're trying to use being the Nvidia Shield Controller? What version of Unity are you building with? It's worth checking if the version of Unity you're using can detect the controller. Build the Rewired/DevTools/JoystickElementIdentifier to the shield and see if you see any joysticks reported. This will show you what Unity's reporting using UnityEngine.Input as Android is a Unity fallback platform. To build the scene, drag the JoystickElementIdentifier into the scene and create a new Rewired Input Manager (no need to add any maps). Build and play. Let me know what you see.
     
  10. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    :D That would be kinda fun. I don't really have any space to lay them out and do a nice video though. :/


    Don't worry, there are even more coming....

    I should update the picture. A lot more controllers have been added since then.

    :)
     
  11. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    Get your value with player.GetButtonDown instead of player.GetButton and it will return true for only the first frame that it was turned on even if you leave the TRUE value in the button element.

    The Custom Controller elements will not automatically clear themselves every frame. You must do that because you are in full control of what values are in those elements. So simply pipe in the current value every frame.
     
  12. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    @derkoi

    I've tested with Unity 5.3.2f1 on the Nvdia Shield with the latest system updates and controller firmware. There are no issues. Therefore, the problem must be somewhere else.

    • Is the controller properly paired with the tablet?
    • Can you control the Android UI/mouse pointer with the controller?
    • Have you accidentally made a Nvidia Shield Controller Joystick Map with no assignments that may be overriding the Dual Analog Gamepad Template map?
    • Are there other controllers paired with the tablet and how many joysticks-per-player do you have Rewired set to auto-assign?
     
    Last edited: Feb 9, 2016
  13. diegoadrada

    diegoadrada

    Joined:
    Nov 27, 2014
    Posts:
    59
    Has anyone used this plugin in development for PS4 or do you know if Rewired is compatible?
    Thanks for the info!
     
  14. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    List of tested platforms:
    http://guavaman.com/projects/rewired/#TestedPlatforms

    Rewired uses UnityEngine.Input on the PS4 for input and therefore is subject to its limitations. It supports the gamepad, but it does not support vibration, gyro, light control, or the touchpad.
     
  15. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    Rewired 1.0.0.80 is live on the Unity Asset Store!

    1.0.0.80:

    Changes:
    - RewiredStandaloneInputModule: Added workaround for Unity issue causing Unity UI navigation to intermittently fail when using the Siri Remote touchpad on tvOS.

    New Controller Definitions:
    - P.I. Engineering XK-24
    - 8Bitdo NES30 Pro / FC30 Pro (Wired)
    - 8Bitdo NES30 Pro / FC30 Pro (Bluetooth, Mode 1)
    - Logitech G29 Driving Force Racing Wheel

    Modified Controller Definitions:
    - Changed 8Bitdo NES30 (wired) definition for button layout changes in firmware 2.65, all platforms.
    - Changed 8Bitdo NES30 (Joy Mode) definition for button layout changes in firmware 2.65, all platforms.
    - Unity 5+: Changed Samsung EI-GP20 definition on Android, Amazon Fire TV to correct for different Right Stick axis mappings in Unity 5.0+.
    - Added Linux Native mapping to Logitech G27 definition.

    Bug Fixes:
    - Windows App Store (8.0, 8.1): Fixed issue causing exception on initialization.
    - Windows Raw Input: Fixed hot-plugging issue on Windows 10 with certain HID devices.
    - Windows Raw Input: Steam Raw Input fix now works if Steam is initialized after Rewired.
    - Linux Native: Axis -> button hardware definitions mappings no longer fail when source is Axis 0.
    - Fixed bug in Saitek X55 Throttle definition on Direct Input.
     
  16. AVOlight

    AVOlight

    Joined:
    Apr 15, 2014
    Posts:
    427
    latest version of Rewired with Unity 5.3.2p3 causing issues on Windows 10 Store IL2CPP x86 Master version

    works in x86 Debug but not in Master
    weird thing is the x64 Master works

    thinking this is another Unity issue with the IL2CPP generated code
     
  17. derkoi

    derkoi

    Joined:
    Jul 3, 2012
    Posts:
    2,260
    Whatever happened to the work we were doing for PS4? I thought we had it all working? (I was the one who sent you the videos of the PS4 controller etc)
     
  18. derkoi

    derkoi

    Joined:
    Jul 3, 2012
    Posts:
    2,260
    Hmmm, i'll take another look but there isn't anything from the above list that should affect it as far as i can tell.
     
  19. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    Can you provide any details of the error? For sure, if it compiles in Unity but fails to build in the project Unity generates, it's a Unity IL2CPP conversion error.
     
    Last edited: Feb 12, 2016
  20. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    Hi,

    I was just looking at that info you sent me yesterday thinking about getting back to it. Thanks so much for sending that, BTW! It's been a busy year... Sorry for the (LONG) delay! Let's see what I've been doing since you sent that.

    1.0.0.80:

    Changes:
    - RewiredStandaloneInputModule: Added workaround for Unity issue causing Unity UI navigation to intermittently fail when using the Siri Remote touchpad on tvOS.

    New Controller Definitions:
    - P.I. Engineering XK-24
    - 8Bitdo NES30 Pro / FC30 Pro (Wired)
    - 8Bitdo NES30 Pro / FC30 Pro (Bluetooth, Mode 1)
    - Logitech G29 Driving Force Racing Wheel

    Modified Controller Definitions:
    - Changed 8Bitdo NES30 (wired) definition for button layout changes in firmware 2.65, all platforms.
    - Changed 8Bitdo NES30 (Joy Mode) definition for button layout changes in firmware 2.65, all platforms.
    - Unity 5+: Changed Samsung EI-GP20 definition on Android, Amazon Fire TV to correct for different Right Stick axis mappings in Unity 5.0+.
    - Added Linux Native mapping to Logitech G27 definition.

    Bug Fixes:
    - Windows App Store (8.0, 8.1): Fixed issue causing exception on initialization.
    - Windows Raw Input: Fixed hot-plugging issue on Windows 10 with certain HID devices.
    - Windows Raw Input: Steam Raw Input fix now works if Steam is initialized after Rewired.
    - Linux Native: Axis -> button hardware definitions mappings no longer fail when source is Axis 0.
    - Fixed bug in Saitek X55 Throttle definition on Direct Input.

    1.0.0.79:

    New Controller Definitions:
    - Saitek X52 Pro
    - Horipad Ultimate HIP-047U Wireless Gamepad

    Modified Controller Definitions:
    - Added OSX and OSX Fallback definitions for Logitech Rumble Pad 2
    - Added support for 2-port Mayflash GameCube Controller Adapter for Wii U & PC
    - Added support for 4-port Mayflash GameCube Controller Adapter for Wii U & PC
    - Removed matching criteria for Saitek X52 Pro from Saitek X52 definition

    Changes:
    - Added support for new Amazon Fire TV (2015).

    Bug Fixes:
    - XInput no longer throws an exception when Joystick.StopVibration() is called from a controller disconnect event.
    - Editor will now use the best available input source available to the editor when in Webplayer build target mode instead of falling back to Unity input.
    - Steam Controller fix can now be disabled in Rewired Input Manager.
    - Created separate controller definition for Saitek X52 Pro due to hardware differences.

    1.0.0.78:

    New Controller Definitions:
    - Mad Catz C.Y.B.O.R.G. V1
    - Saitek Heavy Equipment Wheel & Pedals (Pro Farming)
    - Saitek Heavy Equipment Control Panel (Pro Farming)

    Changes:
    - Minor optimizations to fallback platform input code.

    Bug Fixes:
    - Fixed incorrect Controller.hardwareIdentifier on OSX Standalone platform.

    1.0.0.77:

    Changes:
    - Windows: Added workarounds for issue where Steam Controller prevents non-XInput devices from functioning when attached. Optional: Can be set in Rewired Input Manager -> Settings.
    - DualShock4ControllerExtension: Exposed Dual Shock 4 touchpad data (currently for Windows only).
    - Custom Controller axes can now be set to uncalibrated to allow handling of values outside -1 to +1 range.
    - Improved Bluetooth controller connect/disconnect on Windows Standalone when using Raw Input.
    - Updated Apple tvOS support for Unity 5.3.0p0 beta.

    New Controller Definitions:
    - Thrustmaster Score-A
    - XiaoMi Wireless Game Controller

    Modified Controller Definitions:
    - Modified Apple TV Remote (2015) definition for changes in Unity 5.3.0p0 beta.
    - Added Mad Catz, Inc. Street Fighter IV FightStick TE to Xbox 360 controller definition.
    - Added Mad Catz Pro Flight Cessna Rudder Pedals to Saitek Pro Flight Rudder Pedals definition.

    API Changes:
    - Added ControllerExtensions.DualShock4ControllerExtension.maxTouches property
    - Added ControllerExtensions.DualShock4ControllerExtension.GetTouchId method
    - Added ControllerExtensions.DualShock4ControllerExtension.GetTouchPosition method
    - Added ControllerExtensions.DualShock4ControllerExtension.GetTouchPositionByTouchId method
    - Added ControllerExtensions.DualShock4ControllerExtension.GetTouchPositionAbsolute method
    - Added ControllerExtensions.DualShock4ControllerExtension.GetTouchPositionAbsoluteByTouchId method
    - Added ControllerExtensions.DualShock4ControllerExtension.Istouching method
    - Added ControllerExtensions.DualShock4ControllerExtension.IsTouchingByTouchId method
    - Added AxisCalibration.applyRangeCalibration property

    Bug Fixes:
    - Fixed issue when changing from Unity as input source to another input source at runtime.
    - Control Mapper now displays an Action's Descriptive Name with +/- appended if no Positive Descriptive Name or Negative Descriptive Name have been set.
    - Fixed bug in Rewired Input Manager where in rare circumstances two Actions in different Action Categories were allowed to have the same name.

    1.0.0.76:

    New Controller Definitions:
    - Linux Native: Nyko Playpad Pro
    - Amazon Fire TV: Nyko Playpad Pro
    - P.I. Engineering RailDriver (Windows only currently)

    Modified Controller Definitons:
    - Apple TV Remote (2015): Added Pitch, Rotate, Acceleration X, Y, Z, and Gravity X, Y, Z axes.

    Changes:
    - Added support for more Unity fallback joystick axes in Unity 5+ for upcoming tvOS support.
    - Optimized Unity fallback joystick button code for joysticks 5-8 in Unity 5+.

    API Changes:
    - Added ControllerExtensions.RailDriverControllerExtension

    1.0.0.75:

    Changes:
    - Added Razer Forge TV platform.
    - In the Unity Editor, when the build target is set to something other than the native OS platform, the chosen input source for the current Editor platform is loaded instead of falling back to Unity input.

    New Controller Definitions:
    - SteelSeries Nimbus (MFi)
    - Apple TV Remote (2015 model)
    - Razer Forge TV: Razer Serval
    - Saitek Combat Pedals
    - New Linux Native Definitions:
    - CH Products Pro Throttle
    - CH Products FighterSitck
    - CH Products Eclipse Yoke
    - CH Products Pro Pedals
    - Saitek Pro Flight Throttle Quadrant
    - Saitek Pro Flight Cessna Trim Wheel
    - Saitek Pro Flight TPM Panel
    - Saitek X45 Digital Joystick & Throttle
    - Saitek X-55 Rhino Stick
    - Saitek X-55 Rhino Throttle
    - Saitek JI3 Cyborg 3D Gold
    - Saitek Pro Flight Yoke
    - Saitek Pro Flight Rudder Pedals
    - ThrustMaster T16000M
    - ThrustMaster T.Flight Hotas X
    - Thrustmaster HOTAS Warthog Joystick
    - Thrustmaster HOTAS Warthog Throttle
    - Logitech Extreme 3D Pro
    - VRinsight Ship Console
    - Arcade Guns G-500 AimTrak Light Gun

    API Changes:
    - Added ReInput.ConfigHelper.osxStandalonePrimaryInputSource property.
    - Added ReInput.ConfigHelper.linuxStandalonePrimaryInputSource property.
    - Added ReInput.ConfigHelper.disableNativeInput property.
    - Added ReInput.ConfigHelper.android_supportUnknownGamepads property.
    - Added ReInput.ConfigHelper.defaultJoystickAxis2DDeadZoneType property.
    - Added ReInput.ConfigHelper.autoAssignJoysticks property.
    - Added ReInput.ConfigHelper.maxJoysticksPerPlayer property.
    - Added ReInput.ConfigHelper.distributeJoysticksEvenly property.
    - Added ReInput.ConfigHelper.assignJoysticksToPlayingPlayersOnly property.
    - Added ReInput.ConfigHelper.reassignJoystickToPreviousOwnerOnReconnect property.

    Bug Fixes:
    - Raw Input: Fixed incorrect Stick Rotate mapping on ThrustMaster T16000M.
    - Raw Input: Fixed incorrect Yoke Z mapping on Saitek Pro Flight Yoke.
    - Amazon Fire TV now uses Amazon Fire TV controller definitions if available instead of Android.

    1.0.0.74:

    Changes:
    - OSX Native: Now supports pressure-sensitive buttons on MFi controllers.

    New Controller Definitions:
    - OSX Native: SteelSeries Stratus XL (MFi)

    API Changes:
    - Added Controller.Button.isPressureSensitive property
    - Added Controller.Button.pressure property
    - Added Controller.Button.pressurePrev property

    1.0.0.73:

    Changes:
    - Added SDL2 input source option for Windows Standalone, OSX Standalone, and Linux Standalone.
    - Added option to choose input source(s) by platform in Rewired Input Manager.
    - Input source now falls back to Unity Input when in Xbox One mode in the Unity editor.
    - Added support for Guide button on XInput devices on Windows when using XInput.
    - Added Default Joystick Dead Zone Type option to Rewired Input Manager.
    - RewiredStandaloneInputModule now continues to work when destroying a Rewired Input Manager and instantiating a new one.

    New Controller Definitions:
    - Razer Serval
    - Linux Native: XBox One Controller
    - Linux Fallback: XBox One Controller
    - Many new SDL2 Game Controller mappings (Windows, OSX, Linux, when using SDL2 as input source)

    Bug Fixes:
    - ActionElementMap.actionCategoryId has been deprecated. Will be removed in a future release.
    - Native HID device failure on OSX is handled more gracefully.

    1.0.0.72:

    Changes:
    - Changed handling of multiple Rewired Input Managers in a scene. Now when a level is loaded an additional Rewired Input Manager is found, it will just be automatically deleted instead of throwing an error. This is to simplify the process and allow each level to have a Rewired Input Manager prefab instance without requiring an instantiator script.
    - Added tracking of the individual input sources that contribute to the combined value of an Action.

    API Changes:
    - Added Player.GetCurrentInputSources methods
    - Added Player.IsCurrentInputSource methods
    - Added InputActionEventData.GetCurrentInputSources methods
    - Added InputActionEventData.IsCurrentInputSource methods

    Bug Fixes:
    - Fixed incorrect mapping of L1/R2 and L2/R2 on Sony DualShock 4 when using Enhanced Device Support in Windows Standalone.

    1.0.0.71:

    Changes:
    - Added native joystick support for Linux Standalone platform
    - Full intelligent hot-plugging support
    - More than 20 buttons and axes per joystick for advanced controllers and HOTAS setups
    - Vibration for XBox 360 controllers (and other compatible controllers)
    - Tested under Ubuntu 12.04 amd64, Ubuntu 14.04 x86/amd64, Ubuntu 15.04 amd64, and Mint 17.2 amd64
    - Works in Unity 4.x and 5.x
    - Added Android: Support Unknown Gamepads option in Rewired Input Manager settings to allow auto-detection of unknown gamepads on Android. (Limitations apply, see documentation for details.)
    - Added additional Behavior Designer tasks
    - Added icon to Behavior Designer tasks
    - Changed display names of Behavior Designer tasks

    New Controller Definitions:
    - SteelSeries Stratus XL (Windows / Android version)
    - Thrustmaster T300 RS (PS3 mode only)
    - Standardized Gamepad

    New Controller Definitions for Linux Standalone (Native):
    - Microsoft XBox 360 Controller (Wired) (Includes many generic/clones)
    - Sony DualShock 3
    - Sony DualShock 4
    - Logitech F310 (X and D modes)
    - Logitech F710 (X and D modes)
    - Logitech Dual Action
    - Saitek P880
    - Saitek P990
    - Game Elements GGE909 Recoil
    - Nyko AirFlo EX
    - Radio Shack PC Gaming Controller
    - SteelSeries FREE
    - SteelSeries Stratus XL
    - Moga Hero Power
    - Moga Pro Power
    - GameStick Controller
    - Amazon Fire Game Controller
    - Google Nexus Player Gamepad
    - Nvidia Shield Controller (Wired)
    - PS3 Controller (Gasia Wireless Adapter, includes Trust GXT 39)
    - Red Samurai Wireless Android Gamepad
    - Samsung EI-GP20 Smartphone Game Pad
    - 8Bitdo NES30 (Wired)
    - 8Bitdo NES30 (Bluetooth, Mode 1)
    - 8Bitdo NES30 (Bluetooth, Joy Mode)
    - Nyko Playpad
    - ípega Wireless GAMEPAD Controller
    - ípega Multi-Media Bluetooth Controller
    - idroid:con Snakebyte (Mode 1)
    - idroid:con Snakebyte (Mode 2)
    - GameCube Controller (Mayflash 2-port USB adapter)
    - Saitek X52

    API Changes:
    - Added ReInput.GetFirstJoystickTemplateElementIdentifier method

    1.0.0.70:

    Changes:
    - Windows Standalone: Native Mouse Handling mode now respects Windows Control Panel "Switch Primary and Secondary Buttons" setting.

    1.0.0.69:

    New Controller Definitions:
    - Moga Hero Power (HID)
    - Moga Pro Power (HID)

    New Integrations:
    - PlayMaker
    - Behavior Designer

    1.0.0.68:

    New Controller Definitions:
    - Samsung Smartphone Game Pad (EI-GP20)
    - Mayflash Wireless PS3 Adapter
    - Mayflash Wireless WiiU Pro Controller Adapter

    API Changes:
    - Added ReInput.Reset method
    - Added ReInput.configuration property
    - Added ReInput.ConfigHelper class
    - Added Joystick.vibrationMotorCount property
    - Added IControllerVibrator.GetVibration method
    - Added RewiredStandaloneInputModule.UseAllRewiredGamePlayers property.
    - Added RewiredStandaloneInputModule.UseRewiredSystemPlayer property.
    - Added RewiredStandaloneInputModule.RewiredPlayerIds property.
    - Added RewiredStandaloneInputModule.MoveOneElementPerAxisPress property.
    - Added DualShock4ControllerExtension class.
    - Added DualShock4MotorType enum.

    Changes:
    - Input source settings can now be changed at runtime through ReInput.configuration object.
    - Added option to RewiredUFPSInputHelper to stabilize joystick look sensitivity in UFPS regardless of framerate.
    - Reduced axis deadzones on Saitek P990.
    - Added Repeat Delay option to RewiredStandaloneInputModue.
    - RewiredStandaloneInputModule detects mobile device platforms more accurately.
    - Xbox One controller vibration continues until manually stopped on Windows Standalone (XInput)
    - Sony DualShock 4 controller now supports vibration, light control, accelerometer, gyroscope, and battery level in Windows Standalone (Raw Input only) (preliminary implementation)
    - Added Enhanced Device Support option to Rewired Input Manager -> Settings

    Bug Fixes:
    - Fixed issue in Digital Axis Snap handling when pressing opposing axes simultaneously.
    - Filters out joysticks named "Empty" on PS4 platform.
    - Fixed controller matching issue on Ouya platform.
    - Fixed issue on Xbox One platform where controllers could be connected with invalid identifying information from Unity causing the controller to show up as an Unknown Controller.

    1.0.0.67:

    New Controller Definitions:
    - PS3 Controller (Gasia Wireless Adapter) - Includes Trust GXT 39 gamepad.

    Changes:
    - Control Mapper now searches for any Rewired Input Manager in the scene when first initialized.
    - Changed listbox colors in the Rewired Editor.

    1.0.0.66:

    Changes:
    - Added Microsoft Xbox One (Windows 10+) controller definition due to new driver changes in Windows 10 that affect the element layout.
    - Reduced size of default deadzone on XBox One controller sticks.

    1.0.0.65:

    Changes:
    - Added allowMouseInput and allowMouseInputIfTouchSupported to RewiredStandaloneInputModule to filter out mouse control to prevent conflicts with TouchInputModule on devices with touchscreens.
    - Installer now adds entries to the Unity input manager instead of replacing the entire file.

    Bug Fixes:
    - D-Pads now work correctly on the XBox One platform.

    1.0.0.64:

    Changes:
    - Exceptions that occur in user event handler code are handled more gracefully.

    Bug Fixes:
    - Control Mapper now unsubscribes from input events when destroyed.
    - Fixed hot-plugging issue in 64-bit builds on Windows.

    1.0.0.63:

    Changes:
    - Added support for Unity pre-configured joysticks on Linux platform.
    - Added Linux pre-configured controller definitions for:
    - Sony Dual Shock 3
    - Sony Dual Shock 4
    - Unity Preconfigured Gamepad (any other pre-configured gamepad)
    - Added Guide button to Microsoft Xbox 360 Controller definition.
    - Added Guide button mapping to Dual Analog Gamepad Template for Microsoft Xbox 360 Controller.

    1.0.0.62:

    Changes:
    - Patched RewiredStandaloneInputModule for undocumented change Unity made to PointerInputModule.GetMousePointerEventData in Unity 5.1.2p1

    Bug Fixes:
    - Fixed initialization issue on Xbox One platform.

    1.0.0.61:

    API Changes:
    - Added ReInput.ControllerHelper.keyboardEnabled

    Changes:
    - Improved performance of joystick input on Unity fallback platforms.

    1.0.0.60:

    Changes:
    - Added Control Mapper, ready-to-use, customizable control remapping system.
    - Added UserDataStore system for saving and loading control configuration data. Can be customized to use any data storage system you choose.
    - Added UserDataStore_PlayerPrefs component for simple saving and loading of control configuration data using PlayerPrefs.
    - Added Axis2D element which binds two axes together as an 2D axis so deadzone can be computed from the combined axes.
    - All recognized game controllers updated with Axis2D on all joysticks on all platforms.
    - All joysticks in recognized controllers now use a radial deadzone.
    - Added Compound Element to Hardware Joystick Map.

    API Changes:
    - Added Controller.Axis2D class
    - Added Controller.Element.isMemberElement property
    - Added Player.GetAxis2D method
    - Added Player.GetAxis2DPrev method
    - Added Player.GetAxis2DRaw method
    - Added Player.GetAxis2DRawPrev method
    - Added CompoundControllerElementType enum
    - Added ControllerElementIdentifier.compoundElementType property
    - Added ControllerElementType.CompoundElement
    - Added InputBehavior.ImportData method
    - Added UserDataStore class
    - Added UserDataStore_PlayerPrefs class
    - Added Interfaces.IUserDataStore interface
    - Added ReInput.userDataStore property

    1.0.0.59:

    API Changes:
    - Added ControllerMap.DeleteElementMapsWithAction
    - Added ControllerMap.DeleteButtonMapsWithAction
    - Added ControllerMapWithAxes.DeleteAxisMapsWithAction
    - Added InputBehavior.Reset

    Changes:
    - Changed Saitek P990 FPS button mapping in Dual Analog Gamepad Template from Center 2 to Center 1.

    Bug Fixes:
    - Fixed XML string output always returning 0 bytes on WSA platform.

    1.0.0.58:
    Changes:
    - Removed null product name on Sony DualShock 3 on Android platform due to possible matching conflicts.
    - Android, Amazon Fire TV, and PS4 platforms now ignore joysticks with null names to account for Unity's changed handling of removed joysticks on these platforms.
    - Android and Amazon Fire TV platforms now ignore joysticks with "keyboard" in the name to filter out keyboards.

    Bug Fixes:
    - Separated Amazon Fire TV Remote controller definition for Android and Amazon Fire TV platforms and fixed buttons assignments.
    - Amazon Fire TV Stick platform now correctly detected.

    1.0.0.57:

    Changes:
    - Improved Xbox One platform support -- includes vibration.
    - Added Xbox One platform.
    - Moved OuyaInputSource.cs into the project. Installation step is no longer required.
    - Microsoft Xbox One gamepad controller definition now uses individual trigger axes on Xbox One fallback platform.
    - Added Amazon Fire TV as a separate platform due to mapping differences vs Android.
    - Added the following controller definitions for Amazon Fire TV platform:
    - Amazon Fire Game Controller
    - Google Nexus Player Gamepad
    - Microsoft XBox 360 Controller (wired)
    - Microsoft XBox 360 Controller (wireless)
    - Sony DualShock 4
    - Mad Catz C.T.R.L.R
    - Mad Catz C.T.R.L.R Micro
    - Red Samurai Gamepad (G mode)
    - SteelSeries FREE
    - 8Bitdo NES30 (Bluetooth, Mode 1)
    - 8Bitdo NES30 (Bluetooth, Joy Mode)
    - Ouya Gamepad
    - GameStick Controller
    - Added default Placeholder path in Windows App Store DLL for Unity 5+.

    API Changes:
    - Added Controller.Extension class
    - Added Controller.extension property
    - Added Controller.GetExtension<T>() method
    - Added Joystick.systemId property
    - Added Joystick.unityId property
    - Added Joystick.SetVibration(int motorIndex, float motorLevel) method
    - Added Joystick.SetVibration(int motorIndex, float motorLevel, bool stopOtherMotors) method
    - Added ReInput.TimeHelper class
    - Added ReInput.time property
    - Added Interfaces.IControllerVibrator interface
    - Added Platforms.XboxOne.XboxOneGamepadExtension class
    - Added Platforms.XboxOne.XboxOneGamepadMotorType enum
    - Added Platforms.XboxOne.XboxOneGamepadVibration struct

    Bug Fixes:
    - Removed all Dictionary usage due to memory allocation bug in iOS Dictionary handling. Now allocates no memory on normal updates in iOS.
    - Fixed rare joystick matching issue on Unity fallback platforms and Custom platforms.
    - Fixed rare crash in Windows 64-bit builds and 64-bit editor.
    - Fixed Windows input sources failing to initialize on certain systems in the Unity editor.
    - Fixed product name on Google Nexus Player remote controller definition.
    - Fixed Game Controller Back and Menu button assignments on Android platform.

    1.0.0.56:

    Bug Fixes:
    - Fixed rare error that caused joysticks to fail to initialize properly in Raw Input in the 64-bit Unity editor and 64-bit builds.

    1.0.0.55:

    Bug Fixes:
    - Added workaround for new Unity type casting bug in Windows Universal mode in the editor introduced in Unity 5.1.

    1.0.0.54:

    Changes:
    - Added more detailed debug code to track down a rare issue in Raw Input.

    1.0.0.53:

    Bug Fixes:
    - Malfunctioning HID devices in Raw Input will no longer cause all input to stop functioning.

    1.0.0.52:

    Changes:
    - Removed dynamic platform DLL switching system due to bugs with no workarounds in Unity's command line batch building system.
    - Player.ControllerHelper.MapHelper.LoadMap now copies existing map.enabled state if loading over an existing map in the same category and layout.

    API Changes:
    - Added Player.ControllerHelper.MapHelper.LoadMap<T>(int controllerId, int categoryId, int layoutId, bool startEnabled)
    - Added Player.ControllerHelper.MapHelper.LoadMap<T>(int controllerId, string categoryName, string layoutName, bool startEnabled)
    - Added Player.ControllerHelper.MapHelper.LoadMap(ControllerType controllerType, int controllerId, int categoryId, int layoutId, bool startEnabled)
    - Added Player.ControllerHelper.MapHelper.LoadMap(ControllerType controllerType, int controllerId, string categoryName, string layoutName, bool startEnabled)
    - Added Player.ControllerHelper.MapHelper.AddMap<T>(int controllerId, ControllerMap map, bool startEnabled)
    - Added Player.ControllerHelper.MapHelper.AddMap(Controller controller, ControllerMap map, bool startEnabled)
    - Added Player.ControllerHelper.MapHelper.AddMap(ControllerType controllerType, int controllerId, ControllerMap map, bool startEnabled)
    - Deprecated Rewired.Editor.PlatformModeChanger.SyncToBuildTarget

    Bug Fixes:
    - Removed duplicate element identifiers in Thrustmaster T.Hotas Flight X controller definition.
    - Removal of dynamic platform DLL switching should eliminate all command line building issues.

    1.0.0.51:

    API Changes:
    - Added AxisCalibration.sensitivity
    - Added AxisCalibrationData.sensitivity
    - Added Player.GetAnyButton
    - Added Player.GetAnyButtonDown
    - Added Player.GetAnyButtonUp
    - Added Player.GetAnyButtonPrev
    - Added Player.GetAnyNegativeButton
    - Added Player.GetAnyNegativeButtonDown
    - Added Player.GetAnyNegativeButtonUp
    - Added Player.GetAnyNegativeButtonPrev
    - Added ReInput.ControllerHelper.GetAnyButton
    - Added ReInput.ControllerHelper.GetAnyButtonDown
    - Added ReInput.ControllerHelper.GetAnyButtonUp
    - Added ReInput.ControllerHelper.GetAnyButtonPrev
    - Added Controller.GetAnyButton
    - Added Controller.GetAnyButtonDown
    - Added Controller.GetAnyButtonUp
    - Added Controller.GetAnyButtonPrev

    Bug Fixes:
    - Fixed issue causing joystick connect/disconnect events to fail if game window was detached in the Windows editor when Play mode was started when using native input sources.

    1.0.0.50:

    Bug Fixes:
    - Fixed Native Mouse Support not functioning in Windows in Unity editor in Unity 5.1.0 Beta 3+

    1.0.0.49:

    API Changes:
    - Added Rewired.Editor.PlatformModeChanger.SyncToBuildTarget

    Bug Fixes:
    - Command Line building now works as expected.

    1.0.0.48:
    Bug Fixes:
    - Fixed bugs in Player.ControllerHelper.MapHelper causing issues when multiple controllers are assigned to the same player.
    - Fixed issue causing device connect/disconnect notifications to fail in the Unity editor on Windows (Raw Input) when the editor Build or Preferences windows are open.

    1.0.0.47:
    New Controller Definitions:
    - Thrustmaster F430/T100 Racing Wheel

    Changes:
    - Improved performance of all editor windows.

    1.0.0.46:
    New Controller Definitions:
    - Saitek X52 / X52 Pro Flight Control System

    Modified Controller Definitions:
    - Added mouse nub support to Saitek X55 Rhino Throttle.

    Changes:
    - Added option to exclude a Player from joystick auto-assignment in the Rewired Editor.
    - Changed RawInput to detect additional axes.
    - Changed OSX Native to detect additional axes.
    * IMPORTANT * If you've created your own controller definitions, be sure to verify and update the axis and button count values for Raw Input and OSX native in the Matching Criteria as this update may cause the axis and/or button count to return more elements than before.

    API Changes:
    - Added Player.ControllerHelper.excludeFromControllerAutoAssignment.

    Bug Fixes:
    - Recognized controllers with no joystick maps defined no longer load Unknown Controller map.
    - Joysticks are no longer assigned back to the previous owner on re-connect if Auto-Assign Joysticks is disabled.

    1.0.0.45:
    New Controller Definitions:
    - Mad Catz Micro C.T.R.L.R
    - Buffalo BSGP801 Classic USB Gamepad (SNES)

    API Changes:
    - Added ReInput.MappingHelper.UserAssignableActionsInCategory(int categoryId, bool sort)
    - Added ReInput.MappingHelper.UserAssignableActionsInCategory(string categoryName, bool sort)
    - Added ReInput.MappingHelper.ActionsInCategory(int categoryId, bool sort)
    - Added ReInput.MappingHelper.ActionsInCategory(string categoryName, bool sort)
    - Added Player.ControllerHelper.MapHelper.AddEmptyMap<T>(int controllerId, string categoryName, string layoutName)
    - Added Player.ControllerHelper.MapHelper.AddEmptyMap(ControllerType controllerType, int controllerId, string categoryName, string layoutName)

    Bug Fixes:
    - Fixed issue on OSX when hot-plugging with multiple identical controllers.
    - Fixed issue with ReInput.MappingHelper.UserAssignableActionsInCategory.
    - Fixed issue with ReInput.MappingHelper.UserAssignableActions.
    - Fixed error in Sony PlayStation Vita controller definition.

    Other:
    - Re-enabled Windows App Store installer for Unity 5.0.1+ due to critical bug fix in Unity 5.0.1 that allows Windows App Store support to work again.

    1.0.0.44:
    New Controller Definitions:
    - Thrustmaster HOTAS Warthog Joystick
    - Thrustmaster HOTAS Warthog Throttle
    - Thrustmaster USB Joystick
    - Saitek Pro Flight Cessna Trim Wheel
    - Buffalo FC-801 Famicom USB gamepad

    Bug Fixes:
    - Fixed rare axis calculation issue in RawInput for certain joysticks.

    1.0.0.43:
    Changes:
    - Fixed incorrect mappings on Dual Shock 4 controller on PS4.
    - Added workaround for issue with Unity 5 DLL importer settings on platforms not supported in retail Unity distribution (PS4, XBox One, etc.) where these platforms would throw compiler errors on build because the platform checkboxes could not be enabled in Rewired_Core.dll importer by default due to Unity metadata limitations.

    1.0.0.42:
    API Changes:
    - Added ControllerMap.ClearElementMaps.
    - Added ControllerMapWithAxes.ClearElementMaps.

    Bug Fixes:
    - Fixed bug in controller axis polling detection.

    1.0.0.41:
    New Controller Definitions:
    - Saitek JI3 Cyborg 3D Gold

    Changes-:
    - Added Axis Moves One Item option to RewiredStandaloneInputModule to make axes move to the next UI element without scrolling through multiple elements as the axis is held.
    - Added mappings for Sony DualShock 4 on PS4 platform.

    API Changes:
    - Added ReInput.ControllerHelper.PollingHelper.PollAllControllersForAllButtonsDown
    - Added ReInput.ControllerHelper.PollingHelper.PollControllerForAllButtonsDown
    - Added ReInput.ControllerHelper.PollingHelper.PollAllControllersForFirstButtonDown
    - Added ReInput.ControllerHelper.PollingHelper.PollAllControllersOfTypeForFirstButtonDown
    - Added ReInput.ControllerHelper.PollingHelper.PollControllerForFirstButtonDown
    - Added ReInput.ControllerHelper.PollingHelper.PollAllControllersForFirstElementDown
    - Added ReInput.ControllerHelper.PollingHelper.PollAllControllersOfTypeForFirstElementDown
    - Added ReInput.ControllerHelper.PollingHelper.PollControllerForFirstElementDown
    - Added ReInput.ControllerHelper.PollingHelper.PollAllControllersForAllElementsDown
    - Added ReInput.ControllerHelper.PollingHelper.PollControllerForAllElementsDown
    - Added ControllerWithMap.PollForAllButtonsDown
    - Added ControllerWithMap.PollForAllElementsDown
    - Added ControllerWithAxes.PollForAllElementsDown
    - Added Player.ControllerHelper.PollingHelper.PollControllerForAllButtonsDown
    - Added Player.ControllerHelper.PollingHelper.PollControllerForAllElementsDown
    - Added Player.ControllerHelper.PollingHelper.PollAllControllersOfTypeForFirstButtonDown
    - Added Player.ControllerHelper.PollingHelper.PollAllControllersOfTypeForAllButtonsDown
    - Added Keyboard.PollForAllKeysDown

    Bug Fixes:
    - Fixed issue with invalid strings when a joystick returns an invalid product name in Raw Input.
    - Fixed issue with negative axis detection in RewiredStandaloneInputModule.
    - ControllerWithAxes.PollForAllAxes now works correctly.

    1.0.0.40:
    Changes:
    - Updated Windows fallback handling to account for changes to UnityEngine.Input.GetJoystickNames released in Unity 5.0.0p1 to improve hot-plugging in Webplayer and Windows Standalone if not using native input sources.

    1.0.0.39:
    New Controller Definitions:
    - GameCube Controller (requires Mayflash 2-port USB adapter)

    Changes:
    - Axis values very near 1 or -1 are now rounded to the whole number.

    Bug Fixes:
    - Added workaround for a Unity 5 bug that caused editor crashes in Windows when recompiling scripts in the editor in Play mode with Native Mouse Input enabled.

    1.0.0.38:
    Changes:
    - Separated OnGUI call in InputManager_Base into a separate optional component to eliminate memory allocations generated by calling OnGUI in the script.
    - Added OnGUIHelper class to manage OnGUI updates.
    - Set OnGUIHelper script execution order on install/update.
    - OnGUI update in Rewired Input Manager -> Settings now starts disabled.

    Along with ~4000 support emails/forum posts/tweets/facebook msgs plus (some but not enough) real life work to pay the bills. :eek:

    As you can see, more complete PS4 support (beyond basic gamepad support) was pushed to the backburner due to the never ending train of fixes and additions. Lost in the mess... I'm trying to finish up a big update right now and after that I plan to go back to get more complete PS4 support in place.
     
    Last edited: Feb 12, 2016
  21. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    The first thing you should do is what I mentioned in my original response:

    This will tell you without a doubt what UnityEngine.Input sees. If Unity sees it correctly, Rewired will too and the problem would lie elsewhere (mapping, controller assignment, etc.)
     
  22. derkoi

    derkoi

    Joined:
    Jul 3, 2012
    Posts:
    2,260
    No problem, let me know if you need me to continue helping. :)
     
    guavaman likes this.
  23. derkoi

    derkoi

    Joined:
    Jul 3, 2012
    Posts:
    2,260
    Whoops, never saw the first post. I'll try that. Thanks
     
    Ghosthowl likes this.
  24. AVOlight

    AVOlight

    Joined:
    Apr 15, 2014
    Posts:
    427
    Unity 5.3.2p3 and Rewired 1.0.0.78.U5 works
    Unity 5.3.2p3 and Rewired latest version gets the Unity IL2CPP conversion error

    which only happens with Windows 10 Store IL2CPP (D3D) x86 Master version

    all i know to try is to pause visual studio and copy the callstack so

    Code (CSharp):
    1. >    UnityPlayer.dll!DTDEntityBase_get_SystemId_m392371881(DTDEntityBase_t4118841494 * __this, const MethodInfo * method) Line 1224    C++
    2.      UnityPlayer.dll!mAsTwrqZdlsztPwAhPViREYVkFt_gNoaloIaVFiYuRCZGSqDJqhPJde_m1535047904(mAsTwrqZdlsztPwAhPViREYVkFt_t994086316 * __this, int p0, int p1, const MethodInfo * method) Line 33831    C++
    3.      UnityPlayer.dll!rhrWUQHWVbeMEgLsfwAAUIedKF_eFWFXVjfnfIoDiGahwzjIIMJfYN_m1083494669(rhrWUQHWVbeMEgLsfwAAUIedKF_t867718090 * __this, const MethodInfo * method) Line 77855    C++
    4.      UnityPlayer.dll!rhrWUQHWVbeMEgLsfwAAUIedKF_xEuOShHncsDsujQfsmWoRTznEYze_m898971650(rhrWUQHWVbeMEgLsfwAAUIedKF_t867718090 * __this, int p0, const MethodInfo * method) Line 76984    C++
    5.      UnityPlayer.dll!rhrWUQHWVbeMEgLsfwAAUIedKF_lCkTrMsMSqXNXhYrcOagAyyBgio_m2969395582(rhrWUQHWVbeMEgLsfwAAUIedKF_t867718090 * __this, int p0, const MethodInfo * method) Line 70370    C++
    6.      UnityPlayer.dll!ReInput_lCkTrMsMSqXNXhYrcOagAyyBgio_m385906227(Il2CppObject * __this, int p0, const MethodInfo * method) Line 4767    C++
    7.      UnityPlayer.dll!InputManager_Base_DoUpdate_m1661740485(InputManager_Base_t3347583929 * __this, int ___updateLoopType, const MethodInfo * method) Line 54705    C++
    8.      UnityPlayer.dll!InputManager_Base_Update_m1502777687(InputManager_Base_t3347583929 * __this, const MethodInfo * method) Line 54493    C++
    9.      UnityPlayer.dll!RuntimeInvoker_Void_t2799814243(const MethodInfo * method, void * obj, void * * args) Line 590    C++
    10.      UnityPlayer.dll!il2cpp::vm::Runtime::Invoke(const MethodInfo * method, void * obj, void * * params, Il2CppObject * * exc) Line 350    C++
    11.      UnityPlayer.dll!scripting_method_invoke(struct ScriptingMethodIl2Cpp,struct ScriptingObject *,struct ScriptingArguments &,struct ScriptingException * *)    Unknown
    12.      UnityPlayer.dll!ScriptingInvocationNoArgs::Invoke(struct ScriptingException * *)    Unknown
    13.      UnityPlayer.dll!ScriptingInvocationNoArgs::Invoke(void)    Unknown
    14.      UnityPlayer.dll!MonoBehaviour::CallMethodIfAvailable(int)    Unknown
    15.      UnityPlayer.dll!MonoBehaviour::Update(void)    Unknown
    16.      UnityPlayer.dll!PlayerLoop(bool,bool,class IHookEvent *)    Unknown
    17.      UnityPlayer.dll!UnityPlayer::AppCallbacks::MetroMainLoop(void)    Unknown
    18.      UnityPlayer.dll!UnityPlayer::AppCallbacks::DoPerformUpdateAndRender(void)    Unknown
    19.      UnityPlayer.dll!UnityPlayer::AppCallbacks::_AppThreadImplementation(void *)    Unknown
    20.      UnityPlayer.dll!UnityPlayer::AppCallbacks::_AppThread(void *)    Unknown
    21.      UnityPlayer.dll!std::shared_ptr<struct Concurrency::details::_ExceptionHolder>::operator=(class std::shared_ptr<struct Concurrency::details::_ExceptionHolder> const &)    Unknown
    22.      UnityPlayer.dll!Platform::Details::__abi_FunctorCapture<class <lambda_cb6c1b5466a124da88222f5f2cf5da38>,void,struct Windows::Foundation::IAsyncAction ^>::Invoke(struct Windows::Foundation::IAsyncAction ^)    Unknown
    23.      UnityPlayer.dll!Windows::System::Threading::WorkItemHandler::[Windows::System::Threading::WorkItemHandler::__abi_IDelegate]::__abi_Windows_System_Threading_WorkItemHandler___abi_IDelegate____abi_Invoke(struct Windows::Foundation::IAsyncAction ^)    Unknown
    24.      threadpoolwinrt.dll!6a7653df()    Unknown
    25.      [Frames below may be incorrect and/or missing, no symbols loaded for threadpoolwinrt.dll]  
    26.      threadpoolwinrt.dll!6a7634e7()    Unknown
    27.      kernel32.dll!75c238f4()    Unknown
    28.      ntdll.dll!77895e13()    Unknown
    29.      ntdll.dll!77895dde()    Unknown
    30.  
    Code (CSharp):
    1. >    UnityPlayer.dll!mAsTwrqZdlsztPwAhPViREYVkFt_gNoaloIaVFiYuRCZGSqDJqhPJde_m1535047904(mAsTwrqZdlsztPwAhPViREYVkFt_t994086316 * __this, int p0, int p1, const MethodInfo * method) Line 33768    C++
    2.      UnityPlayer.dll!rhrWUQHWVbeMEgLsfwAAUIedKF_eFWFXVjfnfIoDiGahwzjIIMJfYN_m1083494669(rhrWUQHWVbeMEgLsfwAAUIedKF_t867718090 * __this, const MethodInfo * method) Line 77855    C++
    3.      UnityPlayer.dll!rhrWUQHWVbeMEgLsfwAAUIedKF_xEuOShHncsDsujQfsmWoRTznEYze_m898971650(rhrWUQHWVbeMEgLsfwAAUIedKF_t867718090 * __this, int p0, const MethodInfo * method) Line 76984    C++
    4.      UnityPlayer.dll!rhrWUQHWVbeMEgLsfwAAUIedKF_lCkTrMsMSqXNXhYrcOagAyyBgio_m2969395582(rhrWUQHWVbeMEgLsfwAAUIedKF_t867718090 * __this, int p0, const MethodInfo * method) Line 70370    C++
    5.      UnityPlayer.dll!ReInput_lCkTrMsMSqXNXhYrcOagAyyBgio_m385906227(Il2CppObject * __this, int p0, const MethodInfo * method) Line 4767    C++
    6.      UnityPlayer.dll!InputManager_Base_DoUpdate_m1661740485(InputManager_Base_t3347583929 * __this, int ___updateLoopType, const MethodInfo * method) Line 54705    C++
    7.      UnityPlayer.dll!InputManager_Base_Update_m1502777687(InputManager_Base_t3347583929 * __this, const MethodInfo * method) Line 54493    C++
    8.      UnityPlayer.dll!RuntimeInvoker_Void_t2799814243(const MethodInfo * method, void * obj, void * * args) Line 590    C++
    9.      UnityPlayer.dll!il2cpp::vm::Runtime::Invoke(const MethodInfo * method, void * obj, void * * params, Il2CppObject * * exc) Line 350    C++
    10.      UnityPlayer.dll!scripting_method_invoke(struct ScriptingMethodIl2Cpp,struct ScriptingObject *,struct ScriptingArguments &,struct ScriptingException * *)    Unknown
    11.      UnityPlayer.dll!ScriptingInvocationNoArgs::Invoke(struct ScriptingException * *)    Unknown
    12.      UnityPlayer.dll!ScriptingInvocationNoArgs::Invoke(void)    Unknown
    13.      UnityPlayer.dll!MonoBehaviour::CallMethodIfAvailable(int)    Unknown
    14.      UnityPlayer.dll!MonoBehaviour::Update(void)    Unknown
    15.      UnityPlayer.dll!PlayerLoop(bool,bool,class IHookEvent *)    Unknown
    16.      UnityPlayer.dll!UnityPlayer::AppCallbacks::MetroMainLoop(void)    Unknown
    17.      UnityPlayer.dll!UnityPlayer::AppCallbacks::DoPerformUpdateAndRender(void)    Unknown
    18.      UnityPlayer.dll!UnityPlayer::AppCallbacks::_AppThreadImplementation(void *)    Unknown
    19.      UnityPlayer.dll!UnityPlayer::AppCallbacks::_AppThread(void *)    Unknown
    20.      UnityPlayer.dll!std::shared_ptr<struct Concurrency::details::_ExceptionHolder>::operator=(class std::shared_ptr<struct Concurrency::details::_ExceptionHolder> const &)    Unknown
    21.      UnityPlayer.dll!Platform::Details::__abi_FunctorCapture<class <lambda_cb6c1b5466a124da88222f5f2cf5da38>,void,struct Windows::Foundation::IAsyncAction ^>::Invoke(struct Windows::Foundation::IAsyncAction ^)    Unknown
    22.      UnityPlayer.dll!Windows::System::Threading::WorkItemHandler::[Windows::System::Threading::WorkItemHandler::__abi_IDelegate]::__abi_Windows_System_Threading_WorkItemHandler___abi_IDelegate____abi_Invoke(struct Windows::Foundation::IAsyncAction ^)    Unknown
    23.      threadpoolwinrt.dll!6a7653df()    Unknown
    24.      [Frames below may be incorrect and/or missing, no symbols loaded for threadpoolwinrt.dll]  
    25.      threadpoolwinrt.dll!6a7634e7()    Unknown
    26.      kernel32.dll!75c238f4()    Unknown
    27.      ntdll.dll!77895e13()    Unknown
    28.      ntdll.dll!77895dde()    Unknown
     
  25. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    @AVOlight Thanks for posting that. It looks like a runtime error and not that it is unable to compile like last time. When you report things like this, please provide as many useful details as possible.

    I will get 5.3.2p3 and see if I can determine anything. Nothing has changed between 1.0.0.78 and 1.0.0.80 that would affect IL2CPP.
     
  26. AVOlight

    AVOlight

    Joined:
    Apr 15, 2014
    Posts:
    427
    @guavaman Thank you for looking into this,

    runtime but doesn't throw an error, my pre-loading scene gets stuck at .9 loading the main scene (with the Input Manager)
    I just paused Visual Studio during it a couple times for the call stacks

    side note, for your next update
    could you mark your runtime Rewired_Core.dll
    with WSAPlayer checked
    -SDK: UWP
    -Scripting Backend: IL 2 CPP
     
  27. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    @AVOlight I got 5.3.2p3 and tested and don't see any problems with compiling or running in 1.0.0.80 in Master x86 mode. No Unity logged errors, no errors in Visual Studio.

    However, I did discover an issue in Unity. When you build Rewired to UWP with IL2CPP, you're making Rewired run in Unity fallback mode so UnityEngine.Input becomes the input source. Well, it just so happens Win10 inherited one of Unity's old bugs from other platforms. In short, the Unity joystick id does not always match the Input.GetJoystickNames array index making it impossible to know from which Unity joystick id to retrieve input values for a joystick. This is the same old error Windows had in all versions prior to around 4.5. This was the fix back then for Windows. It's kind of ugly and clunky but there's no perfect workaround for this. Because of this, a native Windows 10 library is the only real solution.
     
    Last edited: Feb 13, 2016
  28. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    I can't. I've tried it and it throws errors on versions of Unity that don't support UWP so it falls back to ticking WSA for all builds which means the DLL conflicts with the Windows 8 libraries. The only solution is for me to have my editor script do this on an as-needed basis automatically for versions of Unity that support it. However, bear in mind, Windows 10 UWP is not an officially supported platform yet, which is why this isn't done. When I officially support it, I will add this to the editor script. It will be part of the whole process of officially supporting Windows 10 UWP.
     
  29. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    Anything in the Unity player log file?

    C:\Users\<USER>\AppData\Local\Packages\<PKGID>\TempState\UnityPlayer.log
     
  30. AVOlight

    AVOlight

    Joined:
    Apr 15, 2014
    Posts:
    427
    sorry i didn't realize that
    Thank you
    i'll try it again
    nope, theres no hang or break, just nothing happens and it stays in the pre-load scene
     
  31. AVOlight

    AVOlight

    Joined:
    Apr 15, 2014
    Posts:
    427
    for me i just noticed that one must plug in the joystick before launching
    my games single player per device

    just resized the game window, and it seems the rendered view is frozen ( the camera view isn't updating and it becomes stretched to the new size)
    but it doesn't say not responding, and theres no break in visual studio
    also closing the game doesn't stop the visual studio debugger like normal
    heres the log
    Code (CSharp):
    1. Initialize engine version: 5.3.2p3 (b6c1a63227dc)
    2. Disabling independent input source.
    3. Logical Screen DPI is 144.00.
    4. UnloadTime: 0.606144 ms
    5. Unloading 5 Unused Serialized files (Serialized files now loaded: 0)
    6. UnloadTime: 0.207913 ms
    7. DontDestroyOnLoad only work for root GameObjects or components on root GameObjects.
    8. UnityEngine.Object:DontDestroyOnLoad(Object)
    9. Rewired.InputManager_Base:Initialize()
    10.  
    11. [ line 367]
    12. (Filename:  Line: 367)
    13.  
    14.  
    15. Unloading 7 unused Assets to reduce memory usage. Loaded Objects now: 1683.
    16. Total: 8.855814 ms (FindLiveObjects: 0.037829 ms CreateObjectMapping: 0.027858 ms MarkObjects: 8.766960 ms  DeleteObjects: 0.021700 ms)
     
  32. AVOlight

    AVOlight

    Joined:
    Apr 15, 2014
    Posts:
    427
    from this snippet of the log, apart from the timings, the line UnityEngine.Object:DontDestroyOnLoad(Object) is the only difference between the x86 and x64 version
    that line is missing from the x64 version
     
  33. Slawo

    Slawo

    Joined:
    Jan 29, 2014
    Posts:
    11
    Hello!

    I installed Rewired and replaced the InControl mechanism I had and I was wondering:
    Is there a way to get the system time where an input occurred?
    In native mode do you use a separate thread to queue events or do you use the unity main thread directly?

    If I had something really close to the real time of an input I could solve a few things more elegantly than what I have now.
     
  34. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    That doesn't always work. I had the controller already plugged in when launched and Unity assigned the internal joystick ID of 2 while it was the only joystick plugged in and appeared in array index 0. This is same classic bug behavior in Windows prior to 4.5.

    It sounds like it's going into an infinite loop or something.

    Looking at the Rewired function that it lists last in the call stack, it would appear it is choking on one of the functions that handles event-based input processing. So I tried adding event-based input to my test build and indeed it seems to go into an infinite loop. There's nothing special about this function at all. It's just a simple for loop that checks a couple of values and returns a bool. Therefore, this can be nothing other than some error in the code generated by IL2CPP and it will have to be reported to Unity. Please file a bug report and I will do the same.
     
  35. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    No, there is no way to do this. Rewired runs on the main thread only at present. The exact implementations (event queue, polling, etc) vary by platform and input source, but real-time (sub-frame) event timestamps are not available.
     
  36. Slawo

    Slawo

    Joined:
    Jan 29, 2014
    Posts:
    11
    OK, do you intend to add this at some point?

    cheers!
     
  37. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    Maybe. It's a very, very large task, especially cross-platform, and this has only ever been requested by about 4 people. In addition, current testing of a complete event-queue based system I've been working on increases the CPU overhead of Rewired by at least 100% because of all the extra processing required to analyze and convert stacks of events from the lowest level all the way up to the top. This would most likely make it too heavy for mobile devices. In addition, there are a lot (LOT!) of complexities involved in generating real-time event queues for Actions, which can consist of a combination of event queues from any number of elements, modified by smoothing, gravity, calibration, transformations, etc., cross-mapped element types, and much more. It's far more straightforward when you're talking about simple direct low-level button/axis/key events, but that's not what Rewired is.
     
    Last edited: Feb 14, 2016
  38. AVOlight

    AVOlight

    Joined:
    Apr 15, 2014
    Posts:
    427
    event-based, so thats when using these things AddInputEventDelegate right?
    so i just add that in my example script, (can/should i include Rewired in the attached project?)

    Cheers
     
  39. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    Yes, exactly. And yes, please include Rewired.

    I just verified that it goes into an infinite loop in Master x86 and Release x86, but not Debug x86... very curious. Not sure what to think of that.
     
  40. AVOlight

    AVOlight

    Joined:
    Apr 15, 2014
    Posts:
    427
    indeed, :confused:

    Thanks again!, its always best to get these things reported as soon as possible and by as many people as possible :)
    and i certainly had no idea what to report
     
  41. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    Thanks for your help! I just submitted a bug report too. I sure hope they resolve this one as quickly as the other. The call stack you provided was very helpful as I was able to point out to them exactly what method it was choking on.
     
    AVOlight likes this.
  42. EskemaGames

    EskemaGames

    Joined:
    Jun 23, 2010
    Posts:
    319
    Sorry for the delay :)

    No, no other controllers attached, only 1 xbox one controller. On other usb2 port I have a bluetooth dongle, and that's all, 2 different usb2 ports with only those 2 things connected.

    Like I said it's one of those weird issues that happens from time to time.
     
  43. emrys90

    emrys90

    Joined:
    Oct 14, 2013
    Posts:
    755
    Is it possible to use a virtual cursor with Rewired's standalone input module? I have a virtual cursor setup, and it's moving around the screen, but I have been struggling trying to get the event system to still function.
     
  44. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    Rewired's RewiredStandaloneInputModule should not function any differently than Unity's StandaloneInputModule in this regard as it is just a slightly modified version of the same source code which changes UnityEngine.Input to Rewired to get input and allows you to set Players and a few more options. I suggest you try with the normal StandaloneInputModule and see if you get any different results.

    I'm assuming you're referring to a mouse cursor and not a cursor controlled by a joystick. And I'm assuming by events you're referring to mouse cursor over button click events. The only thing I can imagine that would consume a button click event on a mouse would be if you assigned UI submit or UI cancel Actions to your mouse buttons, which you should not do for many reasons and is mentioned in the setup docs. This would make mouse clicks send submit/cancel events for whatever is currently selected (not the button underneath the cursor, but whatever is selected) and cause double submits, submits when your mouse cursor is nowhere near a button, and would consume the submit event I believe. The StandaloneInputModule handles mouse clicks over buttons by comparing the mouse position and the button and do not use the Submit/Cancel system at all. Consuming the Submit event wouldn't affect mouse button click over button events though.
     
    Last edited: Feb 17, 2016
  45. emrys90

    emrys90

    Joined:
    Oct 14, 2013
    Posts:
    755
    I am referring a virtual cursor, not a hardware cursor. I have implemented a custom cursor that I can move using the mouse or joystick, and I am attempting to get Unity's event system to work with it. Was wondering if there was already any support in place for that.
     
  46. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    RewiredStandaloneInputModule does not implement any special logic beyond what Unity provided in the StandaloneInputModule. The StandaloneInputModule does not provide any way of inserting the position of a virtual cursor to do the raycasts to the UI button elements, as that is how the PointerInputModule handles mouse clicks (StandaloneInputModule inherits from PointerInputModule). The screen position of the hardware mouse is hard-coded as the raycast position and not user-overridable with a custom cursor position.

    You are going to have to write a system to detect mouse UI events using your virtual cursor and disable mouse events using the hardware cursor (because I'm assuming they will still fire even if you hide the hardware cursor, but I'm not sure). Essentially, you need another Input Module for your virtual cursor. You would probably just remove the RewiredStandaloneInputModule and/or the StandaloneInputModule because mouse input is based on the hardware cursor and is not going to do what you want. If you left the (Rewired)StandaloneInputModule enabled for other reasons, you would need to not assign anything to the UI Submit and UI Cancel Actions because these would interfere with your virtual cursor click events when the user pressed a joystick button to activate the virtual cursor.

    You would make your Virtual Cursor Input Module check Rewired for the UI Click/Submit Action instead, then treat it just like Unity treats the hardware mouse -- check screen position of the virtual cursor, raycast to see if the cursor is over a valid UI element, then send the click event to the element.

    You can find the source code to Unity's Input Modules here.
    BaseInputModule.cs
    PointerInputModule.cs
    StandaloneInputModule.cs
    TouchInputModule.cs
     
    Last edited: Feb 17, 2016
  47. emrys90

    emrys90

    Joined:
    Oct 14, 2013
    Posts:
    755
    Thanks, but most of that I have already figured out. I have it accepting mouse clicks, haven't tested if it works for mouse over or not. I haven't been able to figure out how to get the drag to work though. I was just hoping support was already implemented for it so I could stop messing with it lol.
     
  48. guavaman

    guavaman

    Joined:
    Nov 20, 2009
    Posts:
    5,630
    Rewired 1.0.0.81 has been released for registered users. If you'd like to get early access to updates, please contact me here. The Unity Asset Store should have the update in 5-10 days.

    This is a minor update with some new controller definitions. Please see the Supported Controllers list for details on platform and input source support.

    1.0.0.81:

    New Controller Definitions:
    - 8Bitdo Zero (Wireless)
    - 8Bitdo SNES30 / SFC30 (Wireless, Joy Mode)
    - 8Bitdo SNES30 / SFC30 (Wireless, Mode 1)
    - Zhidong N (XInput mode)
    - Zhidong N (Direct Input mode)
    - Zhidong N (Android mode)
    - Zhidong V+ (XInput mode)
    - Zhidong V+ (Direct Input mode)
    - Satechi ST-UBGC Bluetooth Wireless Universal Gamepad

    Modified Controller Definitions:
    - Sony Dual Shock 2 (My-Power CO.) - Removed GUID from matching criteria due to potential mismatching issues.
     
  49. borrowedLadder

    borrowedLadder

    Joined:
    Feb 11, 2015
    Posts:
    21
    Hey,
    I'm just trying to get Rewired hooked up in my project, I'm using ootii's motion controller V2 that has an input source wrapper for Rewired.

    Everything seems to be working ok for keyboard, but I just can't get my controller to work, I'm using a Playstation DS4 and the DS4tool in windows - when plugged in Unity detects it as an Xbox 360 pad, but even going through the basic start documentation and guide I can't get the button presses to work.

    Do you know if this is an issue with PS4 DS4 joysticks or is there something obvious I'm being dumb with? :)
     
  50. emrys90

    emrys90

    Joined:
    Oct 14, 2013
    Posts:
    755
    Is it possible to treat a joystick axis like a digital axis? By that I mean I'd like the values to smoothly move to 0/+-1, and not jump there instantly.