Beispiel #1
0
        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);
        }
Beispiel #2
0
		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;
		}