Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 7090


Ignore:
Timestamp:
Jun 2, 2010, 9:44:22 PM (14 years ago)
Author:
dafrick
Message:

Merged ppspickups4 branch.

Location:
code/branches/presentation3
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • code/branches/presentation3

  • code/branches/presentation3/src/modules/pickup/items/InvisiblePickup.cc

    r6755 r7090  
    4343#include <sstream>
    4444
     45#include <OgreEntity.h>
     46#include <Ogre.h>
     47
    4548namespace orxonox
    4649{
    4750
    4851    CreateFactory(InvisiblePickup);
    49    
     52
    5053    /**
    5154    @brief
     
    5659        RegisterObject(InvisiblePickup);
    5760        //! Defines who is allowed to pick up the pickup.
    58         this->initialize(); 
    59     }
    60    
     61        this->initialize();
     62    }
     63
    6164    /**
    6265    @brief
     
    6467    */
    6568    InvisiblePickup::~InvisiblePickup()
    66     {       
    67     }
    68    
    69    
     69    {
     70    }
     71
     72
    7073    void InvisiblePickup::initializeIdentifier(void)
    7174    {
     
    7679        this->pickupIdentifier_->addParameter(type1, val1);
    7780    }
    78    
     81
    7982    /**
    8083    @brief
     
    9396    void InvisiblePickup::XMLPort(Element& xmlelement, orxonox::XMLPort::Mode mode)
    9497    {
    95         SUPER(InvisiblePickup, XMLPort, xmlelement, mode);   
     98        SUPER(InvisiblePickup, XMLPort, xmlelement, mode);
    9699        XMLPortParam(InvisiblePickup, "duration", setDuration, getDuration, xmlelement, mode);
    97        
     100
    98101        this->initializeIdentifier();
    99102    }
    100    
     103
    101104    /**
    102105    @brief
     
    106109    {
    107110        SUPER(InvisiblePickup, changedUsed);
    108        
     111
    109112        //! If the pickup is not picked up nothing must be done.
    110113        if(!this->isPickedUp())
    111114            return;
    112        
     115
    113116        if (this->isUsed())
    114117        {
     
    121124                this->startPickupTimer(this->getDuration());
    122125            }
     126
    123127            this->setInvisible(true);
     128
    124129        }
    125130        else
    126131        {
    127132            this->setInvisible(false);
    128        
     133
    129134            if(!this->getTimer()->isActive() && this->getTimer()->getRemainingTime() == this->getDuration())
    130135            {
     
    136141            }
    137142        }
    138        
    139     }
    140    
     143
     144    }
     145
    141146    /**
    142147    @brief
     
    149154        PickupCarrier* carrier = this->getCarrier();
    150155        Pawn* pawn = dynamic_cast<Pawn*>(carrier);
    151        
     156
    152157        if(pawn == NULL)
    153158        {
     
    156161        return pawn;
    157162    }
    158    
     163
    159164    /**
    160165    @brief
     
    167172        if(item == NULL)
    168173            item = new InvisiblePickup(this);
    169        
     174
    170175        SUPER(InvisiblePickup, clone, item);
    171        
     176
    172177        InvisiblePickup* pickup = dynamic_cast<InvisiblePickup*>(item);
    173178        pickup->setDuration(this->getDuration());
    174179        pickup->initializeIdentifier();
    175180    }
    176    
     181
    177182    /**
    178183    @brief
     
    186191        if(pawn == NULL)
    187192            return false;
    188        
     193
    189194        pawn->setVisible(!invisibility);
     195        pawn->setRadarVisibility(!invisibility);
     196
     197// Test to change Material at runtime!
     198
     199//      Ogre::MaterialPtr mat = this->mesh_.getEntity()->getSubEntity(0)->getMaterial();
     200//      mat->setDiffuse(0.4, 0.3, 0.1, 0.1);
     201//      mat->setAmbient(0.3, 0.7, 0.8);
     202//      mat->setSpecular(0.5, 0.5, 0.5, 0.1);
     203//      Ogre::SceneBlendType sbt = Ogre::SBT_ADD;
     204//
     205//      mat->setSceneBlending(sbt);
     206
    190207        return true;
    191208    }
    192    
     209
    193210    /**
    194211    @brief
     
    209226        }
    210227    }
    211    
     228
    212229    void InvisiblePickup::pickupTimerCallback(void)
    213230    {
  • code/branches/presentation3/src/orxonox/controllers/AIController.cc

    r7066 r7090  
    3333#include "core/Executor.h"
    3434#include "worldentities/ControllableEntity.h"
     35#include "worldentities/pawns/Pawn.h"
    3536
    3637namespace orxonox
     
    210211            {
    211212                if (this->target_)
    212                     this->aimAtTarget();
     213                {
     214                                if (!this->target_->getRadarVisibility()) /* So AI won't shoot invisible Spaceships */
     215                        this->forgetTarget();
     216                else this->aimAtTarget();
     217            }
    213218
    214219                if (this->bHasTargetPosition_)
     
    239244        {
    240245            if (this->target_)
    241                 this->aimAtTarget();
     246            {
     247                                if (!this->target_->getRadarVisibility()) /* So AI won't shoot invisible Spaceships */
     248                        this->forgetTarget();
     249                else this->aimAtTarget();
     250            }
    242251
    243252            if (this->bHasTargetPosition_)
  • code/branches/presentation3/src/orxonox/controllers/ArtificialController.cc

    r7066 r7090  
    760760                continue;
    761761
     762            /* So AI won't choose invisible Spaceships as target */
     763            if (!it->getRadarVisibility())
     764                continue;
     765
    762766            if (static_cast<ControllableEntity*>(*it) != this->getControllableEntity())
    763767            {
Note: See TracChangeset for help on using the changeset viewer.