private void CreateModeSpecificUI(float halfWidth)
        {
            Color oldColor = GUI.backgroundColor;

            GUI.backgroundColor = BACKGROUND_COLOR_SUB_MENU;
            EditorGUILayout.BeginVertical(SubBoxStyle);
            halfWidth          -= (DataHolder.IsWindow) ? BoxMargin : BoxMargin * 0.5f;
            GUI.backgroundColor = oldColor;

            if (ModeData.Mode != DistributionMode.Surface)
            {
                if (ModeData.Mode >= DistributionMode.ProjectionPlane)
                {
                    EditorGUILayout.BeginHorizontal(RowStyle);
                    EditorGUILayout.BeginVertical(SubLeftColumnStyle, GUILayout.MaxWidth(halfWidth));
                    SelectedData.ProjectionLayerMask = EditorGUILayout.MaskField("Layer mask:", SelectedData.ProjectionLayerMask, InternalEditorUtility.layers, PopupStyle);
                    EditorGUILayout.EndVertical();
                    EditorGUILayout.BeginVertical(RightColumnStyle, GUILayout.MaxWidth(halfWidth));
                    SelectedData.ProjectionRaycastTriggerInteraction = (QueryTriggerInteraction)EditorGUILayout.EnumPopup("Trigger query mode:", SelectedData.ProjectionRaycastTriggerInteraction, PopupStyle);
                    EditorGUILayout.EndVertical();
                    EditorGUILayout.EndHorizontal();
                }

                EditorGUILayout.BeginVertical(SingleRowStyle, GUILayout.MaxWidth(halfWidth * 2 + ColumnGap));
                EditorGUI.BeginChangeCheck();

                Vector3    pos   = EditorGUILayout.Vector3Field("Position:", ModeData.Position);
                Quaternion rot   = Quaternion.Euler(EditorGUILayout.Vector3Field("Rotation:", ModeData.Rotation.eulerAngles));
                Vector3    scale = ModeData.Scale;
                if (ModeData.Mode >= DistributionMode.ProjectionPlane)
                {
                    scale = EditorGUILayout.Vector3Field("Scale:", scale);
                }
                else
                {
                    Vector2 scale2D = EditorGUILayout.Vector2Field("Scale:", new Vector2(scale.x, scale.z));
                    scale.x = scale2D.x;
                    scale.z = scale2D.y;
                }
                if (EditorGUI.EndChangeCheck())
                {
                    ModeData.Position = pos;
                    ModeData.Rotation = rot;
                    ModeData.Scale    = scale;
                    if (!IsPrefab)
                    {
                        EditorData.HelperVisual.transform.localPosition = pos;
                        EditorData.HelperVisual.transform.localRotation = rot;
                        EditorData.HelperVisual.transform.localScale    = scale;
                        SceneView.RepaintAll();
                    }
                }

                EditorGUI.BeginChangeCheck();
                ModeData.RejectPercentageX = EditorGUILayout.Slider("Exclude X %:", ModeData.RejectPercentageX, 0.0f, 1.0f);
                ModeData.RejectPercentageY = EditorGUILayout.Slider("Exclude Z %:", ModeData.RejectPercentageY, 0.0f, 1.0f);
                if (EditorGUI.EndChangeCheck())
                {
                    EditorData.UpdateVisualPercentages(ModeData);
                }
                EditorGUILayout.EndVertical();
            }
            else
            {
                EditorGUILayout.BeginHorizontal(RowStyle);

                EditorGUILayout.BeginVertical(SubLeftColumnStyle, GUILayout.MaxWidth(halfWidth));
                using (new EditorGUI.DisabledScope(EditorData.Grids[0].ReadOnly || !DataHolder.IsWindow))
                {
                    ModeData.Surface = (GameObject)EditorGUILayout.ObjectField("Surface:", ModeData.Surface, typeof(GameObject), true);
                }
                EditorGUILayout.EndVertical();
                EditorGUILayout.BeginVertical(RightColumnStyle, GUILayout.MaxWidth(halfWidth));
                EditorGUILayout.LabelField("");
                EditorGUILayout.EndVertical();

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