/// <summary> /// Retourne Faux si une key n'existait pas /// </summary> private bool DrawData(DataType type, int keysStart, int keysEnd) { OneWayBool allKeyExist = new OneWayBool(true); EditorGUILayout.BeginHorizontal(); // + Button if (IsDataTypeModifiable(type)) { var p = GUI.skin.button.padding; var o = GUI.skin.button.contentOffset; RectOffset wasPadding = new RectOffset(p.left, p.right, p.top, p.bottom); Vector2 wasContentOffset = new Vector2(o.x, o.y); GUI.skin.button.padding = new RectOffset(0, 0, 0, 0); GUI.skin.button.contentOffset = new Vector2(0, -1); if (GUILayout.Button("+", GUILayout.Width(16), GUILayout.Height(16))) { var screenPoint = GUIUtility.GUIToScreenPoint(Event.current.mousePosition); DataSaverEditorPopup.Popup(gameSaves, type, screenPoint, RefreshKeys); } GUI.skin.button.padding = wasPadding; GUI.skin.button.contentOffset = wasContentOffset; } // Label EditorGUILayout.LabelField(type.ToString(), EditorStyles.boldLabel); EditorGUILayout.EndHorizontal(); // Data if (keysStart == keysEnd) // If length == 0 { EditorGUILayout.LabelField("Empty", EditorStyles.centeredGreyMiniLabel); } else { for (int i = keysStart; i < keysEnd; i++) { allKeyExist.TryToSet(DrawData(type, keys[i])); } } EditorGUILayout.Space(); return(allKeyExist); }
private void DrawData() { OneWayBool refresh = new OneWayBool(false); if (chosenDataType == DataType.All) { if (keys == null) { for (int i = 1; i < dataTypeCount; i++) { var dataType = (DataType)i; refresh.TryToSet(!DrawData(dataType, -1, -1)); } } else { for (int i = 1; i < dataTypeCount; i++) { var dataType = (DataType)i; var begin = keyTypeCounts[i]; var end = (i + 1) >= dataTypeCount ? keys.Length : keyTypeCounts[i + 1]; refresh.TryToSet(!DrawData(dataType, begin, end)); } } } else { refresh.TryToSet(!DrawData(chosenDataType, 0, keys != null ? keys.Length : 0)); } if (refresh) { RefreshKeys(); } }