Version 1.1 and General Update

Hey everyone,

Quick update on the state of affairs around input.

New Release

Version 1.1 verified of the Input System package is now live.

It includes a year of bugfixes and improvements. Some highlights:

  • Easier button polling
action.IsPressed()
action.WasPressedThisFrame()
action.WasReleasedThisFrame()
  • Easier “any key” detection
InputSystem.onAnyButtonPress
    .CallOnce(button => Debug.Log($"Button {button} pressed"));
  • Saving and loading rebinds as JSON
void SaveUserRebinds(PlayerInput player)
{
    var rebinds = player.actions.SaveBindingOverridesAsJson();
    PlayerPrefs.SetString("rebinds", rebinds);
}

void LoadUserRebinds(PlayerInput player)
{
    var rebinds = PlayerPrefs.GetString("rebinds");
    player.actions.LoadBindingOverridesFromJson(rebinds);
}

For a full list of changes, please see the CHANGELOG.

New Team

In the past, we had a number of resourcing problems. Over the past couple of months, a new team has formed.

  • Håkan - Lead

  • Gabe - Project Management

  • Stefan - QA

  • William - UX

  • Dmytro - Developer

  • Andrew - Developer

  • Rene - Developer

New Future

While we will continue to work on stability and performance improvements, we consider usability and workflow improvements our one top priority going forward. While the current package offers many tools and pieces, we have a general lack of clarity and simplicity in how to put these tools and pieces to use.

Other than this, we do have a small number of oft-repeated feature requests (like the “SHIFT+B” and “B” binding problem) and incompatibilities ([Unity Remote]( New Input System and Unity Remote 5 page-3#post-7483283)) that we consider pressing.

Instead of embarking on a long preview cycle, as we did with 1.1, we intend to instead roll out more frequent patch releases containing fixes. These updates will automatically be applied by the Unity package manager to the current 1.1 release.

18 Likes

Nice! However the package manager still shows me 1.0.2 as the latest version. When could we expect 1.1 hitting the package manager? I even see “[1.1.1] - 2021-09-03” in the change log already, yet no 1.1 in the package manager?

4 Likes

I believe you should be able to upgrade to 1.1.1 in package manager already, at least if you manually enter 1.1.1 string in the manifest it should work.
1.1.1 will be default in 2021.2, 2022.1 soon if not already, and in 2019.4, 2020.3, 2021.1 a bit later

2 Likes

Thanks. I had to manually add by name “com.unity.inputsystem” for 1.1.1 to be visible.

2 Likes

It already pops up for me in 2021.2b10 for update as ‘Release’ version.

Is the pen pressure / tilt now available in the editor for editor tools?
Or is it play-mode only.

Thanks for the hard work!

There was improved pen support for IMGUI events being worked on some time ago from the editor side but looking into it, seems that hasn’t yet made it out the pipes. It being part of UnityEngine.Event IMO is the “proper”/better way in this case than the input system serving the data.

As far as the input system is concerned, the edit mode support landscape is so far unchanged. The focus changes affected it tangentially (non-pointer/keyboard devices are now always routed to the game view by default) but for pens, shouldn’t have much of an impact. There is still an open bug in that area and overall, edit mode support stands on somewhat shaky legs.

2 Likes

Thanks for the status update, I hope this will be all smooth sailing towards unity 2022

Using 2020LTS, not seeing 1.1.1 in the package manager either.

What is this “manifest” I need to edit? And what exactly should I add? Hopefully this will update itself soon?

Ah ok, it’s straight up hardcoding the version in the manifest.json in the project. Upon reloading, Unity auto-installed it. I was a bit worried about doing that change but I guess it worked :wink:

Good luck to the new team.

The Gamepad Mouse Cursor Sample does not work at all when using version 1.1.1.
Also, version 1.0.2 is unusable for me because of “VirtualMouseInput not supporting UI scaling other than constant.”

Did somebody manage to use VirtualMouseInput on 1.1.1 or does have a fix for the related problem on 1.0.2?

In the current iteration there is the possibility to directly access the state for a subset of inputs:

Gamepad.current
Mouse.current

Is there anything similar planned (or maybe already implemented) for VR controllers and headsets (like the state access without callbacks)?

Is it intentional that calls on an Input Action to ReadValue<T>() do not work (i.e. always return zero) when called from FixedUpdate() in 1.1.0-pre.6 and 1.1.1, when Update Mode is set to “Process Events in Dynamic Update”?

It used to work in earlier versions, so if it’s a regression, let me know and I’ll file a report…

EDIT: I can’t find any documentation of this change so I’ve filed a bug report anyway, in case it’s a genuine regression. It’s 100% reproducible for me, across multiple projects and Unity versions.

2 Likes

Latest version of the InputSystem 1.1.1 the stickAction of the VirtualMouseInput always returns 0,0 delta.

Debugging looks like the OnAfterInputUpdate is only called once after moving the joystick and so the deltaTime value is always 0

Creating a copy of the class in the project (i.e. in a custom namespace) and using that class fixes the problem - looks like there’s a bug with the event callbacks.

I copied the class but it still did not worked. deltaTime is always 0, but for me it’s because every other frame the stick value is always 0 for some reason.
I added some debug logs with frame counter to test it and here is the result.

7516148--927101--upload_2021-9-23_11-0-2.png

First time stick value is non zero, so the m_lastTime is saved and because on the first run it is equal to currentTime then deltaTime is 0. On the second run it should enter the else and calculate non zero deltaTime. However, because the stick value is zero, the m_lastTime is reset and nothing happens.

I gave up on the new Input System, after an hour of trying to solve the problems, I gave up.

I bought ReWired, after 30 minutes to learn how to use it, everything I needed was working perfectly. Best investment I ever made.

@wagenheimer would be nice if you could write a short “exit interview” if you like :slight_smile: I’m just trying to listen and learn what kind of problems you experienced and if anything we could fix to improve it

3 Likes

I found the issue is the input system is managing states with ‘Editor’ in the mix causing the values to be unset…

Debugging looks like the OnAfterInputUpdate is called from the ‘Dynamic’ / ‘Fixed’ state update but then also called by a ‘Editor’ state update.
In the ‘Editor’ state update the value is 0,0 - which causes the VirtualMouse to reset.

With Dynamic it looks like they are 1:1 Dynamic update to Editor update so the virtual mouse never moves.

Would be good if Unity provided a better callback that included the state so we can ‘ignore’ the editor update callback. Or at the very least allow us to query the current InputSystem state so we can ignore if it’s in ‘Editor’.

Because it’s been made internal the only way to fix this is to copy the package internally and fix the internal scope limitation.

Also as a note ‘defaultUpdateType’ doesn’t make a lot of sense for a member name that returns the ‘currentUpdateType’??

Below code fixes the issue (but you have to patch the package, meaning adding it manually to your packages folder):

private void UpdateMotion()
        {
            if (m_VirtualMouse == null)
                return;
            #if UNITY_EDITOR

if(UnityEngine.InputSystem.InputSystem.s_Manager.defaultUpdateType ==
InputUpdateType.Editor
                ||
UnityEngine.InputSystem.InputSystem.s_Manager.defaultUpdateType ==
InputUpdateType.None)
                return;
            #endif

@RodGreen , could this be the reason why sometimes the Cinemachine Orbit camera doesn’t respond to X-axis mouse delta inputs when using the Input System Input Provider with 1.1.1? The delta values read by ReadValue are almost always zero, although sometimes glitch to non-zero values, but then “stick” at zero again. I’ve noticed that alt-tabbing away/back to the Editor makes it work, sometimes, for a few seconds perhaps, but it’s highly intermittent and I’m having a lot of trouble figuring out what causes it to come and go.

It was working fine in 1.1.0-pre.5 and earlier.

EDIT: nope, I tried your change to UpdateMotion and it didn’t resolve my issue (assuming it got recompiled?). Must be something else then…

EDIT2: reverted back to 1.1.0-pre.5 and it’s all working again - definitely something wrong with 1.1.1. Note my previous post about ReadValue in FixedUpdate being broken too - perhaps related, not sure yet…

EDIT3: I’ve determined that my Cinemachine problem is the same problem I mentioned earlier in this thread where ReadValue in FixedUpdate returns zero values. I was seeing intermittent failure in Cinemachine because the Brain was set to Update Mode “Smart Update” which flicks between Late Update (when it works) and Fixed Update (when it doesn’t) at its own discretion. If I change the Brain to Late Update then it works fine, and if I change it to FIxed Update then it is 100% broken.

At this point I’m kind of surprised that nobody else has reported this FixedUpdate issue yet…

1 Like