public Material(Material copy) { m_ambientColor = new Vec4(copy.Ambient); m_diffuseColor = new Vec4(copy.Diffuse); m_specularColor = new Vec4(copy.m_specularColor); m_shininess = copy.m_shininess; Transparency = copy.Transparency; foreach (MaterialMap map in copy.m_texMaps) { AddMaterialMap(MaterialMap.Clone(map)); } if (copy.m_opacityMap != null) { m_opacityMap = MaterialMap.Clone(copy.m_opacityMap); } m_twoSided = copy.m_twoSided; m_name = copy.m_name; m_scale = copy.m_scale; remapUV = copy.remapUV; hasTexTransform = copy.hasTexTransform; foreach (Shader s in copy.shaders) { shaders.Add(new Shader(s)); } }
public Material(System.IO.BinaryReader br) { m_ambientColor = new Vec4(br); m_diffuseColor = new Vec4(br); m_name = br.ReadString(); bool isOpacityMapNull = br.ReadBoolean(); if (isOpacityMapNull) { this.m_opacityMap = null; } else { this.m_opacityMap = MaterialMap.Load(br); } this.m_shininess = (float)br.ReadDouble(); this.m_specularColor = new Vec4(br); int count = br.ReadInt32(); if (count > 0) { for (int i = 0; i < count; ++i) { AddMaterialMap(MaterialMap.Load(br)); } } this.Transparency = (float)br.ReadDouble(); this.m_twoSided = br.ReadBoolean(); this.m_scale = (float)br.ReadDouble(); if (this.m_scale != 1) { this.hasTexTransform = true; } if (br.ReadBoolean()) { remapUV = new Vec2[2]; remapUV[0] = Vec2.Load(br); remapUV[1] = Vec2.Load(br); } else { remapUV = null; } if (br.PeekChar() == '~') { br.ReadChar(); count = br.ReadInt32(); for (int i = 0; i < count; ++i) { AddShader(Shader.Load(br)); } } }
internal static MaterialMap Clone(MaterialMap map) { if (map is FileMaterialMap) { return(new FileMaterialMap((FileMaterialMap)map)); } else if (map is ArrayMaterialMap) { return(new ArrayMaterialMap((ArrayMaterialMap)map)); } else if (map is DynamicMaterialMap) { return(new DynamicMaterialMap((DynamicMaterialMap)map)); } else { throw new NotImplementedException(); } }
public void SetMaterialMapAt(int index, MaterialMap map) { m_texMaps[index] = map; HandlePropertyChange("MaterialMaps"); }
public void AddMaterialMap(MaterialMap map) { m_texMaps.Add(map); m_texMaps.Sort(materialMapComparer); HandlePropertyChange("MaterialMaps"); }