public void Assign(MaterialTag tag) { if (materials == null) { return; } // find material associated w/ tag Material material = null; for (var i = 0; i < materials.Length; i++) { if (materials[i].tag == tag) { material = materials[i].material; break; } } if (material == null) { return; } // iterate through material changers in children, assigning new material var changers = GetComponentsInChildren <MaterialChanger>(); for (var i = 0; i < changers.Length; i++) { if (debug) { Debug.Log(name + " changing material to " + tag.ToString()); } changers[i].material = material; } }
public void SetMaterials(MaterialTag tag) { materialTag = tag; var actuators = PartUtil.GetComponentsInChildren <MaterialActuator>(gameObject); if (actuators == null) { return; } for (var i = 0; i < actuators.Length; i++) { actuators[i].Assign(tag); } }
private void OnModelChange(MaterialTag tag) { if (tag == null) { _toggle.IsChecked = false; _deleteBtn.Hidden = true; return; } _deleteBtn.Hidden = false; _toggle.IsChecked = false; _name.Text = tag.Name; _chineseName.Text = tag.ChineseName; }
private static void ConvertColorXML(XElement doc) { foreach (var item in doc.Elements()) { Color32 color32 = new Color32(); color32.r = byte.Parse(item.Attribute("red").Value); color32.g = byte.Parse(item.Attribute("green").Value); color32.b = byte.Parse(item.Attribute("blue").Value); XAttribute colorAlphaAtt = item.Attribute("metal"); if (colorAlphaAtt != null) { switch (colorAlphaAtt.Value) { case "yes": color32.a = 255; break; case "no": color32.a = 128; break; default: color32.a = byte.Parse(colorAlphaAtt.Value); break; } } else { color32.a = 128; } foreach (var elemMaterial in item.Elements("material")) { MaterialTag tag = new MaterialTag(); XAttribute elemToken = elemMaterial.Attribute("token"); if (elemToken != null) { if (!MaterialTag.TryParse(elemMaterial.Attribute("token").Value, out tag)) { continue; } } else { //if there's no material token, fall back to the out-dated system. XAttribute elemValue = elemMaterial.Attribute("value"); MatBasic elemType = MatBasic.INVALID; if (elemValue != null) { elemType = ContentLoader.lookupMaterialType(elemValue.Value); } if (elemType == MatBasic.INVALID) { //throw error here continue; } //parse subtype elements if (elemMaterial.Element("subtype") == null) { tag.SetBasic(elemType); } else { var elemSubtypes = elemMaterial.Elements("subtype"); foreach (XElement elemSubtype in elemSubtypes) { XAttribute subtypeValue = elemSubtype.Attribute("value"); if (subtypeValue == null) { //Oh no! continue; } string subtype = subtypeValue.Value; string token = ""; switch (elemType) { case MatBasic.INORGANIC: token = "INORGANIC:" + subtype; break; case MatBasic.ICHOR: token = "CREATURE:" + subtype + ":ICHOR"; break; case MatBasic.LEATHER: token = "CREATURE:" + subtype + ":LEATHER"; break; case MatBasic.BLOOD_1: token = "CREATURE:" + subtype + ":BLOOD"; break; case MatBasic.BLOOD_2: token = "CREATURE:" + subtype + ":BLOOD"; break; case MatBasic.BLOOD_3: token = "CREATURE:" + subtype + ":BLOOD"; break; case MatBasic.BLOOD_4: token = "CREATURE:" + subtype + ":BLOOD"; break; case MatBasic.BLOOD_5: token = "CREATURE:" + subtype + ":BLOOD"; break; case MatBasic.BLOOD_6: token = "CREATURE:" + subtype + ":BLOOD"; break; case MatBasic.PLANT: token = "PLANT:" + subtype + ":STRUCTURAL"; break; case MatBasic.WOOD: token = "PLANT:" + subtype + ":WOOD"; break; case MatBasic.PLANTCLOTH: token = "PLANT:" + subtype + ":THREAD"; break; default: //make some kind of error here continue; } MaterialTag.TryParse(token, out tag); } } } Debug.Log(tag); string subFolder = Path.GetFileNameWithoutExtension(doc.BaseUri) + "/"; string assetPath = "Assets/Resources/Materials/" + subFolder + tag.ToFileName() + ".mat"; var saveMat = AssetDatabase.LoadAssetAtPath <Material>(assetPath); if (saveMat == null) { if (!Directory.Exists(Path.GetDirectoryName(assetPath))) { Directory.CreateDirectory(Path.GetDirectoryName(assetPath)); } saveMat = new Material(Shader.Find("Custom/MaterialStore")); AssetDatabase.CreateAsset(saveMat, assetPath); } saveMat.SetColor("_Color", color32); Debug.Log(assetPath); } } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); }
private static async Task CreateDb() { string wpPosts; string wpTermRelationships; string wpTermTaxonomy; string wpTerms; var context = new DrosDbContext(); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { wpPosts = await File.ReadAllTextAsync(@"C:\Dev\dros\wp_posts.json"); wpTermRelationships = await File.ReadAllTextAsync(@"C:\Dev\dros\wp_term_relationships.json"); wpTermTaxonomy = await File.ReadAllTextAsync(@"C:\Dev\dros\wp_term_taxonomy.json"); wpTerms = await File.ReadAllTextAsync(@"C:\Dev\dros\wp_terms.json"); } else { wpPosts = await File.ReadAllTextAsync(@"/Users/malshehri/Desktop/dros/wp_posts.json"); wpTermRelationships = await File.ReadAllTextAsync(@"/Users/malshehri/Desktop/dros/wp_term_relationships.json"); wpTermTaxonomy = await File.ReadAllTextAsync(@"/Users/malshehri/Desktop/dros/wp_term_taxonomy.json"); wpTerms = await File.ReadAllTextAsync(@"/Users/malshehri/Desktop/dros/wp_terms.json"); } var counter = 1; var posts = JsonConvert.DeserializeObject <IList <wp_posts> >(wpPosts); var termRelationships = JsonConvert.DeserializeObject <IList <wp_term_relationships> >(wpTermRelationships); var termTaxonomies = JsonConvert.DeserializeObject <IList <wp_term_taxonomy> >(wpTermTaxonomy); var terms = JsonConvert.DeserializeObject <IList <wp_terms> >(wpTerms); var regx = new Regex("http://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?", RegexOptions.IgnoreCase); foreach (var term in terms) { var termTaxonomy = termTaxonomies.First(x => x.term_id == int.Parse(term.term_id)); if (termTaxonomy?.taxonomy == "category") { if (context.Authors.FirstOrDefault(x => x.Name == term.name) == null) { context.Authors.Add(new Author { Id = Guid.NewGuid().ToString(), Name = term.name }); } } else if (termTaxonomy?.taxonomy == "post_tag") { if (context.Tags.FirstOrDefault(x => x.Name == term.name) == null) { context.Tags.Add(new Tag { Id = Guid.NewGuid().ToString(), Name = term.name }); } } } var termTaxonomyResult = await context.SaveChangesAsync(); posts = posts.Where(x => x.post_status == "publish").ToList(); WriteLine($"published posts = {posts.Count}"); WriteLine($"TaxonomyResult {termTaxonomyResult}"); foreach (var post in posts) { var material = new Material { Id = Guid.NewGuid().ToString(), Title = post.post_title, Links = new List <Url>(), Authors = new List <MaterialAuthor>(), Tags = new List <MaterialTag>(), Categories = new List <MaterialCategory>() }; context.Materials.Add(material); var matches = regx.Matches(post.post_content); int mp3Order = 1, oggOrder = 1, wmaOrder = 1, rmOrder = 1, isoOrder = 1; foreach (Match match in matches) { var url = new Url { Id = Guid.NewGuid().ToString() }; var newLink = match.Value;//.Replace("http://", "https://"); if (match.Value.ToLower().Contains(".rm")) { url.Link = newLink; url.AudioType = AudioType.Rm; url.Order = rmOrder++; } else if (match.Value.ToLower().Contains(".mp3")) { url.Link = newLink; url.AudioType = AudioType.Mp3; url.Order = mp3Order++; } else if (match.Value.ToLower().Contains(".ogg")) { url.Link = newLink; url.AudioType = AudioType.Ogg; url.Order = oggOrder++; } else if (match.Value.ToLower().Contains(".wma")) { url.Link = newLink; url.AudioType = AudioType.Wma; url.Order = wmaOrder++; } else if (match.Value.ToLower().Contains(".iso")) { url.Link = newLink; url.AudioType = AudioType.Iso; url.Order = isoOrder++; } if (url.AudioType > 0) { material.Links.Add(url); } } var termRelationshipList = termRelationships.Where(x => x.object_id == post.ID).ToList(); foreach (var termRelationship in termRelationshipList) { var termTaxonomie = termTaxonomies.FirstOrDefault(x => x.term_taxonomy_id == termRelationship.term_taxonomy_id); var term = terms.FirstOrDefault(x => int.Parse(x.term_id) == termTaxonomie?.term_id); if (termTaxonomie?.taxonomy == "category") { var author = context.Authors.FirstOrDefault(x => x.Name == term.name); var materialAuthor = new MaterialAuthor { Material = material, Author = author }; material.Authors.Add(materialAuthor); } else if (termTaxonomie?.taxonomy == "post_tag") { var tag = context.Tags.FirstOrDefault(x => x.Name == term.name); var materialTag = new MaterialTag { Material = material, Tag = tag }; material.Tags.Add(materialTag); } } WriteLine($"{counter}"); counter += 1; } await context.SaveChangesAsync(); WriteLine("Finished creating the database!"); context.Dispose(); }
public void SetTagNoEvent(MaterialTag value) { _deleteBtn.Hidden = false; _tag = value; }