I can confirm this in Unity 2017.3.1f1 – it takes about 10 seconds, with the Vive HMD lying on the table, before XRDevice.userPresence changes from “Present” to “NotPresent,” which is a problem when we want to run this check once at startup.
Right, that works thanks; for the moment I’m just replacing XRDevice.userPresence with the following:
var mounted = SteamVR_Controller.Input(0).GetPress(Valve.VR.EVRButtonId.k_EButton_ProximitySensor);
This works fine, though I feel like XRDevice.userPresence should be made consistent with this (rather than “poll the headset and set it to NotPresent after 10 seconds of inactivity”).