whs-component-glowline
Version:
Simple plugin to make glow lines
109 lines (76 loc) • 3.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = undefined;
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _get2 = require('babel-runtime/helpers/get');
var _get3 = _interopRequireDefault(_get2);
var _class, _class2, _temp;
var _three = require('three');
var THREE = _interopRequireWildcard(_three);
var _whs = require('whs');
var _glowShader = require('./glowShader');
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var GlowLine = (0, _whs.MeshComponent)(_class = (_temp = _class2 = function (_Component) {
(0, _inherits3.default)(GlowLine, _Component);
function GlowLine() {
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
(0, _classCallCheck3.default)(this, GlowLine);
var _this = (0, _possibleConstructorReturn3.default)(this, (GlowLine.__proto__ || Object.getPrototypeOf(GlowLine)).call(this, params, GlowLine.defaults, GlowLine.instructions));
_this.build(_this.params);
(0, _get3.default)(GlowLine.prototype.__proto__ || Object.getPrototypeOf(GlowLine.prototype), 'wrap', _this).call(_this);
return _this;
}
(0, _createClass3.default)(GlowLine, [{
key: 'build',
value: function build() {
var _this2 = this;
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var geometry = new THREE.TubeGeometry(params.geometry.curve, params.geometry.curveDetail, params.geometry.radius, params.geometry.arcDetail, false);
var glowGeometry = new THREE.TubeGeometry(params.geometry.curve, params.geometry.curveDetail, params.geometry.radius + params.geometry.delta, params.geometry.arcDetail, false);
var tube = new THREE.Mesh(geometry, new THREE.MeshBasicMaterial({ color: params.material.color }));
var glowTube = new THREE.Mesh(glowGeometry, new THREE.ShaderMaterial((0, _glowShader.glowShader)(params)));
tube.add(glowTube);
return new Promise(function (resolve) {
_this2.native = tube;
_this2.glowNative = glowTube;
resolve();
});
}
}, {
key: 'clone',
value: function clone() {
return new GlowLine(this.params).copy(this);
}
}]);
return GlowLine;
}(_whs.Component), _class2.defaults = {
geometry: {
curve: new THREE.LineCurve(new THREE.Vector3(0, 0, 0), new THREE.Vector3(0, 10, 0)),
curveDetail: 20,
arcDetail: 32,
radius: 1,
delta: 2
},
glow: {
normalIntensity: 70,
cameraIntensity: 0,
margin: 0,
pow: 2,
color: 0xff0000
},
material: {
color: 0xff0000
}
}, _temp)) || _class;
exports.default = GlowLine;
module.exports = exports['default'];