From 75e9483b8377e7946a819af65b7484a38e1e50ee Mon Sep 17 00:00:00 2001 From: Anairkoen Schno Date: Tue, 16 Apr 2019 00:33:19 -0500 Subject: [PATCH] Redid menu to have a nav controller for better interaction --- BSIPA-ModList/BSIPA-ModList.csproj | 14 +- BSIPA-ModList/Plugin.cs | 23 +- BSIPA-ModList/UI/ModListFlowCoordinator.cs | 58 ++ BSIPA-ModList/UI/ModListMenu.cs | 26 - .../BackButtonNavigationController.cs | 22 + .../ViewControllers/ModInfoViewController.cs | 14 + .../ModListController.cs | 6 +- Refs/UnityEngine.UI.dll | Bin 0 -> 97280 bytes Refs/UnityEngine.UIModule.dll | Bin 0 -> 17920 bytes Refs/UnityEngine.UIModule.xml | 548 ++++++++++++++++++ Refs/refs.txt | 5 + 11 files changed, 679 insertions(+), 37 deletions(-) create mode 100644 BSIPA-ModList/UI/ModListFlowCoordinator.cs delete mode 100644 BSIPA-ModList/UI/ModListMenu.cs create mode 100644 BSIPA-ModList/UI/ViewControllers/BackButtonNavigationController.cs create mode 100644 BSIPA-ModList/UI/ViewControllers/ModInfoViewController.cs rename BSIPA-ModList/UI/{ => ViewControllers}/ModListController.cs (93%) create mode 100644 Refs/UnityEngine.UI.dll create mode 100644 Refs/UnityEngine.UIModule.dll create mode 100644 Refs/UnityEngine.UIModule.xml diff --git a/BSIPA-ModList/BSIPA-ModList.csproj b/BSIPA-ModList/BSIPA-ModList.csproj index 9eaa304b..c5185fea 100644 --- a/BSIPA-ModList/BSIPA-ModList.csproj +++ b/BSIPA-ModList/BSIPA-ModList.csproj @@ -51,12 +51,22 @@ ..\Refs\UnityEngine.CoreModule.dll False + + ..\Refs\UnityEngine.UI.dll + False + + + ..\Refs\UnityEngine.UIModule.dll + False + - - + + + + diff --git a/BSIPA-ModList/Plugin.cs b/BSIPA-ModList/Plugin.cs index 3eec9210..5de5c496 100644 --- a/BSIPA-ModList/Plugin.cs +++ b/BSIPA-ModList/Plugin.cs @@ -5,6 +5,8 @@ using CustomUI.BeatSaber; using BSIPA_ModList.UI; using CustomUI.MenuButton; using UnityEngine.Events; +using UnityEngine; +using System.Linq; namespace BSIPA_ModList { @@ -29,7 +31,8 @@ namespace BSIPA_ModList { } - private ModListMenu menu; + private MainFlowCoordinator mainFlow; + private ModListFlowCoordinator menuFlow; private MenuButton button; public void OnApplicationStart() @@ -43,14 +46,18 @@ namespace BSIPA_ModList public void OnSceneLoaded(Scene scene, LoadSceneMode sceneMode) { - if (scene.name == "MenuCore" && button == null) + if (scene.name == "MenuCore") { - menu = BeatSaberUI.CreateCustomMenu("Installed Mods"); - button = MenuButtonUI.AddButton("All Mods", "Shows all installed mods, along with controls for updating them.", () => - { - Logger.log.Debug("Presenting menu"); - menu.Present(); - }); + if (mainFlow == null) + mainFlow = Resources.FindObjectsOfTypeAll().First(); + if (menuFlow == null) + menuFlow = new GameObject("BSIPA Mod List Flow Coordinator").AddComponent(); + if (button == null) + button = MenuButtonUI.AddButton("Mod List", "Look at installed mods, and control updating", () => + { + Logger.log.Debug("Presenting own flow controller"); + menuFlow.PresentOn(mainFlow); + }); } } diff --git a/BSIPA-ModList/UI/ModListFlowCoordinator.cs b/BSIPA-ModList/UI/ModListFlowCoordinator.cs new file mode 100644 index 00000000..f339bdfd --- /dev/null +++ b/BSIPA-ModList/UI/ModListFlowCoordinator.cs @@ -0,0 +1,58 @@ +using CustomUI.BeatSaber; +using CustomUI.Utilities; +using IPA.Loader; +using System; +using System.Linq; +using System.Reflection; +using UnityEngine; +using VRUI; + +namespace BSIPA_ModList.UI +{ + internal class ModListFlowCoordinator : FlowCoordinator + { + private BackButtonNavigationController navigationController; + private ModListController modList; + +#pragma warning disable CS0618 + protected override void DidActivate(bool firstActivation, ActivationType activationType) + { // thx Caeden + if (firstActivation && activationType == ActivationType.AddedToHierarchy) + { + title = "Installed Mods"; + + navigationController = BeatSaberUI.CreateViewController(); + navigationController.didFinishEvent += backButton_DidFinish; + + modList = BeatSaberUI.CreateViewController(); + modList.Init(navigationController, PluginManager.AllPlugins, PluginLoader.ignoredPlugins, PluginManager.Plugins); + + PushViewControllerToNavigationController(navigationController, modList); + } + + ProvideInitialViewControllers(navigationController); + } +#pragma warning restore + + private delegate void PresentFlowCoordDel(FlowCoordinator self, FlowCoordinator newF, Action finished, bool immediate, bool replaceTop); + private static PresentFlowCoordDel presentFlow; + + public void PresentOn(FlowCoordinator main, Action finished = null, bool immediate = false, bool replaceTop = false) + { + if (presentFlow == null) + { + var ty = typeof(FlowCoordinator); + var m = ty.GetMethod("PresentFlowCoordinator", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + presentFlow = (PresentFlowCoordDel)Delegate.CreateDelegate(typeof(PresentFlowCoordDel), m); + } + + presentFlow(main, this, finished, immediate, replaceTop); + } + + private void backButton_DidFinish() + { + MainFlowCoordinator mainFlow = Resources.FindObjectsOfTypeAll().First(); + mainFlow.InvokeMethod("DismissFlowCoordinator", this, null, false); + } + } +} diff --git a/BSIPA-ModList/UI/ModListMenu.cs b/BSIPA-ModList/UI/ModListMenu.cs deleted file mode 100644 index 9d1af08f..00000000 --- a/BSIPA-ModList/UI/ModListMenu.cs +++ /dev/null @@ -1,26 +0,0 @@ -using CustomUI.BeatSaber; -using IPA.Loader; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace BSIPA_ModList.UI -{ - internal class ModListMenu : CustomMenu - { - private ModListController controller; - -#pragma warning disable CS0618 - public ModListMenu() - { - Logger.log.Debug("Menu constructor"); - - controller = BeatSaberUI.CreateViewController(); - controller.Init(PluginManager.AllPlugins, PluginLoader.ignoredPlugins, PluginManager.Plugins); - SetMainViewController(controller, true); - } -#pragma warning restore - } -} diff --git a/BSIPA-ModList/UI/ViewControllers/BackButtonNavigationController.cs b/BSIPA-ModList/UI/ViewControllers/BackButtonNavigationController.cs new file mode 100644 index 00000000..7c73beb0 --- /dev/null +++ b/BSIPA-ModList/UI/ViewControllers/BackButtonNavigationController.cs @@ -0,0 +1,22 @@ +using CustomUI.BeatSaber; +using System; +using UnityEngine.UI; +using VRUI; + +namespace BSIPA_ModList.UI +{ + internal class BackButtonNavigationController : VRUINavigationController + { + public event Action didFinishEvent; + + private Button _backButton; + + protected override void DidActivate(bool firstActivation, ActivationType activationType) + { + if (firstActivation && activationType == ActivationType.AddedToHierarchy) + { + _backButton = BeatSaberUI.CreateBackButton(rectTransform, didFinishEvent.Invoke); + } + } + } +} \ No newline at end of file diff --git a/BSIPA-ModList/UI/ViewControllers/ModInfoViewController.cs b/BSIPA-ModList/UI/ViewControllers/ModInfoViewController.cs new file mode 100644 index 00000000..60cde929 --- /dev/null +++ b/BSIPA-ModList/UI/ViewControllers/ModInfoViewController.cs @@ -0,0 +1,14 @@ +using CustomUI.BeatSaber; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BSIPA_ModList.UI +{ + internal class ModInfoViewController : CustomViewController + { + + } +} diff --git a/BSIPA-ModList/UI/ModListController.cs b/BSIPA-ModList/UI/ViewControllers/ModListController.cs similarity index 93% rename from BSIPA-ModList/UI/ModListController.cs rename to BSIPA-ModList/UI/ViewControllers/ModListController.cs index 55218d97..f80a887a 100644 --- a/BSIPA-ModList/UI/ModListController.cs +++ b/BSIPA-ModList/UI/ViewControllers/ModListController.cs @@ -6,6 +6,7 @@ using HMUI; using IPA.Loader; using IPA.Old; using UnityEngine; +using VRUI; namespace BSIPA_ModList.UI { @@ -99,8 +100,10 @@ namespace BSIPA_ModList.UI } #pragma warning restore + private BackButtonNavigationController navigation; + #pragma warning disable CS0618 - public void Init(IEnumerable bsipaPlugins, IEnumerable ignoredPlugins, IEnumerable ipaPlugins) + public void Init(BackButtonNavigationController navigation, IEnumerable bsipaPlugins, IEnumerable ignoredPlugins, IEnumerable ipaPlugins) { Logger.log.Debug("List Controller Init"); @@ -108,6 +111,7 @@ namespace BSIPA_ModList.UI DidSelectRowEvent = DidSelectRow; includePageButtons = true; + this.navigation = navigation; reuseIdentifier = "BSIPAModListTableCell"; diff --git a/Refs/UnityEngine.UI.dll b/Refs/UnityEngine.UI.dll new file mode 100644 index 0000000000000000000000000000000000000000..7e63d1570ed1708aee3ce70232208cd26344888a GIT binary patch literal 97280 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⁣bSz+$fn!rU!f1=NMOLKa{diy$gp2Eyi6E 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 literal 0 HcmV?d00001 diff --git a/Refs/UnityEngine.UIModule.dll b/Refs/UnityEngine.UIModule.dll new file mode 100644 index 0000000000000000000000000000000000000000..5dd5d1499cd38b4d34c799e189da42837b16b3f9 GIT binary patch literal 17920 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 L-@kUVW(58hl86z> literal 0 HcmV?d00001 diff --git a/Refs/UnityEngine.UIModule.xml b/Refs/UnityEngine.UIModule.xml new file mode 100644 index 00000000..b3e5081a --- /dev/null +++ b/Refs/UnityEngine.UIModule.xml @@ -0,0 +1,548 @@ + + + + + UnityEngine.UIModule + + + + Enum mask of possible shader channel properties that can also be included when the Canvas mesh is created. + + + + + No additional shader parameters are needed. + + + + + Include the normals on the mesh vertices. + + + + + Include the Tangent on the mesh vertices. + + + + + Include UV1 on the mesh vertices. + + + + + Include UV2 on the mesh vertices. + + + + + Include UV3 on the mesh vertices. + + + + + Element that can be used for screen rendering. + + + + + Get or set the mask of additional shader channels to be used when creating the Canvas mesh. + + + + + Cached calculated value based upon SortingLayerID. + + + + + Is this the root Canvas? + + + + + The normalized grid size that the canvas will split the renderable area into. + + + + + Allows for nested canvases to override pixelPerfect settings inherited from parent canvases. + + + + + Override the sorting of canvas. + + + + + Force elements in the canvas to be aligned with pixels. Only applies with renderMode is Screen Space. + + + + + Get the render rect for the Canvas. + + + + + How far away from the camera is the Canvas generated. + + + + + The number of pixels per unit that is considered the default. + + + + + Is the Canvas in World or Overlay mode? + + + + + The render order in which the canvas is being emitted to the Scene. (Read Only) + + + + + Returns the Canvas closest to root, by checking through each parent and returning the last canvas found. If no other canvas is found then the canvas will return itself. + + + + + Used to scale the entire canvas, while still making it fit the screen. Only applies with renderMode is Screen Space. + + + + + The normalized grid size that the canvas will split the renderable area into. + + + + + Unique ID of the Canvas' sorting layer. + + + + + Name of the Canvas' sorting layer. + + + + + Canvas' order within a sorting layer. + + + + + For Overlay mode, display index on which the UI canvas will appear. + + + + + Event that is called just before Canvas rendering happens. + + + + + + Camera used for sizing the Canvas when in Screen Space - Camera. Also used as the Camera that events will be sent through for a World Space [[Canvas]. + + + + + Force all canvases to update their content. + + + + + Returns the default material that can be used for rendering normal elements on the Canvas. + + + + + Returns the default material that can be used for rendering text elements on the Canvas. + + + + + Gets or generates the ETC1 Material. + + + The generated ETC1 Material from the Canvas. + + + + + A Canvas placable element that can be used to modify children Alpha, Raycasting, Enabled state. + + + + + Set the alpha of the group. + + + + + Does this group block raycasting (allow collision). + + + + + Should the group ignore parent groups? + + + + + Is the group interactable (are the elements beneath the group enabled). + + + + + Returns true if the Group allows raycasts. + + + + + + + A component that will render to the screen after all normal rendering has completed when attached to a Canvas. Designed for GUI application. + + + + + Depth of the renderer relative to the root canvas. + + + + + Indicates whether geometry emitted by this renderer is ignored. + + + + + Indicates whether geometry emitted by this renderer can be ignored when the vertex color alpha is close to zero for every vertex of the mesh. + + + + + True if any change has occured that would invalidate the positions of generated geometry. + + + + + Enable 'render stack' pop draw call. + + + + + True if rect clipping has been enabled on this renderer. +See Also: CanvasRenderer.EnableRectClipping, CanvasRenderer.DisableRectClipping. + + + + + Is the UIRenderer a mask component. + + + + + The number of materials usable by this renderer. + + + + + The number of materials usable by this renderer. Used internally for masking. + + + + + Depth of the renderer realative to the parent canvas. + + + + + Take the Vertex steam and split it corrisponding arrays (positions, colors, uv0s, uv1s, normals and tangents). + + The UIVertex list to split. + The destination list for the verts positions. + The destination list for the verts colors. + The destination list for the verts uv0s. + The destination list for the verts uv1s. + The destination list for the verts normals. + The destination list for the verts tangents. + + + + Remove all cached vertices. + + + + + Convert a set of vertex components into a stream of UIVertex. + + + + + + + + + + + + + Disables rectangle clipping for this CanvasRenderer. + + + + + Enables rect clipping on the CanvasRendered. Geometry outside of the specified rect will be clipped (not rendered). + + + + + + Get the current alpha of the renderer. + + + + + Get the current color of the renderer. + + + + + Get the final inherited alpha calculated by including all the parent alphas from included parent CanvasGroups. + + + The calculated inherited alpha. + + + + + Gets the current Material assigned to the CanvasRenderer. + + The material index to retrieve (0 if this parameter is omitted). + + Result. + + + + + Gets the current Material assigned to the CanvasRenderer. + + The material index to retrieve (0 if this parameter is omitted). + + Result. + + + + + Gets the current Material assigned to the CanvasRenderer. Used internally for masking. + + + + + + Set the alpha of the renderer. Will be multiplied with the UIVertex alpha and the Canvas alpha. + + Alpha. + + + + The Alpha Texture that will be passed to the Shader under the _AlphaTex property. + + The Texture to be passed. + + + + Set the color of the renderer. Will be multiplied with the UIVertex color and the Canvas color. + + Renderer multiply color. + + + + Set the material for the canvas renderer. If a texture is specified then it will be used as the 'MainTex' instead of the material's 'MainTex'. +See Also: CanvasRenderer.SetMaterialCount, CanvasRenderer.SetTexture. + + Material for rendering. + Material texture overide. + Material index. + + + + Set the material for the canvas renderer. If a texture is specified then it will be used as the 'MainTex' instead of the material's 'MainTex'. +See Also: CanvasRenderer.SetMaterialCount, CanvasRenderer.SetTexture. + + Material for rendering. + Material texture overide. + Material index. + + + + Sets the Mesh used by this renderer. + + + + + + Set the material for the canvas renderer. Used internally for masking. + + + + + + + Sets the texture used by this renderer's material. + + + + + + Set the vertices for the UIRenderer. + + Array of vertices to set. + Number of vertices to set. + + + + Set the vertices for the UIRenderer. + + Array of vertices to set. + Number of vertices to set. + + + + Given a list of UIVertex, split the stream into it's component types. + + + + + + + + + + + + + This element can filter raycasts. If the top level element is hit it can further 'check' if the location is valid. + + + + + Given a point and a camera is the raycast valid. + + Screen position. + Raycast camera. + + Valid. + + + + + Utility class containing helper methods for working with RectTransform. + + + + + Flips the horizontal and vertical axes of the RectTransform size and alignment, and optionally its children as well. + + The RectTransform to flip. + Flips around the pivot if true. Flips within the parent rect if false. + Flip the children as well? + + + + Flips the alignment of the RectTransform along the horizontal or vertical axis, and optionally its children as well. + + The RectTransform to flip. + Flips around the pivot if true. Flips within the parent rect if false. + Flip the children as well? + The axis to flip along. 0 is horizontal and 1 is vertical. + + + + Convert a given point in screen space into a pixel correct point. + + + + + + Pixel adjusted point. + + + + + Given a rect transform, return the corner points in pixel accurate coordinates. + + + + + Pixel adjusted rect. + + + + + Does the RectTransform contain the screen point as seen from the given camera? + + The RectTransform to test with. + The screen point to test. + The camera from which the test is performed from. (Optional) + + True if the point is inside the rectangle. + + + + + Transform a screen space point to a position in the local space of a RectTransform that is on the plane of its rectangle. + + The RectTransform to find a point inside. + The camera associated with the screen space position. + Screen space position. + Point in local space of the rect transform. + + Returns true if the plane of the RectTransform is hit, regardless of whether the point is inside the rectangle. + + + + + Transform a screen space point to a position in world space that is on the plane of the given RectTransform. + + The RectTransform to find a point inside. + The camera associated with the screen space position. + Screen space position. + Point in world space. + + Returns true if the plane of the RectTransform is hit, regardless of whether the point is inside the rectangle. + + + + + RenderMode for the Canvas. + + + + + Render using the Camera configured on the Canvas. + + + + + Render at the end of the Scene using a 2D Canvas. + + + + + Render using any Camera in the Scene that can render the layer. + + + + + The UI module implements basic components required for Unity's UI system + + + + diff --git a/Refs/refs.txt b/Refs/refs.txt index a9387a7a..3818beda 100644 --- a/Refs/refs.txt +++ b/Refs/refs.txt @@ -9,6 +9,11 @@ """"CoreModule. """""dll """""xml +""""UI +""""".dll +"""""Module. +""""""dll +""""""xml "Plugins/ ""BeatSaberCustomUI. """dll