void GrabPool( CPool *pool )
{
    CGMSurfPool *gmsurface = &gmsurf->GetSurfPool<EntType>();
    gmsurface->edicts = Mem_Relloc( gmsurf->mempool, gmsurface->edicts, pool[0]->size * sizeof(edict_t*) );   // Cheak dynamic size

    EntType *ent = ( EntType *) pool[0]->objects;

    for (dword i=0;i<pool[0]->size;i++)
    {
        edict_t *edict = gmsurf->edicts[i];
        IUnknown *unk = edict->pvUnknown;

        if ( !edict->free )
        {
            if ( edict->pvPrivateData != edict->pvUnknown->gameent )
            {
                if ( ent == NULL )   // if not valid
                { unk->Distroy( edict ); edict = NULL }
                else unk->Reconnect( edict );     // Reconnect to ISaveRestore or INetClass subsystem                                                                                                   // edict = Game->ReallocEdict( edict );
            }

            (CVCUnknown*)unk->IsCheak = true;
        }