glam
Version:
Experimental WebGL Engine
62 lines (42 loc) • 1.71 kB
JavaScript
;
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);
}
}