[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