private void LoadLangs(DirectoryInfo dir) { ComponentFolder lf = new ComponentFolder() { Root = Root, Directory = dir }; lf.Scan(dir); Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => { Folders.Add(lf); })); }
/* * Read component folder from JSON entry. */ private static void ReadComponentFolder(ComponentFolder cf, JSONNode node) { cf.name = cf.id; cf.realName = node["name"]; JSONArray idxArray = node["children"].AsArray; if (idxArray.Count == 0) { return; } cf.childIds = new int[idxArray.Count]; for (int i = 0; i < idxArray.Count; i++) { cf.childIds[i] = idxArray[i].AsInt; } }
/* * Read components from given JSON Class. */ private static void ReadComponents(Project project, JSONClass componentRoot, string projectPath) { string componentPath = "Assets" + projectResourceFolder + "Components/"; List <IComponentEntry> entries = new List <IComponentEntry>(); IEnumerator children = componentRoot.GetEnumerator(); while (children.MoveNext()) { // Get current KeyValuePair <string, JSONNode> current = (children.Current != null) ? (KeyValuePair <string, JSONNode>)children.Current : default(KeyValuePair <string, JSONNode>); JSONNode child = current.Value; // Get its ID string id = current.Key; bool isFolder = child["children"] != null; if (isFolder) { ComponentFolder folder = ScriptableObject.CreateInstance <ComponentFolder>(); folder.id = id; ReadComponentFolder(folder, child); entries.Add(folder); AssetDatabase.CreateAsset(folder, componentPath + folder.id + ".asset"); } else { // Async operation because it might load images Component component = ScriptableObject.CreateInstance <Component>(); component.id = id; ReadComponent(project, component, child, projectPath); entries.Add(component); AssetDatabase.CreateAsset(component, componentPath + component.id + ".asset"); } } project.components = entries.ToArray(); }