Exemple #1
0
bool getentboundingbox(const extentity &e, ivec &o, ivec &r)
{
    switch(e.type)
    {
        case ET_EMPTY:
            return false;
        case ET_MAPMODEL:
        {
            model *m = loadmapmodel(e.attrs[0]);
            if(m)
            {
                vec center, radius;
                mmboundbox(e, m, center, radius);
                center.add(e.o);
                radius.max(entselradius);
                o = ivec(vec(center).sub(radius));
                r = ivec(vec(center).add(radius).add(1));
                break;
            }
        }
        // invisible mapmodels use entselradius
        default:
            o = ivec(vec(e.o).sub(entselradius));
            r = ivec(vec(e.o).add(entselradius+1));
            break;
    }
    return true;
}
Exemple #2
0
bool getentboundingbox(const extentity &e, ivec &o, ivec &r)
{
    switch(e.type)
    {
        case ET_EMPTY:
            return false;
        case ET_DECAL:
            {
                DecalSlot &s = lookupdecalslot(e.attr1, false);
                vec center, radius;
                decalboundbox(e, s, center, radius);
                center.add(e.o);
                radius.max(entselradius);
                o = vec(center).sub(radius);
                r = vec(center).add(radius).add(1);
                break;
            }
        case ET_MAPMODEL:
            if(model *m = loadmapmodel(e.attr1))
            {
                vec center, radius;
                mmboundbox(e, m, center, radius);
                center.add(e.o);
                radius.max(entselradius);
                o = vec(center).sub(radius);
                r = vec(center).add(radius).add(1);
                break;
            }
        // invisible mapmodels use entselradius
        default:
            o = vec(e.o).sub(entselradius);
            r = vec(e.o).add(entselradius+1);
            break;
    }
    return true;
}