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; } }
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); }
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); }