예제 #1
0
        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));
        }
예제 #5
0
        /// <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());
        }