Ejemplo n.º 1
0
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 );
        }
    }    
}
Ejemplo n.º 2
0
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 );
        }
    }    
}
Ejemplo n.º 3
0
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
}
Ejemplo n.º 4
0
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
}
Ejemplo n.º 5
0
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);
        }
    }
}