internal void AddTechnique(string effectId, MaterialTechnique_14 technique)
        {
            s_Log.Info("AddTechnique: " + effectId);

            if (!m_Techniques.ContainsKey(effectId))
            {
                m_Techniques[effectId] = new List <MaterialTechnique_14>();
            }

            m_Techniques[effectId].Add(technique);
        }
        internal void AddTechnique( string effectId, MaterialTechnique_14 technique )
        {
            s_Log.Info( "AddTechnique: " + effectId );

            if( !m_Techniques.ContainsKey( effectId ) )
            {
                m_Techniques[ effectId ] = new List<MaterialTechnique_14>();
            }

            m_Techniques[ effectId ].Add( technique );
        }
 public void ReadAmbient( MaterialTechnique_14 technique, XmlNode node, ColladaMeshInfo meshInfo )
 {
     foreach( XmlNode childNode in node.ChildNodes )
     {
         switch( childNode.Name )
         {
         case "color":
             technique.Ambient = ReadColor( node );
             break;
         case "texture":
             log.Warn( "Ambient texture is unsupported" );
             technique.AmbientTexture = ReadTexture( childNode );
             break;
         default:
             DebugMessage( node );
             break;
         }
     }
 }
 public void ReadPhong( MaterialTechnique_14 technique, XmlNode node, ColladaMeshInfo meshInfo )
 {
     foreach( XmlNode childNode in node.ChildNodes )
     {
         switch( childNode.Name )
         {
         case "diffuse":
             ReadDiffuse( technique, childNode, meshInfo );
             break;
         case "emission":
             ReadEmission( technique, childNode, meshInfo );
             break;
         case "ambient":
             ReadAmbient( technique, childNode, meshInfo );
             break;
         case "specular":
             ReadSpecular( technique, childNode, meshInfo );
             break;
         case "shininess":
         case "reflective":
         case "reflectivity":
         case "transparent":
         case "transparency":
         case "index_of_refraction":
         // ignored
         default:
             DebugMessage( childNode );
             break;
         }
     }
 }
 public void ReadDiffuse( MaterialTechnique_14 technique, XmlNode node, ColladaMeshInfo meshInfo )
 {
     foreach( XmlNode childNode in node.ChildNodes )
     {
         switch( childNode.Name )
         {
         case "color":
             technique.Diffuse = ReadColor( node );
             break;
         case "texture":
             technique.DiffuseTexture = ReadTexture( childNode );
             break;
         default:
             DebugMessage( node );
             break;
         }
     }
 }
 public void ReadConstant( MaterialTechnique_14 technique, XmlNode node, ColladaMeshInfo meshInfo )
 {
     // should really be lit based solely on emissive,
     // with ambient, diffuse and specular set to 0
     foreach( XmlNode childNode in node.ChildNodes )
     {
         switch( childNode.Name )
         {
         case "emission":
             technique.Emissive = ReadColorProperty( childNode );
             break;
         case "reflective":
         case "reflectivity":
         case "transparent":
         case "transparency":
         case "index_of_refraction":
         // ignored
         default:
             DebugMessage( childNode );
             break;
         }
     }
 }
        public void ReadTechniqueCommon( string effectId, string effectName, XmlNode node, ColladaMeshInfo meshInfo )
        {
            string techniqueId = string.Empty;
            if( node.Attributes[ "id" ] != null )
                techniqueId = node.Attributes[ "id" ].Value;
            MaterialTechnique_14 technique = new MaterialTechnique_14( techniqueId );
            foreach( XmlNode childNode in node.ChildNodes )
            {
                switch( childNode.Name )
                {
                case "constant":
                    ReadConstant( technique, childNode, meshInfo );
                    break;
                case "lambert":
                case "phong":
                case "blinn":
                    // looks like the modeling tools output phong to collada even if the
                    // shader is specified as blinn in the tool
                    // Note: phong uses the reflection vector instead of the half angle vector
                    ReadPhong( technique, childNode, meshInfo );
                    break;
                case "asset":
                case "image":
                case "extra":
                default:
                    DebugMessage( childNode );
                    break;
                }
            }

            MaterialBuilder.AddTechnique( effectId, technique );
        }