示例#1
0
    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;
        }
    }
示例#2
0
    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);
        }
    }
示例#3
0
        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();
    }
示例#5
0
        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\\~\\!\\@\\#\\$\\%\\^\\&amp;\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?", 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();
        }
示例#6
0
 public void SetTagNoEvent(MaterialTag value)
 {
     _deleteBtn.Hidden = false;
     _tag = value;
 }