public static void CheckPermissionAndPrompt(Addon addon, string permissionKey, string verb, Action <bool> OnResult = null) { string addonKey = addon.DerivedKey; if (addon.SudoAccess || HasPermission(addonKey, permissionKey)) { OnResult?.Invoke(true); } else if (!DeclinedPermission(addonKey, permissionKey)) { OpenVRTools.ShowAsyncModal(addon.Name + " is requesting permission to " + verb + "\n\nProvided reason: \"" + addon.GetPermissionReasoning(permissionKey) + "\"", "Permission Request", "Accept", "Decline", "Ask Later", null, (response) => { switch (response) { case Valve.VR.VRMessageOverlayResponse.ButtonPress_0: GrantPermission(addonKey, permissionKey, true); OnResult?.Invoke(true); break; case Valve.VR.VRMessageOverlayResponse.ButtonPress_1: GrantPermission(addonKey, permissionKey, false); OnResult?.Invoke(false); break; default: return; } }); } else { OnResult?.Invoke(false); } }