void CElement::GetEntitiesFromRoot ( unsigned int uiTypeHash, lua_State* pLua ) { #if CHECK_ENTITIES_FROM_ROOT _CheckEntitiesFromRoot ( uiTypeHash ); #endif t_mapEntitiesFromRoot::iterator find = ms_mapEntitiesFromRoot.find ( uiTypeHash ); if ( find != ms_mapEntitiesFromRoot.end () ) { CFromRootListType& listEntities = find->second; CElement* pEntity; unsigned int uiIndex = 0; for ( CChildListType::const_reverse_iterator i = listEntities.rbegin (); i != listEntities.rend (); ++i ) { pEntity = *i; // Add it to the table lua_pushnumber ( pLua, ++uiIndex ); lua_pushelement ( pLua, pEntity ); lua_settable ( pLua, -3 ); } } }
void CElement::GetEntitiesFromRoot ( unsigned int uiTypeHash, lua_State* pLua ) { #if MTA_DEBUG _CheckEntitiesFromRoot ( uiTypeHash ); #endif t_mapEntitiesFromRoot::iterator find = ms_mapEntitiesFromRoot.find ( uiTypeHash ); if ( find != ms_mapEntitiesFromRoot.end () ) { const std::list < CElement* >& listEntities = find->second; CElement* pEntity; unsigned int uiIndex = 0; for ( std::list < CElement* >::const_reverse_iterator i = listEntities.rbegin (); i != listEntities.rend (); ++i ) { pEntity = *i; // Add it to the table lua_pushnumber ( pLua, ++uiIndex ); lua_pushelement ( pLua, pEntity ); lua_settable ( pLua, -3 ); } } }
void CElement::AddEntityFromRoot ( unsigned int uiTypeHash, CElement* pEntity, bool bDebugCheck ) { // Check assert ( CElement::IsFromRoot ( pEntity ) ); // Insert into list CFromRootListType& listEntities = ms_mapEntitiesFromRoot [ uiTypeHash ]; listEntities.remove ( pEntity ); listEntities.push_front ( pEntity ); // Apply to child elements as well CChildListType ::const_iterator iter = pEntity->IterBegin (); for ( ; iter != pEntity->IterEnd (); iter++ ) CElement::AddEntityFromRoot ( (*iter)->GetTypeHash (), *iter, false ); #if CHECK_ENTITIES_FROM_ROOT if ( bDebugCheck ) _CheckEntitiesFromRoot ( uiTypeHash ); #endif }
void CElement::AddEntityFromRoot ( unsigned int uiTypeHash, CElement* pEntity, bool bDebugCheck ) { // Check assert ( CElement::IsFromRoot ( pEntity ) ); // Insert into list std::list < CElement* >& listEntities = ms_mapEntitiesFromRoot [ uiTypeHash ]; listEntities.remove ( pEntity ); listEntities.push_front ( pEntity ); // Apply to child elements as well list < CElement* > ::const_iterator iter = pEntity->IterBegin (); for ( ; iter != pEntity->IterEnd (); iter++ ) CElement::AddEntityFromRoot ( (*iter)->GetTypeHash (), *iter, false ); #if MTA_DEBUG if ( bDebugCheck ) _CheckEntitiesFromRoot ( uiTypeHash ); #endif }
void CElement::GetEntitiesFromRoot(unsigned int uiTypeHash, std::vector<CElement*>& outResult) { #if CHECK_ENTITIES_FROM_ROOT _CheckEntitiesFromRoot(uiTypeHash); #endif t_mapEntitiesFromRoot::iterator find = ms_mapEntitiesFromRoot.find(uiTypeHash); if (find != ms_mapEntitiesFromRoot.end()) { CFromRootListType& listEntities = find->second; CElement* pEntity; for (CChildListType::const_reverse_iterator i = listEntities.rbegin(); i != listEntities.rend(); ++i) { pEntity = *i; // Add it to the result outResult.push_back(pEntity); } } }