Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

file 128 lines (89 sloc) 2.72 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
#include "pch.h"
#include "ActiveContainerManager.h"
#include "ActiveContainer.h"

template<> ActiveContainerManager*
Ogre::Singleton<ActiveContainerManager>::ms_Singleton=NULL;


//------------------------------------------------------------------
ActiveContainerManager::ActiveContainerManager()
{

}


//------------------------------------------------------------------
ActiveContainerManager::~ActiveContainerManager()
{

}


//------------------------------------------------------------------
bool ActiveContainerManager::addContainer(ActiveContainer* pContainer)
{
assert(pContainer);

AcitveContainerVector::iterator it=std::find(m_AcitveContainerVector.begin(),m_AcitveContainerVector.end(),pContainer);
if(it!=m_AcitveContainerVector.end())
{
return false;
}

it=std::find(m_AddVector.begin(),m_AddVector.end(),pContainer);
if(it!=m_AddVector.end())
{
return false;
}

it=std::find(m_RemoveVector.begin(),m_RemoveVector.end(),pContainer);
if(it!=m_RemoveVector.end())
{
return false;
}


m_AddVector.push_back(pContainer);


return true;


}


//------------------------------------------------------------------
void ActiveContainerManager::update(float time)
{

AcitveContainerVector::iterator itbegin=m_AddVector.begin();
AcitveContainerVector::iterator itend= m_AddVector.end();
for(;itbegin!=itend;++itbegin)
{
(*itbegin)->begin();
m_AcitveContainerVector.push_back(*itbegin);
}
m_AddVector.clear();




itbegin=m_AcitveContainerVector.begin();
itend= m_AcitveContainerVector.end();
for(;itbegin!=itend;++itbegin)
{
if((*itbegin)->updateActive(time)==false)
{
m_RemoveVector.push_back(*itbegin);
}
}


itbegin=m_RemoveVector.begin();
itend= m_RemoveVector.end();
for(;itbegin!=itend;++itbegin)
{
(*itbegin)->end();
AcitveContainerVector::iterator reit=std::find(m_AcitveContainerVector.begin(),m_AcitveContainerVector.end(),(*itbegin));
assert(reit!=m_AcitveContainerVector.end());
m_AcitveContainerVector.erase(reit);

}

m_RemoveVector.clear();




}

//------------------------------------------------------------------
bool ActiveContainerManager::removeContainer(ActiveContainer* pContainer)
{

AcitveContainerVector::iterator it=std::find(m_AcitveContainerVector.begin(),m_AcitveContainerVector.end(),pContainer);
if(it!=m_AcitveContainerVector.end())
{
m_AcitveContainerVector.erase(it);
return true;
}

it=std::find(m_AddVector.begin(),m_AddVector.end(),pContainer);
if(it!=m_AddVector.end())
{
m_AddVector.erase(it);
return true;
}

it=std::find(m_RemoveVector.begin(),m_RemoveVector.end(),pContainer);
if(it!=m_RemoveVector.end())
{
m_RemoveVector.erase(it);
return true;
}

return false;

}
Something went wrong with that request. Please try again.