[Orxonox-commit 3813] r8491 - code/branches/environment2/src/orxonox/graphics

marwegma at orxonox.net marwegma at orxonox.net
Mon May 16 16:34:20 CEST 2011


Author: marwegma
Date: 2011-05-16 16:34:19 +0200 (Mon, 16 May 2011)
New Revision: 8491

Modified:
   code/branches/environment2/src/orxonox/graphics/GlobalGodrayShader.cc
   code/branches/environment2/src/orxonox/graphics/GlobalGodrayShader.h
   code/branches/environment2/src/orxonox/graphics/GlobalShader.cc
Log:
Safety Commit

Modified: code/branches/environment2/src/orxonox/graphics/GlobalGodrayShader.cc
===================================================================
--- code/branches/environment2/src/orxonox/graphics/GlobalGodrayShader.cc	2011-05-16 13:52:31 UTC (rev 8490)
+++ code/branches/environment2/src/orxonox/graphics/GlobalGodrayShader.cc	2011-05-16 14:34:19 UTC (rev 8491)
@@ -29,10 +29,10 @@
 /**
  @file
  
- @brief Implementation of the GlobalGodrayShader.
+ @brief Implementation of the GlobalGodrayShader class.
  */
 
-#include "GlobalShader.h"
+#include "GlobalGodrayShader.h"
 
 #include "util/Exception.h"
 #include "core/CoreIncludes.h"
@@ -42,7 +42,7 @@
 {
     CreateFactory(GlobalGodrayShader);
     
-    GlobalGodrayShader::GlobalGodrayShader(BaseObject* creator, WorldEntity blurObject) : BaseObject(creator)
+    GlobalGodrayShader::GlobalGodrayShader(BaseObject* creator) : BaseObject(creator), globalShader_(creator)
     {
         RegisterObject(GlobalGodrayShader);
         
@@ -51,18 +51,60 @@
         //        if (!this->getScene()->getSceneManager())
         //            ThrowException(AbortLoading, "Can't create GlobalGodrayShader, no scene manager given.");
         
-        if (this->getScene()->getSceneManager())
-            this- setSceneManager(this->getScene()->getSceneManager());
+        this->skyColor_ = {0.0f, 0.0f, 0.0f, 1.0f};
+        this->exposure_ = 1.0f;
+        this->decay_ = 0.1f;
+        this->density_ = 0.7f;
     }
     
-    GlobalGodrayShader::~GlobalShader()
+    GlobalGodrayShader::~GlobalGodrayShader()
     {
+        this->setVisible(false);
     }
     
+    void GlobalGodrayShader::tick(float dt)
+    {
+        // To-Do
+    }
+    
     void GlobalGodrayShader::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
         SUPER(GlobalGodrayShader, XMLPort, xmlelement, mode);
         
-        XMLPortParamExtern(GlobalShader, Shader, &this->shader_, "compositor", setCompositorName, getCompositorName, xmlelement, mode);
+        XMLPortParamTemplate(GlobalGodrayShader, "sunPosition", setSunPosition, getSunPosition, xmlelement, mode, const Vector3&);
+        XMLPortParamTemplate(GlobalGodrayShader, "skyColor", setSkyColor, getSkyColor, xmlelement, mode, const Vector4&);
+        XMLPortParamVariable(GlobalGodrayShader, exposure_, "exposure", xmlelement, mode);
+        XMLPortParamVariable(GlobalGodrayShader, decay_, "decay", xmlelement, mode);
+        XMLPortParamVariable(GlobalGodrayShader, density_, "density", xmlelement, mode);
     }
+    
+    void GlobalGodrayShader::setSunPosition(const Vector3& position)
+    {
+        this->sunPosition.x = position.x;
+        this->sunPosition.y = position.y;
+        this->sunPosition.z = position.z;
+    }
+    void GlobalGodrayShader::setSkyColor(const Vector4& color)
+    {
+        this->skyColor[0] = color.x;
+        this->skyColor[1] = color.y;
+        this->skyColor[2] = color.z;
+        this->skyColor[3] = color.w;
+    }
+    const Vector3& GlobalGodrayShader::getSunPosition() const
+    {
+        return sunPosition;
+    }
+    const Vector4& GlobalGodrayShader::getSkyColor() const
+    {
+        Vector4 &color = new Vector4(skyColor[0], skyColor[1], skyColor[2], skyColor[3]);
+        return color;
+    }
+    
+    void GlobalShader::changedVisibility()
+    {
+        SUPER(GlobalShader, changedVisibility);
+        
+        this->globalShader_.setVisible(this->isVisible());
+    }
 }

Modified: code/branches/environment2/src/orxonox/graphics/GlobalGodrayShader.h
===================================================================
--- code/branches/environment2/src/orxonox/graphics/GlobalGodrayShader.h	2011-05-16 13:52:31 UTC (rev 8490)
+++ code/branches/environment2/src/orxonox/graphics/GlobalGodrayShader.h	2011-05-16 14:34:19 UTC (rev 8491)
@@ -52,22 +52,33 @@
     */
     class _OrxonoxExport GlobalGodrayShader : public BaseObject, public Tickable
     {
-    public:
-        GlobalGodrayShader(BaseObject* creator);
-        virtual ~GlobalGodrayShader();
+        public:
+            GlobalGodrayShader(BaseObject* creator);
+            virtual ~GlobalGodrayShader();
+            
+            virtual void tick(float dt);
+            
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
         
-        virtual void tick(float dt);
+            virtual void changedVisibility();
+            
+            inline const GlobalShader& getGlobalShader() const
+            { return this->globalShader_; }
         
-        virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            void setSunPosition(const Vector3& position);
+            void setSkyColor(const Vector4& color);
+            const Vector3& getSunPosition() const;
+            const Vector4& getSkyColor() const;
         
-        inline const GlobalShader& getGlobalShader() const
-        { return this->globalShader_; }
-        
-    private:
-        
-        GlobalShader globalShader_;
-        Vector3 
-        
+        private:
+            
+            GlobalShader globalShader_;
+            
+            Vector3 sunPosition_;
+            float skyColor_[4];
+            float exposure_;
+            float decay_;
+            float density_;
     };
 }
 

Modified: code/branches/environment2/src/orxonox/graphics/GlobalShader.cc
===================================================================
--- code/branches/environment2/src/orxonox/graphics/GlobalShader.cc	2011-05-16 13:52:31 UTC (rev 8490)
+++ code/branches/environment2/src/orxonox/graphics/GlobalShader.cc	2011-05-16 14:34:19 UTC (rev 8491)
@@ -37,7 +37,7 @@
 {
     CreateFactory(GlobalShader);
 
-    GlobalShader::GlobalShader(BaseObject* creator) : BaseObject(creator), Synchronisable(creator)
+    GlobalShader::GlobalShader(BaseObject* creator) : BaseObject(creator), Synchronisable(creator), 
     {
         RegisterObject(GlobalShader);
 
@@ -50,6 +50,7 @@
             this->shader_.setSceneManager(this->getScene()->getSceneManager());
 
         this->registerVariables();
+        
     }
 
     GlobalShader::~GlobalShader()




More information about the Orxonox-commit mailing list