Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Oct 30, 2010, 1:54:49 PM (14 years ago)
Author:
dafrick
Message:

Adding all classes in modules/objects to Objects module (in doxygen).
Created TriggerBase which is the base class of Trigger and MultiTrigger and now provides the shared functionality and data.
Updated some of the documentation in MultiTrigger and Script.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/trunk/src/modules/objects/triggers/Trigger.cc

    r7284 r7601  
    2626 *
    2727 */
     28
     29/**
     30    @file Trigger.cc
     31    @brief Implementation of the Trigger class.
     32    @ingroup NormalTrigger
     33*/
    2834
    2935#include "Trigger.h"
     
    4248  CreateFactory(Trigger);
    4349
    44   Trigger::Trigger(BaseObject* creator) : StaticEntity(creator)
     50  Trigger::Trigger(BaseObject* creator) : TriggerBase(creator)
    4551  {
    4652    RegisterObject(Trigger);
    4753
    48     this->mode_ = TriggerMode::EventTriggerAND;
    49 
    50     this->bFirstTick_ = true;
    5154    this->bActive_ = false;
    5255    this->bTriggered_ = false;
    5356    this->latestState_ = 0x0;
    5457
    55     this->bInvertMode_ = false;
    56     this->bSwitch_ = false;
    57     this->bStayActive_ = false;
    58     this->delay_ = 0.0f;
    5958    this->remainingTime_ = 0.0f;
    6059    this->timeSinceLastEvent_ = 0.0f;
    61     this->remainingActivations_ = -1;
    6260
    6361//    this->bUpdating_ = false;
     
    8280  {
    8381    SUPER(Trigger, XMLPort, xmlelement, mode);
    84 
    85     XMLPortParam(Trigger, "delay",       setDelay,       getDelay,       xmlelement, mode).defaultValues(0.0f);
    86     XMLPortParam(Trigger, "switch",      setSwitch,      getSwitch,      xmlelement, mode).defaultValues(false);
    87     XMLPortParam(Trigger, "stayactive",  setStayActive,  getStayActive,  xmlelement, mode).defaultValues(false);
    88     XMLPortParam(Trigger, "activations", setActivations, getActivations, xmlelement, mode).defaultValues(-1);
    89     XMLPortParam(Trigger, "invert",      setInvert,      getInvert,      xmlelement, mode).defaultValues(false);
    90     XMLPortParamTemplate(Trigger, "mode", setMode, getModeString, xmlelement, mode, const std::string&).defaultValues("or");
    91 
    92     XMLPortObject(Trigger, Trigger, "", addTrigger, getTrigger, xmlelement, mode);
    9382  }
    9483
    9584  void Trigger::tick(float dt)
    9685  {
    97     if (this->bFirstTick_)
     86    if(this->bFirstTick_)
    9887    {
    9988      this->bFirstTick_ = false;
     
    10796    SUPER(Trigger, tick, dt);
    10897
    109     bool newTriggered = this->isTriggered() ^ this->bInvertMode_;
     98    bool newTriggered = this->isTriggered() ^ this->getInvert();
    11099
    111100    // check if new triggering event is really new
     
    121110      {
    122111        this->latestState_ &= 0xFE; // set trigger bit to 0
    123         if (!this->bSwitch_)
     112        if (!this->getSwitch())
    124113          this->switchState();
    125114      }
     
    145134        this->remainingTime_ = this->stateChanges_.front().first;
    146135      else
    147         this->timeSinceLastEvent_ = this->delay_;
     136        this->timeSinceLastEvent_ = this->getDelay();
    148137    }
    149138
     
    197186  bool Trigger::checkAnd()
    198187  {
    199     std::set<Trigger*>::iterator it;
     188    std::set<TriggerBase*>::iterator it;
    200189    for(it = this->children_.begin(); it != this->children_.end(); ++it)
    201190    {
     
    208197  bool Trigger::checkOr()
    209198  {
    210     std::set<Trigger*>::iterator it;
     199    std::set<TriggerBase*>::iterator it;
    211200    for(it = this->children_.begin(); it != this->children_.end(); ++it)
    212201    {
     
    219208  bool Trigger::checkXor()
    220209  {
    221     std::set<Trigger*>::iterator it;
     210    std::set<TriggerBase*>::iterator it;
    222211    bool test = false;
    223212    for(it = this->children_.begin(); it != this->children_.end(); ++it)
     
    233222  bool Trigger::switchState()
    234223  {
    235     if (( (this->latestState_ & 2) && this->bStayActive_ && (this->remainingActivations_ <= 0))
    236      || (!(this->latestState_ & 2)                       && (this->remainingActivations_ == 0)))
     224    if (( (this->latestState_ & 2) && this->getStayActive() && (this->remainingActivations_ <= 0))
     225     || (!(this->latestState_ & 2)                          && (this->remainingActivations_ == 0)))
    237226      return false;
    238227    else
     
    261250  }
    262251
    263   void Trigger::setDelay(float delay)
    264   {
    265     this->delay_ = delay;
    266     this->timeSinceLastEvent_ = delay;
    267   }
    268 
    269   void Trigger::setMode(const std::string& modeName)
    270   {
    271     if (modeName == "and")
    272       this->setMode(TriggerMode::EventTriggerAND);
    273     else if (modeName == "or")
    274       this->setMode(TriggerMode::EventTriggerOR);
    275     else if (modeName == "xor")
    276       this->setMode(TriggerMode::EventTriggerXOR);
    277   }
    278 
    279   std::string Trigger::getModeString() const
    280   {
    281     if (this->mode_ == TriggerMode::EventTriggerAND)
    282       return "and";
    283     else if (this->mode_ == TriggerMode::EventTriggerOR)
    284       return "or";
    285     else if (this->mode_ == TriggerMode::EventTriggerXOR)
    286       return "xor";
    287     else
    288       return "and";
    289   }
    290 
    291   void Trigger::addTrigger(Trigger* trigger)
    292   {
    293     if (this != trigger)
    294       this->children_.insert(trigger);
    295   }
    296 
    297   const Trigger* Trigger::getTrigger(unsigned int index) const
    298   {
    299     if (this->children_.size() <= index)
    300       return NULL;
    301 
    302     std::set<Trigger*>::const_iterator it;
    303     it = this->children_.begin();
    304 
    305     for (unsigned int i = 0; i != index; ++i)
    306       ++it;
    307 
    308     return (*it);
     252  void Trigger::delayChanged(void)
     253  {
     254    this->timeSinceLastEvent_ = this->getDelay();
    309255  }
    310256
Note: See TracChangeset for help on using the changeset viewer.