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; }
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; }