public void GetValue(LogToCSV.LoggerConfig config)
 {
     config.dataBuffer.AddToBuffer(ReadValue());
 }
        public override void OnInspectorGUI()
        {
            try
            {
                LogToCSV logToCSV = (LogToCSV)target;
                _loggerConfig = logToCSV.loggerConfig;
                _timeBuffer   = logToCSV.timeBuffer;

                DrawDefaultInspector();
                serializedObject.Update();

                GUILayout.Label("Log to CSV", EditorStyles.boldLabel);

                EditorGUILayout.BeginHorizontal();
                fileName = EditorGUILayout.TextField("File Name", fileName);

                if (GUILayout.Button("Export", new GUIStyle(EditorStyles.miniButtonRight)
                {
                    fixedWidth = 100
                }))
                {
                    WriteBufferToFile(Path.Combine(_loggerConfig.outputFolder, fileName));
                }
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                _loggerConfig.logOnUpdate = EditorGUILayout.Toggle("Logging on Application Run", _loggerConfig.logOnUpdate);
                EditorGUILayout.HelpBox(new GUIContent("Exports on Application Quit. Overrides existing log file."));
                EditorGUILayout.EndHorizontal();


                GUILayout.Space(10);
                isSettingsExpanded = EditorGUILayout.Foldout(isSettingsExpanded, "Settings", toggleOnLabelClick: true);
                if (isSettingsExpanded)
                {
                    EditorGUILayout.BeginHorizontal();
                    _loggerConfig.outputFolder = EditorGUILayout.TextField("Output Folder", _loggerConfig.outputFolder);
                    if (GUILayout.Button("Select", new GUIStyle(EditorStyles.miniButtonRight)
                    {
                        fixedWidth = 75
                    }))
                    {
                        _loggerConfig.outputFolder = EditorUtility.OpenFolderPanel("Select a folder", _loggerConfig.outputFolder, "");
                    }
                    EditorGUILayout.EndHorizontal();


                    EditorGUILayout.BeginVertical();
                    _loggerConfig.bufferLength = EditorGUILayout.IntField("Buffer Length", _loggerConfig.bufferLength);
                    EditorGUILayout.EndVertical();


                    EditorGUILayout.BeginVertical();
                    _loggerConfig.timeStampType = (LogToCSV.TimeStampType)EditorGUILayout.EnumPopup("Time Stamp Type", _loggerConfig.timeStampType);
                    EditorGUILayout.EndVertical();

                    EditorGUILayout.BeginVertical();
                    SerializedProperty property = serializedObject.FindProperty("loggerConfig");
                    EditorGUILayout.PropertyField(property.FindPropertyRelative("onGetValue"), new GUIContent("Select Data Source Function"));
                    EditorGUILayout.EndVertical();

                    EditorGUILayout.BeginVertical();
                    if (GUILayout.Button("Reset Settings", new GUIStyle(EditorStyles.miniButtonLeft)
                    {
                        fixedWidth = 150
                    }))
                    {
                        ResetSettings();
                    }
                    EditorGUILayout.EndVertical();
                    serializedObject.ApplyModifiedProperties();
                }
            }
            catch (Exception e)
            {
                Debug.Log(e.ToString());
            }
        }