Beispiel #1
0
 static void ToggleSimulation()
 {
     NotchSimulatorUtility.enableSimulation = !NotchSimulatorUtility.enableSimulation;
     NotchSimulator.UpdateAllMockups();
     NotchSimulator.UpdateSimulatorTargets();
     NotchSimulator.win?.Repaint();
 }
Beispiel #2
0
        static void ToggleSimulation()
        {
            var settings = Settings.Instance;

            settings.EnableSimulation = !settings.EnableSimulation;
            settings.Save();
            NotchSimulator.UpdateAllMockups();
            NotchSimulator.UpdateSimulatorTargets();
            NotchSimulator.Redraw();
        }
Beispiel #3
0
        internal static void SwitchConfiguration()
        {
            Settings.Instance.NextConfiguration();

            NotchSimulator.Redraw();
            NotchSimulator.UpdateAllMockups();
            NotchSimulator.UpdateSimulatorTargets();

            // Using shortcut to change aspect ratio actually will not proc the [ExecuteAlways] Update() of adaptation components, unlike using the drop down.
            // But it mostly do so because we always have some uGUI components which indirectly cause those updates on ratio change.
            // While the scene with no uGUI at all maybe rare, it never hurts to proc them manually.. just in case.

            EditorApplication.QueuePlayerLoopUpdate();
        }
        static void SwitchNarrowestWidest()
        {
            var gameView  = typeof(Editor).Assembly.GetType("UnityEditor.GameView");
            var sizeIndex = gameView.GetProperty("selectedSizeIndex",
                                                 BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
            var window = EditorWindow.GetWindow(gameView);

            int currentIndex = (int)sizeIndex.GetValue(window);

            currentIndex = currentIndex == NotchSolutionUtility.NarrowestAspectIndex ? NotchSolutionUtility.WidestAspectIndex : NotchSolutionUtility.NarrowestAspectIndex;
            sizeIndex.SetValue(window, currentIndex, null);

            NotchSimulator.UpdateAllMockups();
            NotchSimulator.UpdateSimulatorTargets();
        }
Beispiel #5
0
        public override void OnActivate(string searchContext, VisualElement root)
        {
            var padRect = new VisualElement();
            int padding = 10;

            padRect.style.paddingBottom = padding;
            padRect.style.paddingLeft   = padding;
            padRect.style.paddingRight  = padding;
            padRect.style.paddingTop    = padding - 5;
            root.Add(padRect);

            var title = new Label("Notch Solution");

            title.style.fontSize = 15;
            title.style.unityFontStyleAndWeight = FontStyle.Bold;
            padRect.Add(title);

            var repo = new Label("https://github.com/5argon/NotchSolution");

            repo.style.paddingBottom           = 15;
            repo.style.unityFontStyleAndWeight = FontStyle.Bold;
            repo.RegisterCallback((MouseDownEvent ev) =>
            {
                System.Diagnostics.Process.Start("https://github.com/5argon/NotchSolution");
            });
            padRect.Add(repo);

            var devicesPath = new TextField("Device Directory");

            devicesPath.SetEnabled(false);
            devicesPath.value = NotchSimulatorUtility.DevicesFolder;
            padRect.Add(devicesPath);

            var colorField = new ColorField("Prefab mode overlay color");

            colorField.value = Settings.Instance.PrefabModeOverlayColor;
            colorField.RegisterValueChangedCallback(ev =>
            {
                var settings = Settings.Instance;
                settings.PrefabModeOverlayColor = ev.newValue;
                settings.Save();
                NotchSimulator.UpdateAllMockups();
                NotchSimulator.UpdateSimulatorTargets();
            });
            padRect.Add(colorField);
        }
Beispiel #6
0
        static void SwitchNarrowestWidest()
        {
            var gameView  = typeof(Editor).Assembly.GetType("UnityEditor.GameView");
            var sizeIndex = gameView.GetProperty("selectedSizeIndex",
                                                 BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
            var window = EditorWindow.GetWindow(gameView);

            int currentIndex = (int)sizeIndex.GetValue(window);

            currentIndex = currentIndex == NotchSolutionUtility.NarrowestAspectIndex ? NotchSolutionUtility.WidestAspectIndex : NotchSolutionUtility.NarrowestAspectIndex;
            sizeIndex.SetValue(window, currentIndex, null);

            NotchSimulator.UpdateAllMockups();
            NotchSimulator.UpdateSimulatorTargets();

            // Using shortcut to change aspect ratio actually will not proc the [ExecuteAlways] Update() of adaptation components, unlike using the drop down.
            // But it mostly do so because we always have some uGUI components which indirectly cause those updates on ratio change.
            // While the scene with no uGUI at all maybe rare, it never hurts to proc them manually.. just in case.

            EditorApplication.QueuePlayerLoopUpdate();
        }
Beispiel #7
0
        public override void OnActivate(string searchContext, VisualElement root)
        {
            var padRect = new VisualElement();
            int padding = 10;

            padRect.style.paddingBottom = padding;
            padRect.style.paddingLeft   = padding;
            padRect.style.paddingRight  = padding;
            padRect.style.paddingTop    = padding - 5;
            root.Add(padRect);

            var title = new Label("Notch Solution");

            title.style.fontSize = 15;
            title.style.unityFontStyleAndWeight = FontStyle.Bold;
            padRect.Add(title);

            var repo = new Label("https://github.com/5argon/NotchSolution");

            repo.style.paddingBottom           = 15;
            repo.style.unityFontStyleAndWeight = FontStyle.Bold;
            repo.RegisterCallback((MouseDownEvent ev) =>
            {
                System.Diagnostics.Process.Start("https://github.com/5argon/NotchSolution");
            });
            padRect.Add(repo);

            var colorField = new ColorField("Prefab mode overlay color");

            colorField.value = NotchSolutionUtility.PrefabModeOverlayColor;
            colorField.RegisterValueChangedCallback(ev =>
            {
                NotchSolutionUtility.PrefabModeOverlayColor = ev.newValue;
                NotchSimulator.UpdateAllMockups();
                NotchSimulator.UpdateSimulatorTargets();
            });
            padRect.Add(colorField);

            string shortcutString = ShortcutManager.instance.GetShortcutBinding(NotchSolutionShortcuts.switchNarrowestWidestShortcut).ToString();
            string text           = $"This feature allows you to press {shortcutString} to quick switch between 2 aspect ratio choices. Commonly I would often switch between the longest phone like LG G7 and widest device like an iPad as I design. The index is counted from the top choice where 0 equals Free Aspect.";

            var box     = new Box();
            var helpBox = new Label(text);

            helpBox.style.whiteSpace = WhiteSpace.Normal;
            box.style.paddingTop     = 5;
            box.style.paddingLeft    = 5;
            box.style.paddingRight   = 5;
            box.style.paddingBottom  = 2;
            box.style.marginTop      = 10;
            box.style.marginBottom   = 10;
            box.Add(helpBox);
            padRect.Add(box);

            //TODO : Reflect to `GameViewSizes.instance` and request all sizes to draw a nicer drop down menu instead of index number.

            var narrowest = new IntegerField("Narrowest aspect index");

            narrowest.value = NotchSolutionUtility.NarrowestAspectIndex;
            narrowest.RegisterValueChangedCallback(ev =>
            {
                narrowest.value = Mathf.Max(0, ev.newValue); //go to -1 and the game view crashes..
                NotchSolutionUtility.NarrowestAspectIndex = ev.newValue;
                NotchSimulator.UpdateAllMockups();
                NotchSimulator.UpdateSimulatorTargets();
            });
            padRect.Add(narrowest);

            var widest = new IntegerField("Widest aspect index");

            widest.value = NotchSolutionUtility.WidestAspectIndex;
            widest.RegisterValueChangedCallback(ev =>
            {
                widest.value = Mathf.Max(0, ev.newValue);
                NotchSolutionUtility.WidestAspectIndex = ev.newValue;
                NotchSimulator.UpdateAllMockups();
                NotchSimulator.UpdateSimulatorTargets();
            });
            padRect.Add(widest);
        }