Вход Регистрация
Файл: Space race/bkcore/hexgl/ShipEffects.js
Строк: 124
<?php
/*
 * HexGL
 * @author Thibaut 'BKcore' Despoulain <http://bkcore.com>
 * @license This work is licensed under the Creative Commons Attribution-NonCommercial 3.0 Unported License.
 *          To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/3.0/.
 */

var bkcore bkcore || {};
bkcore.hexgl bkcore.hexgl || {};

bkcore.hexgl.ShipEffects = function(opts)
{
    
this.scene opts.scene;
    
this.shipControls opts.shipControls;

    
this.booster opts.booster;
    
this.boosterLight opts.boosterLight;
    
this.boosterSprite opts.boosterSprite;

    
this.useParticles opts.useParticles;

    if(
this.useParticles)
    {
        
this.pVel = new THREE.Vector3(0.5,0,0);
        
this.pOffset = new THREE.Vector3(-3,-0.3,0);
        
this.pRad = new THREE.Vector3(0,0,1.5);

        
this.shipVelocity = new THREE.Vector3();

        
this.pVelS this.pVel.length();
        
this.pOffsetS this.pOffset.length();
        
this.pRadS this.pRad.length();

        
this.pVel.normalize();
        
this.pOffset.normalize();
        
this.pRad.normalize();

        
this.particles = {

            
leftSparks: new bkcore.threejs.Particles(
            {
                
randomness: new THREE.Vector3(0.4,0.4,0.4),
                
tint0xffffff,
                
color0xffc000,
                
color20xffffff,
                
textureopts.textureSpark,
                
size2,
                
life60,
                
max200
            
}),

            
leftClouds: new bkcore.threejs.Particles(
            {
                
opacity0.8,
                
tint0xffffff,
                
color0x666666,
                
color20xa4f1ff,
                
textureopts.textureCloud,
                
size6,
                
blendingTHREE.NormalBlending,
                
life60,
                
max200,
                
spawn: new THREE.Vector3(3,-0.3,0),
                
spawnRadius: new THREE.Vector3(1,1,2),
                
velocity: new THREE.Vector3(0,0,-0.4),
                
randomness: new THREE.Vector3(0.05,0.05,0.1)
            }),

            
rightSparks: new bkcore.threejs.Particles(
            {
                
randomness: new THREE.Vector3(0.4,0.4,0.4),
                
tint0xffffff,
                
color0xffc000,
                
color20xffffff,
                
textureopts.textureSpark,
                
size2,
                
life60,
                
max200
            
}),

            
rightClouds: new bkcore.threejs.Particles(
            {
                
opacity0.8,
                
tint0xffffff,
                
color0x666666,
                
color20xa4f1ff,
                
textureopts.textureCloud,
                
size6,
                
blendingTHREE.NormalBlending,
                
life60,
                
max200,
                
spawn: new THREE.Vector3(-3,-0.3,0),
                
spawnRadius: new THREE.Vector3(1,1,2),
                
velocity: new THREE.Vector3(0,0,-0.4),
                
randomness: new THREE.Vector3(0.05,0.05,0.1)
            })
        };

        
this.shipControls.mesh.add(this.particles.leftClouds.system);
        
this.shipControls.mesh.add(this.particles.rightClouds.system);
        
this.scene.add(this.particles.leftSparks.system);
        
this.scene.add(this.particles.rightSparks.system);
    }
}

bkcore.hexgl.ShipEffects.prototype.update = function(dt)
{
    var 
boostRatioopacityscaleintensityrandom;

    if(
this.shipControls.destroyed)
    {
        
opacity 0;
        
scale 0;
        
intensity 0;
        
random 0;
    }
    else
    {
        
boostRatio this.shipControls.getBoostRatio();
        
opacity this.shipControls.key.forward 0.8 0.3 boostRatio 0.4;
        
scale = (this.shipControls.key.forward 1.0 0.8) + boostRatio 0.5;
        
intensity this.shipControls.key.forward 4.0 2.0;
        
random Math.random()*0.2;
    }

    if(
this.booster)
    {
        
this.booster.rotation.+= 1;
        
this.booster.scale.set(scalescalescale);
        
this.booster.material.opacity random+opacity;
        
this.boosterSprite.opacity random+opacity;
        
this.boosterLight.intensity intensity*(random+0.8);
    }

    
// PARTICLES
    
if(this.useParticles)
    {
        
this.shipVelocity.copy(this.shipControls.currentVelocity).multiplyScalar(0.7);

        
this.particles.rightSparks.velocity.copy(this.pVel);
        
this.particles.rightSparks.spawnRadius.copy(this.pRad);
        
this.particles.rightSparks.spawn.copy(this.pOffset);

        
this.particles.leftSparks.velocity.copy(this.pVel).*= -1;
        
this.particles.leftSparks.spawn.copy(this.pOffset).*= -1;

        if(
this.shipControls.mesh)
        {
            
// RIGHT
            
this.shipControls.mesh.matrix.rotateAxis(this.particles.rightSparks.spawn);
            
this.particles.rightSparks.spawn.multiplyScalar(this.pOffsetS).addSelf(this.shipControls.dummy.position);

            
this.shipControls.mesh.matrix.rotateAxis(this.particles.rightSparks.velocity);
            
this.particles.rightSparks.velocity.multiplyScalar(this.pVelS).addSelf(this.shipVelocity);

            
this.shipControls.mesh.matrix.rotateAxis(this.particles.rightSparks.spawnRadius);
            
this.particles.rightSparks.spawnRadius.multiplyScalar(this.pRadS);

            
// LEFT
            
this.shipControls.mesh.matrix.rotateAxis(this.particles.leftSparks.spawn);
            
this.particles.leftSparks.spawn.multiplyScalar(this.pOffsetS).addSelf(this.shipControls.dummy.position);

            
this.shipControls.mesh.matrix.rotateAxis(this.particles.leftSparks.velocity);
            
this.particles.leftSparks.velocity.multiplyScalar(this.pVelS).addSelf(this.shipVelocity);

            
this.particles.leftSparks.spawnRadius.copy(this.particles.rightSparks.spawnRadius);
        }

        if(
this.shipControls.collision.right)
        {
            
this.particles.rightSparks.emit(10);
            
this.particles.rightClouds.emit(5);
        }

        if(
this.shipControls.collision.left)
        {
            
this.particles.leftSparks.emit(10);
            
this.particles.leftClouds.emit(5);
        }

        
this.particles.rightSparks.update(dt);
        
this.particles.rightClouds.update(dt);
        
this.particles.leftSparks.update(dt);
        
this.particles.leftClouds.update(dt);
    }
}
?>
Онлайн: 1
Реклама