private void ProcessTextures(MaterialContent input, SkinnedModelMaterialContent skinnedModelMaterial,
            ContentProcessorContext context)
        {
            foreach (string key in input.Textures.Keys)
            {
                ExternalReference<TextureContent> texture = input.Textures[key];

                if (!String.IsNullOrEmpty(texturePath))
                {
                    string fullFilePath;

                    if (texturePathType == PathType.Relative)
                    {
                        // If relative path
                        string sourceAssetPath = Path.GetDirectoryName(input.Identity.SourceFilename);
                        fullFilePath = Path.GetFullPath(
                            Path.Combine(sourceAssetPath, texturePath));
                    }
                    else
                    {
                        fullFilePath = texturePath;
                    }

                    texture.Filename = Path.Combine(fullFilePath,
                        Path.GetFileName(texture.Filename));
                }

                ProcessTexture(key, texture, skinnedModelMaterial, context);
            }
        }
        public override MaterialContent Process(MaterialContent input, ContentProcessorContext context)
        {
            SkinnedModelMaterialContent skinnedModelMaterialContent = new SkinnedModelMaterialContent();

            // Processes all textures
            ProcessTextures(input, skinnedModelMaterialContent, context);

            // Processes surface material
            ProcessMaterial(input, skinnedModelMaterialContent, context);

            return skinnedModelMaterialContent;
        }
Ejemplo n.º 3
0
        public override MaterialContent Process(MaterialContent input, ContentProcessorContext context)
        {
            MaterialContent processedMaterial;

            if (context.TargetProfile == Microsoft.Xna.Framework.Graphics.GraphicsProfile.HiDef)
            {
                processedMaterial = new SkinnedModelMaterialContent();
            }
            else
            {
                processedMaterial = new SkinnedMaterialContent();
            }

            ProcessTextures(input, processedMaterial, context);

            // Processes surface material
            ProcessMaterial(input, processedMaterial, context);

            return processedMaterial;
        }
 protected virtual void ProcessMaterial(MaterialContent input, 
     SkinnedModelMaterialContent skinnedModelMaterial, ContentProcessorContext context)
 {
     BasicMaterialContent basicMaterial = input as BasicMaterialContent;
     if (basicMaterial != null)
     {
         skinnedModelMaterial.EmissiveColor = basicMaterial.EmissiveColor.GetValueOrDefault(
             Vector3.Zero);
         skinnedModelMaterial.DiffuseColor = basicMaterial.DiffuseColor.GetValueOrDefault(
             Vector3.One);
         skinnedModelMaterial.SpecularColor = basicMaterial.SpecularColor.GetValueOrDefault(
             Vector3.One);
         skinnedModelMaterial.SpecularPower = basicMaterial.SpecularPower.GetValueOrDefault(
             16);
     }
 }
 protected virtual void ProcessTexture(string key, ExternalReference<TextureContent> texture,
     SkinnedModelMaterialContent skinnedModelMaterial, ContentProcessorContext context)
 {
     if (key.Equals(DiffuseMapKey))
     {
         skinnedModelMaterial.DiffuseMapEnabled = true;
         skinnedModelMaterial.DiffuseMapContent = base.BuildTexture(key, texture, context);
     }
     else if (key.Equals(NormalMapKey))
     {
         skinnedModelMaterial.NormalMapEnabled = true;
         skinnedModelMaterial.NormalMapContent = base.BuildTexture(key, texture, context);
     }
     else if (key.Equals(SpecularMapKey))
     {
         skinnedModelMaterial.SpecularMapEnabled = true;
         skinnedModelMaterial.SpecularMapContent = base.BuildTexture(key, texture, context);
     }
 }