Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 5, 2014, 4:04:51 PM (10 years ago)
Author:
aejonas
Message:

new way to display the healthbar on the screen (in a similar way like the existing ship marker)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/hudHS14/src/modules/overlays/hud/HUDNavigation.cc

    r9939 r10110  
    298298                    if (!it->second.wasOutOfView_)
    299299                    {
    300                         it->second.panel_->setMaterialName(TextureGenerator::getMaterialName("arrows.png", it->first->getRadarObjectColour()));
     300                        it->second.health_->hide();
     301                        it->second.panel_->setMaterialName(TextureGenerator::getMaterialName("arrows.png", it->first->getRadarObjectColour()));
    301302                        it->second.wasOutOfView_ = true;
    302303                        it->second.target_->hide();
     
    364365                        it->second.panel_->setDimensions(this->navMarkerSize_ * this->getActualSize().x, this->navMarkerSize_ * this->getActualSize().y);
    365366                        it->second.target_->setDimensions(this->aimMarkerSize_ * this->getActualSize().x, this->aimMarkerSize_ * this->getActualSize().y);
     367
     368                        //manipulation bzw versuch !!! Jonas
     369                        it->second.health_->setMaterialName(TextureGenerator::getMaterialName("bar2b.png", it->first->getRadarObjectColour()));
     370
    366371                        it->second.wasOutOfView_ = false;
    367372                    }
     373
     374                    // Position health (versuch !!!!)
     375                    it->second.health_->setLeft((pos.x + 1.0f - it->second.panel_->getWidth()) * 0.5f);
     376                    it->second.health_->setTop((-pos.y + 1.0f - it->second.panel_->getHeight()) * 0.5f);
     377
    368378
    369379                    // Position marker
     
    377387
    378388                    // Make sure the overlays are shown
     389
     390                    it->second.health_->show();
    379391                    it->second.panel_->show();
    380392                    it->second.text_->show();
     
    419431
    420432            {
     433                it->second.health_->hide()
    421434                it->second.panel_->hide();
    422435                it->second.text_->hide();
     
    442455        for (std::map<RadarViewable*, ObjectInfo>::iterator it = this->activeObjectList_.begin(); it != this->activeObjectList_.end(); ++it)
    443456        {
     457                if (it->second.health_ != NULL)
     458                    it->second.health_->setDimensions(this->healthMarkerSize_ * xScale, this->healthMarkerSize_ * yScale);
    444459            if (it->second.panel_ != NULL)
    445460                it->second.panel_->setDimensions(this->navMarkerSize_ * xScale, this->navMarkerSize_ * yScale);
     
    468483
    469484        // Create everything needed to display the object on the radar and add it to the map
     485        // Create health
     486                Ogre::PanelOverlayElement* health = static_cast<Ogre::PanelOverlayElement*>( Ogre::OverlayManager::getSingleton()
     487                        .createOverlayElement("Panel", "HUDNavigation_healthMarker_" + getUniqueNumberString()));
     488                //panel->setMaterialName("Orxonox/NavTDC");
     489                health->setMaterialName(TextureGenerator::getMaterialName("bar2b.png", object->getRadarObjectColour()));
     490                health->setDimensions(this->healthMarkerSize_ * xScale, this->healthMarkerSize_ * yScale);
     491                //panel->setColour(object->getRadarObjectColour());
     492
    470493
    471494        // Create arrow/marker
     
    490513        text->setColour(object->getRadarObjectColour());
    491514
     515        health->hide();
    492516        panel->hide();
    493517        target->hide();
     
    495519
    496520        ObjectInfo tempStruct =
    497         {   panel, target, text, false, false, false};
     521        {   health, panel, target, text, false, false, false, false};
    498522        this->activeObjectList_[object] = tempStruct;
    499523
     524        this->background_->addChild(health);
    500525        this->background_->addChild(panel);
    501526        this->background_->addChild(target);
     
    512537        {
    513538            // Detach overlays
     539                this->background_->removeChild(it->second.health_->getName());
    514540            this->background_->removeChild(it->second.panel_->getName());
    515541            this->background_->removeChild(it->second.target_->getName());
    516542            this->background_->removeChild(it->second.text_->getName());
    517543            // Properly destroy the overlay elements (do not use delete!)
     544            Ogre::OverlayManager::getSingleton().destroyOverlayElement(it->second.health_);
    518545            Ogre::OverlayManager::getSingleton().destroyOverlayElement(it->second.panel_);
    519546            Ogre::OverlayManager::getSingleton().destroyOverlayElement(it->second.target_);
Note: See TracChangeset for help on using the changeset viewer.