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(); }