/* <copyright> This file contains proprietary software owned by Motorola Mobility, Inc.<br/> No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. </copyright> */ /////////////////////////////////////////////////////////////////////// // Class MaterialsLibrary // Contains an array of GLMaterials. /////////////////////////////////////////////////////////////////////// var MaterialsLibrary = Object.create(Object.prototype, { _materials : { value: [], writable: true, enumerable: true, configurable: true }, materials : { get: function() { return this._materials; } }, addMaterial: { value: function (material) { this._materials.push(material); } }, addMaterialAt: { value: function (material, index) { this._materials.splice(index, 0, material); } }, removeMaterialAt: { value: function (index) { return this._materials.splice(index, 1); } }, removeMaterial: { value: function (materialName) { var index = this.getIndexOfMaterial(materialName); if(index !== -1) { return this.removeMaterialAt(index); } } }, getMaterialAt: { value: function (index) { return this._materials[index]; } }, getMaterial: { value: function (materialName) { var index = this.getIndexOfMaterial(materialName); if(index !== -1) { return this._materials[index]; } } }, getIndexOfMaterial: { value: function (materialName) { var len = this._materials.length; for(var i=0; i<len; i++) { var material = this._materials[i]; if(material.getName() === materialName) { return i; } } return -1; } }, clearAllMaterials: { value: function() { this._materials = []; } }, export: { value: function() { var exportStr = "MaterialLibrary: \n" var nMats = this._materials.length; for (var i=0; i<nMats; i++) { var material = this._materials[i]; exportStr += material.export(); } exportStr += "endMatLib\n"; return exportStr; } }, import: { value: function( importStr ) { // we replace allmaterials, so remove anything // that is currently there. this.clearAllMaterials(); var pu = new ParseUtils( importStr ); var type = pu.nextValue( "material: ", "\n", false ); while (type) { var mat = null; switch (type) { case "flat": mat = new FlatMaterial(); break; case "brick": mat = new BrickMaterial(); break; case "iridescentScales": mat = new IridescentScalesMaterial(); break; case "quilt_1": mat = new QuiltMaterial01(); break; case "quilt_2": mat = new QuiltMaterial02(); break; case "linearGradient": mat = new LinearGradientMaterial(); break; case "radialGradient": mat = new RadialGradientMaterial(); break; case "radialBlur": mat = new RadiaBlurMaterial(); break; case "pulse": mat = new PulseMaterial(); break; case "tunnel": mat = new TunnelMaterial(); break; case "twist": mat = new TwistMaterial(); break; case "keleidoscope": mat = new KeleidoscopeMaterial(); break; case "julia": mat = new JuliaMaterial(); break; case "mandel": mat = new MandelMaterial(); break; case "plasma": mat = new PlasmaMaterial(); break; case "bumpMetal": mat = new PlasmaMaterial(); break; case "uber": mat = new UberMaterial(); break; default: throw new Error( "Unrecognized material type: " + type ); pu.advancePastToken( "endMaterial\n" ); break; } if (mat) { importStr = mat.import( importStr ); pu.setBuffer( importStr ); this.addMaterial( mat ); } type = pu.nextValue( "material: ", "\n", false ); } return pu.getBuffer(); } } }); // create the library of stroke and fill materials var uberMaterial = new UberMaterial(); //var linearGradientMaterial = new LinearGradientMaterial(); //var radialGradientMaterial = new RadialGradientMaterial(); //var radialBlurMaterial = new RadialBlurMaterial(); //var pulseMaterial = new PulseMaterial(); //var tunnelMaterial = new TunnelMaterial(); //var twistMaterial = new TwistMaterial(); //var keleidoscopeMaterial = new KeleidoscopeMaterial(); //var juliaMaterial = new JuliaMaterial(); //var mandelMaterial = new MandelMaterial(); //var plasmaMaterial = new PlasmaMaterial(); var bumpMetalMaterial = new BumpMetalMaterial(); //MaterialsLibrary.addMaterial(linearGradientMaterial); //MaterialsLibrary.addMaterial(radialGradientMaterial); //MaterialsLibrary.addMaterial(radialBlurMaterial); //MaterialsLibrary.addMaterial(pulseMaterial); //MaterialsLibrary.addMaterial(tunnelMaterial); //MaterialsLibrary.addMaterial(twistMaterial); //MaterialsLibrary.addMaterial(keleidoscopeMaterial); //MaterialsLibrary.addMaterial(juliaMaterial); //MaterialsLibrary.addMaterial(mandelMaterial); //MaterialsLibrary.addMaterial(plasmaMaterial); MaterialsLibrary.addMaterial(bumpMetalMaterial); MaterialsLibrary.addMaterial(uberMaterial);