public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        bool periodicSendFlag             = true;
        bool pauseSendFlag                = true;
        bool pauseOnHeadsetRemoval        = true;
        DataCollectionManager dataManager = (DataCollectionManager)target;

        if (GUILayout.Button("Configure Manager"))
        {
            List <Type> typeList = ConfigurationManager.GetAllEventCollectors();
            List <VadrEventCollector> eventCollectors = new List <VadrEventCollector>();
            for (int i = 0; i < typeList.Count; i++)
            {
                eventCollectors.Add(new VadrEventCollector(typeList[i], false, -1.0f));
            }
            pauseSendFlag         = dataManager.pauseSendFlag;
            periodicSendFlag      = dataManager.periodicSendFlag;
            pauseOnHeadsetRemoval = dataManager.pauseOnHeadsetRemoval;
            GameObject gameobject = dataManager.gameObject;
            if (gameobject != null)
            {
                for (int i = 0; i < eventCollectors.Count; i++)
                {
                    IEventCollector collector = gameobject.GetComponent(eventCollectors[i].collector) as IEventCollector;
                    if (collector != null)
                    {
                        eventCollectors[i].enable = true;
                        if ((collector.getTimeInterval() < eventCollectors[i].timeInterval) || (eventCollectors[i].timeInterval < 0))
                        {
                            eventCollectors[i].timeInterval = collector.getTimeInterval();
                        }
                    }
                }
            }
            for (int i = 0; i < eventCollectors.Count; i++)
            {
                if (eventCollectors[i].timeInterval < 0)
                {
                    eventCollectors[i].timeInterval = 0.2f;
                }
            }
            ConfigurationManager.Init(ref dataManager, eventCollectors,
                                      dataManager.appId, dataManager.appToken, dataManager.testMode, periodicSendFlag, pauseSendFlag, pauseOnHeadsetRemoval);
            ConfigurationManager.ShowWindow();
        }
    }
    /// <summary>
    /// Setting the configuration window from current parameters
    /// </summary>
    static void ShowConfigurationWindow()
    {
        string                    appId                 = "";
        string                    appToken              = "";
        bool                      testMode              = true;
        bool                      pauseSendFlag         = true;
        bool                      periodicSendFlag      = true;
        bool                      pauseOnHeadsetRemoval = true;
        List <VadrScene>          vadrScenes            = new List <VadrScene>();
        List <Type>               typeList              = ConfigurationManager.GetAllEventCollectors();
        List <VadrEventCollector> eventCollectors       = new List <VadrEventCollector>();

        for (int i = 0; i < typeList.Count; i++)
        {
            eventCollectors.Add(new VadrEventCollector(typeList[i], false, -1.0f));
        }
        UnityEngine.SceneManagement.Scene currentScene = EditorSceneManager.GetActiveScene();
        string currentPath = currentScene.path;

        if (currentPath.Length > 0 || EditorUtility.DisplayDialog("", "You can lose unsaved changes", "Continue", "Cancel"))
        {
            float totalScenes     = EditorBuildSettings.scenes.Length;
            float completedScenes = 0;
            foreach (EditorBuildSettingsScene S in EditorBuildSettings.scenes)
            {
                EditorUtility.DisplayProgressBar("Initializing", "Initializing Configuration Manager",
                                                 completedScenes / totalScenes);
                completedScenes++;
                if (S.enabled)
                {
                    string sceneId = "";
                    EditorSceneManager.OpenScene(S.path);
                    DataCollectionManager dataManager = UnityEngine.Object.FindObjectOfType <DataCollectionManager>();
                    if (dataManager != null)
                    {
                        // Prefill App Id and App Token of already present.
                        if (dataManager.sceneId != null)
                        {
                            sceneId = dataManager.sceneId;
                        }
                        if (appId.Length == 0 && dataManager.appId != null)
                        {
                            appId = dataManager.appId;
                        }
                        if (appToken.Length == 0 && dataManager.appToken != null)
                        {
                            appToken = dataManager.appToken;
                        }
                        if (testMode)
                        {
                            testMode = dataManager.testMode;
                        }
                        if (!dataManager.periodicSendFlag)
                        {
                            periodicSendFlag = dataManager.periodicSendFlag;
                        }
                        if (!dataManager.pauseSendFlag)
                        {
                            pauseSendFlag = dataManager.pauseSendFlag;
                        }
                        if (!dataManager.pauseOnHeadsetRemoval)
                        {
                            pauseOnHeadsetRemoval = dataManager.pauseOnHeadsetRemoval;
                        }
                        // Getting already attached event scripts data.
                        GameObject gameobject = dataManager.gameObject;
                        if (gameobject != null)
                        {
                            for (int i = 0; i < eventCollectors.Count; i++)
                            {
                                IEventCollector collector = gameobject.GetComponent(eventCollectors[i].collector) as IEventCollector;
                                if (collector != null)
                                {
                                    eventCollectors[i].enable = true;
                                    if ((collector.getTimeInterval() < eventCollectors[i].timeInterval) || (eventCollectors[i].timeInterval < 0))
                                    {
                                        eventCollectors[i].timeInterval = collector.getTimeInterval();
                                    }
                                }
                            }
                        }
                    }
                    vadrScenes.Add(new VadrScene(S.path, sceneId));
                }
            }
            for (int i = 0; i < eventCollectors.Count; i++)
            {
                if (eventCollectors[i].timeInterval < 0)
                {
                    eventCollectors[i].timeInterval = 0.2f;
                }
            }
            if (currentPath.Length > 0)
            {
                EditorSceneManager.OpenScene(currentPath);
            }
            EditorUtility.ClearProgressBar();
            ConfigurationManager.Init(vadrScenes, eventCollectors, appId, appToken, testMode,
                                      periodicSendFlag, pauseSendFlag, pauseOnHeadsetRemoval);
            ConfigurationManager.ShowWindow();
        }
    }