private void CloseAllFoldouts() { for (int i = 0; i < componentSaves.Count; i++) { ComponentSave test = componentSaves[i]; test.boolItem = false; componentSaves[i] = test; } }
private void OnGUI() { scrollPosition = GUILayout.BeginScrollView(scrollPosition, GUIStyle.none); closeAllButton = GUILayout.Button("Close all"); if (closeAllButton) { CloseAllFoldouts(); } for (int i = 0; i < componentSaves.Count; i++) { if (components[i].GetType() != typeof(SaveableIdentifier)) { //TODO: save the variables List <System.Tuple <string, string, string> > variables = ScriptReflector.GetVariableNames(components[i]); ComponentSave tempList = componentSaves[i]; tempList.boolItem = EditorGUILayout.BeginFoldoutHeaderGroup(componentSaves[i].boolItem, components[i].GetType().Name); componentSaves[i] = tempList; if (componentSaves[i].boolItem == true) { GUILayout.Space(10); EditorGUI.indentLevel += 5; for (int v = 0; v < variables.Count; v++) { GUILayout.BeginHorizontal(); EditorGUILayout.LabelField(variables[v].Item1); GUILayout.Space(-250); componentSaves[i].boolList[v] = EditorGUILayout.Toggle(componentSaves[i].boolList[v]); GUILayout.EndHorizontal(); } EditorGUI.indentLevel -= 5; GUILayout.Space(20); } EditorGUILayout.EndFoldoutHeaderGroup(); } } GUILayout.FlexibleSpace(); saveButton = GUILayout.Button("Save"); if (saveButton) { SaveToIdentifier(); Close(); } GUILayout.EndScrollView(); }
private void SaveToIdentifier() { for (int i = 0; i < componentSaves.Count; i++) { ComponentSave cSave = componentSaves[i]; if (!componentSaves[i].boolList.Contains(true)) { cSave.boolItem = false; } else { cSave.boolItem = true; } componentSaves[i] = cSave; } identifier.componentSaves = componentSaves; identifier.hasChanged = true; }
private static void AddToSave(GameObject obj, int id) { XmlNode idNode = GetCreateIdNode(id); Iidentifier identifier = obj.GetComponent <Iidentifier>(); List <ComponentSave> cSave = identifier.componentSaves; foreach (Component component in obj.GetComponents <Component>()) { ComponentSave componentSave = cSave.Find(x => x.componentTypeName == component.GetType().Name); if ( component.GetType() != typeof(SaveableIdentifier) && (GetChildNodeFromName(idNode, component.GetType().AssemblyQualifiedName) == null || identifier.hasChanged) && componentSave.boolItem == true ) { MakeVariableNodes(component, MakeComponentNode(component, idNode), componentSave); } } }
private static void MakeVariableNodes(Component component, XmlNode componentNode, ComponentSave componentSave) { List <System.Tuple <string, string, string> > componentFields = ScriptReflector.GetVariableNames(component); for (int i = 0; i < componentFields.Count; i++) { XmlElement fieldNode = GetChildNodeFromName(componentNode, componentFields[i].Item1); if (componentSave.boolList[i]) { if (fieldNode == null) { fieldNode = xmlDocument.CreateElement(componentFields[i].Item1); } fieldNode.SetAttribute("type", componentFields[i].Item2); fieldNode.InnerText = componentFields[i].Item3; componentNode.AppendChild(fieldNode); } else if (fieldNode != null) { componentNode.RemoveChild(fieldNode); } } }