UNPKG

glam

Version:

Experimental WebGL Engine

69 lines (46 loc) 1.9 kB
'use strict'; 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); } }