public void DrawArray(RangeOfOperator.Range indexOfOperator)
        {
            GUILayout.Space(5);
            bool[,] arrayTransformTop = indexOfOperator.array;

            scrollPos = EditorGUILayout.BeginScrollView(scrollPos);
            EditorGUILayout.BeginHorizontal();

            for (int x = -1; x < arrayTransformTop.GetLength(0); x++)
            {
                EditorGUILayout.BeginVertical();

                for (int y = -1; y < arrayTransformTop.GetLength(1); y++)
                {
                    using (var verticalScope = new GUILayout.VerticalScope("box"))
                    {
                        if (isTableFieldNames(x, y))
                        {
                            continue;
                        }
                        DrowTogle(arrayTransformTop, x, y, indexOfOperator, 25, 20);
                    }
                }

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

            EditorGUILayout.EndHorizontal();
            EditorGUILayout.EndScrollView();
            GUILayout.Space(5);
        }
 private void DrowTogle(bool[,] array, int x, int y, RangeOfOperator.Range index, float MaxWidth, float MaxHeight)
 {
     if (x == index.x && y == index.y)
     {
         EditorGUILayout.SelectableLabel("X", GUILayout.MaxWidth(MaxWidth), GUILayout.MaxHeight(MaxHeight));
     }
     else
     {
         array[x, y] = EditorGUILayout.Toggle(array[x, y], GUILayout.MaxWidth(MaxWidth), GUILayout.MaxHeight(MaxHeight));
     }
 }
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();
            serializedObject.Update();

            GUIInicialaize();

            if (rangeOfOperator.getRangeDataCount() <= 0)
            {
                rangeOfOperator.RangeDataZero();
            }

            rangeOfOperator.OperatorPositionX = Mathf.Clamp(rangeOfOperator.OperatorPositionX, 0, rangeOfOperator.getRangeDataCount() - 1);
            rangeOfOperator.OperatorPositionY = Mathf.Clamp(rangeOfOperator.OperatorPositionY, 0, rangeOfOperator.getRangeDataCount(0) - 1);

            GUILayout.Label("Range Data");
            GUILayout.Space(5);

            scrollPos = EditorGUILayout.BeginScrollView(scrollPos);
            EditorGUILayout.BeginHorizontal();

            for (int x = -1; x < rangeOfOperator.getRangeDataCount(); x++)
            {
                EditorGUILayout.BeginVertical();

                for (int y = -1; y < rangeOfOperator.getRangeDataCount(0); y++)
                {
                    using (var verticalScope = new GUILayout.VerticalScope("box"))
                    {
                        if (isTableFieldNames(x, y))
                        {
                            continue;
                        }
                        DrowTogle(x, y, 25, 20);
                    }
                }
                EditorGUILayout.EndVertical();
            }
            GUILayout.FlexibleSpace();

            EditorGUILayout.EndHorizontal();
            EditorGUILayout.EndScrollView();
            GUILayout.Space(5);

            GUILayout.Space(5);

            GUIStyle customHorizontal = new GUIStyle();

            customHorizontal.padding.left  = 10;
            customHorizontal.padding.right = 10;

            GUILayout.BeginHorizontal(customHorizontal);

            GUILayout.EndHorizontal();
            GUILayout.Space(5);

            using (var verticalScope = new GUILayout.VerticalScope("box"))
            {
                GUILayout.Space(5);
                GUILayout.BeginHorizontal();

                if (GUILayout.Button("Add X", styleButton))
                {
                    List <bool> tempList = new List <bool>();
                    for (int x = 0; x < rangeOfOperator.getRangeDataCount(0); x++)
                    {
                        tempList.Add(false);
                    }
                    rangeOfOperator.RangeDataAdd(tempList);
                }
                if (GUILayout.Button("Add Y", styleButton))
                {
                    for (int x = 0; x < rangeOfOperator.getRangeDataCount(); x++)
                    {
                        rangeOfOperator.RangeDataAdd(x, false);
                    }
                }
                GUILayout.EndHorizontal();

                GUILayout.Space(5);
                GUILayout.BeginHorizontal();

                if (!removeX ^ removeY)
                {
                    if (GUILayout.Button("Remove last X"))
                    {
                        removeX = true;
                    }
                }
                if (removeX)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("Delete THIS?", styleLabel, GUILayout.MaxWidth(100));
                    if (GUILayout.Button("Yes"))
                    {
                        rangeOfOperator.RangeDataRemoveLastX();
                        removeX = false;
                    }
                    if (GUILayout.Button("No"))
                    {
                        removeX = false;
                    }
                    GUILayout.EndHorizontal();
                }
                if (!removeY ^ removeX)
                {
                    if (GUILayout.Button("Remove last Y"))
                    {
                        removeY = true;
                    }
                }
                if (removeY)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("Delete THIS?", styleLabel, GUILayout.MaxWidth(100));
                    if (GUILayout.Button("Yes"))
                    {
                        rangeOfOperator.RangeDataRemoveLastY();
                        removeY = false;
                    }
                    if (GUILayout.Button("No"))
                    {
                        removeY = false;
                    }
                    GUILayout.EndHorizontal();
                }
                GUILayout.EndHorizontal();
                GUILayout.Space(5);

                if (GUILayout.Button("Clear"))
                {
                    rangeOfOperator.RangeDataClear();
                }
                GUILayout.Space(5);
            }

            showPosition = EditorGUILayout.Foldout(showPosition, "Transform ARRAY");
            if (showPosition)
            {
                GUILayout.Space(5);
                GUILayout.Label("Range Data Main ARRAY");
                GUILayout.Space(5);

                RangeOfOperator.Range indexOfOperatorMainRight = rangeOfOperator.ArrayTransformRightMain();
                DrawArray(indexOfOperatorMainRight);

                GUILayout.Space(5);
                GUILayout.Label("Range Data -90 ARRAY");
                GUILayout.Space(5);

                RangeOfOperator.Range indexOfOperatorTop = rangeOfOperator.ArrayTransformTop();
                DrawArray(indexOfOperatorTop);

                GUILayout.Space(5);
                GUILayout.Label("Range Data 90 ARRAY");
                GUILayout.Space(5);

                RangeOfOperator.Range indexOfOperatorBottom = rangeOfOperator.ArrayTransformBottom();
                DrawArray(indexOfOperatorBottom);

                GUILayout.Space(5);
                GUILayout.Label("Range Data 180");
                GUILayout.Space(5);

                RangeOfOperator.Range indexOfOperatorLeft = rangeOfOperator.ArrayTransformLeft();
                DrawArray(indexOfOperatorLeft);
            }

            serializedObject.ApplyModifiedProperties();
        }