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)

Location:
code/branches/hudHS14/src/modules/overlays/hud
Files:
4 edited

Legend:

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

    r9667 r10110  
    3131#include "core/config/ConfigValueIncludes.h"
    3232#include "worldentities/pawns/Pawn.h"
     33#include "graphics/Camera.h"
    3334
    3435namespace orxonox
     
    5758        this->updateTarget();
    5859
     60
     61
     62
     63/*
     64        //--------------------------------------------------------------------------
     65        //first try to place a healthbar under the enemy ship
     66        //getting all the parameters (direction, position, angle) to place the health bar on the screen
     67
     68        Camera* camera = this->owner_->getCamera();
     69
     70        //position and orientation relative to the root space
     71        Vector3 cameraPosition = camera->getWorldPosition();
     72        Quaternion cameraOrientation = camera->getWorldOrientation();
     73
     74        Vector3 cameraDirection = camera->FRONT;
     75        Vector3 cameraOrthonormal = camera->UP;
     76
     77        //get target
     78        //if there is one get it's position (relative to the root space(
     79        WorldEntity* target = this->owner_->getTarget();
     80
     81        if(target != NULL){
     82        Vector3 targetPosition = target->getWorldPosition();
     83
     84
     85        //try 1
     86        Vector2 screenCoordinates = get2DViewcoordinates(cameraPosition, cameraOrientation * WorldEntity::FRONT, cameraOrientation * WorldEntity::UP, targetPosition);
     87
     88        orxout() << screenCoordinates.x << endl;
     89
     90        //shift coordinates because the screen has it's root in the upper left corner (0,0) but get2Dviewcoordiantes return values between -0.5 and 0.5
     91        screenCoordinates.x += 0.5;
     92        screenCoordinates.y += 0.5;
     93        orxout() << screenCoordinates.x << endl;
     94
     95        this->setPosition(screenCoordinates);
     96
     97        this->setTextOffset(screenCoordinates);
     98
     99
     100
     101
     102
     103        }
     104
     105        //--------------------------------------------------------------------------
     106*/
     107
     108
    59109        SUPER(HUDEnemyHealthBar, tick, dt);
    60110    }
     
    71121                target = target->getParent();
    72122            pawn = orxonox_cast<Pawn*>(target);
     123
     124
     125
     126            /*Vector3 tempPosition = target->getWorldPosition();
     127            Vector2 tempPos2D = Vector2(tempPosition.x, tempPosition.y);
     128                     this->pickPoint_(tempPos2D);
     129                     this->position_(tempPos2D);*/
     130
     131
    73132            // Don't show the HealthBar if the pawn is invisible
    74133            if (pawn && !pawn->isVisible())
    75134                pawn = NULL;
    76135        }
     136
    77137        // Set the pawn as owner of the HealthBar
    78138        this->setHealthBarOwner(pawn);
  • code/branches/hudHS14/src/modules/overlays/hud/HUDHealthBar.cc

    r9667 r10110  
    8383        SUPER(HUDHealthBar, tick, dt);
    8484
     85
     86
     87
     88
    8589        if (this->owner_)
    8690        {
  • 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_);
  • code/branches/hudHS14/src/modules/overlays/hud/HUDNavigation.h

    r9667 r10110  
    7777            struct ObjectInfo
    7878            {
    79                 Ogre::PanelOverlayElement* panel_;
     79
     80                //manipulation bzw versuch !!! Jonas
     81                Ogre::PanelOverlayElement* health_;
     82
     83                Ogre::PanelOverlayElement* panel_;
    8084                Ogre::PanelOverlayElement* target_;
    8185                Ogre::TextAreaOverlayElement* text_;
Note: See TracChangeset for help on using the changeset viewer.