[Orxonox-commit 2220] r6936 - code/branches/skybox2/src/modules/designtools

gionc at orxonox.net gionc at orxonox.net
Thu May 20 16:10:54 CEST 2010


Author: gionc
Date: 2010-05-20 16:10:54 +0200 (Thu, 20 May 2010)
New Revision: 6936

Modified:
   code/branches/skybox2/src/modules/designtools/CreateStars.cc
   code/branches/skybox2/src/modules/designtools/CreateStars.h
Log:
updated StarCreator

Modified: code/branches/skybox2/src/modules/designtools/CreateStars.cc
===================================================================
--- code/branches/skybox2/src/modules/designtools/CreateStars.cc	2010-05-20 12:50:59 UTC (rev 6935)
+++ code/branches/skybox2/src/modules/designtools/CreateStars.cc	2010-05-20 14:10:54 UTC (rev 6936)
@@ -51,6 +51,14 @@
 
     {
         RegisterObject(CreateStars);
+        this->material_ = "Examples/Flare";
+        this->alpha_ = 0.7;
+        this->alphaDiff_ = 0.5;
+        this->radiusDiff_ = 0.9;
+        this->colour_.r = 1;
+        this->colour_.g = 1;
+        this->colour_.b = 1;
+        this->colourDiff_ = 0.1;
     }
 
     CreateStars::~CreateStars()
@@ -70,29 +78,55 @@
 
         for(int i=0; i < numStars_; i++) 
         {
-            Billboard* b = new Billboard(this);
-            b->setMaterial(material_);
+            Billboard* bb = new Billboard(this);
 
-            float alpha = rnd(-90,90);
-            float beta = rnd(0,360);
-            
-            b->setPosition( PolarToCartesian(alpha, beta, radius_) );
-            billboards_.push_back(b);
+            float r = rnd(-colourDiff_,colourDiff_);
+            float g = rnd(-colourDiff_,colourDiff_);
+            float b = rnd(-colourDiff_,colourDiff_);
+            orxonox::ColourValue thisColour = colour_;
+            float alpha = alpha_+rnd(-alphaDiff_,alphaDiff_);
+            thisColour.r=clamp(thisColour.r*alpha+r, 0.0f, 1.0f);
+            thisColour.g=clamp(thisColour.g*alpha+g, 0.0f, 1.0f);
+            thisColour.b=clamp(thisColour.b*alpha+b, 0.0f, 1.0f);
+
+            bb->setMaterial(material_);
+            bb->setColour(thisColour);
+
+            float phi;
+            float teta;
+
+            while(1) 
+            {
+                phi = rnd(2*M_PI);
+                teta = rnd(M_PI);
+                float random = rnd(1);
+                if(sin(teta)>random) break;
+            }
+            float radius = rnd(radiusDiff_,1)*radius_;
+            bb->setPosition( PolarToCartesian(phi, teta, radius) );
+            billboards_.push_back(bb);
         }
     }
 
-    Vector3 PolarToCartesian(float alpha, float beta, float radius) 
+    Vector3 CreateStars::PolarToCartesian(float phi, float teta, float radius) 
     {
-        int x = radius * cos(alpha) * sin(beta);
-        int y = radius * sin(alpha) * cos(beta);
-        int z = radius * cos(beta);
+        float x = radius * cos(phi) * sin(teta);
+        float y = radius * sin(phi) * sin(teta);
+        float z = radius * cos(teta);
         return Vector3(x,y,z);
     }
 
     void CreateStars::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
+        SUPER(CreateStars, XMLPort, xmlelement, mode);
+
         XMLPortParam(CreateStars, "numStars", setNumStars, getNumStars, xmlelement, mode);
         XMLPortParam(CreateStars, "material", setMaterial, getMaterial, xmlelement, mode);
+        XMLPortParam(CreateStars, "colour", setColour, getColour, xmlelement, mode);
+        XMLPortParam(CreateStars, "alpha", setAlpha, getAlpha, xmlelement, mode);
+        XMLPortParam(CreateStars, "colourDiff", setColourDiff, getColourDiff, xmlelement, mode);
+        XMLPortParam(CreateStars, "alphaDiff", setAlphaDiff, getAlphaDiff, xmlelement, mode);
+        XMLPortParam(CreateStars, "radiusDiff", setRadiusDiff, getRadiusDiff, xmlelement, mode);
         XMLPortParam(CreateStars, "radius", setRadius, getRadius, xmlelement, mode);
 	}
 

Modified: code/branches/skybox2/src/modules/designtools/CreateStars.h
===================================================================
--- code/branches/skybox2/src/modules/designtools/CreateStars.h	2010-05-20 12:50:59 UTC (rev 6935)
+++ code/branches/skybox2/src/modules/designtools/CreateStars.h	2010-05-20 14:10:54 UTC (rev 6936)
@@ -30,8 +30,8 @@
 #include "core/BaseObject.h"
 
 #include "graphics/Billboard.h"
+
  
- 
 namespace orxonox
 {
     class CreateStars : public BaseObject
@@ -60,6 +60,46 @@
                 return this->material_;
             }
 
+            void setColour(const orxonox::ColourValue& colour) { 
+                this->colour_ = colour;
+            }
+
+            ColourValue& getColour() { 
+                return this->colour_;
+            }
+
+            void setAlpha(float alpha) {
+                this->alpha_ = alpha;
+            }
+
+            float getAlpha() {
+                return this->alpha_;
+            }
+
+            void setColourDiff(float colourDiff) {
+                this->colourDiff_ = colourDiff;
+            }
+
+            float getColourDiff() {
+                return this->colourDiff_;
+            }
+
+            void setAlphaDiff(float alphaDiff) {
+                this->alphaDiff_ = alphaDiff;
+            }
+
+            float getAlphaDiff() {
+                return this->alphaDiff_;
+            }
+
+            void setRadiusDiff(float radiusDiff) {
+                this->radiusDiff_ = radiusDiff;
+            }
+
+            float getRadiusDiff() {
+                return this->radiusDiff_;
+            }
+
             void setRadius(unsigned int dist) {
                 this->radius_ = dist;
                 this->createBillboards();
@@ -74,8 +114,13 @@
         private:
             int numStars_;
             std::string material_;
+            orxonox::ColourValue colour_;
             std::vector<Billboard*> billboards_;
-            unsigned int radius_;
+            float radius_;
+            float alpha_;
+            float colourDiff_; 
+            float alphaDiff_;
+            float radiusDiff_;
             
     };
 }




More information about the Orxonox-commit mailing list