Exemplo n.º 1
0
 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));
     }
 }
Exemplo n.º 2
0
        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));
                }
            }
        }
Exemplo n.º 3
0
 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();
     }
 }
Exemplo n.º 4
0
 public void SetMaterialMapAt(int index, MaterialMap map)
 {
     m_texMaps[index] = map;
     HandlePropertyChange("MaterialMaps");
 }
Exemplo n.º 5
0
 public void AddMaterialMap(MaterialMap map)
 {
     m_texMaps.Add(map);
     m_texMaps.Sort(materialMapComparer);
     HandlePropertyChange("MaterialMaps");
 }