private void OnGUI()
    {
        GUILayout.BeginHorizontal();
        GUILayout.Label(SceneManager.GetActiveScene().name + " Design", EditorStyles.boldLabel);



        if (CheckOnLevel())
        {
            if (GUILayout.Button("Show Section List"))
            {
                EditorUtility.FocusProjectWindow();
                Selection.activeObject = AssetDatabase.LoadAssetAtPath($"Assets/StackyDash/Scripts/ScriptableObjects/"
                                                                       + scene.name + ".asset",
                                                                       typeof(SectionList)) as SectionList;
            }



            GUILayout.EndHorizontal();



            if (sectionList.sections.Count > 0)
            {
                GUIStyle tableStyle = new GUIStyle("box");
                tableStyle.padding     = new RectOffset(10, 10, 10, 10);
                tableStyle.margin.left = 32;

                GUIStyle enumStyle   = new GUIStyle("popup");
                GUIStyle stackStyle1 = new GUIStyle("popup");
                GUIStyle playerStyle = new GUIStyle("popup");
                GUIStyle moveStyle   = new GUIStyle("popup");
                GUIStyle holeStyle   = new GUIStyle("popup");

                stackStyle1.fontStyle        = FontStyle.Bold;
                stackStyle1.normal.textColor = Color.red;

                playerStyle.fontStyle        = FontStyle.Bold;
                playerStyle.normal.textColor = Color.cyan;

                moveStyle.fontStyle        = FontStyle.Bold;
                moveStyle.normal.textColor = Color.green;

                holeStyle.fontStyle        = FontStyle.Bold;
                holeStyle.normal.textColor = Color.yellow;


                GUILayout.BeginHorizontal();

                viewIndex = Mathf.Clamp(EditorGUILayout.IntField("Current Item", viewIndex, GUILayout.ExpandWidth(false)), 1, sectionList.sections.Count);
                EditorGUILayout.LabelField("of   " + sectionList.sections.Count.ToString() + "  items", "", GUILayout.ExpandWidth(false));

                GUILayout.EndHorizontal();



                GUILayout.BeginHorizontal();

                sectionList.sections[viewIndex - 1].size = (Vector2Int)EditorGUILayout.Vector2IntField("Grid Size", sectionList.sections[viewIndex - 1].size, GUILayout.ExpandWidth(false));



                EditorGUILayout.EndHorizontal();
                GUILayout.BeginHorizontal(tableStyle);
                for (int row = 0; row < sectionList.sections[viewIndex - 1].size.x; row++)
                {
                    GUILayout.BeginVertical();
                    for (int column = 0; column < sectionList.sections[viewIndex - 1].size.y; column++)
                    {
                        EditorGUILayout.BeginHorizontal();

                        if (sectionList.sections[viewIndex - 1].grid[row, column] == Section.Grid.Stack)
                        {
                            sectionList.sections[viewIndex - 1].grid[row, column] =
                                (Section.Grid)EditorGUILayout.EnumPopup(sectionList.sections[viewIndex - 1].grid[row, column], stackStyle1);
                        }

                        else if (sectionList.sections[viewIndex - 1].grid[row, column] == Section.Grid.PlayerPos)
                        {
                            sectionList.sections[viewIndex - 1].grid[row, column] =
                                (Section.Grid)EditorGUILayout.EnumPopup(sectionList.sections[viewIndex - 1].grid[row, column], playerStyle);
                            SpawnManager.SetPlayerPos(row, column, sectionList.sections[viewIndex - 1]);
                        }

                        else if (sectionList.sections[viewIndex - 1].grid[row, column] == Section.Grid.Floor)
                        {
                            sectionList.sections[viewIndex - 1].grid[row, column] =
                                (Section.Grid)EditorGUILayout.EnumPopup(sectionList.sections[viewIndex - 1].grid[row, column], enumStyle);
                        }

                        else if (sectionList.sections[viewIndex - 1].grid[row, column] == Section.Grid.Hole)
                        {
                            sectionList.sections[viewIndex - 1].grid[row, column] =
                                (Section.Grid)EditorGUILayout.EnumPopup(sectionList.sections[viewIndex - 1].grid[row, column], holeStyle);
                        }


                        else
                        {
                            sectionList.sections[viewIndex - 1].grid[row, column] =
                                (Section.Grid)EditorGUILayout.EnumPopup(sectionList.sections[viewIndex - 1].grid[row, column], moveStyle);
                        }

                        EditorGUILayout.EndHorizontal();
                    }
                    GUILayout.EndVertical();
                }
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();

                EditorGUILayout.LabelField("FR,FL,DL,DR Means : AUTO MOVE directions For example: FR = Forward and right");
                EditorGUILayout.EndHorizontal();



                if (GUILayout.Button("Reset Grid"))
                {
                    for (int row = 0; row < sectionList.sections[viewIndex - 1].size.x; row++)
                    {
                        for (int column = 0; column < sectionList.sections[viewIndex - 1].size.y; column++)
                        {
                            sectionList.sections[viewIndex - 1].grid[row, column] = Section.Grid.Floor;
                        }
                    }
                }



                if (viewIndex != sectionList.sections.Count)
                {
                    GUILayout.BeginHorizontal();
                    sectionList.sections[viewIndex - 1].bridgeLenght = (int)EditorGUILayout.IntField("Bridge Lenght", sectionList.sections[viewIndex - 1].bridgeLenght, GUILayout.ExpandWidth(false));
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    sectionList.sections[viewIndex - 1].bridgeDirection =
                        (Section.BridgeDirection)EditorGUILayout.EnumPopup(sectionList.sections[viewIndex - 1].bridgeDirection, enumStyle);
                    GUILayout.EndHorizontal();
                }



                if (viewIndex == sectionList.sections.Count)
                {
                    GUILayout.Space(30);
                    GUILayout.BeginVertical();



                    GUILayout.BeginHorizontal();
                    GUILayout.BeginVertical();
                    sectionList.sections[viewIndex - 1].scoreLenght = (int)EditorGUILayout.IntField("xScore Lenght", sectionList.sections[viewIndex - 1].scoreLenght, GUILayout.ExpandWidth(false));
                    GUILayout.EndVertical();
                    GUILayout.EndHorizontal();

                    GUILayout.EndVertical();



                    GUILayout.BeginHorizontal();
                    for (int i = 0; i < sectionList.sections[viewIndex - 1].scoreLenght; i++)
                    {
                        GUILayout.Label($"x" + (1f + 0.1f * i));
                    }

                    GUILayout.EndHorizontal();
                }


                if (GUILayout.Button($"Build Section " + viewIndex))
                {
                    SpawnManager.Spawn(sectionList.sections[viewIndex - 1], viewIndex, sectionList.sections.Count);
                }

                if (GUILayout.Button($"Destroy Section " + viewIndex))
                {
                    SpawnManager.DestroySection(viewIndex);
                }


                GUILayout.Space(30);

                GUILayout.BeginHorizontal();

                if (viewIndex == sectionList.sections.Count)
                {
                    sectionList.sections[viewIndex - 1].groundColor = (Color)EditorGUILayout.ColorField("Ground Color", sectionList.sections[viewIndex - 1].groundColor, GUILayout.ExpandWidth(false));

                    if (GUILayout.Button($"Colorize Grounds"))
                    {
                        ColorManager.ColorizeGrid(viewIndex, sectionList.sections[viewIndex - 1].groundColor);
                    }

                    GUILayout.EndHorizontal();



                    GUILayout.BeginHorizontal();

                    sectionList.sections[viewIndex - 1].floorColor = (Color)EditorGUILayout.ColorField("Floor Color", sectionList.sections[viewIndex - 1].floorColor, GUILayout.ExpandWidth(false));
                    if (GUILayout.Button($"Colorize Floors"))
                    {
                        ColorManager.ColorizeFloor(viewIndex, sectionList.sections[viewIndex - 1].floorColor);
                    }

                    GUILayout.EndHorizontal();



                    GUILayout.BeginHorizontal();

                    sectionList.sections[viewIndex - 1].stackColor = (Color)EditorGUILayout.ColorField("Stack Color", sectionList.sections[viewIndex - 1].stackColor, GUILayout.ExpandWidth(false));
                    if (GUILayout.Button($"Colorize Stacks"))
                    {
                        ColorManager.ColorizeStack(viewIndex, sectionList.sections[viewIndex - 1].stackColor);
                    }
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    sectionList.sections[viewIndex - 1].bridgeColor = (Color)EditorGUILayout.ColorField("Bridge Color", sectionList.sections[viewIndex - 1].bridgeColor, GUILayout.ExpandWidth(false));
                    if (GUILayout.Button($"Colorize Bridges"))
                    {
                        ColorManager.ColorizeBridge(viewIndex, sectionList.sections[viewIndex - 1].bridgeColor);
                    }
                }
                GUILayout.EndHorizontal();


                if (GUILayout.Button("Save & Exit"))
                {
                    EditorSceneManager.SaveScene(EditorSceneManager.GetActiveScene());
                    this.Close();
                }
            }

            GUILayout.EndVertical();
        }



        GUIUtility.ExitGUI();
    }