Changeset 222

Show
Ignore:
Timestamp:
03/16/08 15:06:02 (4 months ago)
Author:
mattn
Message:

* added three new filter types for quake2 surface and content flags
* fixed ufoai level filters

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • GtkRadiant/branches/ZeroRadiant/contrib/ufoai/ufoai_filters.cpp

    r220 r222  
    1111void UFOAIFilterInit (void) 
    1212{ 
     13        // texture name filters 
    1314        filters[FILTER_ACTORCLIP] = FilterAdd(1, 0, "actorclip", 0); 
    1415        filters[FILTER_WEAPONCLIP] = FilterAdd(1, 0, "weaponclip", 0); 
     
    1617        filters[FILTER_STEPON] = FilterAdd(1, 0, "stepon", 0); 
    1718 
    18         filters[FILTER_LEVEL1] = FilterAdd(2, UFOAI_CONTENTS_LEVEL_1, "level1", 0); 
    19         filters[FILTER_LEVEL2] = FilterAdd(2, UFOAI_CONTENTS_LEVEL_2, "level2", 0); 
    20         filters[FILTER_LEVEL3] = FilterAdd(2, UFOAI_CONTENTS_LEVEL_3, "level3", 0); 
    21         filters[FILTER_LEVEL4] = FilterAdd(2, UFOAI_CONTENTS_LEVEL_4, "level4", 0); 
    22         filters[FILTER_LEVEL5] = FilterAdd(2, UFOAI_CONTENTS_LEVEL_5, "level5", 0); 
    23         filters[FILTER_LEVEL6] = FilterAdd(2, UFOAI_CONTENTS_LEVEL_6, "level6", 0); 
    24         filters[FILTER_LEVEL7] = FilterAdd(2, UFOAI_CONTENTS_LEVEL_7, "level7", 0); 
    25         filters[FILTER_LEVEL8] = FilterAdd(2, UFOAI_CONTENTS_LEVEL_8, "level8", 0); 
     19        // content flag filters 
     20        filters[FILTER_LEVEL1] = FilterAdd(7, UFOAI_CONTENTS_LEVEL_1, "level1", 0); 
     21        filters[FILTER_LEVEL2] = FilterAdd(7, UFOAI_CONTENTS_LEVEL_2, "level2", 0); 
     22        filters[FILTER_LEVEL3] = FilterAdd(7, UFOAI_CONTENTS_LEVEL_3, "level3", 0); 
     23        filters[FILTER_LEVEL4] = FilterAdd(7, UFOAI_CONTENTS_LEVEL_4, "level4", 0); 
     24        filters[FILTER_LEVEL5] = FilterAdd(7, UFOAI_CONTENTS_LEVEL_5, "level5", 0); 
     25        filters[FILTER_LEVEL6] = FilterAdd(7, UFOAI_CONTENTS_LEVEL_6, "level6", 0); 
     26        filters[FILTER_LEVEL7] = FilterAdd(7, UFOAI_CONTENTS_LEVEL_7, "level7", 0); 
     27        filters[FILTER_LEVEL8] = FilterAdd(7, UFOAI_CONTENTS_LEVEL_8, "level8", 0); 
    2628 
    2729        Sys_Printf("UFO:AI Filters initialized\n"); 
     
    3739        if (filters[type]->active) { 
    3840                filters[type]->active = false; 
    39                 Sys_Printf("filter %i deactivated\n", type); 
     41                //Sys_Printf("filter %i deactivated (mask %i 0x%x)\n", type, filters[type]->mask, filters[type]->mask); 
    4042        } else { 
    4143                filters[type]->active = true; 
    42                 Sys_Printf("filter %i activated\n", type); 
     44                //Sys_Printf("filter %i activated (mask %i 0x%x)\n", type, filters[type]->mask, filters[type]->mask); 
    4345        } 
    4446 
  • GtkRadiant/branches/ZeroRadiant/include/qertypes.h

    r183 r222  
    754754                                                        // 3=brush->owner->eclass->name 
    755755                                                        // 4=brush->owner->eclass->nShowFlags 
     756                                                        // 5=brush->face->texdef.flags (q2) 
     757                                                        // 6=brush->face->texdef.contents (q2) 
    756758        int             mask; 
    757759        char    *string; 
  • GtkRadiant/branches/ZeroRadiant/radiant/filters.cpp

    r208 r222  
    3535// type 2 = QER_* shader flags 
    3636// type 4 = entity classes 
     37// type 5 = surface flags (q2) 
     38// type 6 = content flags (q2) 
     39// type 7 = content flags - no match (q2) 
    3740bfilter_t *FilterAdd(bfilter_t *pFilter, int type, int bmask, char *str, int exclude) 
    3841{ 
     
    4144        pNew->attribute = type; 
    4245        if (type == 1 || type == 3) pNew->string = str; 
    43         if (type == 2 || type == 4) pNew->mask = bmask; 
     46        if (type == 2 || type == 4 || type == 5 || type == 6 || type == 7) pNew->mask = bmask; 
    4447        if (g_qeglobals.d_savedinfo.exclude & exclude) 
    4548                pNew->active = true; 
     
    165168                        filters = filters->next) 
    166169                        { 
     170                                if (!filters->active) 
     171                                        continue; 
    167172                                // exclude by attribute 1 brush->face->pShader->getName() 
    168                                 if (filters->active && filters->attribute == 1) 
     173                                if (filters->attribute == 1) 
    169174                                { 
    170175                                        if (strstr(f->pShader->getName(),filters->string)) 
     
    175180                                } 
    176181                                // exclude by attribute 2 brush->face->pShader->getFlags() 
    177                                 else if (filters->active 
    178                                         && filters->attribute == 2) 
     182                                else if (filters->attribute == 2) 
    179183                                { 
    180184                                        if (f->pShader->getFlags() & filters->mask) 
     185                                        { 
     186                                                filterbrush=true; 
     187                                                break; 
     188                                        } 
     189                                // quake2 - 5 == surface flags, 6 == content flags  
     190                                } 
     191                                else if (filters->attribute == 5) 
     192                                { 
     193                                        if (f->texdef.flags && f->texdef.flags & filters->mask) 
     194                                        { 
     195                                                filterbrush=true; 
     196                                                break; 
     197                                        } 
     198                                } 
     199                                else if (filters->attribute == 6) 
     200                                { 
     201                                        if (f->texdef.contents && f->texdef.contents & filters->mask) 
     202                                        { 
     203                                                filterbrush=true; 
     204                                                break; 
     205                                        } 
     206                                } 
     207                                else if (filters->attribute == 7) 
     208                                { 
     209                                        if (f->texdef.contents && !(f->texdef.contents & filters->mask)) 
    181210                                        { 
    182211                                                filterbrush=true;