[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