internal void OpenView(Rect rect, ScriptableObject view) { if (!view) { throw new ArgumentNullException("view"); } view.EnsureOfType(Types.View); if (FullscreenUtility.IsLinux) { throw new PlatformNotSupportedException("Linux does not support fullscreen from View class"); } if (Fullscreen.GetFullscreenFromView(view)) { Logger.Debug("Tried to fullscreen a view already in fullscreen"); return; } BeforeOpening(); var placeholder = CreateInstance <PlaceholderWindow>(); m_src = new ViewPyramid(view); m_dst = CreateFullscreenViewPyramid(rect, placeholder); SwapViews(m_src.View, m_dst.View); Rect = rect; AfterOpening(); }
/// <summary>Focus a view.</summary> public static void FocusView(ScriptableObject guiView) { if (!guiView) { return; } guiView.EnsureOfType(Types.GUIView); guiView.InvokeMethod("Focus"); }
/// <summary>Get all the children view of a given view.</summary> public static ScriptableObject[] GetAllViewChildren(ScriptableObject view) { if (!view) { return(new ScriptableObject[0]); } view.EnsureOfType(Types.View); return(view.GetPropertyValue <Array>("allChildren") .Cast <ScriptableObject>() .ToArray()); }
/// <summary>Returns wheter a given view is focused or not.</summary> public static bool IsViewFocused(ScriptableObject view) { if (!view) { return(false); } view.EnsureOfType(Types.View); var focused = Types.GUIView.GetPropertyValue <ScriptableObject>("focusedView"); var children = GetAllViewChildren(view); return(children.Contains(focused)); }
/// <summary>Create a <see cref="FullscreenView"/> for a given view.</summary> /// <param name="view">The view that will go fullscreen, cannot be null.</param> /// <returns>Returns the newly created <see cref="FullscreenView"/>.</returns> public static FullscreenView MakeFullscreen(ScriptableObject view) { if (!view) { throw new ArgumentNullException("view"); } view.EnsureOfType(Types.View); var rect = FullscreenRects.GetFullscreenRect(FullscreenPreferences.RectSource, view); var fullscreen = ScriptableObject.CreateInstance <FullscreenView>(); fullscreen.OpenView(rect, view); return(fullscreen); }
/// <summary>Returns all the parents of a given view.</summary> public static ScriptableObject[] GetViewHierarchy(ScriptableObject view) { if (!view) { return(new ScriptableObject[0]); } view.EnsureOfType(Types.View); var list = new List <ScriptableObject>() { view }; var parent = view.GetPropertyValue <ScriptableObject>("parent"); while (parent) // Get the least specific view { view = parent; list.Add(view); parent = view.GetPropertyValue <ScriptableObject>("parent"); } return(list.ToArray()); }