void DestroyAllTrees()
	{
		IObjectFactorySystem* pFactory = PerModuleInterface::GetInstance()->GetSystemTable()->pObjectFactorySystem;
		TTreeMap::iterator it = m_trees.begin();
		TTreeMap::iterator itEnd = m_trees.end();
		while (it != itEnd)
		{
			IObject* pObj = pFactory->GetObject(it->second);
			delete pObj;
			++it;
		}
	}
Пример #2
0
	void DestroyBlackboardIndividualCommon( ObjectId id )
	{
		TIndividualMap::iterator it = m_BlackboardIndividualCommon.find(id);
		if (it != m_BlackboardIndividualCommon.end())
		{
			IObjectFactorySystem* pFactory = PerModuleInterface::g_pSystemTable->pObjectFactorySystem;
			IObject* pObj = pFactory->GetObject(it->second);
			delete pObj;

			m_BlackboardIndividualCommon.erase(it);
		}
	}
	void DoDestroyGameObject( ObjectId id )
	{
		IObjectFactorySystem* pFactory = PerModuleInterface::g_pSystemTable->pObjectFactorySystem;
		IObject* pObj = pFactory->GetObject(id);
		if (pObj)
		{
			IGameObject* pGameObject = 0;
			IObjectUtils::GetObject( &pGameObject, pObj->GetObjectId() );

			// Notify any listeners that object is about to be destroyed
			for (size_t i=0; i<m_Listeners.size(); ++i)
			{
				m_Listeners[i]->OnGameObjectAboutToDestroy(pGameObject);
			}

			m_GameObjects[pGameObject->GetGameObjectType()].erase(pGameObject);
			IObjectUtils::DestroyObjectAndEntity( pGameObject->GetEntityId() );
		}
	}
Пример #4
0
	void DestroyAllBlackboards()
	{
		IObjectFactorySystem* pFactory = PerModuleInterface::g_pSystemTable->pObjectFactorySystem;
		IObject* pObj = 0;

		delete m_pBlackboardGlobal;
		m_pBlackboardGlobal = 0;

		for (int i=0; i<EGT_COUNT; ++i)
		{
			pObj = pFactory->GetObject(m_BlackboardTeam[i]);
			delete pObj;
			m_BlackboardTeam[i] = ObjectId();
		}

		for (int i=0; i<EGO_COUNT; ++i)
		{	
			pObj = pFactory->GetObject(m_BlackboardGroup[i]);
			delete pObj;
			m_BlackboardGroup[i] = ObjectId();
		}

		TIndividualMap::iterator it = m_BlackboardIndividual.begin();
		TIndividualMap::iterator itEnd = m_BlackboardIndividual.end();
		while (it != itEnd)
		{
			pObj = pFactory->GetObject(it->second);
			delete pObj;
			++it;
		}
		m_BlackboardIndividual.clear();

		it = m_BlackboardIndividualCommon.begin();
		itEnd = m_BlackboardIndividualCommon.end();
		while (it != itEnd)
		{
			pObj = pFactory->GetObject(it->second);
			delete pObj;
			++it;
		}
		m_BlackboardIndividualCommon.clear();
	}