void Update() { if (_liveCamera != null) { if (_liveCamera.OutputTexture != null) { _currentCamera = _liveCamera; if (_makePixelPerfect) { _currentCamera.OutputTexture.filterMode = FilterMode.Point; _uiTexture.mainTexture = _currentCamera.OutputTexture; _uiTexture.MakePixelPerfect(); } else { _uiTexture.mainTexture = _currentCamera.OutputTexture; } } } else { _currentCamera = null; _uiTexture.mainTexture = _defaultTexture; } }
void Update() { if (_liveCamera != null) { if (_liveCamera.OutputTexture != null) { _currentCamera = _liveCamera; if (_makePixelPerfect) { _currentCamera.OutputTexture.filterMode = FilterMode.Point; _uiTexture.mainTexture = _currentCamera.OutputTexture; _uiTexture.MakePixelPerfect(); } else { _uiTexture.mainTexture = _currentCamera.OutputTexture; } } } else { _currentCamera = null; _uiTexture.mainTexture = _defaultTexture; } }
void OnEnable() { _camera = (this.target) as AVProLiveCamera; _propFlipX = serializedObject.FindProperty("_flipX"); _propFlipY = serializedObject.FindProperty("_flipY"); _propHotSwap = serializedObject.FindProperty("_updateHotSwap"); _propFrameRates = serializedObject.FindProperty("_updateFrameRates"); _propSettings = serializedObject.FindProperty("_updateSettings"); LoadSettings(); }
public override void OnInspectorGUI() { _camera = (this.target) as AVProLiveCamera; //EditorGUIUtility.LookLikeInspector(); //DrawDefaultInspector(); if (!Application.isPlaying) { EditorGUILayout.LabelField("Search for Capture Device:", ""); EditorGUILayout.Space(); GUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Device Select By"); GUILayout.BeginVertical(); AVProLiveCamera.SelectDeviceBy newDeviceSelection = (AVProLiveCamera.SelectDeviceBy)EditorGUILayout.EnumPopup("", _camera._deviceSelection); switch (newDeviceSelection) { case AVProLiveCamera.SelectDeviceBy.Default: break; case AVProLiveCamera.SelectDeviceBy.Name: if (_camera._deviceSelection != newDeviceSelection && _camera._desiredDeviceNames.Count == 0) { _camera._desiredDeviceNames.Add("Enter Camera Name"); } EditorGUILayout.BeginVertical(); for (int index = 0; index < _camera._desiredDeviceNames.Count; index++) { EditorGUILayout.BeginHorizontal(); /*EditorGUILayout.BeginHorizontal(GUILayout.Width(96)); * if (index != 0) * { * if (GUILayout.Button("Up")) * { * string temp = _camera._desiredDeviceNames[index - 1]; * _camera._desiredDeviceNames[index - 1] = _camera._desiredDeviceNames[index]; * _camera._desiredDeviceNames[index] = temp; * HandleUtility.Repaint(); * } * } * if (index + 1 < _camera._desiredDeviceNames.Count) * { * if (GUILayout.Button("Down")) * { * string temp = _camera._desiredDeviceNames[index + 1]; * _camera._desiredDeviceNames[index + 1] = _camera._desiredDeviceNames[index]; * _camera._desiredDeviceNames[index] = temp; * HandleUtility.Repaint(); * } * } * EditorGUILayout.EndHorizontal();*/ if (GUILayout.Button("-")) { _camera._desiredDeviceNames.RemoveAt(index); break; } else { _camera._desiredDeviceNames[index] = EditorGUILayout.TextField(_camera._desiredDeviceNames[index]); } EditorGUILayout.EndHorizontal(); } if (GUILayout.Button("+")) { _camera._desiredDeviceNames.Add(string.Empty); this.Repaint(); } EditorGUILayout.EndVertical(); break; case AVProLiveCamera.SelectDeviceBy.Index: _camera._desiredDeviceIndex = EditorGUILayout.IntField(_camera._desiredDeviceIndex); break; } _camera._deviceSelection = newDeviceSelection; GUILayout.EndVertical(); GUILayout.EndHorizontal(); EditorGUILayout.Space(); GUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Mode Select By"); GUILayout.BeginVertical(); AVProLiveCamera.SelectModeBy newResolutionSelection = (AVProLiveCamera.SelectModeBy)EditorGUILayout.EnumPopup("", _camera._modeSelection); switch (newResolutionSelection) { case AVProLiveCamera.SelectModeBy.Default: break; case AVProLiveCamera.SelectModeBy.Resolution: if (_camera._modeSelection != newResolutionSelection && _camera._desiredResolutions.Count == 0) { _camera._desiredResolutions.Add(new Vector2(640, 360)); } EditorGUILayout.BeginVertical(); _camera._maintainAspectRatio = EditorGUILayout.Toggle("Maintain Aspect Ratio", _camera._maintainAspectRatio); for (int index = 0; index < _camera._desiredResolutions.Count; index++) { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("-")) { _camera._desiredResolutions.RemoveAt(index); break; } else { Vector2 res = _camera._desiredResolutions[index]; res.x = EditorGUILayout.FloatField(res.x, GUILayout.Width(64)); EditorGUILayout.LabelField("x", "", GUILayout.Width(24)); res.y = EditorGUILayout.FloatField(res.y, GUILayout.Width(64)); _camera._desiredResolutions[index] = res; } EditorGUILayout.EndHorizontal(); } if (GUILayout.Button("+")) { _camera._desiredResolutions.Add(new Vector2(640, 360)); this.Repaint(); } EditorGUILayout.EndVertical(); break; case AVProLiveCamera.SelectModeBy.Index: _camera._desiredModeIndex = EditorGUILayout.IntField(_camera._desiredModeIndex); break; } _camera._modeSelection = newResolutionSelection; GUILayout.EndVertical(); GUILayout.EndHorizontal(); EditorGUILayout.Space(); GUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Video Input Select By"); GUILayout.BeginVertical(); AVProLiveCamera.SelectDeviceBy newVideoInputSelection = (AVProLiveCamera.SelectDeviceBy)EditorGUILayout.EnumPopup("", _camera._videoInputSelection); switch (newVideoInputSelection) { case AVProLiveCamera.SelectDeviceBy.Default: break; case AVProLiveCamera.SelectDeviceBy.Name: if (_camera._videoInputSelection != newVideoInputSelection && _camera._desiredVideoInputs.Count == 0) { _camera._desiredVideoInputs.Add(AVProLiveCameraPlugin.VideoInput.Video_Serial_Digital); } EditorGUILayout.BeginVertical(); for (int index = 0; index < _camera._desiredVideoInputs.Count; index++) { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("-")) { _camera._desiredVideoInputs.RemoveAt(index); break; } else { _camera._desiredVideoInputs[index] = (AVProLiveCameraPlugin.VideoInput)EditorGUILayout.EnumPopup(_camera._desiredVideoInputs[index]); } EditorGUILayout.EndHorizontal(); } if (GUILayout.Button("+")) { _camera._desiredVideoInputs.Add(AVProLiveCameraPlugin.VideoInput.Video_Serial_Digital); this.Repaint(); } EditorGUILayout.EndVertical(); break; case AVProLiveCamera.SelectDeviceBy.Index: _camera._desiredVideoInputIndex = EditorGUILayout.IntField(_camera._desiredVideoInputIndex); break; } _camera._videoInputSelection = newVideoInputSelection; GUILayout.EndVertical(); GUILayout.EndHorizontal(); EditorGUILayout.Space(); _camera._playOnStart = EditorGUILayout.Toggle("Play On Start", _camera._playOnStart); _camera._deinterlace = EditorGUILayout.Toggle("Deinterlace", _camera._deinterlace); } else { if (_camera.Device != null) { _preview = GUILayout.Toggle(_preview, "Inspector Preview"); AVProLiveCameraDevice device = _camera.Device; if (_preview && device.OutputTexture != null) { Rect textureRect = GUILayoutUtility.GetRect(64.0f, 64.0f, GUILayout.MinWidth(64.0f), GUILayout.MinHeight(64.0f)); GUI.DrawTexture(textureRect, device.OutputTexture, ScaleMode.ScaleToFit); } GUILayout.Label("Device: " + device.Name); GUILayout.Label(string.Format("Mode: {0}x{1} {2}", device.CurrentWidth, device.CurrentHeight, device.CurrentFormat)); if (device.FramesTotal > 30) { GUILayout.Label("Displaying at " + device.DisplayFPS.ToString("F1") + " fps"); } else { GUILayout.Label("Displaying at ... fps"); } if (device.IsRunning) { GUILayout.BeginHorizontal(); if (GUILayout.Button("Stop Camera")) { device.Close(); } if (device.IsPaused) { if (GUILayout.Button("Unpause Stream")) { device.Play(); } } else { if (GUILayout.Button("Pause Stream")) { device.Pause(); } } GUILayout.EndHorizontal(); } else { if (GUILayout.Button("Start Camera")) { _camera.Begin(); } } GUI.enabled = device.CanShowConfigWindow(); if (GUILayout.Button("Show Config Window")) { device.ShowConfigWindow(); } GUI.enabled = true; if (device.NumSettings > 0) { EditorGUILayout.PrefixLabel("Device Settings", EditorStyles.boldLabel); for (int j = 0; j < device.NumSettings; j++) { AVProLiveCameraSettingBase settingBase = device.GetVideoSettingByIndex(j); GUILayout.BeginHorizontal(); GUI.enabled = !settingBase.IsAutomatic; if (GUILayout.Button("D", GUILayout.ExpandWidth(false))) { settingBase.SetDefault(); } GUI.enabled = true; GUILayout.Label(settingBase.Name, GUILayout.ExpandWidth(false), GUILayout.MaxWidth(64.0f)); GUI.enabled = !settingBase.IsAutomatic; switch (settingBase.DataTypeValue) { case AVProLiveCameraSettingBase.DataType.Boolean: AVProLiveCameraSettingBoolean settingBool = (AVProLiveCameraSettingBoolean)settingBase; settingBool.CurrentValue = GUILayout.Toggle(settingBool.CurrentValue, "", GUILayout.ExpandWidth(true)); break; case AVProLiveCameraSettingBase.DataType.Float: AVProLiveCameraSettingFloat settingFloat = (AVProLiveCameraSettingFloat)settingBase; float sliderValue = GUILayout.HorizontalSlider(settingFloat.CurrentValue, settingFloat.MinValue, settingFloat.MaxValue, GUILayout.ExpandWidth(true)); if (GUI.enabled) { settingFloat.CurrentValue = sliderValue; } GUILayout.Label(((long)settingFloat.CurrentValue).ToString(), GUILayout.Width(32.0f), GUILayout.ExpandWidth(false)); GUI.enabled = settingBase.CanAutomatic; settingBase.IsAutomatic = GUILayout.Toggle(settingBase.IsAutomatic, "", GUILayout.Width(32.0f)); GUI.enabled = true; break; } GUI.enabled = true; GUILayout.EndHorizontal(); } if (GUILayout.Button("Defaults")) { for (int j = 0; j < device.NumSettings; j++) { AVProLiveCameraSettingBase settingBase = device.GetVideoSettingByIndex(j); settingBase.SetDefault(); } } device.Update_Settings(); } //EditorGUILayout.Toggle("Running:", device.IsRunning); } if (_preview) { //HandleUtility.Repaint(); this.Repaint(); } } GUI.enabled = true; _camera._flipX = EditorGUILayout.Toggle("Flip X", _camera._flipX); _camera._flipY = EditorGUILayout.Toggle("Flip Y", _camera._flipY); EditorGUILayout.Space(); _camera._updateHotSwap = EditorGUILayout.Toggle("Update HotSwap", _camera._updateHotSwap); _camera._updateFrameRates = EditorGUILayout.Toggle("Update Frame Rates", _camera._updateFrameRates); _camera._updateSettings = EditorGUILayout.Toggle("Update Settings", _camera._updateSettings); if (GUI.changed) { EditorUtility.SetDirty(_camera); } }
void OnDisable() { _camera = null; SaveSettings(); }
public override void OnInspectorGUI() { _camera = (this.target) as AVProLiveCamera; //EditorGUIUtility.LookLikeInspector(); //DrawDefaultInspector(); if (!Application.isPlaying) { EditorGUILayout.LabelField("Search for Capture Device:", ""); EditorGUILayout.Space(); GUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Device Select By"); GUILayout.BeginVertical(); AVProLiveCamera.SelectDeviceBy newDeviceSelection = (AVProLiveCamera.SelectDeviceBy)EditorGUILayout.EnumPopup("", _camera._deviceSelection); switch (newDeviceSelection) { case AVProLiveCamera.SelectDeviceBy.Default: break; case AVProLiveCamera.SelectDeviceBy.Name: if (_camera._deviceSelection != newDeviceSelection && _camera._desiredDeviceNames.Count == 0) _camera._desiredDeviceNames.Add("Enter Camera Name"); EditorGUILayout.BeginVertical(); for (int index = 0; index < _camera._desiredDeviceNames.Count; index++) { EditorGUILayout.BeginHorizontal(); /*EditorGUILayout.BeginHorizontal(GUILayout.Width(96)); if (index != 0) { if (GUILayout.Button("Up")) { string temp = _camera._desiredDeviceNames[index - 1]; _camera._desiredDeviceNames[index - 1] = _camera._desiredDeviceNames[index]; _camera._desiredDeviceNames[index] = temp; HandleUtility.Repaint(); } } if (index + 1 < _camera._desiredDeviceNames.Count) { if (GUILayout.Button("Down")) { string temp = _camera._desiredDeviceNames[index + 1]; _camera._desiredDeviceNames[index + 1] = _camera._desiredDeviceNames[index]; _camera._desiredDeviceNames[index] = temp; HandleUtility.Repaint(); } } EditorGUILayout.EndHorizontal();*/ if (GUILayout.Button("-")) { _camera._desiredDeviceNames.RemoveAt(index); break; } else { _camera._desiredDeviceNames[index] = EditorGUILayout.TextField(_camera._desiredDeviceNames[index]); } EditorGUILayout.EndHorizontal(); } if (GUILayout.Button("+")) { _camera._desiredDeviceNames.Add(string.Empty); this.Repaint(); } EditorGUILayout.EndVertical(); break; case AVProLiveCamera.SelectDeviceBy.Index: _camera._desiredDeviceIndex = EditorGUILayout.IntField(_camera._desiredDeviceIndex); break; } _camera._deviceSelection = newDeviceSelection; GUILayout.EndVertical(); GUILayout.EndHorizontal(); EditorGUILayout.Space(); GUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Mode Select By"); GUILayout.BeginVertical(); AVProLiveCamera.SelectModeBy newResolutionSelection = (AVProLiveCamera.SelectModeBy)EditorGUILayout.EnumPopup("", _camera._modeSelection); switch (newResolutionSelection) { case AVProLiveCamera.SelectModeBy.Default: break; case AVProLiveCamera.SelectModeBy.Resolution: if (_camera._modeSelection != newResolutionSelection && _camera._desiredResolutions.Count == 0) _camera._desiredResolutions.Add(new Vector2(640, 360)); EditorGUILayout.BeginVertical(); _camera._maintainAspectRatio = EditorGUILayout.Toggle("Maintain Aspect Ratio", _camera._maintainAspectRatio); for (int index = 0; index < _camera._desiredResolutions.Count; index++) { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("-")) { _camera._desiredResolutions.RemoveAt(index); break; } else { Vector2 res = _camera._desiredResolutions[index]; res.x = EditorGUILayout.FloatField(res.x, GUILayout.Width(64)); EditorGUILayout.LabelField("x", "", GUILayout.Width(24)); res.y = EditorGUILayout.FloatField(res.y, GUILayout.Width(64)); _camera._desiredResolutions[index] = res; } EditorGUILayout.EndHorizontal(); } if (GUILayout.Button("+")) { _camera._desiredResolutions.Add(new Vector2(640, 360)); this.Repaint(); } EditorGUILayout.EndVertical(); break; case AVProLiveCamera.SelectModeBy.Index: _camera._desiredModeIndex = EditorGUILayout.IntField(_camera._desiredModeIndex); break; } _camera._modeSelection = newResolutionSelection; GUILayout.EndVertical(); GUILayout.EndHorizontal(); EditorGUILayout.Space(); GUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Video Input Select By"); GUILayout.BeginVertical(); AVProLiveCamera.SelectDeviceBy newVideoInputSelection = (AVProLiveCamera.SelectDeviceBy)EditorGUILayout.EnumPopup("", _camera._videoInputSelection); switch (newVideoInputSelection) { case AVProLiveCamera.SelectDeviceBy.Default: break; case AVProLiveCamera.SelectDeviceBy.Name: if (_camera._videoInputSelection != newVideoInputSelection && _camera._desiredVideoInputs.Count == 0) _camera._desiredVideoInputs.Add(AVProLiveCameraPlugin.VideoInput.Video_Serial_Digital); EditorGUILayout.BeginVertical(); for (int index = 0; index < _camera._desiredVideoInputs.Count; index++) { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("-")) { _camera._desiredVideoInputs.RemoveAt(index); break; } else { _camera._desiredVideoInputs[index] = (AVProLiveCameraPlugin.VideoInput)EditorGUILayout.EnumPopup(_camera._desiredVideoInputs[index]); } EditorGUILayout.EndHorizontal(); } if (GUILayout.Button("+")) { _camera._desiredVideoInputs.Add(AVProLiveCameraPlugin.VideoInput.Video_Serial_Digital); this.Repaint(); } EditorGUILayout.EndVertical(); break; case AVProLiveCamera.SelectDeviceBy.Index: _camera._desiredVideoInputIndex = EditorGUILayout.IntField(_camera._desiredVideoInputIndex); break; } _camera._videoInputSelection = newVideoInputSelection; GUILayout.EndVertical(); GUILayout.EndHorizontal(); EditorGUILayout.Space(); _camera._playOnStart = EditorGUILayout.Toggle("Play On Start", _camera._playOnStart); _camera._deinterlace = EditorGUILayout.Toggle("Deinterlace", _camera._deinterlace); } else { if (_camera.Device != null) { _preview = GUILayout.Toggle(_preview, "Inspector Preview"); AVProLiveCameraDevice device = _camera.Device; if (_preview && device.OutputTexture != null) { Rect textureRect = GUILayoutUtility.GetRect(64.0f, 64.0f, GUILayout.MinWidth(64.0f), GUILayout.MinHeight(64.0f)); GUI.DrawTexture(textureRect, device.OutputTexture, ScaleMode.ScaleToFit); } GUILayout.Label("Device: " + device.Name); GUILayout.Label(string.Format("Mode: {0}x{1} {2}", device.CurrentWidth, device.CurrentHeight, device.CurrentFormat)); if (device.FramesTotal > 30) { GUILayout.Label("Displaying at " + device.DisplayFPS.ToString("F1") + " fps"); } else { GUILayout.Label("Displaying at ... fps"); } if (device.IsRunning) { GUILayout.BeginHorizontal(); if (GUILayout.Button("Stop Camera")) { device.Close(); } if (device.IsPaused) { if (GUILayout.Button("Unpause Stream")) { device.Play(); } } else { if (GUILayout.Button("Pause Stream")) { device.Pause(); } } GUILayout.EndHorizontal(); } else { if (GUILayout.Button("Start Camera")) { _camera.Begin(); } } GUI.enabled = device.CanShowConfigWindow(); if (GUILayout.Button("Show Config Window")) { device.ShowConfigWindow(); } GUI.enabled = true; if (device.NumSettings > 0) { EditorGUILayout.PrefixLabel("Device Settings", EditorStyles.boldLabel); for (int j = 0; j < device.NumSettings; j++) { AVProLiveCameraSettingBase settingBase = device.GetVideoSettingByIndex(j); GUILayout.BeginHorizontal(); GUI.enabled = !settingBase.IsAutomatic; if (GUILayout.Button("D", GUILayout.ExpandWidth(false))) { settingBase.SetDefault(); } GUI.enabled = true; GUILayout.Label(settingBase.Name, GUILayout.ExpandWidth(false), GUILayout.MaxWidth(64.0f)); GUI.enabled = !settingBase.IsAutomatic; switch (settingBase.DataTypeValue) { case AVProLiveCameraSettingBase.DataType.Boolean: AVProLiveCameraSettingBoolean settingBool = (AVProLiveCameraSettingBoolean)settingBase; settingBool.CurrentValue = GUILayout.Toggle(settingBool.CurrentValue, "", GUILayout.ExpandWidth(true)); break; case AVProLiveCameraSettingBase.DataType.Float: AVProLiveCameraSettingFloat settingFloat = (AVProLiveCameraSettingFloat)settingBase; float sliderValue = GUILayout.HorizontalSlider(settingFloat.CurrentValue, settingFloat.MinValue, settingFloat.MaxValue, GUILayout.ExpandWidth(true)); if (GUI.enabled) settingFloat.CurrentValue = sliderValue; GUILayout.Label(((long)settingFloat.CurrentValue).ToString(), GUILayout.Width(32.0f), GUILayout.ExpandWidth(false)); GUI.enabled = settingBase.CanAutomatic; settingBase.IsAutomatic = GUILayout.Toggle(settingBase.IsAutomatic, "", GUILayout.Width(32.0f)); GUI.enabled = true; break; } GUI.enabled = true; GUILayout.EndHorizontal(); } if (GUILayout.Button("Defaults")) { for (int j = 0; j < device.NumSettings; j++) { AVProLiveCameraSettingBase settingBase = device.GetVideoSettingByIndex(j); settingBase.SetDefault(); } } device.Update_Settings(); } //EditorGUILayout.Toggle("Running:", device.IsRunning); } if (_preview) { //HandleUtility.Repaint(); this.Repaint(); } } GUI.enabled = true; _camera._flipX = EditorGUILayout.Toggle("Flip X", _camera._flipX); _camera._flipY = EditorGUILayout.Toggle("Flip Y", _camera._flipY); EditorGUILayout.Space(); _camera._updateHotSwap = EditorGUILayout.Toggle("Update HotSwap", _camera._updateHotSwap); _camera._updateFrameRates = EditorGUILayout.Toggle("Update Frame Rates", _camera._updateFrameRates); _camera._updateSettings = EditorGUILayout.Toggle("Update Settings", _camera._updateSettings); if (GUI.changed) { EditorUtility.SetDirty(_camera); } }
public override void OnInspectorGUI() { _camera = (this.target) as AVProLiveCamera; //EditorGUIUtility.LookLikeInspector(); //DrawDefaultInspector(); if (!Application.isPlaying) { EditorGUILayout.LabelField("Search for Capture Device:", ""); EditorGUILayout.Space(); GUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Device Select By"); GUILayout.BeginVertical(); AVProLiveCamera.SelectDeviceBy newDeviceSelection = (AVProLiveCamera.SelectDeviceBy)EditorGUILayout.EnumPopup("", _camera._deviceSelection); switch (newDeviceSelection) { case AVProLiveCamera.SelectDeviceBy.Default: break; case AVProLiveCamera.SelectDeviceBy.Name: if (_camera._deviceSelection != newDeviceSelection && _camera._desiredDeviceNames.Count == 0) { _camera._desiredDeviceNames.Add("Enter Camera Name"); } EditorGUILayout.BeginVertical(); for (int index = 0; index < _camera._desiredDeviceNames.Count; index++) { EditorGUILayout.BeginHorizontal(); /*EditorGUILayout.BeginHorizontal(GUILayout.Width(96)); * if (index != 0) * { * if (GUILayout.Button("Up")) * { * string temp = _camera._desiredDeviceNames[index - 1]; * _camera._desiredDeviceNames[index - 1] = _camera._desiredDeviceNames[index]; * _camera._desiredDeviceNames[index] = temp; * HandleUtility.Repaint(); * } * } * if (index + 1 < _camera._desiredDeviceNames.Count) * { * if (GUILayout.Button("Down")) * { * string temp = _camera._desiredDeviceNames[index + 1]; * _camera._desiredDeviceNames[index + 1] = _camera._desiredDeviceNames[index]; * _camera._desiredDeviceNames[index] = temp; * HandleUtility.Repaint(); * } * } * EditorGUILayout.EndHorizontal();*/ if (GUILayout.Button("-")) { _camera._desiredDeviceNames.RemoveAt(index); break; } else { _camera._desiredDeviceNames[index] = EditorGUILayout.TextField(_camera._desiredDeviceNames[index]); } EditorGUILayout.EndHorizontal(); } if (GUILayout.Button("+")) { _camera._desiredDeviceNames.Add(string.Empty); this.Repaint(); } EditorGUILayout.EndVertical(); break; case AVProLiveCamera.SelectDeviceBy.Index: _camera._desiredDeviceIndex = EditorGUILayout.IntField(_camera._desiredDeviceIndex); break; } _camera._deviceSelection = newDeviceSelection; GUILayout.EndVertical(); GUILayout.EndHorizontal(); EditorGUILayout.Space(); GUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Mode Select By"); GUILayout.BeginVertical(); AVProLiveCamera.SelectModeBy newResolutionSelection = (AVProLiveCamera.SelectModeBy)EditorGUILayout.EnumPopup("", _camera._modeSelection); switch (newResolutionSelection) { case AVProLiveCamera.SelectModeBy.Default: break; case AVProLiveCamera.SelectModeBy.Resolution: if (_camera._modeSelection != newResolutionSelection && _camera._desiredResolutions.Count == 0) { _camera._desiredResolutions.Add(new Vector2(640, 360)); } EditorGUILayout.BeginVertical(); _camera._maintainAspectRatio = EditorGUILayout.Toggle("Maintain Aspect Ratio", _camera._maintainAspectRatio); for (int index = 0; index < _camera._desiredResolutions.Count; index++) { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("-")) { _camera._desiredResolutions.RemoveAt(index); break; } else { Vector2 res = _camera._desiredResolutions[index]; res.x = EditorGUILayout.FloatField(res.x, GUILayout.Width(64)); EditorGUILayout.LabelField("x", "", GUILayout.Width(24)); res.y = EditorGUILayout.FloatField(res.y, GUILayout.Width(64)); _camera._desiredResolutions[index] = res; } EditorGUILayout.EndHorizontal(); } if (GUILayout.Button("+")) { _camera._desiredResolutions.Add(new Vector2(640, 360)); this.Repaint(); } EditorGUILayout.EndVertical(); break; case AVProLiveCamera.SelectModeBy.Index: _camera._desiredModeIndex = EditorGUILayout.IntField(_camera._desiredModeIndex); break; } _camera._modeSelection = newResolutionSelection; GUILayout.EndVertical(); GUILayout.EndHorizontal(); EditorGUILayout.Space(); GUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Video Input Select By"); GUILayout.BeginVertical(); AVProLiveCamera.SelectDeviceBy newVideoInputSelection = (AVProLiveCamera.SelectDeviceBy)EditorGUILayout.EnumPopup("", _camera._videoInputSelection); switch (newVideoInputSelection) { case AVProLiveCamera.SelectDeviceBy.Default: break; case AVProLiveCamera.SelectDeviceBy.Name: if (_camera._videoInputSelection != newVideoInputSelection && _camera._desiredVideoInputs.Count == 0) { _camera._desiredVideoInputs.Add(AVProLiveCameraPlugin.VideoInput.Video_Serial_Digital); } EditorGUILayout.BeginVertical(); for (int index = 0; index < _camera._desiredVideoInputs.Count; index++) { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("-")) { _camera._desiredVideoInputs.RemoveAt(index); break; } else { _camera._desiredVideoInputs[index] = (AVProLiveCameraPlugin.VideoInput)EditorGUILayout.EnumPopup(_camera._desiredVideoInputs[index]); } EditorGUILayout.EndHorizontal(); } if (GUILayout.Button("+")) { _camera._desiredVideoInputs.Add(AVProLiveCameraPlugin.VideoInput.Video_Serial_Digital); this.Repaint(); } EditorGUILayout.EndVertical(); break; case AVProLiveCamera.SelectDeviceBy.Index: _camera._desiredVideoInputIndex = EditorGUILayout.IntField(_camera._desiredVideoInputIndex); break; } _camera._videoInputSelection = newVideoInputSelection; GUILayout.EndVertical(); GUILayout.EndHorizontal(); EditorGUILayout.Space(); _camera._playOnStart = EditorGUILayout.Toggle("Play On Start", _camera._playOnStart); _camera._deinterlace = EditorGUILayout.Toggle("Deinterlace", _camera._deinterlace); } else { if (_camera.Device != null) { _preview = GUILayout.Toggle(_preview, "Inspector Preview"); AVProLiveCameraDevice device = _camera.Device; if (_preview && device.OutputTexture != null) { Rect textureRect = GUILayoutUtility.GetRect(64.0f, 64.0f, GUILayout.MinWidth(64.0f), GUILayout.MinHeight(64.0f)); GUI.DrawTexture(textureRect, device.OutputTexture, ScaleMode.ScaleToFit); } GUILayout.Label("Device: " + device.Name); GUILayout.Label(string.Format("Mode: {0}x{1} {2}", device.CurrentWidth, device.CurrentHeight, device.CurrentFormat)); if (device.FramesTotal > 30) { GUILayout.Label("Displaying at " + device.DisplayFPS.ToString("F1") + " fps"); } else { GUILayout.Label("Displaying at ... fps"); } if (device.IsRunning) { GUILayout.BeginHorizontal(); if (GUILayout.Button("Stop Camera")) { device.Close(); } if (device.IsPaused) { if (GUILayout.Button("Unpause Stream")) { device.Play(); } } else { if (GUILayout.Button("Pause Stream")) { device.Pause(); } } GUILayout.EndHorizontal(); } else { if (GUILayout.Button("Start Camera")) { _camera.Begin(); } } GUI.enabled = device.CanShowConfigWindow(); if (GUILayout.Button("Show Config Window")) { device.ShowConfigWindow(); } GUI.enabled = false; //EditorGUILayout.Toggle("Running:", device.IsRunning); } if (_preview) { //HandleUtility.Repaint(); this.Repaint(); } } }