protected void GUI_Camera()
        {
            Camera prevLastCamera = (Camera)_propLastCamera.objectReferenceValue;

            EditorGUILayout.PropertyField(_propLastCamera, _guiItemCamera);

            Camera lastCamera = (Camera)_propLastCamera.objectReferenceValue;

            // If the user has changed the camera, reset the contributing cameras
            if (lastCamera != prevLastCamera)
            {
                _propContribCameras.arraySize = 0;
                if (lastCamera == null)
                {
                    _propUseContribCameras.boolValue = false;
                }
            }

            if (lastCamera != null)
            {
                _propUseContribCameras.boolValue = EditorGUILayout.ToggleLeft("Use Contributing Cameras", _propUseContribCameras.boolValue);

                if (_propUseContribCameras.boolValue)
                {
                    if (GUILayout.Button("Find Contributing Cameras", EditorStyles.miniButtonRight, GUILayout.ExpandWidth(false)))
                    {
                        bool hasContribCameras = false;
                        if (Utils.HasContributingCameras(lastCamera))
                        {
                            Camera[] cameras = Utils.FindContributingCameras(lastCamera);
                            if (cameras != null && cameras.Length > 0)
                            {
                                hasContribCameras             = true;
                                _propContribCameras.arraySize = cameras.Length;
                                for (int slotIndex = 0; slotIndex < cameras.Length; slotIndex++)
                                {
                                    _propContribCameras.GetArrayElementAtIndex(slotIndex).objectReferenceValue = cameras[slotIndex];
                                }
                            }
                        }

                        if (!hasContribCameras)
                        {
                            _propContribCameras.arraySize    = 0;
                            _propUseContribCameras.boolValue = false;
                        }
                    }

                    EditorGUILayout.PropertyField(_propContribCameras, _guiItemContribCamera, true);
                    EditorGUILayout.Space();
                }
            }


            EditorUtils.EnumAsDropdown("Resolution", _propRenderResolution, CaptureBaseEditor.ResolutionStrings);

            if (_propRenderResolution.enumValueIndex == (int)CaptureBase.Resolution.Custom)
            {
                EditorGUILayout.PropertyField(_propRenderSize, new GUIContent("Size"));
                _propRenderSize.vector2Value = new Vector2(Mathf.Clamp((int)_propRenderSize.vector2Value.x, 1, NativePlugin.MaxRenderWidth), Mathf.Clamp((int)_propRenderSize.vector2Value.y, 1, NativePlugin.MaxRenderHeight));
            }
            {
                string currentAA = "None";
                if (QualitySettings.antiAliasing > 1)
                {
                    currentAA = QualitySettings.antiAliasing.ToString() + "x";
                }
                EditorUtils.IntAsDropdown("Anti-aliasing", _propAntiAliasing, new string[] { "Current (" + currentAA + ")", "None", "2x", "4x", "8x" }, new int[] { -1, 1, 2, 4, 8 });
            }
        }
        protected void GUI_OutputFilePath()
        {
            EditorUtils.EnumAsDropdown("Output Type", _propOutputType, new string[] { "Video File", "Image Sequence", "Named Pipe" });
            if (_propOutputType.enumValueIndex == (int)CaptureBase.OutputType.VideoFile ||
                _propOutputType.enumValueIndex == (int)CaptureBase.OutputType.ImageSequence)
            {
                bool isImageSequence = (_propOutputType.enumValueIndex == (int)CaptureBase.OutputType.ImageSequence);

                if (isImageSequence)
                {
                    EditorUtils.EnumAsDropdown("Format", _propImageSequenceFormat, new string[] { "PNG (uncompressed)" });
                    GUILayout.Space(8f);
                }

                GUILayout.Label("Folder", EditorStyles.boldLabel);
                EditorGUILayout.PropertyField(_propOutputFolderType, new GUIContent("Folder"));
                if (_propOutputFolderType.enumValueIndex == (int)CaptureBase.OutputPath.Absolute)
                {
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.PropertyField(_propOutputFolderPath, new GUIContent("Path"));
                    if (GUILayout.Button(">", GUILayout.Width(22)))
                    {
                        _propOutputFolderPath.stringValue = EditorUtility.SaveFolderPanel("Select Folder To Store Video Captures", System.IO.Path.GetFullPath(System.IO.Path.Combine(Application.dataPath, "../")), "");
                    }
                    EditorGUILayout.EndHorizontal();
                }
                else
                {
                    EditorGUILayout.PropertyField(_propOutputFolderPath, new GUIContent("Subfolder(s)"));
                }

                GUILayout.Label("File Name", EditorStyles.boldLabel);

                if (!isImageSequence)
                {
                    EditorGUILayout.PropertyField(_propAutoGenerateFileName, new GUIContent("Auto Generate"));
                    if (_propAutoGenerateFileName.boolValue)
                    {
                        EditorGUILayout.PropertyField(_propAutoFileNamePrefix, new GUIContent("Prefix"));
                        EditorGUILayout.PropertyField(_propFileNameExtension, new GUIContent("Extension"));
                    }
                    else
                    {
                        EditorGUILayout.PropertyField(_propForceFileName, new GUIContent("File Name"));
                    }
                }

                if (isImageSequence)
                {
                    EditorGUILayout.PropertyField(_propAutoFileNamePrefix, new GUIContent("Prefix"));
                    EditorGUILayout.PropertyField(_propImageSequenceStartFrame, new GUIContent("Start Frame"));
                    EditorGUILayout.PropertyField(_propImageSequenceZeroDigits, new GUIContent("Zero Digits"));
                }
            }
            else
            {
                EditorGUILayout.PropertyField(_propForceFileName, new GUIContent("Pipe Path"));
            }

            /*// File path
            EditorGUILayout.LabelField("File Path", EditorStyles.boldLabel);
            EditorGUI.indentLevel++;
            _outputFolderIndex = EditorGUILayout.Popup("Relative to", _outputFolderIndex, _outputFolders);
            if (_outputFolderIndex == 0 || _outputFolderIndex == 1)
            {
                _outputFolderRelative = EditorGUILayout.TextField("SubFolder(s)", _outputFolderRelative);
            }
            else
            {
                EditorGUILayout.BeginHorizontal();
                _outputFolderAbsolute = EditorGUILayout.TextField("Path", _outputFolderAbsolute);
                if (GUILayout.Button(">", GUILayout.Width(22)))
                {
                    _outputFolderAbsolute = EditorUtility.SaveFolderPanel("Select Folder To Store Video Captures", System.IO.Path.GetFullPath(System.IO.Path.Combine(Application.dataPath, "../")), "");
                    EditorUtility.SetDirty(this);
                }
                EditorGUILayout.EndHorizontal();
            }
            EditorGUI.indentLevel--;*/
        }