Index: branches/atmospheric_engine/src/lib/graphics/effects/fog_effect.cc
===================================================================
--- branches/atmospheric_engine/src/lib/graphics/effects/fog_effect.cc	(revision 7577)
+++ branches/atmospheric_engine/src/lib/graphics/effects/fog_effect.cc	(revision 7628)
@@ -71,5 +71,5 @@
 bool FogEffect::activate()
 {
-  PRINTF(0)( "Enabling Fog Effect, mode: %i, density: %f, start: %f, end: %f, color %f, %f, %f\n", this->fogMode, this->fogDensity, this->fogStart, this->fogEnd, this->colorVector.x, this->colorVector.y, this->colorVector.z);
+  PRINTF(0)( "Enabling FogEffect, mode: %i, density: %f, start: %f, end: %f, color %f, %f, %f\n", this->fogMode, this->fogDensity, this->fogStart, this->fogEnd, this->colorVector.x, this->colorVector.y, this->colorVector.z);
 
   glEnable(GL_FOG);
@@ -93,5 +93,5 @@
 bool FogEffect::deactivate()
 {
-  PRINTF(0)("Deactivating Fog Effect\n");
+  PRINTF(0)("Deactivating FogEffect\n");
 	glDisable(GL_FOG);
 }
Index: branches/atmospheric_engine/src/lib/graphics/effects/rain_effect.cc
===================================================================
--- branches/atmospheric_engine/src/lib/graphics/effects/rain_effect.cc	(revision 7577)
+++ branches/atmospheric_engine/src/lib/graphics/effects/rain_effect.cc	(revision 7628)
@@ -19,16 +19,14 @@
 
 #include "glincl.h"
+#include "debug.h"
 
-// *****
-
-#include "material.h"
 #include "state.h"
-#include "shell_command.h"
+#include "spark_particles.h"
+#include "plane_emitter.h"
 
 #include "parser/tinyxml/tinyxml.h"
-#include <algorithm>
-#include "box_emitter.h"
-#include "spark_particles.h"
 
+//SHELL_COMMAND(activate, RainEffect, activateRain);
+//SHELL_COMMAND(deactivate, RainEffect, deactivateRain);
 
 using namespace std;
@@ -40,21 +38,8 @@
   this->setClassID(CL_RAIN_EFFECT, "RainEffect");
 
-  // BoxEmitter::BoxEmitter(const Vector& size, float emissionRate, float velocity, float angle)
-
-//         <name>RainEmitter</name>
-//         <rel-coor>-1200, 300, 0</rel-coor>
-//         <rel-dir>3.1412, 0, 0, 1</rel-dir>
-//         <spread>0,.3</spread>
-//         <emission-velocity>500,50</emission-velocity>
-//         <size>1000, 1000</size>
-//         <rate>5000</rate>
-
-  this->emitter = new BoxEmitter(Vector(1000, 300, 100), 20000, 1000, M_2_PI);
-  this->emitter->setRelCoor(100, 0, 0);
-  // this->emitter->setParent(this);
-  this->emitter->setSpread(0, 0.3);
-
   if (root != NULL)
     this->loadParams(root);
+
+  this->init();
 
   this->activate();
@@ -66,43 +51,20 @@
 }
 
-
 void RainEffect::loadParams(const TiXmlElement* root)
 {
-  WeatherEffect::loadParams(root);
+	WeatherEffect::loadParams(root);
 
-//   LoadParam(root, "rel-coor", this, RainEffect, setRainMode);
-// 
-//   LoadParam(root, "rate", this, RainEffect, setRainColor);
-//   LoadParam(root, "velocity", this, RainEffect, setRainColor);
-//   LoadParam(root, "angle", this, RainEffect, setRainColor);
-// 
-//   LoadParam(root, "spread", this, RainEffect, setRainColor);
-
-  // BoxEmitter::BoxEmitter(const Vector& size, float emissionRate, float velocity, float angle)
-
-  this->emitter = new BoxEmitter(Vector(0, 1000, 0), 20000, 4000, 1);
-  this->emitter->setRelCoor(0, 100, 0);
-  // this->emitter->setParent(this);
-  this->emitter->setSpread(0, 0.3);
-
-// LOAD_PARAM_START_CYCLE(root, element);
-//   {
-//     element->ToText();
-//     // PER-PARTICLE-ATTRIBUTES:
-//     LoadParam_CYCLE(element, "radius", this, ParticleSystem, setRadius)
-//     .describe("The Radius of each particle over time (TimeIndex [0-1], radius at TimeIndex, randomRadius at TimeIndex)");
-// 
-//     LoadParam_CYCLE(element, "mass", this, ParticleSystem, setMass)
-//     .describe("The Mass of each particle over time (TimeIndex: [0-1], mass at TimeIndex, randomMass at TimeIndex)");
-// 
-//     LoadParam_CYCLE(element, "color", this, ParticleSystem, setColor)
-//     .describe("The Color of each particle over time (TimeIndex: [0-1], red: [0-1], green: [0-1], blue: [0-1], alpha: [0-1])");
-//   }
-//   LOAD_PARAM_END_CYCLE(element);
-
+	LoadParam(root, "coord", this, RainEffect, setRainCoord);
+	LoadParam(root, "size", this, RainEffect, setRainSize);
+	LoadParam(root, "rate", this, RainEffect, setRainRate);
+	LoadParam(root, "velocity", this, RainEffect, setRainVelocity);
 }
 
+
 bool RainEffect::init()
-{}
+{
+  this->emitter = new PlaneEmitter(this->rainSize);
+}
+
 
 SparkParticles* RainEffect::rainParticles = NULL;
@@ -110,6 +72,5 @@
 bool RainEffect::activate()
 {
-//   PRINTF(0)( "Enabling Rain Effect, mode: %i, density: %f, start: %f, end: %f, color %f, %f, %f\n", this->rainMode, this->rainDensity, this->rainStart, this->rainEnd, this->colorVector.x, this->colorVector.y, this->colorVector.z);
-	PRINTF(0)("Activating Rain Effect\n");
+	PRINTF(0)( "Activating RainEffect, coord: %f, %f, %f, size: %f, %f, rate: %f, velocity: %f\n", this->rainCoord.x, this->rainCoord.y, this->rainCoord.z, this->rainSize.x, this-> rainSize.y, this->rainRate, this->rainVelocity );
 
 	if (unlikely(RainEffect::rainParticles == NULL))
@@ -125,31 +86,16 @@
 		RainEffect::rainParticles->setColor(0.8, 0.8, 0.2, 0.3, 0.3);
 		RainEffect::rainParticles->setColor(1, 0.5, 0.5, 1, 0);
-
-//      <life-span>2,2</life-span>
-//      <radius>0, 0.05, 0.05</radius>
-//      <radius>1, 0.05, 0.05</radius>
-//      <mass>0,1, .05</mass>
-//      <color>0, 0, 0, 1, .3</color>
-//      <color>.5, .5, .5, 1, .2</color>
-//      <color>1,0.5, .5,1, .0</color>
-//      <precache>2</precache>
-//      <emitters>
-//       <PlaneEmitter>
-
-//       </PlaneEmitter>
-//      </emitters>
-
 	}
 
 	this->emitter->setSystem(RainEffect::rainParticles);
-//	this->size = 4.0;
 
 	RainEffect::rainParticles->debug();
-//	this->updateNode(0);
-	this->emitter->setEmissionRate(5000.0);
-	this->emitter->setEmissionVelocity(50.0);
 
-//	this->setHealth(200);
+	this->emitter->setRelCoor(this->rainCoord);
 
+	this->emitter->setEmissionRate(this->rainRate);
+	this->emitter->setEmissionVelocity(-this->rainVelocity);
+
+	this->emitter->setSpread(0, .3);
 }
 
@@ -157,44 +103,6 @@
 bool RainEffect::deactivate()
 {
-  PRINTF(0)("Deactivating Rain Effect\n");
+  PRINTF(0)("Deactivating RainEffect\n");
 
   this->emitter->setSystem(NULL);
- // this->lifeCycle = 0.0;
- // this->toList(OM_NULL);
-
-//  GarbageCollector::getInstance()->collect(this);
-//  this->toList(OM_DEAD);
-
 }
-
-void RainEffect::draw() const
-{
-//  Particle* drawPart = ParticleSystem::particles;
-
-//   glDepthMask(GL_FALSE);
-//   glPushAttrib(GL_ENABLE_BIT);
-// 
-//   glDisable(GL_LIGHTING);
-//   glDisable(GL_TEXTURE_2D);
-// 
-//   glEnable(GL_LINE_SMOOTH);
-//   glEnable(GL_BLEND);
-//   glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA);
-// 
-//   glLineWidth(2.0);
-//   glBegin(GL_LINES);
-//   while (likely(drawPart != NULL))
-//   {
-//   //    printf("%f %f %f %f\n", drawPart->color[0], drawPart->color[1], drawPart->color[2], drawPart->color[3]);
-//     glColor4fv(drawPart->color);
-//     glVertex3f(drawPart->position.x,  drawPart->position.y,  drawPart->position.z);
-//     glVertex3f(drawPart->position.x - drawPart->velocity.x * drawPart->radius,
-//                drawPart->position.y - drawPart->velocity.y * drawPart->radius,
-//                drawPart->position.z - drawPart->velocity.z * drawPart->radius);
-//     drawPart = drawPart->next;
-//   }
-//   glEnd();
-// 
-//   glDepthMask(GL_TRUE);
-//   glPopAttrib();
-}
Index: branches/atmospheric_engine/src/lib/graphics/effects/rain_effect.h
===================================================================
--- branches/atmospheric_engine/src/lib/graphics/effects/rain_effect.h	(revision 7577)
+++ branches/atmospheric_engine/src/lib/graphics/effects/rain_effect.h	(revision 7628)
@@ -7,9 +7,10 @@
 
 #include "vector.h"
+#include "vector2D.h"
+
 #include "particle_system.h"
-//#include "material.h"
 
 class SparkParticles;
-class ParticleEmitter;
+class PlainEmitter;
 
 #include "weather_effect.h"
@@ -29,10 +30,8 @@
     virtual bool deactivate();
 
-    virtual void draw() const;
-
-//     inline void setRainMode(const std::string& mode) { this->rainMode = this->stringToRainMode(mode); }
-//     inline void setRainDensity(float density) { this->rainDensity = density; }
-//     inline void setRainRange(float start, float end) { this->rainStart = start; this->rainEnd = end; }
-//     inline void setRainColor(float r, float g, float b) { this->colorVector = Vector(r, g, b); }
+    inline void setRainCoord(float x, float y, float z) { this->rainCoord = Vector(x, y, z); }
+    inline void setRainSize(float x, float y) { this->rainSize = Vector2D(x, y); }
+    inline void setRainRate(float rate) { this->rainRate = rate;}
+    inline void setRainVelocity(float velocity) { this->rainVelocity = velocity; }
 
   private:
@@ -40,8 +39,8 @@
     ParticleEmitter*                  emitter;
 
-//     GLfloat                 rainDensity;
-//     GLfloat                 rainStart;
-//     GLfloat                 rainEnd;
-//     Vector                  colorVector;
+    Vector                            rainCoord;
+    Vector2D                          rainSize;
+    GLfloat                           rainRate;
+    GLfloat                           rainVelocity;
 };
 
Index: branches/atmospheric_engine/src/lib/graphics/effects/snow_effect.cc
===================================================================
--- branches/atmospheric_engine/src/lib/graphics/effects/snow_effect.cc	(revision 7577)
+++ branches/atmospheric_engine/src/lib/graphics/effects/snow_effect.cc	(revision 7628)
@@ -41,5 +41,5 @@
 
   this->init();
-  
+
   this->activate();
 }
@@ -73,5 +73,5 @@
 bool SnowEffect::activate()
 {
-  PRINTF(0)("Activating Snow Effect\n");
+  PRINTF(0)("Activating SnowEffect\n");
   
   SnowEffect::snowParticles = new SpriteParticles(10000);
@@ -101,5 +101,5 @@
 bool SnowEffect::deactivate()
 {
-  PRINTF(0)("Deactivating Snow Effect\n");
+  PRINTF(0)("Deactivating SnowEffect\n");
   
   this->emitter->setSystem(NULL);
