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); } } }
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); } } } } }