UNPKG

glam

Version:

Experimental WebGL Engine

62 lines (42 loc) 1.71 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = createFog; 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); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function Fog(material, fogConfig) { this.flags = (0, _objectAssign2.default)({}, material.flags, { recompile: true }); this.fragSource = material.fragSource; this.vertSource = material.vertSource; this.defines = material.defines.concat("FOG"); this.shader = null; this.mode = material.mode; this.setUniforms = material.setUniforms.concat(_setUniforms2.default); this.setAttributes = material.setAttributes.slice(); this.shading = (0, _objectAssign2.default)({ fog: fogConfig }, material.shading); this.use = _useAugment2.default.bind(null, this); } function createFog(material, properties) { var fogConfig = (0, _objectAssign2.default)({ near: 10, far: 100, color: [0.4, 0.4, 0.5] }, properties); if (typeof material === 'function') { return function createMaterialWithFog() { //TODO - Create a function to do this thing var arity = material.length; var originalMaterialArgs = Array.prototype.slice.call(arguments, 0, arity); var newFogConfig = (0, _objectAssign2.default)({}, fogConfig, arguments[arity]); return new Fog(material.apply(this, originalMaterialArgs), newFogConfig); }; } else { return new Fog(material, fogConfig); } }