Material[] ReadMaterials(BinaryReader reader, Dictionary <string, Texture> textures) { var matCount = reader.ReadInt32(); var mats = new MeshMaterial[matCount]; for (var i = 0; i < matCount; i++) { var name = reader.ReadString(); var mat = new MeshMaterial(null, name); mat.IsTwoSided = reader.ReadBoolean(); mat.IsWireframeEnabled = reader.ReadBoolean(); var shadingMode = (ShadingMode)reader.ReadInt32(); mat.BlendMode = (BlendMode)reader.ReadInt32(); mat.Opacity = reader.ReadSingle(); mat.Shininess = reader.ReadSingle(); mat.ShininessStrength = reader.ReadSingle(); mat.ColorAmbient = reader.ReadVector4(); mat.ColorDiffuse = reader.ReadVector4(); mat.ColorSpecular = reader.ReadVector4(); mat.ColorEmissive = reader.ReadVector4(); mat.ColorTransparent = reader.ReadVector4(); var boneCount = reader.ReadInt32(); var boneSlotCount = reader.ReadInt32(); mat.DiffuseMap = this.ReadTextureStack(reader, textures); mat.NormalMap = this.ReadTextureStack(reader, textures); mat.SpecularMap = this.ReadTextureStack(reader, textures); mat.EmissiveMap = this.ReadTextureStack(reader, textures); var settings = new MeshShaderSettings { MaxLights = 4, BoneCount = boneCount, BoneSlotCount = boneSlotCount, ShadingMode = shadingMode, Diffuse = GetMeshTextureStack(mat.DiffuseMap), Normal = GetMeshTextureStack(mat.NormalMap), Specular = GetMeshTextureStack(mat.SpecularMap), Emissive = GetMeshTextureStack(mat.EmissiveMap) }; mat.Shader = new MeshShader(settings); mats[i] = mat; } return(mats); }
Material[] ReadMaterials (BinaryReader reader, Dictionary<string, Texture> textures) { var matCount = reader.ReadInt32(); var mats = new MeshMaterial[matCount]; for (var i = 0; i < matCount; i++) { var name = reader.ReadString(); var mat = new MeshMaterial(null, name); mat.IsTwoSided = reader.ReadBoolean(); mat.IsWireframeEnabled = reader.ReadBoolean(); var shadingMode = (ShadingMode)reader.ReadInt32(); mat.BlendMode = (BlendMode)reader.ReadInt32(); mat.Opacity = reader.ReadSingle(); mat.Shininess = reader.ReadSingle(); mat.ShininessStrength = reader.ReadSingle(); mat.ColorAmbient = reader.ReadVector4(); mat.ColorDiffuse = reader.ReadVector4(); mat.ColorSpecular = reader.ReadVector4(); mat.ColorEmissive = reader.ReadVector4(); mat.ColorTransparent = reader.ReadVector4(); var boneCount = reader.ReadInt32(); var boneSlotCount = reader.ReadInt32(); mat.DiffuseMap = this.ReadTextureStack(reader, textures); mat.NormalMap = this.ReadTextureStack(reader, textures); mat.SpecularMap = this.ReadTextureStack(reader, textures); mat.EmissiveMap = this.ReadTextureStack(reader, textures); var settings = new MeshShaderSettings { MaxLights = 4, BoneCount = boneCount, BoneSlotCount = boneSlotCount, ShadingMode = shadingMode, Diffuse = GetMeshTextureStack(mat.DiffuseMap), Normal = GetMeshTextureStack(mat.NormalMap), Specular = GetMeshTextureStack(mat.SpecularMap), Emissive = GetMeshTextureStack(mat.EmissiveMap) }; mat.Shader = new MeshShader(settings); mats[i] = mat; } return mats; }