static void RefreshMediaSources() { EditorCore.RefreshMediaSources(); }
void OnGUI() { GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (selectedClip != null) { GUILayout.Label(AssetPreview.GetMiniThumbnail(selectedClip), GUILayout.Height(128), GUILayout.Width(128)); } else { GUILayout.Box("", GUILayout.Height(128), GUILayout.Width(128)); } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); selectedClip = (VideoClip)EditorGUILayout.ObjectField(selectedClip, typeof(UnityEngine.Video.VideoClip), true); if (EditorCore.MediaSources.Length == 0) { if (GUILayout.Button("Refresh Media Sources")) { EditorCore.RefreshMediaSources(); } return; } //media source string[] displayOptions = new string[EditorCore.MediaSources.Length]; for (int i = 0; i < EditorCore.MediaSources.Length; i++) { displayOptions[i] = EditorCore.MediaSources[i].name; } _choiceIndex = EditorGUILayout.Popup("Select Media Source", _choiceIndex, displayOptions); GUILayout.BeginHorizontal(); GUILayout.Label("Description:", GUILayout.Width(100)); EditorGUI.BeginDisabledGroup(true); EditorGUILayout.TextArea(EditorCore.MediaSources[_choiceIndex].description); EditorGUI.EndDisabledGroup(); GUILayout.EndHorizontal(); GUILayout.Space(20); GUILayout.BeginHorizontal(); GUILayout.Label("Projection Type"); if (latlong) { GUI.color = Color.green; } if (GUILayout.Button("Latitude Longitude", EditorStyles.miniButtonLeft)) { latlong = true; } GUI.color = Color.white; if (!latlong) { GUI.color = Color.green; } if (GUILayout.Button("Cubemap", EditorStyles.miniButtonRight)) { latlong = false; } GUI.color = Color.white; GUILayout.EndHorizontal(); EditorGUI.BeginDisabledGroup(selectedClip == null || string.IsNullOrEmpty(EditorCore.MediaSources[_choiceIndex].name)); if (GUILayout.Button("Create")) { CreateAssets(); } EditorGUI.EndDisabledGroup(); }
public override void OnInspectorGUI() { MediaComponent m = (MediaComponent)target; var meshrenderer = m.GetComponent <MeshRenderer>(); if (m.VideoPlayer == null && meshrenderer != null) { //image } else if (m.VideoPlayer != null) { //video } else { EditorGUILayout.HelpBox("If media is a video, Video Player must be set\nIf media is an image, must have mesh render on this gameobject", MessageType.Error); //not set up } //display script field var script = serializedObject.FindProperty("m_Script"); EditorGUI.BeginDisabledGroup(true); EditorGUILayout.PropertyField(script, true, new GUILayoutOption[0]); EditorGUI.EndDisabledGroup(); //video player component m.VideoPlayer = (UnityEngine.Video.VideoPlayer)EditorGUILayout.ObjectField("Video Player", m.VideoPlayer, typeof(UnityEngine.Video.VideoPlayer), true); //media source EditorGUI.BeginDisabledGroup(true); EditorGUILayout.TextField("Media Source", m.MediaSource); EditorGUI.EndDisabledGroup(); EditorGUILayout.BeginHorizontal(); string[] displayOptions = new string[EditorCore.MediaSources.Length]; if (displayOptions.Length == 0) { if (GUILayout.Button("Refresh Media")) { EditorCore.RefreshMediaSources(); } EditorGUILayout.EndHorizontal(); return; } if (!string.IsNullOrEmpty(m.MediaSource) && _choiceIndex == 0 && displayOptions.Length > 0) { //try once to select the correct media for (int i = 0; i < EditorCore.MediaSources.Length; i++) { if (EditorCore.MediaSources[i].uploadId == m.MediaSource) { _choiceIndex = i; } } } for (int i = 0; i < EditorCore.MediaSources.Length; i++) { displayOptions[i] = EditorCore.MediaSources[i].name; } _choiceIndex = EditorGUILayout.Popup("Select Media Source", _choiceIndex, displayOptions); if (m.MediaSource != EditorCore.MediaSources[_choiceIndex].uploadId) { GUI.color = Color.green; } if (GUILayout.Button("Save", GUILayout.Width(40))) { m.MediaSource = EditorCore.MediaSources[_choiceIndex].uploadId; } GUI.color = Color.white; EditorGUILayout.EndHorizontal(); EditorGUI.BeginDisabledGroup(true); //EditorGUILayout.LabelField("Id", EditorCore.MediaSources[_choiceIndex].uploadId); //GUILayout.Label("Description"); EditorGUILayout.TextArea(EditorCore.MediaSources[_choiceIndex].description); EditorGUI.EndDisabledGroup(); if (GUI.changed) { UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene()); } }