[Orxonox-commit 3241] r7932 - in code/branches/hudimprovements: data/overlays src/modules/overlays/hud src/orxonox/overlays src/orxonox/worldentities/pawns

bknecht at orxonox.net bknecht at orxonox.net
Sun Feb 20 16:53:43 CET 2011


Author: bknecht
Date: 2011-02-20 16:53:43 +0100 (Sun, 20 Feb 2011)
New Revision: 7932

Modified:
   code/branches/hudimprovements/data/overlays/HUDTemplates3.oxo
   code/branches/hudimprovements/src/modules/overlays/hud/HUDBar.cc
   code/branches/hudimprovements/src/modules/overlays/hud/HUDBar.h
   code/branches/hudimprovements/src/modules/overlays/hud/HUDBoostBar.cc
   code/branches/hudimprovements/src/modules/overlays/hud/HUDBoostBar.h
   code/branches/hudimprovements/src/orxonox/overlays/OrxonoxOverlay.cc
   code/branches/hudimprovements/src/orxonox/overlays/OrxonoxOverlay.h
   code/branches/hudimprovements/src/orxonox/worldentities/pawns/SpaceShip.h
Log:
The boost bar is now flashing red when the boost is cooling down. However the solution in OrxonoxOverlay is a bit questionable and could probably be solved less hacky...

Modified: code/branches/hudimprovements/data/overlays/HUDTemplates3.oxo
===================================================================
--- code/branches/hudimprovements/data/overlays/HUDTemplates3.oxo	2011-02-20 15:40:19 UTC (rev 7931)
+++ code/branches/hudimprovements/data/overlays/HUDTemplates3.oxo	2011-02-20 15:53:43 UTC (rev 7932)
@@ -66,7 +66,7 @@
 
     <HUDBoostBar
      name          = "BoostBar1"
-     background    = "Orxonox/BarBackground"
+     backgroundtex = "bar1.png"
      size          = "0.35, 0.05"
      position      = "0.0 , 1.0 "
      pickpoint     = "0, 1"

Modified: code/branches/hudimprovements/src/modules/overlays/hud/HUDBar.cc
===================================================================
--- code/branches/hudimprovements/src/modules/overlays/hud/HUDBar.cc	2011-02-20 15:40:19 UTC (rev 7931)
+++ code/branches/hudimprovements/src/modules/overlays/hud/HUDBar.cc	2011-02-20 15:53:43 UTC (rev 7932)
@@ -25,6 +25,7 @@
  *      Felix Schulthess
  *      Fabian 'x3n' Landau
  *      Reto Grieder
+ *      Benjamin Knecht
  *
  */
 

Modified: code/branches/hudimprovements/src/modules/overlays/hud/HUDBar.h
===================================================================
--- code/branches/hudimprovements/src/modules/overlays/hud/HUDBar.h	2011-02-20 15:40:19 UTC (rev 7931)
+++ code/branches/hudimprovements/src/modules/overlays/hud/HUDBar.h	2011-02-20 15:53:43 UTC (rev 7932)
@@ -25,6 +25,7 @@
  *      Felix Schulthess
  *      Fabian 'x3n' Landau
  *      Reto Grieder
+ *      Benjamin Knecht
  *
  */
 

Modified: code/branches/hudimprovements/src/modules/overlays/hud/HUDBoostBar.cc
===================================================================
--- code/branches/hudimprovements/src/modules/overlays/hud/HUDBoostBar.cc	2011-02-20 15:40:19 UTC (rev 7931)
+++ code/branches/hudimprovements/src/modules/overlays/hud/HUDBoostBar.cc	2011-02-20 15:53:43 UTC (rev 7932)
@@ -42,6 +42,8 @@
         RegisterObject(HUDBoostBar);
 
         this->owner_ = 0;
+        this->flashInterval_ = 0.25f;
+        this->flashDt_ = 0.0f;
     }
 
     HUDBoostBar::~HUDBoostBar()
@@ -54,7 +56,24 @@
 
         if (this->owner_)
         {
-            this->show();
+            if (this->owner_->isBoostCoolingDown())
+            {
+                this->setBackgroundColour(ColourValue(0.7f, 0.2f, 0.2f));
+                if (this->flashDt_ <= 0.0f)
+                {
+                    this->flashDt_ = this->flashInterval_;
+                    this->setVisible(!this->isVisible());
+                }
+                else
+                    this->flashDt_ -= dt;
+            }
+            else
+            {
+                this->flashDt_ = 0.0f;
+                this->show();
+                this->setBackgroundColour(ColourValue(0.2f, 0.7f, 0.2f));
+            }
+
             float value = this->owner_->getBoostPower() / this->owner_->getInitialBoostPower();
             this->setValue(value);
         }

Modified: code/branches/hudimprovements/src/modules/overlays/hud/HUDBoostBar.h
===================================================================
--- code/branches/hudimprovements/src/modules/overlays/hud/HUDBoostBar.h	2011-02-20 15:40:19 UTC (rev 7931)
+++ code/branches/hudimprovements/src/modules/overlays/hud/HUDBoostBar.h	2011-02-20 15:53:43 UTC (rev 7932)
@@ -46,7 +46,9 @@
         virtual void changedOwner();
 
     private:
-        SpaceShip* owner_;
+        SpaceShip*  owner_;
+        float       flashInterval_;
+        float       flashDt_;
     };
 }
 #endif /* _HUDBoostBar_H__ */

Modified: code/branches/hudimprovements/src/orxonox/overlays/OrxonoxOverlay.cc
===================================================================
--- code/branches/hudimprovements/src/orxonox/overlays/OrxonoxOverlay.cc	2011-02-20 15:40:19 UTC (rev 7931)
+++ code/branches/hudimprovements/src/orxonox/overlays/OrxonoxOverlay.cc	2011-02-20 15:53:43 UTC (rev 7932)
@@ -135,6 +135,7 @@
         XMLPortParam(OrxonoxOverlay, "rotation",  setRotation,  getRotation,  xmlelement, mode);
         XMLPortParam(OrxonoxOverlay, "correctaspect", setAspectCorrection,   getAspectCorrection,   xmlelement, mode);
         XMLPortParam(OrxonoxOverlay, "background",    setBackgroundMaterial, getBackgroundMaterial, xmlelement, mode);
+        XMLPortParam(OrxonoxOverlay, "backgroundtex", setBackgroundTexture,  getBackgroundTexture,  xmlelement, mode);
     }
 
     void OrxonoxOverlay::changedName()
@@ -165,6 +166,34 @@
             return BLANKSTRING;
     }
 
+    //! Sets the background texture name and creates a new material if necessary
+    void OrxonoxOverlay::setBackgroundTexture(const std::string& texture)
+    {
+        if (this->background_ && this->background_->getMaterial().isNull() && !texture.empty())
+        {
+            // create new material
+            const std::string& materialname = "generated_material" + getUniqueNumberString();
+            Ogre::MaterialPtr material = static_cast<Ogre::MaterialPtr>(Ogre::MaterialManager::getSingleton().create(materialname, "General"));
+            material->getTechnique(0)->getPass(0)->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA);
+            Ogre::TextureUnitState* textureUnitState_ = material->getTechnique(0)->getPass(0)->createTextureUnitState();
+            textureUnitState_->setTextureName(texture);
+            textureUnitState_->setNumMipmaps(0);
+            this->background_->setMaterialName(materialname);
+        }
+    }
+
+    //! Returns the the texture name of the background
+    const std::string& OrxonoxOverlay::getBackgroundTexture() const
+    {
+        if (this->background_)
+        {
+            Ogre::TextureUnitState* tempTx = this->background_->getMaterial()->getTechnique(0)->getPass(0)->getTextureUnitState(0);
+            return tempTx->getTextureName();
+        }
+        else
+            return BLANKSTRING;
+    }
+
     //! Called by BaseObject when visibility has changed.
     void OrxonoxOverlay::changedVisibility()
     {
@@ -384,9 +413,17 @@
         }
     }
 
-    void OrxonoxOverlay::setBackgroundAlpha(float alpha) {
+    void OrxonoxOverlay::setBackgroundAlpha(float alpha)
+    {
         Ogre::MaterialPtr ptr = this->background_->getMaterial();
         Ogre::TextureUnitState* tempTx = ptr->getTechnique(0)->getPass(0)->getTextureUnitState(0);
         tempTx->setAlphaOperation(Ogre::LBX_MODULATE, Ogre::LBS_MANUAL, Ogre::LBS_CURRENT, alpha);
     }
+
+    void OrxonoxOverlay::setBackgroundColour(ColourValue colour)
+    {
+        Ogre::MaterialPtr ptr = this->background_->getMaterial();
+        Ogre::TextureUnitState* tempTx = ptr->getTechnique(0)->getPass(0)->getTextureUnitState(0);
+        tempTx->setColourOperationEx(Ogre::LBX_MODULATE, Ogre::LBS_MANUAL, Ogre::LBS_CURRENT, colour);
+    }
 }

Modified: code/branches/hudimprovements/src/orxonox/overlays/OrxonoxOverlay.h
===================================================================
--- code/branches/hudimprovements/src/orxonox/overlays/OrxonoxOverlay.h	2011-02-20 15:40:19 UTC (rev 7931)
+++ code/branches/hudimprovements/src/orxonox/overlays/OrxonoxOverlay.h	2011-02-20 15:53:43 UTC (rev 7932)
@@ -158,8 +158,13 @@
         void setBackgroundMaterial(const std::string& material);
         const std::string& getBackgroundMaterial() const;
 
+        void setBackgroundTexture(const std::string& texture);
+        const std::string& getBackgroundTexture() const;
+
         void setBackgroundAlpha(float alpha);
 
+        void setBackgroundColour(ColourValue colour);
+
         virtual void changedVisibility();
 
         inline void setOwner(BaseObject* owner)

Modified: code/branches/hudimprovements/src/orxonox/worldentities/pawns/SpaceShip.h
===================================================================
--- code/branches/hudimprovements/src/orxonox/worldentities/pawns/SpaceShip.h	2011-02-20 15:40:19 UTC (rev 7931)
+++ code/branches/hudimprovements/src/orxonox/worldentities/pawns/SpaceShip.h	2011-02-20 15:53:43 UTC (rev 7932)
@@ -73,9 +73,9 @@
             inline bool getBoost() const
                 { return this->bBoost_; }
 
-            inline float getBoostPower()
+            inline float getBoostPower() const
                 { return this->boostPower_; }
-            inline float getInitialBoostPower()
+            inline float getInitialBoostPower() const
                 { return this->initialBoostPower_; }
 
             inline void setEngineTemplate(const std::string& temp)
@@ -88,6 +88,9 @@
             inline bool getPermanentBoost() const
                 { return this->bPermanentBoost_; }
 
+            inline bool isBoostCoolingDown() const
+                { return bBoostCooldown_; }
+
         protected:
             virtual std::vector<PickupCarrier*>* getCarrierChildren(void) const;
             bool bInvertYAxis_;




More information about the Orxonox-commit mailing list