Changeset 2256 for code/branches/objecthierarchy2/src/orxonox/overlays
- Timestamp:
- Nov 25, 2008, 1:14:19 AM (16 years ago)
- Location:
- code/branches/objecthierarchy2/src/orxonox/overlays
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/objecthierarchy2/src/orxonox/overlays/OrxonoxOverlay.cc
r2171 r2256 60 60 { 61 61 RegisterObject(OrxonoxOverlay); 62 63 this->owner_ = 0; 62 64 63 65 if (!Core::showsGraphics()) -
code/branches/objecthierarchy2/src/orxonox/overlays/OrxonoxOverlay.h
r2087 r2256 154 154 virtual void changedVisibility(); 155 155 156 inline void setOwner(ControllableEntity* owner) 157 { 158 if (this->owner_ != owner) 159 { 160 this->owner_ = owner; 161 this->changedOwner(); 162 } 163 } 164 inline ControllableEntity* getOwner() const 165 { return this->owner_; } 166 virtual void changedOwner() {} 167 156 168 protected: 157 169 virtual void angleChanged(); … … 182 194 We could also use the ObjectList, but that doesn't guarantee XMLPort(.) was called and is slower. */ 183 195 static std::map<std::string, OrxonoxOverlay*> overlays_s; 196 ControllableEntity* owner_; 184 197 }; 198 199 SUPER_FUNCTION(7, OrxonoxOverlay, changedOwner, false); 185 200 } 186 201 -
code/branches/objecthierarchy2/src/orxonox/overlays/OverlayGroup.cc
r2087 r2256 55 55 RegisterObject(OverlayGroup); 56 56 57 this->owner_ = 0; 58 57 59 setScale(Vector2(1.0, 1.0)); 58 60 setScroll(Vector2(0.0, 0.0)); … … 113 115 hudElements_[element->getName()] = element; 114 116 element->setVisible(this->isVisible()); 117 if (this->owner_) 118 element->setOwner(this->owner_); 115 119 } 116 120 } … … 137 141 } 138 142 143 void OverlayGroup::setOwner(ControllableEntity* owner) 144 { 145 this->owner_ = owner; 146 147 for (std::map<std::string, OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it) 148 (*it).second->setOwner(owner); 149 } 139 150 140 151 //########### Console commands ############ -
code/branches/objecthierarchy2/src/orxonox/overlays/OverlayGroup.h
r2087 r2256 69 69 void changedVisibility(); 70 70 71 void setOwner(ControllableEntity* owner); 72 inline ControllableEntity* getOwner() const 73 { return this->owner_; } 74 71 75 private: 72 76 //! Scales each OrxonoxOverlay individually by scale. … … 88 92 Vector2 scale_; //!< Current scale (independant of the elements). 89 93 Vector2 scroll_; //!< Current scrolling offset. 94 ControllableEntity* owner_; //!< The owner of this OverlayGroup 90 95 }; 91 96 } -
code/branches/objecthierarchy2/src/orxonox/overlays/hud/HUDRadar.cc
r2087 r2256 40 40 #include "core/XMLPort.h" 41 41 #include "objects/Radar.h" 42 #include "objects/worldentities/WorldEntity.h" 43 #include "objects/worldentities/pawns/Pawn.h" 42 44 #include "tools/TextureGenerator.h" 43 45 … … 51 53 RegisterObject(HUDRadar); 52 54 53 marker_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()55 this->marker_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton() 54 56 .createOverlayElement("Panel", "HUDRadar_marker_" + getUniqueNumberString())); 55 marker_->setMaterialName("Orxonox/RadarMarker");56 overlay_->add2D(marker_);57 marker_->hide();57 this->marker_->setMaterialName("Orxonox/RadarMarker"); 58 this->overlay_->add2D(this->marker_); 59 this->marker_->hide(); 58 60 59 setRadarSensitivity(1.0f);60 setHalfDotSizeDistance(3000.0f);61 setMaximumDotSize(0.1f);61 this->setRadarSensitivity(1.0f); 62 this->setHalfDotSizeDistance(3000.0f); 63 this->setMaximumDotSize(0.1f); 62 64 63 shapeMaterials_[RadarViewable::Dot] = "RadarSquare.tga"; 64 shapeMaterials_[RadarViewable::Triangle] = "RadarSquare.tga"; 65 shapeMaterials_[RadarViewable::Square] = "RadarSquare.tga"; 65 this->shapeMaterials_[RadarViewable::Dot] = "RadarDot.tga"; 66 this->shapeMaterials_[RadarViewable::Triangle] = "RadarSquare.tga"; 67 this->shapeMaterials_[RadarViewable::Square] = "RadarSquare.tga"; 68 69 this->owner_ = 0; 66 70 } 67 71 … … 90 94 void HUDRadar::displayObject(RadarViewable* object, bool bIsMarked) 91 95 { 92 /* 96 if (object == (RadarViewable*)this->owner_) 97 return; 98 93 99 const WorldEntity* wePointer = object->getWorldEntity(); 94 100 95 101 // Just to be sure that we actually have a WorldEntity. 96 102 // We could do a dynamic_cast, but that would be a lot slower. 97 if (!wePointer )103 if (!wePointer || !this->owner_) 98 104 { 99 CCOUT(4) << "Cannot display a non-WorldEntitiy on the radar" << std::endl; 105 if (!wePointer) 106 CCOUT(2) << "Cannot display a non-WorldEntitiy on the radar" << std::endl; 107 if (!this->owner_) 108 CCOUT(2) << "No owner defined" << std::endl; 100 109 return; 101 110 } 102 */ 111 103 112 // try to find a panel already created 104 113 Ogre::PanelOverlayElement* panel; … … 112 121 // get right material 113 122 panel->setMaterialName(TextureGenerator::getMaterialName( 114 shapeMaterials_[object->getRadarObject Type()], object->getRadarObjectColour()));123 shapeMaterials_[object->getRadarObjectShape()], object->getRadarObjectColour())); 115 124 this->overlay_->add2D(panel); 116 125 this->itRadarDots_ = this->radarDots_.end(); … … 121 130 ++itRadarDots_; 122 131 std::string materialName = TextureGenerator::getMaterialName( 123 shapeMaterials_[object->getRadarObject Type()], object->getRadarObjectColour());132 shapeMaterials_[object->getRadarObjectShape()], object->getRadarObjectColour()); 124 133 if (materialName != panel->getMaterialName()) 125 134 panel->setMaterialName(materialName); 126 135 } 127 136 panel->show(); 128 /* 137 129 138 // set size to fit distance... 130 float distance = (wePointer->getWorldPosition() - SpaceShip::getLocalShip()->getPosition()).length();139 float distance = (wePointer->getWorldPosition() - this->owner_->getPosition()).length(); 131 140 // calculate the size with 1/distance dependency for simplicity (instead of exp(-distance * lambda) 132 141 float size = maximumDotSize_ * halfDotSizeDistance_ / (halfDotSizeDistance_ + distance); … … 134 143 135 144 // calc position on radar... 136 Vector2 coord = get2DViewcoordinates( SpaceShip::getLocalShip()->getPosition(), SpaceShip::getLocalShip()->getDir(), SpaceShip::getLocalShip()->getOrth(), wePointer->getWorldPosition());145 Vector2 coord = get2DViewcoordinates(this->owner_->getPosition(), this->owner_->getOrientation() * WorldEntity::FRONT, this->owner_->getOrientation() * WorldEntity::UP, wePointer->getWorldPosition()); 137 146 coord *= Ogre::Math::PI / 3.5; // small adjustment to make it fit the texture 138 147 panel->setPosition((1.0 + coord.x - size) * 0.5, (1.0 - coord.y - size) * 0.5); … … 144 153 this->marker_->setPosition((1.0 + coord.x - size * 1.5) * 0.5, (1.0 - coord.y - size * 1.5) * 0.5); 145 154 } 146 */147 155 } 148 156 … … 154 162 this->marker_->hide(); 155 163 } 164 165 void HUDRadar::changedOwner() 166 { 167 SUPER(HUDRadar, changedOwner); 168 169 this->owner_ = dynamic_cast<Pawn*>(this->getOwner()); 170 } 156 171 } -
code/branches/objecthierarchy2/src/orxonox/overlays/hud/HUDRadar.h
r2087 r2256 49 49 50 50 virtual void XMLPort(Element& xmlElement, XMLPort::Mode mode); 51 virtual void changedOwner(); 51 52 52 53 private: … … 76 77 77 78 float sensitivity_; 79 80 Pawn* owner_; 78 81 }; 79 82 } -
code/branches/objecthierarchy2/src/orxonox/overlays/hud/HUDSpeedBar.cc
r2087 r2256 31 31 #include "HUDSpeedBar.h" 32 32 #include "core/CoreIncludes.h" 33 #include "objects/worldentities/pawns/SpaceShip.h" 34 #include "objects/items/Engine.h" 33 35 34 36 namespace orxonox … … 41 43 RegisterObject(HUDSpeedBar); 42 44 45 this->owner_ = 0; 43 46 } 44 47 … … 49 52 void HUDSpeedBar::tick(float dt) 50 53 { 51 /* 52 SpaceShip* ship = SpaceShip::getLocalShip(); 53 if (ship) 54 if (this->owner_ && this->owner_->getEngine()) 54 55 { 55 float v = ship->getVelocity().length();56 float value = v / ship->getMaxSpeed();56 float v = this->owner_->getVelocity().length(); 57 float value = v / (this->owner_->getEngine()->getMaxSpeedFront() * this->owner_->getEngine()->getSpeedFactor() * this->owner_->getEngine()->getBoostFactor()); 57 58 if (value != this->getValue()) 58 59 this->setValue(value); 59 60 } 60 */ 61 } 62 63 void HUDSpeedBar::changedOwner() 64 { 65 SUPER(HUDSpeedBar, changedOwner); 66 67 this->owner_ = dynamic_cast<SpaceShip*>(this->getOwner()); 61 68 } 62 69 } -
code/branches/objecthierarchy2/src/orxonox/overlays/hud/HUDSpeedBar.h
r2087 r2256 45 45 46 46 virtual void tick(float dt); 47 virtual void changedOwner(); 48 49 private: 50 SpaceShip* owner_; 47 51 }; 48 52 }
Note: See TracChangeset
for help on using the changeset viewer.