private void addMaterial(uint chara_id) { uint id = (uint)MaterialList.Count; MasterDataParamChara materialMaster = MasterDataUtil.GetCharaParamFromID(chara_id); if (materialMaster == null) { return; } MaterialValue += materialMaster.name + "\n"; var iconModel = new ListItemModel((uint)id); MaterialDataContext _newData = new MaterialDataContext(iconModel); _newData.m_Id = (int)id; _newData.m_CharaId = chara_id; _newData.IsViewIcon = true; UnitIconImageProvider.Instance.Get( chara_id, sprite => { _newData.IconImage = sprite; }); _newData.IconColor = new Color(1, 1, 1); _newData.Width = m_IconSize; _newData.Height = m_IconSize; _newData.calcScale(); _newData.SelectImage = ResourceManager.Instance.Load("icon_square1"); MaterialList.Add(_newData); }
public void SetupMaterials(ShotProperty prop, PmxMaterialData[] materials, string[] textures) { foreach (var texture in textures) { if (!TextureList.Contains(texture)) { TextureList.Add(texture); } } foreach (PmxMaterialData material in materials) { material.MaterialName = "MA_" + MaterialList.Count.ToString(); if (0 <= material.TextureId && material.TextureId < textures.Length) { material.TextureId = TextureList.IndexOf(textures[material.TextureId]); } else { material.TextureId = -1; } if (0 <= material.SphereId && material.SphereId < textures.Length) { material.SphereId = TextureList.IndexOf(textures[material.SphereId]); } else { material.SphereId = -1; } MaterialList.Add(material); } }
public void MaterialCloneAndPersistTest() { Material source = PrepareSourceMaterial(); Material dest = source.Clone(); MaterialList list = new MaterialList(); list.Add(dest); DbConnectionMappingContext.DoMappingAction( MaterialAdapter.Instance.GetConnectionName(), "SubjectDB", () => { TransactionScopeFactory.DoAction(() => { MaterialAdapter.Instance.InsertWithContent(list); MaterialList loadedList = MaterialAdapter.Instance.LoadMaterialByMaterialID(dest.ID); Assert.IsTrue(loadedList.Count > 0); loadedList[0].EnsureMaterialContent(); ValidateMaterial(source, loadedList[0]); }); }); }
/// <summary> /// Binds the data. /// </summary> public override void BindData() { base.BindData(); var workflowTemplateId = Guid.Empty; if (!IsEditMode) { workflowTemplateId = CurrentWorkflowTemplate; } else if (EditObjectId.HasValue) { workflowTemplateId = EditObjectId.Value; } if (MaterialList.Count == 0) { Session["Materials"] = DataManager.Material.SelectByWorkflowTemplateId(workflowTemplateId). Select( a => new MaterialMap { ID = a.ID, SiteID = a.SiteID, Name = a.Name, Type = a.Type, Description = a.Description, OldValue = a.Value, Value = ((MaterialType)a.Type == MaterialType.Form && !IsEditMode) ? null : a.Value, WorkflowTemplateID = a.WorkflowTemplateID }).ToList(); } var workflowTemplateElements = DataManager.WorkflowTemplateElement.SelectAll(workflowTemplateId).Where(a => a.ElementType == (int)WorkflowTemplateElementType.Message).ToList(); if (SiteActionTemplateList.Count == 0) { foreach (var workflowTemplateElement in workflowTemplateElements) { var workflowTemplateElementParameter = DataManager.WorkflowTemplateElementParameter.SelectByElementId(workflowTemplateElement.ID).FirstOrDefault(a => a.Name == "SiteActionTemplateID"); var siteActionTemplate = DataManager.SiteActionTemplate.SelectById(workflowTemplateElementParameter.Value.ToGuid()); SiteActionTemplateList.Add(siteActionTemplate); MaterialList.Add(new MaterialMap { ID = siteActionTemplate.ID, SiteID = CurrentUser.Instance.SiteID, Name = workflowTemplateElement.Name, OldValue = siteActionTemplate.ID.ToString(), Value = siteActionTemplate.ID.ToString(), Type = (int)MaterialType.ActionTemplate }); } } }
private void LoadMaterials() { MaterialList.Clear(); var foundmaterials = service.GetAllContentNamesByType(ContentType.Material); foreach (var material in foundmaterials) { MaterialList.Add(material); } RaisePropertyChanged("MaterialList"); }
public void FillMaterialList() { MaterialList.Clear(); var materialList = editorService.GetAllContentNamesByType(ContentType.Material); foreach (var material in materialList.Where(ControlMaterialChanger.TryAddMaterial)) { MaterialList.Add(material); } }
private void GetMaterials() { MaterialList.Clear(); MaterialList.Add("Default2D"); var materialList = service.GetAllContentNamesByType(ContentType.Material); foreach (var material in materialList.Where(material => MaterialHasColor(material))) { MaterialList.Add(material); //ncrunch: no coverage } }
public void RefreshOnAddedContent(ContentType type, string name) { if (type == ContentType.Material && !MaterialList.Contains(name)) { MaterialList.Add(name); } if ((type == ContentType.Image || type == ContentType.ImageAnimation || type == ContentType.SpriteSheetAnimation) && !ImageList.Contains(name)) { ImageList.Add(name); } }
public Materials(string materialsString, string scaleInput) { scale = Int32.Parse(scaleInput.Remove(scaleInput.Length - 1)); string[] lines = materialsString.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None); foreach (var item in lines) { string[] strings = item.Split(new[] { ",", ";" }, StringSplitOptions.None); double distanceParameter; double.TryParse(strings[1], out distanceParameter); MaterialList.Add(new Tuple <string, double>(strings[0], distanceParameter)); } }
private async Task Restore() { using (DataBaseHelper dbh = new DataBaseHelper()) { var res = await dbh.GetElements <Material>(Tables.MaterialTable, Tables.MaterialFields); MaterialList.Clear(); foreach (var stock in res) { MaterialList.Add(stock); } } }
public void addItem(int _id, uint _unit_id, System.Action <MaterialDataContext> action = null, bool notVierw = false) { var iconModel = new ListItemModel((uint)_id); MaterialDataContext _newData = new MaterialDataContext(iconModel); _newData.m_Id = _id; _newData.m_CharaId = _unit_id; if (_unit_id == 0) { _newData.IsViewIcon = false; } else { _newData.IsViewIcon = true; UnitIconImageProvider.Instance.Get( _unit_id, sprite => { _newData.IconImage = sprite; }, true); } _newData.IconColor = new Color(1, 1, 1); if (notVierw == true) { _newData.MaterialColor = Color.clear; } _newData.Width = m_IconSize; _newData.Height = m_IconSize; _newData.calcScale(); _newData.SelectImage = ResourceManager.Instance.Load("icon_square1"); iconModel.OnClicked += () => { if (action != null) { action(_newData); } }; MaterialList.Add(_newData); m_iconModels.Add(iconModel); }
//ncrunch: no coverage end public void UpdateOnContentChange(ContentType type, string addedName) { if (type == ContentType.ParticleSystem && !EffectsInProject.Contains(addedName)) { EffectsInProject.Add(addedName); RaisePropertyChanged("EffectsInProject"); } if (type == ContentType.ParticleEmitter && !EmittersInProject.Contains(addedName)) { EmittersInProject.Add(addedName); RaisePropertyChanged("EmittersInProject"); } if (type == ContentType.Material && !MaterialList.Contains(addedName)) { MaterialList.Add(addedName); RaisePropertyChanged("MaterialList"); } }
private async void AddMaterialExecute(Material material) { Collector collector = CollectorViewModel.Collector; if (collector.MaterialCollection == null) { collector.MaterialCollection = new List <string>(); } collector.MaterialCollection.Add(material.MaterialID); await CollectorDA.UpdateCollector(collector); if (material.CollectorList == null) { material.CollectorList = new List <string>(); } material.CollectorList.Add(collector.Username); await MaterialDA.UpdateMaterial(material); AvailableMaterialList.Remove(material); MaterialList.Add(material); MaterialCount = MaterialList.Count; //await Application.Current.MainPage.DisplayAlert("Add Material into Collection", "Material "+material.MaterialName+" is successfully added.", "OK"); //await Application.Current.MainPage.Navigation.PopAsync(); }
/// <summary> /// 获得指定附件的副本 /// </summary> /// <param name="materials">附件集合</param> /// <returns>指定附件对应的副本集合</returns> internal MaterialList LoadCopyVersionMaterial(MaterialList materials) { ExceptionHelper.TrueThrow<ArgumentNullException>(materials == null, "materials"); MaterialList copyVersionMaterials = new MaterialList(); if (materials.Count != 0) { ConnectiveSqlClauseCollection orClause = new ConnectiveSqlClauseCollection(LogicOperatorDefine.Or); foreach (Material material in materials) { WhereSqlClauseBuilder whereSqlClause = new WhereSqlClauseBuilder(); whereSqlClause.AppendItem("PARENT_ID", material.ID); whereSqlClause.AppendItem("WF_ACTIVITY_ID", material.WfActivityID); whereSqlClause.AppendItem("VERSION_TYPE", (int)MaterialVersionType.CopyVersion); orClause.Add(whereSqlClause); } string sql = string.Format("SELECT * FROM WF.MATERIAL WHERE {0}", orClause.AppendTenantCodeSqlClause(typeof(Material)).ToSqlString(TSqlBuilder.Instance)); using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName())) { using (IDataReader dr = DbHelper.RunSqlReturnDR(sql, GetConnectionName())) { while (dr.Read()) { Material material = new Material(); ORMapping.DataReaderToObject(dr, material); copyVersionMaterials.Add(material); } } } DecorateMaterials(copyVersionMaterials); } return copyVersionMaterials; }
/// <summary> /// 获得指定ID的副本 和 它之前的一切副本 按照时间正排序 /// </summary> /// <param name="id">id</param> /// <returns>MaterialList</returns> public MaterialList GetPreMaterialsCopyVersion(string id) { ExceptionHelper.CheckStringIsNullOrEmpty(id, "id"); WhereSqlClauseBuilder whereSqlClause = new WhereSqlClauseBuilder(); whereSqlClause.AppendItem("PARENT_ID", string.Format("(SELECT PARENT_ID FROM WF.MATERIAL WHERE ID = {0})", TSqlBuilder.Instance.CheckQuotationMark(id, true)), "=", true); whereSqlClause.AppendItem("MODIFY_TIME", string.Format("(SELECT MODIFY_TIME FROM WF.MATERIAL WHERE ID = {0})", TSqlBuilder.Instance.CheckQuotationMark(id, true)), "<=", true); whereSqlClause.AppendTenantCode(typeof(Material)); OrderBySqlClauseBuilder orderBySqlClause = new OrderBySqlClauseBuilder(); orderBySqlClause.AppendItem("MODIFY_TIME", FieldSortDirection.Ascending); string sql = string.Format(@"SELECT * FROM WF.MATERIAL WHERE {0} AND VERSION_TYPE = {1} ORDER BY {2}", whereSqlClause.ToSqlString(TSqlBuilder.Instance), Convert.ToInt16(MaterialVersionType.CopyVersion), orderBySqlClause.ToSqlString(TSqlBuilder.Instance)); MaterialList materials = new MaterialList(); using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName())) { using (IDataReader dr = DbHelper.RunSqlReturnDR(sql, GetConnectionName())) { while (dr.Read()) { Material material = new Material(); ORMapping.DataReaderToObject(dr, material); materials.Add(material); } } } return materials; }
/// <summary> /// 获得指定ID的Material /// </summary> /// <param name="materialID">指定ID</param> /// <returns>MaterialList</returns> public MaterialList LoadMaterialByMaterialID(string materialID) { ExceptionHelper.CheckStringIsNullOrEmpty(materialID, "materialID"); MaterialList materials = new MaterialList(); WhereSqlClauseBuilder wBuilder = new WhereSqlClauseBuilder(); wBuilder.AppendItem("ID", materialID); wBuilder.AppendTenantCode(typeof(Material)); string sql = "SELECT * FROM WF.MATERIAL WHERE " + wBuilder.ToSqlString(TSqlBuilder.Instance); using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName())) { using (IDataReader dr = DbHelper.RunSqlReturnDR(sql, GetConnectionName())) { while (dr.Read()) { Material material = new Material(); ORMapping.DataReaderToObject(dr, material); materials.Add(material); } } } DecorateMaterials(materials); return materials; }
/// <summary> /// 获得materialID对应的附件对象的所有版本和本身形成的树 /// 对应的存储过程GetMaterialVersions不存在 /// </summary> /// <param name="mainMaterialID">主版本ID</param> /// <returns>以主版本为跟节点各版本为子节点的树</returns> //[Obsolete("对应的存储过程GetMaterialVersions不存在")] public MaterialTreeNode LoadMaterialVersionsByMaterialID(string mainMaterialID) { ExceptionHelper.CheckStringIsNullOrEmpty(mainMaterialID, "mainMaterialID"); MaterialList materials = new MaterialList(); using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName())) { Database db = DatabaseFactory.Create(dbi); using (SqlCommand dbc = new SqlCommand()) { SqlParameter sqlParameter = new SqlParameter(); sqlParameter.Value = mainMaterialID; sqlParameter.SqlDbType = SqlDbType.NVarChar; sqlParameter.Size = 36; sqlParameter.ParameterName = "@mainMaterialID"; sqlParameter.SourceColumn = "@mainMaterialID"; sqlParameter.Direction = ParameterDirection.InputOutput; dbc.CommandType = CommandType.StoredProcedure; dbc.CommandText = "GetMaterialVersions"; dbc.Parameters.Add(sqlParameter); using (IDataReader dr = db.ExecuteReader(dbc)) { while (dr.Read()) { Material material = new Material(); ORMapping.DataReaderToObject(dr, material); materials.Add(material); } } mainMaterialID = sqlParameter.Value.ToString(); } } return GenerateMaterialVersionTree(materials, mainMaterialID); }
/// <summary> /// 由资源ID查询 /// </summary> /// <param name="resourceIDs">资源ID</param> /// <returns>查询结果</returns> public MaterialList LoadMaterialsByResourceID(params string[] resourceIDs) { ExceptionHelper.TrueThrow<ArgumentNullException>(resourceIDs == null, "resourceIDs"); MaterialList result = new MaterialList(); if (resourceIDs.Length != 0) { InSqlClauseBuilder inBuilder = new InSqlClauseBuilder("RESOURCE_ID"); inBuilder.AppendItem(resourceIDs); OrderBySqlClauseBuilder orderClause = new OrderBySqlClauseBuilder(); orderClause.AppendItem("SORT_ID", FieldSortDirection.Ascending); string sql = string.Format("SELECT * FROM WF.MATERIAL WHERE {0} AND VERSION_TYPE = '{1}' ORDER BY {2}", inBuilder.AppendTenantCodeSqlClause(typeof(Material)).ToSqlString(TSqlBuilder.Instance), Convert.ToInt32(MaterialVersionType.Normal).ToString(), orderClause.ToSqlString(TSqlBuilder.Instance)); using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName())) { using (IDataReader dr = DbHelper.RunSqlReturnDR(sql, GetConnectionName())) { while (dr.Read()) { Material material = new Material(); ORMapping.DataReaderToObject(dr, material); result.Add(material); } } } DecorateMaterials(result); } return result; }
public MaterialList LoadVersionMaterialsBySceneKey(string resourceID, string wfActivityName) { MaterialList copyVersionMaterials = new MaterialList(); WhereSqlClauseBuilder whereSqlClause = new WhereSqlClauseBuilder(); whereSqlClause.AppendItem("RESOURCE_ID", resourceID); whereSqlClause.AppendItem("VERSION_TYPE", Convert.ToInt16(MaterialVersionType.CopyVersion).ToString()); whereSqlClause.AppendItem("WF_ACTIVITY_NAME", wfActivityName); whereSqlClause.AppendTenantCode(typeof(Material)); string sql = string.Format("SELECT * FROM WF.MATERIAL WHERE {0}", whereSqlClause.ToSqlString(TSqlBuilder.Instance)); using (DbContext dbi = DbHelper.GetDBContext(GetConnectionName())) { using (IDataReader dr = DbHelper.RunSqlReturnDR(sql, GetConnectionName())) { while (dr.Read()) { Material material = new Material(); ORMapping.DataReaderToObject(dr, material); copyVersionMaterials.Add(material); } } } DecorateMaterials(copyVersionMaterials); return copyVersionMaterials; }
public virtual void FromStream(Stream s, bool id) { Action <Action> action = delegate(Action a) { try { a(); } catch (Exception) { LoadErrCount++; } }; PmxHeader head = new PmxHeader(); head.FromStreamEx(s); Header.FromHeader(head); head.ElementFormat.WithID = id; action(delegate { ModelInfo.FromStreamEx(s, head.ElementFormat); }); int count = 0; action(delegate { count = PmxStreamHelper.ReadElement_Int32(s); }); VertexList.Clear(); VertexList.Capacity = count; for (int k = 0; k < count; k++) { PmxVertex v = new PmxVertex(); action(delegate { v.FromStreamEx(s, head.ElementFormat); }); VertexList.Add(v); } action(delegate { count = PmxStreamHelper.ReadElement_Int32(s); }); FaceList.Clear(); FaceList.Capacity = count; for (int l = 0; l < count; l++) { int ix = 0; action(delegate { ix = PmxStreamHelper.ReadElement_Int32(s, head.ElementFormat.VertexSize, signed: false); }); FaceList.Add(ix); } PmxTextureTable tx = new PmxTextureTable(); action(delegate { tx.FromStreamEx(s, head.ElementFormat); }); action(delegate { count = PmxStreamHelper.ReadElement_Int32(s); }); MaterialList.Clear(); MaterialList.Capacity = count; for (int m = 0; m < count; m++) { PmxMaterial j = new PmxMaterial(); action(delegate { j.FromStreamEx_TexTable(s, tx, head.ElementFormat); }); MaterialList.Add(j); } action(delegate { count = PmxStreamHelper.ReadElement_Int32(s); }); BoneList.Clear(); BoneList.Capacity = count; for (int n = 0; n < count; n++) { PmxBone b = new PmxBone(); action(delegate { b.FromStreamEx(s, head.ElementFormat); }); BoneList.Add(b); } action(delegate { count = PmxStreamHelper.ReadElement_Int32(s); }); MorphList.Clear(); MorphList.Capacity = count; for (int num = 0; num < count; num++) { PmxMorph morph = new PmxMorph(); action(delegate { morph.FromStreamEx(s, head.ElementFormat); }); MorphList.Add(morph); } action(delegate { count = PmxStreamHelper.ReadElement_Int32(s); }); NodeList.Clear(); NodeList.Capacity = count; for (int num2 = 0; num2 < count; num2++) { PmxNode node = new PmxNode(); action(delegate { node.FromStreamEx(s, head.ElementFormat); }); NodeList.Add(node); if (NodeList[num2].SystemNode) { if (NodeList[num2].Name == "Root") { RootNode = NodeList[num2]; } else if (NodeList[num2].Name == "表情") { ExpNode = NodeList[num2]; } } } action(delegate { count = PmxStreamHelper.ReadElement_Int32(s); }); BodyList.Clear(); BodyList.Capacity = count; for (int num3 = 0; num3 < count; num3++) { PmxBody b2 = new PmxBody(); action(delegate { b2.FromStreamEx(s, head.ElementFormat); }); BodyList.Add(b2); } action(delegate { count = PmxStreamHelper.ReadElement_Int32(s); }); JointList.Clear(); JointList.Capacity = count; for (int num4 = 0; num4 < count; num4++) { PmxJoint i = new PmxJoint(); action(delegate { i.FromStreamEx(s, head.ElementFormat); }); JointList.Add(i); } if (head.Ver >= 2.1f) { action(delegate { count = PmxStreamHelper.ReadElement_Int32(s); }); SoftBodyList.Clear(); SoftBodyList.Capacity = count; for (int num5 = 0; num5 < count; num5++) { PmxSoftBody b3 = new PmxSoftBody(); action(delegate { b3.FromStreamEx(s, head.ElementFormat); }); SoftBodyList.Add(b3); } } if (id) { action(delegate { FilePath = PmxStreamHelper.ReadString(s, head.ElementFormat); }); } head.ElementFormat.WithID = false; }
public void GetMaterials(float id) { try { //connection.Open(); using (SqlConnection connection = new SqlConnection(builder.ConnectionString)) { Products.Clear(); MaterialList.Clear(); connection.Open(); StringBuilder sb = new StringBuilder(); //sb.Append("SELECT * FROM JoelProducts"); sb.Append("SELECT * FROM Sheet1$ WHERE GRP_ID = " + id.ToString() + ";"); String sql = sb.ToString(); Console.WriteLine(sb.ToString()); using (SqlCommand command = new SqlCommand(sql, connection)) { using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { Material material = new Material { Name = reader.GetString(0), //Material_Cost = (float)reader.GetDouble(1), Material_Cost = reader.IsDBNull(1) ? 0 : (float)reader.GetDouble(1), //Setup_Hr = (float)reader.GetDouble(2), //Setup_Cost = (UInt32)reader.GetDouble(3), //Operation_Hr = (float)reader.GetDouble(4), //Operation_Cost = (UInt32)reader.GetDouble(5), //Markup = (float)reader.GetDouble(6), Setup_Hr = reader.IsDBNull(2) ? 0 : (float)reader.GetDouble(2), Setup_Cost = reader.IsDBNull(3) ? 0 : (UInt32)reader.GetDouble(3), Operation_Hr = reader.IsDBNull(4) ? 0 : (float)reader.GetDouble(4), Operation_Cost = reader.IsDBNull(5) ? 0 : (UInt32)reader.GetDouble(5), Markup = reader.IsDBNull(6) ? 0 : (float)reader.GetDouble(6), Qty = reader.IsDBNull(9) ? 0 : (UInt32)reader.GetDouble(9), Id = (float)reader.GetInt32(7), Grp_Id = reader.IsDBNull(8) ? 0 : (float)reader.GetInt32(8) }; material.SetSubTotal(); material.SetPricePerPiece(); Products.Add(material); MaterialList.Add(material); Console.WriteLine("hey"); } Console.WriteLine("heywala"); } } } } catch (SqlException ex) { MessageBox.Show(ex.Message + ex.Source); } }
private ImportedMaterial ConvertMaterial(Material mat) { ImportedMaterial iMat; if (mat != null) { iMat = ImportedHelpers.FindMaterial(mat.m_Name, MaterialList); if (iMat != null) { return(iMat); } iMat = new ImportedMaterial(); iMat.Name = mat.m_Name; foreach (var col in mat.m_SavedProperties.m_Colors) { switch (col.Key) { case "_Color": iMat.Diffuse = col.Value; break; case "_SColor": iMat.Ambient = col.Value; break; case "_EmissionColor": iMat.Emissive = col.Value; break; case "_SpecColor": iMat.Specular = col.Value; break; case "_RimColor": case "_OutlineColor": case "_ShadowColor": break; } } foreach (var flt in mat.m_SavedProperties.m_Floats) { switch (flt.Key) { case "_Shininess": iMat.Power = flt.Value; break; case "_RimPower": case "_Outline": break; } } //textures iMat.Textures = new string[5]; iMat.TexOffsets = new Vector2[5]; iMat.TexScales = new Vector2[5]; foreach (var texEnv in mat.m_SavedProperties.m_TexEnvs) { Texture2D m_Texture2D = null; if (texEnv.Value.m_Texture.TryGet <Texture2D>(out var m_Texture)) //TODO other Texture { m_Texture2D = m_Texture; } if (m_Texture2D == null) { continue; } int dest = -1; if (texEnv.Key == "_MainTex") { dest = 0; } else if (texEnv.Key == "_BumpMap") { dest = 4; } else if (texEnv.Key.Contains("Spec")) { dest = 2; } else if (texEnv.Key.Contains("Norm")) { dest = 3; } if (dest < 0 || iMat.Textures[dest] != null) { continue; } if (textureNameDictionary.TryGetValue(m_Texture, out var textureName)) { iMat.Textures[dest] = textureName; } else if (ImportedHelpers.FindTexture(m_Texture2D.m_Name + ".png", TextureList) != null) //已有相同名字的图片 { for (int i = 1; ; i++) { var name = m_Texture2D.m_Name + $" ({i}).png"; if (ImportedHelpers.FindTexture(name, TextureList) == null) { iMat.Textures[dest] = name; textureNameDictionary.Add(m_Texture, name); break; } } } else { iMat.Textures[dest] = m_Texture2D.m_Name + ".png"; textureNameDictionary.Add(m_Texture, iMat.Textures[dest]); } iMat.TexOffsets[dest] = texEnv.Value.m_Offset; iMat.TexScales[dest] = texEnv.Value.m_Scale; ConvertTexture2D(m_Texture2D, iMat.Textures[dest]); } MaterialList.Add(iMat); } else { iMat = new ImportedMaterial(); } return(iMat); }
private void ConvertMaterial(Material mat) { ImportedMaterial iMat = ImportedHelpers.FindMaterial(mat.m_Name, MaterialList); if (iMat != null) { return; } iMat = new ImportedMaterial(); iMat.Name = mat.m_Name; foreach (var col in mat.m_SavedProperties.m_Colors) { switch (col.Key.name) { case "_Color": iMat.Diffuse = col.Value; break; case "_SColor": iMat.Ambient = col.Value; break; case "_ReflectColor": iMat.Emissive = col.Value; break; case "_SpecColor": iMat.Specular = col.Value; break; case "_RimColor": case "_OutlineColor": case "_ShadowColor": break; } } foreach (var flt in mat.m_SavedProperties.m_Floats) { switch (flt.Key.name) { case "_Shininess": iMat.Power = flt.Value; break; case "_RimPower": case "_Outline": break; } } iMat.Textures = new string[4]; int numTex = mat.m_SavedProperties.m_TexEnvs.Count > 4 ? 4 : mat.m_SavedProperties.m_TexEnvs.Count; for (int i = 0; i < numTex; i++) { var tex = mat.m_SavedProperties.m_TexEnvs[i]; Texture2D tex2D = tex.Value.m_Texture.instance; if (tex2D != null) { iMat.Textures[i] = tex2D.m_Name + "-" + tex.Key.name + "-" + "offset(X" + tex.Value.m_Offset.X.ToFloatString() + "Y" + tex.Value.m_Offset.Y.ToFloatString() + ")-scale(X" + tex.Value.m_Scale.X.ToFloatString() + "Y" + tex.Value.m_Scale.Y.ToFloatString() + ")" + (tex2D.m_TextureFormat == TextureFormat.DXT1 || tex2D.m_TextureFormat == TextureFormat.DXT5 ? ".dds" : ".tga"); ConvertTexture2D(tex2D, iMat.Textures[i]); } } MaterialList.Add(iMat); }
private ImportedMaterial ConvertMaterial(Material mat) { ImportedMaterial iMat; if (mat != null) { iMat = ImportedHelpers.FindMaterial(mat.m_Name, MaterialList); if (iMat != null) { return(iMat); } iMat = new ImportedMaterial(); iMat.Name = mat.m_Name; foreach (var col in mat.m_SavedProperties.m_Colors) { switch (col.Key) { case "_Color": iMat.Diffuse = col.Value; break; case "_SColor": iMat.Ambient = col.Value; break; case "_EmissionColor": iMat.Emissive = col.Value; break; case "_SpecularColor": case "_SpecColor": iMat.Specular = col.Value; break; case "_ReflectColor": iMat.Reflection = col.Value; break; } } foreach (var flt in mat.m_SavedProperties.m_Floats) { switch (flt.Key) { case "_Shininess": iMat.Shininess = flt.Value; break; case "_Transparency": iMat.Transparency = flt.Value; break; } } //textures iMat.Textures = new List <ImportedMaterialTexture>(); foreach (var texEnv in mat.m_SavedProperties.m_TexEnvs) { if (!texEnv.Value.m_Texture.TryGet <Texture2D>(out var m_Texture2D)) //TODO other Texture { continue; } var texture = new ImportedMaterialTexture(); iMat.Textures.Add(texture); int dest = -1; if (texEnv.Key == "_MainTex") { dest = 0; } else if (texEnv.Key == "_BumpMap") { dest = 3; } else if (texEnv.Key.Contains("Specular")) { dest = 2; } else if (texEnv.Key.Contains("Normal")) { dest = 1; } texture.Dest = dest; if (textureNameDictionary.TryGetValue(m_Texture2D, out var textureName)) { texture.Name = textureName; } else if (ImportedHelpers.FindTexture(m_Texture2D.m_Name + ".png", TextureList) != null) //已有相同名字的图片 { for (int i = 1; ; i++) { var name = m_Texture2D.m_Name + $" ({i}).png"; if (ImportedHelpers.FindTexture(name, TextureList) == null) { texture.Name = name; textureNameDictionary.Add(m_Texture2D, name); break; } } } else { texture.Name = m_Texture2D.m_Name + ".png"; textureNameDictionary.Add(m_Texture2D, texture.Name); } texture.Offset = texEnv.Value.m_Offset; texture.Scale = texEnv.Value.m_Scale; ConvertTexture2D(m_Texture2D, texture.Name); } MaterialList.Add(iMat); } else { iMat = new ImportedMaterial(); } return(iMat); }
public Materials() { MaterialList.Add(new Tuple <string, double>("test", 1)); }
private void SetupShotModelData(ShotModelData data) { int[] indices = Array.ConvertAll(data.Indices, i => i + VertexList.Count); IndexList.AddRange(indices); PmxVertexData[] vertices = data.Vertices; foreach (var vertex in vertices) { vertex.VertexId = VertexList.Count; vertex.BoneId = Array.ConvertAll(vertex.BoneId, i => i + BoneList.Count); VertexList.Add(vertex); } PmxMaterialData[] materials = data.Materials; PmxMorphData morph = data.MaterialMorph; morph.MorphName = data.Property.Type.Name[0] + MorphList.Count.ToString(); morph.Type = 4; morph.MorphArray = ArrayUtil.Set(new PmxMorphMaterialData[materials.Length], i => new PmxMorphMaterialData()); for (int i = 0; i < materials.Length; i++) { morph.MorphArray[i].Index = MaterialList.Count + i; morph.MorphId = MorphList.Count + i; } MorphList.Add(morph); string[] textures = data.Textures; foreach (var texture in textures) { if (!TextureList.Contains(texture)) { TextureList.Add(texture); } } foreach (PmxMaterialData material in materials) { material.MaterialName = data.Property.Type.Name[0] + MaterialList.Count.ToString(); if (0 <= material.TextureId && material.TextureId < textures.Length) { material.TextureId = TextureList.IndexOf(textures[material.TextureId]); } else { material.TextureId = -1; } if (0 <= material.SphereId && material.SphereId < textures.Length) { material.SphereId = TextureList.IndexOf(textures[material.SphereId]); } else { material.SphereId = -1; } material.MaterialId = MaterialList.Count; MaterialList.Add(material); } SetupBone(data, data.Bones); ModelDataList.Add(data); }
public void FromPmx(Pmx pmx) { Clear(); FilePath = pmx.FilePath; LoadErrCount = pmx.LoadErrCount; Header = pmx.Header.Clone(); ModelInfo = pmx.ModelInfo.Clone(); int count = pmx.VertexList.Count; VertexList.Capacity = count; for (int i = 0; i < count; i++) { VertexList.Add(pmx.VertexList[i].Clone()); } count = pmx.FaceList.Count; FaceList.Capacity = count; for (int j = 0; j < count; j++) { FaceList.Add(pmx.FaceList[j]); } count = pmx.MaterialList.Count; MaterialList.Capacity = count; for (int k = 0; k < count; k++) { MaterialList.Add(pmx.MaterialList[k].Clone()); } count = pmx.BoneList.Count; BoneList.Capacity = count; for (int l = 0; l < count; l++) { BoneList.Add(pmx.BoneList[l].Clone()); } count = pmx.MorphList.Count; MorphList.Capacity = count; for (int m = 0; m < count; m++) { MorphList.Add(pmx.MorphList[m].Clone()); } count = pmx.NodeList.Count; NodeList.Clear(); NodeList.Capacity = count; for (int n = 0; n < count; n++) { NodeList.Add(pmx.NodeList[n].Clone()); if (NodeList[n].SystemNode) { if (NodeList[n].Name == "Root") { RootNode = NodeList[n]; } else if (NodeList[n].Name == "表情") { ExpNode = NodeList[n]; } } } count = pmx.BodyList.Count; BodyList.Capacity = count; for (int num = 0; num < count; num++) { BodyList.Add(pmx.BodyList[num].Clone()); } count = pmx.JointList.Count; JointList.Capacity = count; for (int num2 = 0; num2 < count; num2++) { JointList.Add(pmx.JointList[num2].Clone()); } count = pmx.SoftBodyList.Count; SoftBodyList.Capacity = count; for (int num3 = 0; num3 < count; num3++) { SoftBodyList.Add(pmx.SoftBodyList[num3].Clone()); } }
private ImportedMaterial ConvertMaterial(Material mat) { ImportedMaterial iMat; if (mat != null) { iMat = ImportedHelpers.FindMaterial(mat.m_Name, MaterialList); if (iMat != null) { return(iMat); } iMat = new ImportedMaterial(); iMat.Name = mat.m_Name; foreach (var col in mat.m_Colors) { var color = new Color4(col.second[0], col.second[1], col.second[2], col.second[3]); switch (col.first) { case "_Color": iMat.Diffuse = color; break; case "_SColor": iMat.Ambient = color; break; case "_EmissionColor": iMat.Emissive = color; break; case "_SpecColor": iMat.Specular = color; break; case "_RimColor": case "_OutlineColor": case "_ShadowColor": break; } } foreach (var flt in mat.m_Floats) { switch (flt.first) { case "_Shininess": iMat.Power = flt.second; break; case "_RimPower": case "_Outline": break; } } //textures iMat.Textures = new string[5]; iMat.TexOffsets = new Vector2[5]; iMat.TexScales = new Vector2[5]; foreach (var texEnv in mat.m_TexEnvs) { Texture2D tex2D = null; if (assetsfileList.TryGetPD(texEnv.m_Texture, out var TexturePD) && TexturePD.Type == ClassIDReference.Texture2D)//TODO other Texture { tex2D = new Texture2D(TexturePD, true); } if (tex2D == null) { continue; } int dest = texEnv.name == "_MainTex" ? 0 : texEnv.name == "_BumpMap" ? 4 : texEnv.name.Contains("Spec") ? 2 : texEnv.name.Contains("Norm") ? 3 : -1; if (dest < 0 || iMat.Textures[dest] != null) { continue; } iMat.Textures[dest] = TexturePD.Text + ".png"; iMat.TexOffsets[dest] = new Vector2(texEnv.m_Offset[0], texEnv.m_Offset[1]); iMat.TexScales[dest] = new Vector2(texEnv.m_Scale[0], texEnv.m_Scale[1]); ConvertTexture2D(tex2D, iMat.Textures[dest]); } MaterialList.Add(iMat); } else { iMat = new ImportedMaterial(); } return(iMat); }
public xxParser(Stream stream) { using (BinaryReader reader = new BinaryReader(stream)) { this.reader = reader; Format = 0; byte[] formatBuf = reader.ReadBytes(5); if ((formatBuf[0] >= 0x01) && (BitConverter.ToInt32(formatBuf, 1) == 0)) { Format = BitConverter.ToInt32(formatBuf, 0); } else { uint id = BitConverter.ToUInt32(formatBuf, 0); if ((id == 0x3F8F5C29) || (id == 0x3F90A3D7) || (id == 0x3F91EB85) || (id == 0x3F933333) || (id == 0x3F947AE1) || (id == 0x3F95C28F) || (id == 0x3F970A3D) || (id == 0x3F99999A) || (id == 0x3FA66666) || (id == 0x3FB33333)) { Format = -1; } } byte[] headerBuf; int headerBufLen; if (Format >= 1) { headerBufLen = 26; } else { headerBufLen = 21; } headerBuf = new byte[headerBufLen]; formatBuf.CopyTo(headerBuf, 0); reader.ReadBytes(headerBufLen - formatBuf.Length).CopyTo(headerBuf, formatBuf.Length); Header = headerBuf; this.Frame = ParseFrame(); this.MaterialSectionUnknown = reader.ReadBytes(4); int numMaterials = reader.ReadInt32(); this.MaterialList = new List <xxMaterial>(numMaterials); for (int i = 0; i < numMaterials; i++) { MaterialList.Add(ParseMaterial()); } int numTextures = reader.ReadInt32(); this.TextureList = new List <xxTexture>(numTextures); for (int i = 0; i < numTextures; i++) { TextureList.Add(ParseTexture()); } if (Format >= 2) { Footer = reader.ReadBytes(10); } if (reader.ReadBytes(1).Length > 0) { throw new Exception("Parsing " + Name + " finished before the end of the file"); } this.reader = null; } }