public SteamVR_ControllerManager() { // Add left and right entries to the head of the list so we only have to operate on the list itself. var additional = (this.objects != null) ? this.objects.Length : 0; var objects = new SteamVR_Controller[2 + additional]; indices = new uint[2 + additional]; objects[0] = right; indices[0] = OpenVR.k_unTrackedDeviceIndexInvalid; objects[1] = left; indices[1] = OpenVR.k_unTrackedDeviceIndexInvalid; for (int i = 0; i < additional; i++) { objects[2 + i] = this.objects[i]; indices[2 + i] = OpenVR.k_unTrackedDeviceIndexInvalid; } this.objects = objects; for (int i = 0; i < objects.Length; i++) { var obj = objects[i]; if (obj != null) { obj.SetActive(false); } } OnTrackedDeviceRoleChanged(); for (int i = 0; i < SteamVR.connected.Length; i++) { if (SteamVR.connected[i]) { OnDeviceConnected(i, true); } } SteamVR_Event.Listen("input_focus", OnInputFocus); SteamVR_Event.Listen("device_connected", OnDeviceConnected); SteamVR_Event.Listen("TrackedDeviceRoleChanged", OnTrackedDeviceRoleChanged); }
private void Dispose(bool disposing) { SteamVR_Event.Remove("input_focus", OnInputFocus); SteamVR_Event.Remove("device_connected", OnDeviceConnected); SteamVR_Event.Remove("TrackedDeviceRoleChanged", OnTrackedDeviceRoleChanged); }