adapters/webgl/star.js
var THREE = require('three');
module.exports = function Star (scene, x, y, z, tex1, tex2, tex3) {
var pos = new THREE.Vector3(x, y, z);
addLight(pos);
addFlare(0.55, 0.9, 0.5, pos);
function addLight (pos) {
var point = new THREE.PointLight(0xffffff, 1, 0);
point.position = pos;
scene.add(point);
}
function addFlare (h, s, l, pos) {
var flareColor = new THREE.Color(0xffffff);
flareColor.setHSL(h, s, l + 0.5);
var lensFlare = new THREE.LensFlare(tex1, 700, 0.0, THREE.AdditiveBlending, flareColor);
lensFlare.add(tex2, 512, 0.0, THREE.AdditiveBlending);
lensFlare.add(tex2, 512, 0.0, THREE.AdditiveBlending);
lensFlare.add(tex2, 512, 0.0, THREE.AdditiveBlending);
lensFlare.add(tex3, 60, 0.6, THREE.AdditiveBlending);
lensFlare.add(tex3, 70, 0.7, THREE.AdditiveBlending);
lensFlare.add(tex3, 120, 0.9, THREE.AdditiveBlending);
lensFlare.add(tex3, 70, 1.0, THREE.AdditiveBlending);
lensFlare.customUpdateCallback = update;
lensFlare.position = pos;
scene.add(lensFlare);
}
function update (object) {
var f, fl = object.lensFlares.length;
var flare;
var vecX = -object.positionScreen.x * 2;
var vecY = -object.positionScreen.y * 2;
for(f = 0; f < fl; f++) {
flare = object.lensFlares[f];
flare.x = object.positionScreen.x + vecX * flare.distance;
flare.y = object.positionScreen.y + vecY * flare.distance;
flare.rotation = 0;
}
object.lensFlares[2].y += 0.025;
object.lensFlares[3].rotation = object.positionScreen.x * 0.5 + THREE.Math.degToRad(45);
}
};