コード例 #1
0
        private void OnGUI()
        {
            if (styles == null)
            {
                styles = new Styles();
            }

            // Get next/previous slide events if the window is focused.
            if (Event.current.type == EventType.KeyUp)
            {
                if (Event.current.keyCode == props.PreviousSlide)
                {
                    engine.PreviousSlide();
                    Event.current.Use();
                }
                else
                if (Event.current.keyCode == props.NextSlide)
                {
                    engine.NextSlide();
                    Event.current.Use();
                }
            }
            else
            {
                var shouldBuild = false;
                var bgcolor     = GUI.backgroundColor;
                var deck        = engine.SlideDeck;

                EditorGUILayout.BeginHorizontal();
                if (engine.IsPresenting)
                {
                    GUI.enabled = false;
                }
                if (GUILayout.Button(styles.TEXT_NEW, styles.BUTTONS_LEFT))
                {
                    engine.NewDeck();
                }
                if (GUILayout.Button(styles.TEXT_LOAD, styles.BUTTONS_MID))
                {
                    engine.LoadDeck();
                }
                if (GUILayout.Button(styles.TEXT_SAVE, styles.BUTTONS_RIGHT))
                {
                    deck.Save(true);
                }
                if (GUILayout.Button(styles.TEXT_BUILD, styles.BUTTON))
                {
                    shouldBuild = true;
                }
                GUI.enabled = true;

                GUILayout.Label(GUIContent.none, GUILayout.ExpandWidth(true));

                if (engine.IsPresenting)
                {
                    GUI.backgroundColor = styles.SELECTED_COLOR;
                }
                if (!engine.IsPresenting)
                {
                    GUI.enabled = false;
                }
                if (GUILayout.Button(styles.TEXT_PREV, styles.BUTTONS_LEFT))
                {
                    if (!engine.IsBusy)
                    {
                        engine.PreviousSlide();
                    }
                }
                GUI.enabled = true;
                if (GUILayout.Button(engine.IsPresenting ? styles.TEXT_STOP : styles.TEXT_FROM_BEGINNING, styles.BUTTONS_MID))
                {
                    if (engine.IsPresenting)
                    {
                        engine.StopPresentation();
                    }
                    else
                    {
                        engine.StartPresentation();
                    }
                }
                if (!engine.IsPresenting)
                {
                    GUI.enabled = false;
                }
                if (GUILayout.Button(styles.TEXT_NEXT, styles.BUTTONS_RIGHT))
                {
                    if (!engine.IsBusy)
                    {
                        engine.NextSlide();
                    }
                }
                GUI.enabled         = true;
                GUI.backgroundColor = bgcolor;
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.Space();

                // Slides list.
                scroll = SlideDeckEditor.DrawInspector(deck, scroll, shouldSelect, itemPlayHandler);

                if (shouldBuild)
                {
                    EditorUtils.BuildPresentation(deck);
                }
            }
        }
コード例 #2
0
        private void OnGUI()
        {
            if (styles == null)
            {
                styles = new Styles();
            }

            // Get next/previous slide events if the window is focused.
            if (Event.current.type == EventType.KeyUp)
            {
                if (Event.current.keyCode == props.PreviousSlide)
                {
                    engine.PreviousSlide();
                    Event.current.Use();
                }
                else
                if (Event.current.keyCode == props.NextSlide)
                {
                    engine.NextSlide();
                    Event.current.Use();
                }
            }
            else
            {
                var shouldBuild  = false;
                var shouldExport = false;
                var bgcolor      = GUI.backgroundColor;
                var deck         = engine.SlideDeck;

                EditorGUILayout.BeginHorizontal();
                if (engine.IsPresenting)
                {
                    GUI.enabled = false;
                }
                if (GUILayout.Button(styles.TEXT_NEW, styles.BUTTONS_LEFT))
                {
                    engine.NewDeck();
                }
                if (GUILayout.Button(styles.TEXT_LOAD, styles.BUTTONS_MID))
                {
                    engine.LoadDeck();
                }
                if (GUILayout.Button(styles.TEXT_SAVE, styles.BUTTONS_RIGHT))
                {
                    deck.Save(true);
                }
                if (GUILayout.Button(styles.TEXT_BUILD, styles.BUTTON))
                {
                    shouldBuild = true;
                }
                if (GUILayout.Button(styles.TEXT_EXPORT, styles.BUTTON))
                {
                    shouldExport = true;
                }
                GUI.enabled = true;

                GUILayout.Label(GUIContent.none, GUILayout.ExpandWidth(true));

                if (engine.IsPresenting)
                {
                    GUI.backgroundColor = styles.SELECTED_COLOR;
                }
                if (!engine.IsPresenting)
                {
                    GUI.enabled = false;
                }
                if (GUILayout.Button(styles.TEXT_PREV, styles.BUTTONS_LEFT))
                {
                    if (!engine.IsBusy)
                    {
                        engine.PreviousSlide();
                    }
                }
                GUI.enabled = true;
                if (GUILayout.Button(engine.IsPresenting ? styles.TEXT_STOP : styles.TEXT_FROM_BEGINNING, styles.BUTTONS_MID))
                {
                    if (engine.IsPresenting)
                    {
                        engine.StopPresentation();
                    }
                    else
                    {
                        engine.StartPresentation();
                    }
                }
                if (!engine.IsPresenting)
                {
                    GUI.enabled = false;
                }
                if (GUILayout.Button(styles.TEXT_NEXT, styles.BUTTONS_RIGHT))
                {
                    if (!engine.IsBusy)
                    {
                        engine.NextSlide();
                    }
                }
                GUI.enabled         = true;
                GUI.backgroundColor = bgcolor;
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.Space();

                // Slides list.
                scroll = SlideDeckEditor.DrawInspector(deck, scroll, shouldSelect, itemPlayHandler);

                if (shouldBuild)
                {
                    EditorUtils.BuildPresentation(deck);
                }

                if (shouldExport)
                {
                    EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo();
                    var activeScene = SceneManager.GetActiveScene().path;

                    string exportFolder =
                        EditorUtility.OpenFolderPanel("Choose folder for export", Application.dataPath, "Exports");

                    if (!string.IsNullOrEmpty(exportFolder))
                    {
                        RenderTexture renderTexture = RenderTexture.GetTemporary(1920, 1080, 32, RenderTextureFormat.ARGB32);

                        for (var i = 0; i < deck.Slides.Count; i++)
                        {
                            var slide = deck.Slides[i];
                            EditorSceneManager.OpenScene(slide.ScenePath);

                            var sceneCam = Camera.main;
                            sceneCam.targetTexture = renderTexture;

                            RenderTexture.active = renderTexture;
                            sceneCam.Render();

                            var exportTexture = new Texture2D(renderTexture.width, renderTexture.height);
                            exportTexture.ReadPixels(new Rect(0, 0, renderTexture.width, renderTexture.height), 0, 0);

                            var slidePath =
                                string.Format("{0}/{1} - {2}.png", exportFolder, i + 1,
                                              Path.GetFileNameWithoutExtension(slide.ScenePath));

                            File.WriteAllBytes(slidePath,
                                               exportTexture.EncodeToPNG());

                            RenderTexture.active = null;
                            Object.DestroyImmediate(exportTexture);
                        }

                        RenderTexture.ReleaseTemporary(renderTexture);

                        if (!string.IsNullOrEmpty(activeScene))
                        {
                            EditorSceneManager.OpenScene(activeScene);
                        }
                    }
                }
            }
        }