Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 18, 2006, 2:56:01 PM (19 years ago)
Author:
hdavid
Message:

branches/atmospheric_engine: finished snow effect

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/atmospheric_engine/src/lib/graphics/effects/snow_effect.cc

    r7652 r7683  
    6767        LoadParam(root, "emissionRate", this, SnowEffect, emissionRate);
    6868        LoadParam(root, "emissionVelocity", this, SnowEffect, emissionVelocity);
    69         LoadParam(root, "spread", this, SnowEffect, spread);
     69  LoadParam(root, "wind", this, SnowEffect, wind);
    7070        LoadParam(root, "size", this, SnowEffect, size);
    7171        LoadParam(root, "coord", this, SnowEffect, coord);
     
    7777
    7878        // Default values
    79         particles = 10000;
     79        particles = 12000;
    8080        texture = "maps/snow_flake_01_32x32.png";
    8181        life = 8;
     
    8888        velocity = -100;
    8989        randomVelocity = 5;
    90         angle = 0;
    91         randomAngle = 0.3;
     90        angle = 0.5;
     91        randomAngle = 0.2;
    9292        alpha = 0.5;
    93         snowSize = Vector2D(1200, 1200);
    94         snowCoord = Vector(100, 600, 200);
     93        snowSize = Vector2D(2500, 2500);
     94  snowCoord = Vector(100,450,400);
    9595
    9696        activated = false;
     
    107107        SnowEffect::snowParticles->setLifeSpan(life, randomLife);
    108108        SnowEffect::snowParticles->setRadius(0.0, snowRadius, randomRadius);
    109         SnowEffect::snowParticles->setRadius(0.2, snowRadius, randomRadius);
    110         SnowEffect::snowParticles->setRadius(1.0, snowRadius, randomRadius);
     109        SnowEffect::snowParticles->setRadius(0.2, snowRadius, randomRadius*0.8);
     110        SnowEffect::snowParticles->setRadius(1.0, snowRadius, randomRadius*0.5);
    111111        SnowEffect::snowParticles->setMass(0, snowMass, randomMass);
    112112        SnowEffect::snowParticles->setColor(0,1, 1, 1, alpha);
     
    116116        this->emitter->setSystem(SnowEffect::snowParticles);
    117117
    118 // this->updateNode(0);
    119118        this->emitter->setRelCoor(snowCoord);
    120119        this->emitter->setEmissionRate(rate);
     
    122121        this->emitter->setSpread(angle, randomAngle);
    123122        this->emitter->setSize(snowSize);
     123 
     124  //SnowEffect::snowParticles->precache(8);
    124125}
    125126
     
    149150void SnowEffect::tick(float dt)
    150151{
    151         float distance = (State::getCameraNode()->getAbsCoor() - snowCoord).len();
    152         if( activated && ( distance > 0.6*snowSize.x || distance > 0.6*snowSize.y) )
    153                 this->deactivate();
    154         if( !activated && ( distance < 0.6*snowSize.x || distance < 0.6*snowSize.y ))
    155                 this->activate();
     152  float distance = (State::getCameraNode()->getAbsCoor() - Vector(snowCoord.x, State::getCameraNode()->getAbsCoor().y, snowCoord.z)).len();
     153 
     154  if(activated)
     155  {
     156    if(distance > 0.3*snowSize.x || distance > 0.3*snowSize.y)
     157                  this->deactivate();
     158    else if(distance > 0.25*snowSize.x || distance > 0.25*snowSize.y)
     159      this->alpha = 0.15;
     160    else if(distance > 0.2*snowSize.x || distance > 0.2*snowSize.y)
     161      this->alpha = 0.25;
     162    else if(distance > 0.1*snowSize.x || distance > 0.1*snowSize.y)
     163      this->alpha = 0.4;
     164
     165    SnowEffect::snowParticles->setColor(0,1, 1, 1, alpha);
     166    SnowEffect::snowParticles->setColor(.5, .6, .6, .6, alpha/2);
     167    SnowEffect::snowParticles->setColor(1, .0, .0, .0, .0);
     168  }
     169  else
     170  {
     171  if(distance < 0.3*snowSize.x || distance < 0.3*snowSize.y )
     172    this->activate();
     173  if( distance < 0.25*snowSize.x || distance < 0.25*snowSize.y )
     174    this->alpha = 0.25;
     175  else if( distance < 0.2*snowSize.x || distance < 0.2*snowSize.y )
     176    this->alpha = 0.4;
     177  else if( distance < 0.1*snowSize.x || distance < 0.1*snowSize.y )
     178    this->alpha = 0.5;
     179
     180    SnowEffect::snowParticles->setColor(0,1, 1, 1, alpha);
     181    SnowEffect::snowParticles->setColor(.5, .6, .6, .6, alpha/2);
     182    SnowEffect::snowParticles->setColor(1, .0, .0, .0, .0);
     183  }
    156184}
    157185
Note: See TracChangeset for help on using the changeset viewer.