glam
Version:
Experimental WebGL Engine
69 lines (46 loc) • 1.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = createLambert;
var _objectAssign = require('object-assign');
var _objectAssign2 = _interopRequireDefault(_objectAssign);
var _setUniforms = require('./set-uniforms');
var _setUniforms2 = _interopRequireDefault(_setUniforms);
var _useAugment = require('../use-augment');
var _useAugment2 = _interopRequireDefault(_useAugment);
var _setUniforms3 = require('../../light/directional/set-uniforms');
var _setUniforms4 = _interopRequireDefault(_setUniforms3);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function Lambert(material, config) {
this.flags = (0, _objectAssign2.default)({}, material.flags, {
recompile: true,
useLights: true
});
this.fragSource = material.fragSource;
this.vertSource = material.vertSource;
this.defines = material.defines.concat("LAMBERT");
this.shader = null;
this.mode = material.mode;
this.setUniforms = material.setUniforms.concat([_setUniforms2.default, _setUniforms4.default]);
this.setAttributes = material.setAttributes.slice();
this.shading = material.shading;
this.use = _useAugment2.default.bind(null, this);
this.shading = (0, _objectAssign2.default)({ lambert: config }, material.shading);
}
function createLambert(material, properties) {
var config = (0, _objectAssign2.default)({
diffuse: [1, 1, 1]
}, properties);
if (typeof material === 'function') {
return function createMaterialWithLambert() {
//TODO - Create a function to do this thing
var arity = material.length;
var originalMaterialArgs = Array.prototype.slice.call(arguments, 0, arity);
var newConfig = (0, _objectAssign2.default)({}, config, arguments[arity]);
return new Lambert(material.apply(this, originalMaterialArgs), newConfig);
};
} else {
return new Lambert(material, config);
}
}