Пример #1
0
        public void SetMaterialPhong(int origin, int idx, object[] diffuse, object[] ambient, object[] emissive, object[] specular, double shininess, double unknown)
        {
            odfMaterial mat = Parser.MaterialSection[idx];

            float[] diff = Utility.ConvertToFloatArray(diffuse);
            float[] amb  = Utility.ConvertToFloatArray(ambient);
            float[] emi  = Utility.ConvertToFloatArray(emissive);
            float[] spec = Utility.ConvertToFloatArray(specular);
            if (origin == 0)
            {
                mat.Diffuse       = new Color4(diff[3], diff[0], diff[1], diff[2]);
                mat.Ambient       = new Color4(amb[3], amb[0], amb[1], amb[2]);
                mat.Emissive      = new Color4(emi[3], emi[0], emi[1], emi[2]);
                mat.Specular      = new Color4(spec[3], spec[0], spec[1], spec[2]);
                mat.SpecularPower = (float)shininess;
                mat.Unknown1      = (float)unknown;
            }
            else
            {
                odfMaterialList        matList = odf.FindMaterialList(mat.Id, Parser.MataSection);
                odfMaterialPropertySet matProp = matList[origin - 1];
                matProp.Unknown1      = (float)unknown;
                matProp.Diffuse       = new Color4(diff[3], diff[0], diff[1], diff[2]);
                matProp.Ambient       = new Color4(amb[3], amb[0], amb[1], amb[2]);
                matProp.Emissive      = new Color4(emi[3], emi[0], emi[1], emi[2]);
                matProp.Specular      = new Color4(spec[3], spec[0], spec[1], spec[2]);
                matProp.SpecularPower = (float)shininess;
            }
        }
Пример #2
0
        public odfMaterialPropertySet Clone()
        {
            odfMaterialPropertySet prop = new odfMaterialPropertySet();

            prop.Unknown1      = Unknown1;
            prop.Diffuse       = new Color4(Diffuse.ToVector4());
            prop.Ambient       = new Color4(Ambient.ToVector4());
            prop.Specular      = new Color4(Specular.ToVector4());
            prop.Emissive      = new Color4(Emissive.ToVector4());
            prop.SpecularPower = SpecularPower;
            return(prop);
        }
Пример #3
0
        private bool loadMaterialPropertySets(BinaryReader reader, int numSets, odfMaterialList matSec)
        {
            for (int setIdx = 0; setIdx < numSets; setIdx++)
            {
                odfMaterialPropertySet matPSet = new odfMaterialPropertySet();
                matPSet.Unknown1      = reader.ReadSingle();
                matPSet.Diffuse       = reader.ReadColor4();
                matPSet.Ambient       = reader.ReadColor4();
                matPSet.Specular      = reader.ReadColor4();
                matPSet.Emissive      = reader.ReadColor4();
                matPSet.SpecularPower = reader.ReadSingle();

                matSec.AddChild(matPSet);
            }

            return(true);
        }