diff --git a/src/components/fog.js b/src/components/fog.js deleted file mode 100644 index 00559b7892d..00000000000 --- a/src/components/fog.js +++ /dev/null @@ -1,73 +0,0 @@ -var register = require('../core/component').registerComponent; -var THREE = require('../lib/three'); -var debug = require('../utils/debug'); - -var warn = debug('components:fog:warn'); - -/** - * Fog component. - * Applies only to the scene entity. - */ -module.exports.Component = register('fog', { - schema: { - color: {default: '#000'}, - density: {default: 0.00025}, - far: {default: 1000, min: 0}, - near: {default: 1, min: 0}, - type: {default: 'linear', oneOf: ['linear', 'exponential']} - }, - - update: function () { - var data = this.data; - var el = this.el; - var fog = this.el.object3D.fog; - - if (!el.isScene) { - warn('Fog component can only be applied to '); - return; - } - - // (Re)create fog if fog doesn't exist or fog type changed. - if (!fog || data.type !== fog.name) { - el.object3D.fog = getFog(data); - el.updateMaterials(); - return; - } - - // Fog data changed. Update fog. - Object.keys(this.schema).forEach(function (key) { - var value = data[key]; - if (key === 'color') { value = new THREE.Color(value); } - fog[key] = value; - }); - }, - - /** - * Remove fog on remove (callback). - */ - remove: function () { - var fog = this.el.object3D.fog; - if (fog) { - fog.density = 0; - fog.far = 0; - fog.near = 0; - } - } -}); - -/** - * Creates a fog object. Sets fog.name to be able to detect fog type changes. - * - * @param {object} data - Fog data. - * @returns {object} fog - */ -function getFog (data) { - var fog; - if (data.type === 'exponential') { - fog = new THREE.FogExp2(data.color, data.density); - } else { - fog = new THREE.Fog(data.color, data.near, data.far); - } - fog.name = data.type; - return fog; -} diff --git a/src/components/scene/fog.js b/src/components/scene/fog.js index 1ca461ad556..bd6ac717b7a 100644 --- a/src/components/scene/fog.js +++ b/src/components/scene/fog.js @@ -47,11 +47,9 @@ module.exports.Component = register('fog', { */ remove: function () { var fog = this.el.object3D.fog; - if (fog) { - fog.density = 0; - fog.far = 0; - fog.near = 0; - } + if (!fog) { return; } + fog.far = 0; + fog.near = 0.1; } }); diff --git a/tests/components/scene/fog.test.js b/tests/components/scene/fog.test.js index 30dc06eb51c..c9e440ec6e9 100644 --- a/tests/components/scene/fog.test.js +++ b/tests/components/scene/fog.test.js @@ -66,14 +66,15 @@ suite('fog', function () { var el = this.el; el.removeAttribute('fog'); assert.equal(el.object3D.fog.far, 0); - assert.equal(el.object3D.fog.near, 0); + assert.equal(el.object3D.fog.near, 0.1); }); test('removes exp. fog when detaching fog', function () { var el = this.el; el.setAttribute('fog', 'type: exponential'); el.removeAttribute('fog'); - assert.equal(el.object3D.fog.density, 0); + assert.equal(el.object3D.fog.far, 0); + assert.equal(el.object3D.fog.near, 0.1); }); }); });