public MaterialLibraryLoader(IMaterialLibrary materialLibrary)
            {
                _materialLibrary = materialLibrary;

                AddParseAction("newmtl", PushMaterial);
                AddParseAction("Ka", (d) => CurrentMaterial.AmbientColor        = ParseVec3(d));
                AddParseAction("Kd", (d) => CurrentMaterial.DiffuseColor        = ParseVec3(d));
                AddParseAction("Ks", (d) => CurrentMaterial.SpecularColor       = ParseVec3(d));
                AddParseAction("Ns", (d) => CurrentMaterial.SpecularCoefficient = d.ParseInvariantFloat());

                AddParseAction("d", (d) => CurrentMaterial.Transparency  = d.ParseInvariantFloat());
                AddParseAction("Tr", (d) => CurrentMaterial.Transparency = d.ParseInvariantFloat());

                AddParseAction("illum", (i) => CurrentMaterial.IlluminationModel = i.ParseInvariantInt());

                AddParseAction("map_Ka", (m) => CurrentMaterial.AmbientTextureMap = m);
                AddParseAction("map_Kd", (m) => CurrentMaterial.DiffuseTextureMap = m);

                AddParseAction("map_Ks", (m) => CurrentMaterial.SpecularTextureMap          = m);
                AddParseAction("map_Ns", (m) => CurrentMaterial.SpecularHighlightTextureMap = m);

                AddParseAction("map_d", (m) => CurrentMaterial.AlphaTextureMap = m);

                AddParseAction("map_bump", (m) => CurrentMaterial.BumpMap = m);
                AddParseAction("bump", (m) => CurrentMaterial.BumpMap     = m);

                AddParseAction("disp", (m) => CurrentMaterial.DisplacementMap = m);

                AddParseAction("decal", (m) => CurrentMaterial.StencilDecalMap = m);
            }
        public MaterialLibraryLoader(IMaterialLibrary materialLibrary)
        {
            _materialLibrary = materialLibrary;

            AddParseAction("newmtl", PushMaterial);
            AddParseAction("Ka", d => CurrentMaterial.Ambient  = ParseCol(d));
            AddParseAction("Kd", d => CurrentMaterial.Diffuse  = ParseCol(d));
            AddParseAction("Ks", d => CurrentMaterial.Specular = ParseCol(d));
            AddParseAction("Ns", d => CurrentMaterial.Shine    = d.ParseInvariantFloat());

            AddParseAction("d", d => CurrentMaterial.Diffuse   *= d.ParseInvariantFloat());
            AddParseAction("Tr", d => CurrentMaterial.Diffuse.a = d.ParseInvariantFloat());

            //           AddParseAction("illum", i => CurrentMaterial.IlluminationModel = i.ParseInvariantInt());

            //           AddParseAction("map_Ka", m => CurrentMaterial.AmbientTextureMap = m);
            AddParseAction("map_Kd", m => DiffuseMap.Texture = new Vixen.Texture(m));

            AddParseAction("map_Ks", m => SpecularMap.Texture = new Vixen.Texture(m));
//            AddParseAction("map_Ns", m => CurrentMaterial.SpecularHighlightTextureMap = m);

//            AddParseAction("map_d", m => CurrentMaterial.AlphaTextureMap = m);

//            AddParseAction("map_bump", m => CurrentMaterial.BumpMap = m);
//            AddParseAction("bump", m => CurrentMaterial.BumpMap = m);

//            AddParseAction("disp", m => CurrentMaterial.DisplacementMap = m);

//            AddParseAction("decal", m => CurrentMaterial.StencilDecalMap = m);
        }
        public MaterialLibraryLoader(IMaterialLibrary materialLibrary)
        {
            _materialLibrary = materialLibrary;

            AddParseAction("newmtl", PushMaterial);
            AddParseAction("Ka", d => CurrentMaterial.AmbientColor = ParseColour(d));
            AddParseAction("Kd", d => CurrentMaterial.DiffuseColor = ParseColour(d));
            AddParseAction("Ks", d => CurrentMaterial.SpecularColor = ParseColour(d));
            AddParseAction("Ns", d => CurrentMaterial.SpecularCoefficient = d.ParseInvariantFloat());

            AddParseAction("d", d => CurrentMaterial.Transparency = d.ParseInvariantFloat());
            AddParseAction("Tr", d => CurrentMaterial.Transparency = d.ParseInvariantFloat());

            AddParseAction("illum", i => CurrentMaterial.IlluminationModel = i.ParseInvariantInt());

            AddParseAction("map_Ka", m => CurrentMaterial.AmbientTextureMap = m);
            AddParseAction("map_Kd", m => CurrentMaterial.DiffuseTextureMap = m);

            AddParseAction("map_Ks", m => CurrentMaterial.SpecularTextureMap = m);
            AddParseAction("map_Ns", m => CurrentMaterial.SpecularHighlightTextureMap = m);

            AddParseAction("map_d", m => CurrentMaterial.AlphaTextureMap = m);

            AddParseAction("map_bump", m => CurrentMaterial.BumpMap = m);
            AddParseAction("bump", m => CurrentMaterial.BumpMap = m);

            AddParseAction("disp", m => CurrentMaterial.DisplacementMap = m);

            AddParseAction("decal", m => CurrentMaterial.StencilDecalMap = m);
        }
        public MaterialLibraryAdapter(IMaterialLibrary materialLibrary)
        {
            Guard.WhenArgument(materialLibrary, "materialLibrary").IsNull().Throw();

            this.materialLibrary = materialLibrary;
        }