public override void OnInspectorGUI()

in IndoorSceneSynthesis/ConstraintStochasticIndoorSceneGeneration/Custom/CustomEditor/CSceneCopier.cs [23:214]


    public override void OnInspectorGUI() {
        GUILayout.Label("Scenes to copy", EditorStyles.boldLabel);
        //fromScene = (SceneAsset)EditorGUILayout.ObjectField(fromScene, typeof(SceneAsset), false);
        for (int i = 0; i < m_SceneAssets.Count; ++i) {
            m_SceneAssets[i] = (SceneAsset)EditorGUILayout.ObjectField(m_SceneAssets[i], typeof(SceneAsset), false);
        }

        if (GUILayout.Button("Add")) {
            m_SceneAssets.Add(null);
            m_SceneNames.Add("");
        }

        GUILayout.Space(8);

        GUILayout.Label("New Scene Names", EditorStyles.boldLabel);
        //newSceneName = (string)EditorGUILayout.TextField(newSceneName);
        for (int i = 0; i < m_SceneAssets.Count; ++i) {
            m_SceneNames[i] = (string)EditorGUILayout.TextField(m_SceneNames[i]);
        }

        GUILayout.Label("\n Copy iThor Scene Tools");
        if (GUILayout.Button("Add Structure by Room Type")) {
            CopyRoomFromTypes(CSceneBuilderTool.samplingRoomType);
            //CopyStructure2NewScene();
        }

        if (GUILayout.Button("Copy Structure !")) {
            //CopyRoomFromTypes();
            CopyStructure2NewScene();
        }

        //if (GUILayout.Button("Add Structure to Kitchens"))
        //{
        //    AddGameObjectToScene();
        //}
        GUILayout.Label("\n Screenshot Tools");
        //if (GUILayout.Button("Take screenshots"))
        //{
        //    GetAllScreenShots();
        //}

        if (GUILayout.Button("Take screenshot for current scene")) {
            string currentScenePath = EditorSceneManager.GetActiveScene().path;
            TakeScreenShot(new FileInfo(@currentScenePath));
        }

        if (GUILayout.Button("Take Screenshots by one click")) {
            TakeScreenShotbyOneClick();
        }

        GUILayout.Label("\n Scene generation debug Tools");
        if (GUILayout.Button("Generate scene by hand")) {
            GenerateSceneByHand();
        }



        if (GUILayout.Button("Generate scene one click")) {
            GenerateSceneAt();
        }

        if (GUILayout.Button("Add buildscenes to build settings")) {

            EditorBuildSettings.scenes = null;
            List<EditorBuildSettingsScene> currentBuildingScenes = new List<EditorBuildSettingsScene>();
            void AddScenePath(string scenesAtPath) {
                DirectoryInfo scenesDir = new DirectoryInfo(scenesAtPath);
                FileInfo[] sceneFileList = scenesDir.GetFiles("*.unity");
                foreach (FileInfo sceneFile in sceneFileList) {
                    //Debug.Log(sceneFile.Name);
                    currentBuildingScenes.Add(new EditorBuildSettingsScene(scenesAtPath + sceneFile.Name, true));
                }
            }
            AddScenePath("Assets/Custom/BuildTrainingKitchens/");
            AddScenePath("Assets/Custom/BuildTrainingLivingrooms/");
            AddScenePath("Assets/Custom/BuildTrainingBedrooms/");
            AddScenePath("Assets/Custom/BuildTrainingBathrooms/");


            //foreach (EditorBuildSettingsScene buildScene in EditorBuildSettings.scenes) {
            //    currentBuildingScenes.Add(buildScene);
            //}

            EditorBuildSettings.scenes = currentBuildingScenes.ToArray();
        }

        if (GUILayout.Button("Post Process Scene")) {
            IEnumerator PostProcessScene() {
                //post
                int debug_index = 0;
                DirectoryInfo scenesDir = new DirectoryInfo("Assets/Custom/BuildTrainingKitchens/");
                FileInfo[] sceneFileList = scenesDir.GetFiles("*.unity");
                foreach (FileInfo sceneFile in sceneFileList) {
                    EditorSceneManager.OpenScene(sceneFile.ToString());

                    //delete helpertool
                    GameObject helpertool = GameObject.Find("HelperTool");
                    if (helpertool != null) {
                        DestroyImmediate(helpertool);
                    }

                    GameObject dalibao = GameObject.Find("Dalibao");
                    if (dalibao != null) {
                        DestroyImmediate(dalibao);
                    }

                    GameObject furniturePlacer = GameObject.Find("FurniturePlacer");
                    if (furniturePlacer != null) {
                        DestroyImmediate(furniturePlacer);
                    }

                    GameObject sceneBuilder = GameObject.Find("SceneBuilder");
                    if (sceneBuilder != null) {
                        DestroyImmediate(sceneBuilder);
                    }

                    GameObject objectPlacer = GameObject.Find("ObjectPlacer");
                    if (objectPlacer != null) {
                        DestroyImmediate(objectPlacer);
                    }

                    GameObject decorationPlacer = GameObject.Find("DecorationPlacer");
                    if (decorationPlacer != null) {
                        DestroyImmediate(decorationPlacer);
                    }

                    //Set celling!!!
                    StructureObject[] structObjs = Resources.FindObjectsOfTypeAll<StructureObject>();
                    foreach (StructureObject structObj in structObjs) {
                        if (structObj.WhatIsMyStructureObjectTag == StructureObjectTag.Ceiling) {
                            structObj.gameObject.SetActive(true);
                        }
                    }

                    EditorSceneManager.SaveScene(EditorSceneManager.GetActiveScene());
                    //break;
                    //yield return new EditorWaitForSeconds(1);

                    yield return null;
                    //if(debug_index++ > 10) {
                    //    break;
                    //}

                }

            }

            EditorCoroutineUtility.StartCoroutineOwnerless(PostProcessScene());

            //TakeScreenShot(sceneFile);
            //SceneAsset oneScene = AssetDatabase.LoadAssetAtPath<SceneAsset>(sceneFile.ToString());
            //m_SceneAssets.Add(oneScene);

        }

        if (GUILayout.Button("Debug 1")) {
            string scenesAtPath = "Assets/Custom/Livingrooms/";
            DirectoryInfo scenesDir = new DirectoryInfo(scenesAtPath);
            FileInfo[] sceneFileList = scenesDir.GetFiles("*.unity");
            foreach (FileInfo sceneFile in sceneFileList) {
                EditorSceneManager.OpenScene(sceneFile.ToString());
                string currentSceneName = EditorSceneManager.GetActiveScene().name.Substring(10); // an integer
                var curScene = EditorSceneManager.GetActiveScene();
                //curScene.name = currentSceneName;
                Debug.Log(scenesAtPath + currentSceneName + ".unity" + " //currentSceneName: " + currentSceneName);
                AssetDatabase.RenameAsset(scenesAtPath + "Livingroom" + currentSceneName + ".unity", currentSceneName + ".unity");

                //EditorSceneManager.SaveScene(EditorSceneManager.GetActiveScene());
            }
        }

        GUILayout.Label("\n Add Helpertool to scenes");
        if (GUILayout.Button("Add Helpertool to scenes")) {
            AddHelperTools();
        }
        if (GUILayout.Button("Delete Helpertool to scenes")) {
            DeleteHelperTools();
        }
        if (GUILayout.Button("Loop over build scene to get object positions")) {
            LoopOverBuildSceneToGetObjPos();
        }

        if (GUILayout.Button("Rename faucets")) {
            RenameFaucets();
        }

        GUILayout.Label("\n For ai2thor 210 version");
        if (GUILayout.Button("Rename scenes")) {
            ReNameScenes();
        }

    }