Homepage
Demos
Overview
Downloads
Dev. Resources
Reference
Credits

BehaviorBase.cc

Go to the documentation of this file.
00001 #include "BehaviorBase.h"
00002 #include "Events/EventRouter.h"
00003 
00004 std::set<BehaviorBase*> BehaviorBase::registry;
00005 
00006 BehaviorBase::BehaviorBase(const std::string& name)
00007   : ReferenceCounter(), EventListener(), started(false),
00008     instanceName(name), className(name)
00009 {
00010   registry.insert(this);
00011 }
00012 
00013 BehaviorBase::BehaviorBase(const std::string& classname, const std::string& instancename)
00014   : ReferenceCounter(), EventListener(), started(false),
00015     instanceName(instancename), className(classname)
00016 {
00017   registry.insert(this);
00018 }
00019 
00020 
00021 BehaviorBase::BehaviorBase(const BehaviorBase& b)
00022   : ReferenceCounter(b), EventListener(b), started(b.started),
00023     instanceName(b.instanceName), className(b.className)
00024 {
00025   registry.insert(this);
00026 }
00027 
00028 BehaviorBase&
00029 BehaviorBase::operator=(const BehaviorBase& b) {
00030   ReferenceCounter::operator=(b);
00031   EventListener::operator=(b);
00032   started=b.started;
00033   instanceName=b.instanceName;
00034   return *this;
00035 }
00036 
00037 BehaviorBase::~BehaviorBase() {
00038   SetAutoDelete(false);
00039   if(started)
00040     std::cerr << "Behavior " << getName() << " deleted while running: use 'RemoveReference', not 'delete'" << std::endl;
00041   erouter->removeListener(this);
00042   registry.erase(this);
00043 }
00044 
00045 void
00046 BehaviorBase::DoStart() {
00047   //std::cout << getName() << " started " << this << std::endl;
00048   if(!started) {
00049     started=true;
00050     AddReference();
00051   }
00052 }
00053 
00054 void
00055 BehaviorBase::DoStop() {
00056   //std::cout << getName() << " stopped " << this << std::endl;
00057   if(started) {
00058     started=false;
00059     erouter->removeListener(this);
00060     erouter->removeTimer(this);
00061     RemoveReference();
00062   }
00063 }
00064 
00065 /*! @file
00066  * @brief Implements BehaviorBase from which all Behaviors should inherit
00067  * @author ejt (Creator)
00068  *
00069  * $Author: ejt $
00070  * $Name: tekkotsu-2_4_1 $
00071  * $Revision: 1.9 $
00072  * $State: Exp $
00073  * $Date: 2005/07/07 22:33:51 $
00074  */
00075 

Tekkotsu v2.4.1
Generated Tue Aug 16 16:32:46 2005 by Doxygen 1.4.4