diff options
| author | xolatile | 2025-07-17 23:28:55 +0200 |
|---|---|---|
| committer | xolatile | 2025-07-17 23:28:55 +0200 |
| commit | c79dda69d6e603500a5681430172b5152041af0a (patch) | |
| tree | c1669442318e77a9ae76009edd5eefcaa69064ce /src/engine | |
| parent | 5b88d873f42b1cad5c5fd03888cfe45b82da06d6 (diff) | |
| download | xolatile-badassbug-c79dda69d6e603500a5681430172b5152041af0a.tar.xz xolatile-badassbug-c79dda69d6e603500a5681430172b5152041af0a.tar.zst | |
Big changed mentioned in IRC channel...
Diffstat (limited to 'src/engine')
| -rw-r--r-- | src/engine/engine.h | 1 | ||||
| -rw-r--r-- | src/engine/engine.h.gch | bin | 0 -> 78745159 bytes | |||
| -rw-r--r-- | src/engine/main.cpp | 5 | ||||
| -rw-r--r-- | src/engine/model.h | 2 | ||||
| -rw-r--r-- | src/engine/physics.cpp | 24 | ||||
| -rw-r--r-- | src/engine/rendergl.cpp | 211 | ||||
| -rw-r--r-- | src/engine/rendermodel.cpp | 80 | ||||
| -rw-r--r-- | src/engine/renderva.cpp | 83 |
8 files changed, 128 insertions, 278 deletions
diff --git a/src/engine/engine.h b/src/engine/engine.h index 9f41f45..efee4cd 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -150,7 +150,6 @@ extern void invalidatepostfx(); extern void gl_drawhud(); extern void gl_drawframe(); extern void gl_drawmainmenu(); -extern void drawminimap(); extern void drawtextures(); extern void enablepolygonoffset(GLenum type); extern void disablepolygonoffset(GLenum type); diff --git a/src/engine/engine.h.gch b/src/engine/engine.h.gch Binary files differnew file mode 100644 index 0000000..372a18b --- /dev/null +++ b/src/engine/engine.h.gch diff --git a/src/engine/main.cpp b/src/engine/main.cpp index f522479..968c8e6 100644 --- a/src/engine/main.cpp +++ b/src/engine/main.cpp @@ -1301,7 +1301,7 @@ int main(int argc, char **argv) logoutf("init: console"); if(!execfile("data/stdlib.cfg", false)) fatal("cannot find data files (you are running from the wrong folder, try .bat file in the main folder)"); // this is the first file we load. - if(!execfile("data/font.cfg", false)) fatal("cannot find font definitions"); + if(!execfile("packages/fonts/default.cfg", false)) fatal("cannot find font definitions"); if(!setfont("default")) fatal("no default font specified"); inbetweenframes = true; @@ -1322,8 +1322,7 @@ int main(int argc, char **argv) execfile("data/menus.cfg"); execfile("data/heightmap.cfg"); execfile("data/blendbrush.cfg"); - defformatstring(gamecfgname, "data/game_%s.cfg", game::gameident()); - execfile(gamecfgname); + execfile("data/game_fps.cfg"); if(game::savedservers()) execfile(game::savedservers(), false); identflags |= IDF_PERSIST; diff --git a/src/engine/model.h b/src/engine/model.h index 97264bd..cd75c9d 100644 --- a/src/engine/model.h +++ b/src/engine/model.h @@ -1,4 +1,4 @@ -enum { MDL_MD2 = 0, MDL_MD3, MDL_MD5, MDL_OBJ, MDL_SMD, MDL_IQM, NUMMODELTYPES }; +enum { MDL_MD3, MDL_MD5, MDL_OBJ, MDL_SMD, NUMMODELTYPES }; struct model { diff --git a/src/engine/physics.cpp b/src/engine/physics.cpp index 6e78863..e1cd04d 100644 --- a/src/engine/physics.cpp +++ b/src/engine/physics.cpp @@ -13,7 +13,7 @@ static int clipcacheversion = -2; static inline clipplanes &getclipplanes(const cube &c, const ivec &o, int size, bool collide = true, int offset = 0) { clipplanes &p = clipcache[int(&c - worldroot)&(MAXCLIPPLANES-1)]; - if(p.owner != &c || p.version != clipcacheversion+offset) + if(p.owner != &c || p.version != clipcacheversion+offset) { p.owner = &c; p.version = clipcacheversion+offset; @@ -359,8 +359,8 @@ ShadowRayCache *newshadowraycache() { return new ShadowRayCache; } void freeshadowraycache(ShadowRayCache *&cache) { delete cache; cache = NULL; } -void resetshadowraycache(ShadowRayCache *cache) -{ +void resetshadowraycache(ShadowRayCache *cache) +{ cache->version++; if(!cache->version) { @@ -839,7 +839,7 @@ static inline bool clampcollide(const clipplanes &p, const E &entvol, const plan } return false; } - + template<class E> static bool fuzzycollideplanes(physent *d, const vec &dir, float cutoff, const cube &c, const ivec &co, int size) // collide with deformed cube geometry { @@ -1213,7 +1213,7 @@ bool trystepdown(physent *d, vec &dir, float step, float xy, float z, bool init stepfloor.normalize(); if(d->physstate >= PHYS_SLOPE && d->floor != stepfloor) { - // prevent alternating step-down/step-up states if player would keep bumping into the same floor + // prevent alternating step-down/step-up states if player would keep bumping into the same floor vec stepped(d->o); d->o.z -= 0.5f; d->zmargin = -0.5f; @@ -1493,14 +1493,14 @@ bool droptofloor(vec &o, float radius, float height) { static struct dropent : physent { - dropent() - { - type = ENT_BOUNCE; + dropent() + { + type = ENT_BOUNCE; vel = vec(0, 0, -1); } } d; d.o = o; - if(!insideworld(d.o)) + if(!insideworld(d.o)) { if(d.o.z < worldsize) return false; d.o.z = worldsize - 1e-3f; @@ -1525,16 +1525,16 @@ float dropheight(entity &e) switch(e.type) { case ET_PARTICLES: - case ET_MAPMODEL: return 0.0f; + case ET_MAPMODEL: + return 0.0f; default: - if(e.type >= ET_GAMESPECIFIC) return entities::dropheight(e); return 4.0f; } } void dropenttofloor(entity *e) { - droptofloor(e->o, 1.0f, dropheight(*e)); + droptofloor(e->o, 1.0f, 4.0f); } void phystest() diff --git a/src/engine/rendergl.cpp b/src/engine/rendergl.cpp index 6049951..5ada421 100644 --- a/src/engine/rendergl.cpp +++ b/src/engine/rendergl.cpp @@ -599,7 +599,7 @@ void gl_init() glClearDepth(1); glDepthFunc(GL_LESS); glDisable(GL_DEPTH_TEST); - + glEnable(GL_LINE_SMOOTH); //glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); @@ -621,7 +621,7 @@ VAR(wireframe, 0, 0, 1); ICOMMAND(getcamyaw, "", (), floatret(camera1->yaw)); ICOMMAND(getcampitch, "", (), floatret(camera1->pitch)); ICOMMAND(getcamroll, "", (), floatret(camera1->roll)); -ICOMMAND(getcampos, "", (), +ICOMMAND(getcampos, "", (), { defformatstring(pos, "%s %s %s", floatstr(camera1->o.x), floatstr(camera1->o.y), floatstr(camera1->o.z)); result(pos); @@ -652,7 +652,7 @@ void setcammatrix() void setcamprojmatrix(bool init = true, bool flush = false) { if(init) - { + { setcammatrix(); } @@ -672,7 +672,7 @@ void setcamprojmatrix(bool init = true, bool flush = false) fogplane.x /= projmatrix.a.x; fogplane.y /= projmatrix.b.y; fogplane.z /= projmatrix.c.w; - GLOBALPARAMF(fogplane, fogplane.x, fogplane.y, 0, fogplane.z); + GLOBALPARAMF(fogplane, fogplane.x, fogplane.y, 0, fogplane.z); } else { @@ -771,7 +771,7 @@ FVARP(sensitivity, 1e-3f, 3, 1000); FVARP(sensitivityscale, 1e-3f, 1, 1000); VARP(invmouse, 0, 0, 1); FVARP(mouseaccel, 0, 0, 1000); - + VAR(thirdperson, 0, 0, 2); FVAR(thirdpersondistance, 0, 20, 50); FVAR(thirdpersonup, -25, 0, 25); @@ -795,12 +795,12 @@ void mousemove(int dx, int dy) float cursens = sensitivity, curaccel = mouseaccel; if(zoom) { - if(zoomautosens) + if(zoomautosens) { cursens = float(sensitivity*zoomfov)/fov; curaccel = float(mouseaccel*zoomfov)/fov; } - else + else { cursens = zoomsens; curaccel = zoomaccel; @@ -844,7 +844,7 @@ void recomputecamera() camera1->type = ENT_CAMERA; camera1->move = -1; camera1->eyeheight = camera1->aboveeye = camera1->radius = camera1->xradius = camera1->yradius = 2; - + matrix3 orient; orient.identity(); orient.rotate_around_z(camera1->yaw*RAD); @@ -852,7 +852,7 @@ void recomputecamera() orient.rotate_around_y(camera1->roll*-RAD); vec dir = vec(orient.b).neg(), side = vec(orient.a).neg(), up = orient.c; - if(game::collidecamera()) + if(game::collidecamera()) { movecamera(camera1, dir, thirdpersondistance, 1); movecamera(camera1, dir, clamp(thirdpersondistance - camera1->o.dist(player->o), 0.0f, 1.0f), 0.1f); @@ -873,7 +873,7 @@ void recomputecamera() movecamera(camera1, side, clamp(dist - camera1->o.dist(pos), 0.0f, 1.0f), 0.1f); } } - else + else { camera1->o.add(vec(dir).mul(thirdpersondistance)); if(thirdpersonup) camera1->o.add(vec(up).mul(thirdpersonup)); @@ -939,7 +939,7 @@ void enablepolygonoffset(GLenum type) glEnable(type); return; } - + bool clipped = reflectz < 1e15f && reflectclip; nooffsetmatrix = projmatrix; @@ -954,7 +954,7 @@ void disablepolygonoffset(GLenum type) glDisable(type); return; } - + projmatrix = nooffsetmatrix; setcamprojmatrix(false, true); } @@ -962,8 +962,8 @@ void disablepolygonoffset(GLenum type) void calcspherescissor(const vec ¢er, float size, float &sx1, float &sy1, float &sx2, float &sy2) { vec worldpos(center), e; - if(reflecting) worldpos.z = 2*reflectz - worldpos.z; - cammatrix.transform(worldpos, e); + if(reflecting) worldpos.z = 2*reflectz - worldpos.z; + cammatrix.transform(worldpos, e); if(e.z > 2*size) { sx1 = sy1 = 1; sx2 = sy2 = -1; return; } float zzrr = e.z*e.z - size*size, dx = e.x*e.x + zzrr, dy = e.y*e.y + zzrr, @@ -1034,7 +1034,7 @@ int pushscissor(float sx1, float sy1, float sx2, float sy2) glScissor(sx, sy, sw, sh); if(scissoring<=1) glEnable(GL_SCISSOR_TEST); - + return scissoring; } @@ -1452,7 +1452,7 @@ void drawreflection(float z, bool refract, int fogdepth, const bvec &col) rendergame(); if(refracting && z>=0 && !isthirdperson() && fabs(camera1->o.z-z) <= 0.5f*(player->eyeheight + player->aboveeye)) - { + { matrix4 oldprojmatrix = projmatrix, avatarproj; avatarproj.perspective(curavatarfov, aspect, nearplane, farplane); if(reflectclip) @@ -1477,7 +1477,7 @@ void drawreflection(float z, bool refract, int fogdepth, const bvec &col) if(fading) glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - if(reflectclip && z>=0) projmatrix = noclipmatrix; + if(reflectclip && z>=0) projmatrix = noclipmatrix; if(reflecting) { @@ -1488,7 +1488,7 @@ void drawreflection(float z, bool refract, int fogdepth, const bvec &col) popfogdist(); popfogcolor(); - + reflectz = 1e16f; refracting = 0; reflecting = fading = fogging = false; @@ -1513,7 +1513,7 @@ void drawcubemap(int size, const vec &o, float yaw, float pitch, const cubemapsi cmcamera.roll = 0; camera1 = &cmcamera; setviewcell(camera1->o); - + int fogmat = lookupmaterial(o)&(MATF_VOLUME|MATF_INDEX); setfog(fogmat); @@ -1653,146 +1653,6 @@ vec calcmodelpreviewpos(const vec &radius, float &yaw) return vec(0, dist, 0).rotate_around_x(camera1->pitch*RAD); } -GLuint minimaptex = 0; -vec minimapcenter(0, 0, 0), minimapradius(0, 0, 0), minimapscale(0, 0, 0); - -void clearminimap() -{ - if(minimaptex) { glDeleteTextures(1, &minimaptex); minimaptex = 0; } -} - -VARR(minimapheight, 0, 0, 2<<16); -bvec minimapcolor(0, 0, 0); -HVARFR(minimapcolour, 0, 0, 0xFFFFFF, -{ - minimapcolor = bvec((minimapcolour>>16)&0xFF, (minimapcolour>>8)&0xFF, minimapcolour&0xFF); -}); -VARR(minimapclip, 0, 0, 1); -VARFP(minimapsize, 7, 8, 10, { if(minimaptex) drawminimap(); }); - -void bindminimap() -{ - glBindTexture(GL_TEXTURE_2D, minimaptex); -} - -void clipminimap(ivec &bbmin, ivec &bbmax, cube *c = worldroot, const ivec &co = ivec(0, 0, 0), int size = worldsize>>1) -{ - loopi(8) - { - ivec o(i, co, size); - if(c[i].children) clipminimap(bbmin, bbmax, c[i].children, o, size>>1); - else if(!isentirelysolid(c[i]) && (c[i].material&MATF_CLIP)!=MAT_CLIP) - { - loopk(3) bbmin[k] = min(bbmin[k], o[k]); - loopk(3) bbmax[k] = max(bbmax[k], o[k] + size); - } - } -} - -void drawminimap() -{ - if(!game::needminimap()) { clearminimap(); return; } - - renderprogress(0, "generating mini-map...", 0, !renderedframe); - - int size = 1<<minimapsize, sizelimit = min(hwtexsize, min(screenw, screenh)); - while(size > sizelimit) size /= 2; - if(!minimaptex) glGenTextures(1, &minimaptex); - - ivec bbmin(worldsize, worldsize, worldsize), bbmax(0, 0, 0); - loopv(valist) - { - vtxarray *va = valist[i]; - loopk(3) - { - if(va->geommin[k]>va->geommax[k]) continue; - bbmin[k] = min(bbmin[k], va->geommin[k]); - bbmax[k] = max(bbmax[k], va->geommax[k]); - } - } - if(minimapclip) - { - ivec clipmin(worldsize, worldsize, worldsize), clipmax(0, 0, 0); - clipminimap(clipmin, clipmax); - loopk(2) bbmin[k] = max(bbmin[k], clipmin[k]); - loopk(2) bbmax[k] = min(bbmax[k], clipmax[k]); - } - - minimapradius = vec(bbmax).sub(vec(bbmin)).mul(0.5f); - minimapcenter = vec(bbmin).add(minimapradius); - minimapradius.x = minimapradius.y = max(minimapradius.x, minimapradius.y); - minimapscale = vec((0.5f - 1.0f/size)/minimapradius.x, (0.5f - 1.0f/size)/minimapradius.y, 1.0f); - - drawtex = DRAWTEX_MINIMAP; - - physent *oldcamera = camera1; - static physent cmcamera; - cmcamera = *player; - cmcamera.reset(); - cmcamera.type = ENT_CAMERA; - cmcamera.o = vec(minimapcenter.x, minimapcenter.y, max(minimapcenter.z + minimapradius.z + 1, float(minimapheight))); - cmcamera.yaw = 0; - cmcamera.pitch = -90; - cmcamera.roll = 0; - camera1 = &cmcamera; - setviewcell(vec(-1, -1, -1)); - - projmatrix.ortho(-minimapradius.x, minimapradius.x, -minimapradius.y, minimapradius.y, 0, camera1->o.z + 1); - projmatrix.a.mul(-1); - setcamprojmatrix(); - - setnofog(minimapcolor.tocolor()); - - glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); - - glViewport(0, 0, size, size); - - glEnable(GL_CULL_FACE); - glEnable(GL_DEPTH_TEST); - - glFrontFace(GL_CCW); - - xtravertsva = xtraverts = glde = gbatches = 0; - - visiblecubes(false); - queryreflections(); - drawreflections(); - - loopi(minimapheight > 0 && minimapheight < minimapcenter.z + minimapradius.z ? 2 : 1) - { - if(i) - { - glClear(GL_DEPTH_BUFFER_BIT); - camera1->o.z = minimapheight; - setcamprojmatrix(); - } - rendergeom(); - rendermapmodels(); - renderwater(); - rendermaterials(); - renderalphageom(); - } - - glFrontFace(GL_CW); - - glDisable(GL_DEPTH_TEST); - glDisable(GL_CULL_FACE); - - glViewport(0, 0, screenw, screenh); - - camera1 = oldcamera; - drawtex = 0; - - glBindTexture(GL_TEXTURE_2D, minimaptex); - glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB5, 0, 0, size, size, 0); - setuptexparameters(minimaptex, NULL, 3, 1, GL_RGB5, GL_TEXTURE_2D); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); - GLfloat border[4] = { minimapcolor.x/255.0f, minimapcolor.y/255.0f, minimapcolor.z/255.0f, 1.0f }; - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, border); - glBindTexture(GL_TEXTURE_2D, 0); -} - bool deferdrawtextures = false; void drawtextures() @@ -1800,7 +1660,6 @@ void drawtextures() if(minimized) { deferdrawtextures = true; return; } deferdrawtextures = false; genenvmaps(); - drawminimap(); } GLuint motiontex = 0; @@ -1870,7 +1729,7 @@ void gl_drawframe() int w = screenw, h = screenh; aspect = forceaspect ? forceaspect : w/float(h); fovy = 2*atan2(tan(curfov/2*RAD), aspect)/RAD; - + int fogmat = lookupmaterial(camera1->o)&(MATF_VOLUME|MATF_INDEX), abovemat = MAT_AIR; float fogblend = 1.0f, causticspass = 0.0f; if(isliquid(fogmat&MATF_VOLUME)) @@ -1881,7 +1740,7 @@ void gl_drawframe() if(caustics && (fogmat&MATF_VOLUME)==MAT_WATER && camera1->o.z < z) causticspass = min(z - camera1->o.z, 1.0f); } - else fogmat = MAT_AIR; + else fogmat = MAT_AIR; setfog(fogmat, fogblend, abovemat); if(fogmat!=MAT_AIR) { @@ -1901,10 +1760,10 @@ void gl_drawframe() xtravertsva = xtraverts = glde = gbatches = 0; visiblecubes(); - + glClear(GL_DEPTH_BUFFER_BIT|(wireframe && editmode ? GL_COLOR_BUFFER_BIT : 0)); - if(wireframe && editmode) glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + if(wireframe && editmode) glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); if(limitsky()) drawskybox(farplane, true); @@ -1979,7 +1838,7 @@ void damagecompass(int n, const vec &loc) { if(!usedamagecompass || minimized) return; vec delta(loc); - delta.sub(camera1->o); + delta.sub(camera1->o); float yaw = 0, pitch; if(delta.magnitude() > 4) { @@ -2087,7 +1946,7 @@ void loadcrosshair(const char *name, int i) { if(i < 0 || i >= MAXCROSSHAIRS) return; crosshairs[i] = name ? textureload(name, 3, true) : notexture; - if(crosshairs[i] == notexture) + if(crosshairs[i] == notexture) { name = game::defaultcrosshair(i); if(!name) name = "data/crosshair.png"; @@ -2102,7 +1961,7 @@ void loadcrosshair_(const char *name, int *i) COMMANDN(loadcrosshair, loadcrosshair_, "si"); -ICOMMAND(getcrosshair, "i", (int *i), +ICOMMAND(getcrosshair, "i", (int *i), { const char *name = ""; if(*i >= 0 && *i < MAXCROSSHAIRS) @@ -2112,7 +1971,7 @@ ICOMMAND(getcrosshair, "i", (int *i), } result(name); }); - + void writecrosshairs(stream *f) { loopi(MAXCROSSHAIRS) if(crosshairs[i] && crosshairs[i]!=notexture) @@ -2137,13 +1996,13 @@ void drawcrosshair(int w, int h) g3d_cursorpos(cx, cy); } else - { + { int index = game::selectcrosshair(color); if(index < 0) return; if(!crosshairfx) index = 0; if(!crosshairfx || !crosshaircolors) color = vec(1, 1, 1); crosshair = crosshairs[index]; - if(!crosshair) + if(!crosshair) { loadcrosshair(NULL, index); crosshair = crosshairs[index]; @@ -2198,7 +2057,7 @@ void gl_drawhud() hudmatrix.ortho(0, w, h, 0, -1, 1); resethudmatrix(); - + gle::colorf(1, 1, 1); extern int debugsm; @@ -2223,10 +2082,10 @@ void gl_drawhud() } glEnable(GL_BLEND); - + extern void debugparticles(); debugparticles(); - + if(!mainmenu) { drawdamagescreen(w, h); @@ -2274,12 +2133,12 @@ void gl_drawhud() char *dst = buf; const char *src = &buf[!wallclock24 && buf[0]=='0' ? 1 : 0]; while(*src) *dst++ = tolower(*src++); - *dst++ = '\0'; + *dst++ = '\0'; draw_text(buf, conw-5*FONTH, conh-FONTH*3/2-roffset); roffset += FONTH; } } - + if(editmode || showeditstats) { static int laststats = 0, prevstats[8] = { 0, 0, 0, 0, 0, 0, 0 }, curstats[8] = { 0, 0, 0, 0, 0, 0, 0 }; @@ -2378,8 +2237,6 @@ void cleanupgl() { cleanupmotionblur(); - clearminimap(); - cleanupscreenquad(); gle::cleanup(); diff --git a/src/engine/rendermodel.cpp b/src/engine/rendermodel.cpp index dc05e69..d79a422 100644 --- a/src/engine/rendermodel.cpp +++ b/src/engine/rendermodel.cpp @@ -24,20 +24,16 @@ static model *__loadmodel__##modelclass(const char *filename) \ return new modelclass(filename); \ } \ UNUSED static int __dummy__##modelclass = addmodeltype((modeltype), __loadmodel__##modelclass); - -#include "md2.h" + #include "md3.h" #include "md5.h" #include "obj.h" #include "smd.h" -#include "iqm.h" -MODELTYPE(MDL_MD2, md2); MODELTYPE(MDL_MD3, md3); MODELTYPE(MDL_MD5, md5); MODELTYPE(MDL_OBJ, obj); MODELTYPE(MDL_SMD, smd); -MODELTYPE(MDL_IQM, iqm); #define checkmdl if(!loadingmodel) { conoutf(CON_ERROR, "not loading a model"); return; } @@ -61,14 +57,14 @@ void mdlellipsecollide(int *collide) { checkmdl; loadingmodel->ellipsecollide = *collide!=0; -} - +} + COMMAND(mdlellipsecollide, "i"); void mdlspec(int *percent) { checkmdl; - float spec = 1.0f; + float spec = 1.0f; if(*percent>0) spec = *percent/100.0f; else if(*percent<0) spec = 0.0f; loadingmodel->setspec(spec); @@ -88,7 +84,7 @@ void mdlambient(int *percent) COMMAND(mdlambient, "i"); void mdlalphatest(float *cutoff) -{ +{ checkmdl; loadingmodel->setalphatest(max(0.0f, min(1.0f, *cutoff))); } @@ -96,7 +92,7 @@ void mdlalphatest(float *cutoff) COMMAND(mdlalphatest, "f"); void mdlalphablend(int *blend) -{ +{ checkmdl; loadingmodel->setalphablend(*blend!=0); } @@ -178,7 +174,7 @@ void mdlscale(int *percent) float scale = 1.0f; if(*percent>0) scale = *percent/100.0f; loadingmodel->scale = scale; -} +} COMMAND(mdlscale, "i"); @@ -186,7 +182,7 @@ void mdltrans(float *x, float *y, float *z) { checkmdl; loadingmodel->translate = vec(*x, *y, *z); -} +} COMMAND(mdltrans, "fff"); @@ -219,7 +215,7 @@ void mdlbb(float *rad, float *h, float *eyeheight) checkmdl; loadingmodel->collidexyradius = *rad; loadingmodel->collideheight = *h; - loadingmodel->eyeheight = *eyeheight; + loadingmodel->eyeheight = *eyeheight; } COMMAND(mdlbb, "fff"); @@ -251,7 +247,7 @@ COMMAND(mdlname, ""); if(!skel->ragdoll) skel->ragdoll = new ragdollskel; \ ragdollskel *ragdoll = skel->ragdoll; \ if(ragdoll->loaded) return; - + void rdvert(float *x, float *y, float *z, float *radius) { @@ -291,7 +287,7 @@ void rdjoint(int *n, int *t, int *v1, int *v2, int *v3) j.vert[2] = *v3; } COMMAND(rdjoint, "iibbb"); - + void rdlimitdist(int *v1, int *v2, float *mindist, float *maxdist) { checkragdoll; @@ -337,10 +333,10 @@ void mapmodelcompat(int *rad, int *h, int *tex, char *name, char *shadow) mmodel(name); } -void mapmodelreset(int *n) -{ +void mapmodelreset(int *n) +{ if(!(identflags&IDF_OVERRIDDEN) && !game::allowedittoggle()) return; - mapmodels.shrink(clamp(*n, 0, mapmodels.length())); + mapmodels.shrink(clamp(*n, 0, mapmodels.length())); } mapmodelinfo *getmminfo(int i) { return mapmodels.inrange(i) ? &mapmodels[i] : 0; } @@ -425,7 +421,7 @@ model *loadmodel(const char *name, int i, bool msg) model *m; if(mm) m = *mm; else - { + { if(!name[0] || loadingmodel || lightmapping > 1) return NULL; if(msg) { @@ -534,13 +530,13 @@ struct batchedmodel dynent *d; int attached; occludequery *query; -}; +}; struct modelbatch { model *m; int flags; vector<batchedmodel> batched; -}; +}; static vector<modelbatch *> batches; static vector<modelattach> modelattached; static int numbatches = -1; @@ -579,10 +575,10 @@ void renderbatchedmodel(model *m, batchedmodel &b) int anim = b.anim; if(shadowmapping) { - anim |= ANIM_NOSKIN; + anim |= ANIM_NOSKIN; GLOBALPARAMF(shadowintensity, b.transparent); } - else + else { if(b.flags&MDL_FULLBRIGHT) anim |= ANIM_FULLBRIGHT; if(b.flags&MDL_GHOST) anim |= ANIM_GHOST; @@ -633,13 +629,13 @@ void endmodelbatches() if(!rendered) { b.m->startrender(); rendered = true; } renderbatchedmodel(b.m, bm); } - if(rendered) + if(rendered) { b.m->endrender(); rendered = false; } } - loopvj(b.batched) + loopvj(b.batched) { batchedmodel &bm = b.batched[j]; if(bm.flags&(MDL_CULL_VFC|MDL_GHOST)) continue; @@ -806,7 +802,7 @@ static inline int cullmodel(model *m, const vec ¢er, float radius, int flags void rendermodel(entitylight *light, const char *mdl, int anim, const vec &o, float yaw, float pitch, int flags, dynent *d, modelattach *a, int basetime, int basetime2, float trans) { if(shadowmapping && !(flags&(MDL_SHADOW|MDL_DYNSHADOW))) return; - model *m = loadmodel(mdl); + model *m = loadmodel(mdl); if(!m) return; vec center(0, 0, 0), bbradius(0, 0, 0); float radius = 0; @@ -851,7 +847,7 @@ void rendermodel(entitylight *light, const char *mdl, int anim, const vec &o, fl else if(showboundingbox && !shadowmapping && !reflecting && !refracting && editmode) { notextureshader->set(); - if(d && showboundingbox==1) + if(d && showboundingbox==1) { render3dbox(d->o, d->eyeheight, d->aboveeye, d->radius); renderellipse(d->o, d->xradius, d->yradius, d->yaw); @@ -871,7 +867,7 @@ void rendermodel(entitylight *light, const char *mdl, int anim, const vec &o, fl if(!shadowmapping) { vec pos = o; - if(d) + if(d) { if(!reflecting && !refracting) d->occluded = OCCLUDE_NOTHING; if(!light) light = &d->light; @@ -891,7 +887,7 @@ void rendermodel(entitylight *light, const char *mdl, int anim, const vec &o, fl } else if(flags&MDL_LIGHT) { - if(!light) + if(!light) { lightreaching(pos, lightcolor, lightdir, (flags&MDL_LIGHT_FAST)!=0); dynlightreaching(pos, lightcolor, lightdir, (flags&MDL_HUD)!=0); @@ -928,7 +924,7 @@ void rendermodel(entitylight *light, const char *mdl, int anim, const vec &o, fl b.basetime2 = basetime2; b.transparent = trans; b.flags = flags & ~(MDL_CULL_VFC | MDL_CULL_DIST | MDL_CULL_OCCLUDED); - if(!shadow || reflecting || refracting>0) + if(!shadow || reflecting || refracting>0) { b.flags &= ~(MDL_SHADOW|MDL_DYNSHADOW); if((flags&MDL_CULL_VFC) && refracting<0 && center.z-radius>=reflectz) b.flags |= MDL_CULL_VFC; @@ -955,7 +951,7 @@ void rendermodel(entitylight *light, const char *mdl, int anim, const vec &o, fl anim |= ANIM_NOSKIN; GLOBALPARAMF(shadowintensity, trans); } - else + else { if(flags&MDL_FULLBRIGHT) anim |= ANIM_FULLBRIGHT; if(flags&MDL_GHOST) anim |= ANIM_GHOST; @@ -991,7 +987,7 @@ bool matchanim(const char *name, const char *pattern) { c = *pattern; if(!c || c=='|') break; - else if(c=='*') + else if(c=='*') { if(!*s || iscubespace(*s)) break; do s++; while(*s && !iscubespace(*s)); @@ -1041,7 +1037,7 @@ void loadskin(const char *dir, const char *altdir, Texture *&skin, Texture *&mas } \ } \ } - + defformatstring(mdir, "packages/models/%s", dir); defformatstring(maltdir, "packages/models/%s", altdir); masks = notexture; @@ -1069,7 +1065,7 @@ void renderclient(dynent *d, const char *mdlname, modelattach *attachments, int basetime = lastpain; if(ragdoll) { - if(!d->ragdoll || d->ragdoll->millis < basetime) + if(!d->ragdoll || d->ragdoll->millis < basetime) { DELETEP(d->ragdoll); anim |= ANIM_RAGDOLL; @@ -1081,20 +1077,20 @@ void renderclient(dynent *d, const char *mdlname, modelattach *attachments, int else if(d->state==CS_LAGGED) anim = ANIM_LAG|ANIM_LOOP; else { - if(lastmillis-lastpain < 300) - { + if(lastmillis-lastpain < 300) + { anim = ANIM_PAIN; basetime = lastpain; } else if(lastpain < lastaction && (attack < 0 || (d->type != ENT_AI && lastmillis-lastaction < attackdelay))) - { - anim = attack < 0 ? -attack : attack; - basetime = lastaction; + { + anim = attack < 0 ? -attack : attack; + basetime = lastaction; } if(d->inwater && d->physstate<=PHYS_FALL) anim |= (((game::allowmove(d) && (d->move || d->strafe)) || d->vel.z+d->falling.z>0 ? ANIM_SWIM : ANIM_SINK)|ANIM_LOOP)<<ANIM_SECONDARY; else if(d->timeinair>100) anim |= (ANIM_JUMP|ANIM_END)<<ANIM_SECONDARY; - else if(game::allowmove(d) && (d->move || d->strafe)) + else if(game::allowmove(d) && (d->move || d->strafe)) { if(d->move>0) anim |= (ANIM_FORWARD|ANIM_LOOP)<<ANIM_SECONDARY; else if(d->strafe) @@ -1104,7 +1100,7 @@ void renderclient(dynent *d, const char *mdlname, modelattach *attachments, int } else if(d->move<0) anim |= (ANIM_BACKWARD|ANIM_LOOP)<<ANIM_SECONDARY; } - + if((anim&ANIM_INDEX)==ANIM_IDLE && (anim>>ANIM_SECONDARY)&ANIM_INDEX) anim >>= ANIM_SECONDARY; } if(d->ragdoll && (!ragdoll || (anim&ANIM_INDEX)!=ANIM_DYING)) DELETEP(d->ragdoll); @@ -1121,7 +1117,7 @@ void renderclient(dynent *d, const char *mdlname, modelattach *attachments, int void setbbfrommodel(dynent *d, const char *mdl) { - model *m = loadmodel(mdl); + model *m = loadmodel(mdl); if(!m) return; vec center, radius; m->collisionbox(center, radius); diff --git a/src/engine/renderva.cpp b/src/engine/renderva.cpp index cf9d376..6194659 100644 --- a/src/engine/renderva.cpp +++ b/src/engine/renderva.cpp @@ -108,7 +108,7 @@ void addvisibleva(vtxarray *va) void sortvisiblevas() { - visibleva = NULL; + visibleva = NULL; vtxarray **last = &visibleva; loopi(VASORTSIZE) if(vasort[i]) { @@ -126,7 +126,7 @@ void findvisiblevas(vector<vtxarray *> &vas, bool resetocclude = false) vtxarray &v = *vas[i]; int prevvfc = resetocclude ? VFC_NOT_VISIBLE : v.curvfc; v.curvfc = isvisiblecube(v.o, v.size); - if(v.curvfc!=VFC_NOT_VISIBLE) + if(v.curvfc!=VFC_NOT_VISIBLE) { if(pvsoccluded(v.o, v.size)) { @@ -153,7 +153,7 @@ void calcvfcD() loopk(3) if(p[k] > 0) vfcDfar[i] += p[k]; else vfcDnear[i] += p[k]; } -} +} void setvfcP(float z, const vec &bbmin, const vec &bbmax) { @@ -215,7 +215,7 @@ void visiblecubes(bool cull) static inline bool insideva(const vtxarray *va, const vec &v, int margin = 2) { int size = va->size + margin; - return v.x>=va->o.x-margin && v.y>=va->o.y-margin && v.z>=va->o.z-margin && + return v.x>=va->o.x-margin && v.y>=va->o.y-margin && v.z>=va->o.z-margin && v.x<=va->o.x+size && v.y<=va->o.y+size && v.z<=va->o.z+size; } @@ -461,7 +461,6 @@ VAR(oqmm, 0, 4, 8); void rendermapmodel(extentity &e) { int anim = ANIM_MAPMODEL|ANIM_LOOP, basetime = 0; - if(e.flags&EF_ANIM) entities::animatemapmodel(e, anim, basetime); mapmodelinfo *mmi = getmminfo(e.attr2); if(mmi) rendermodel(&e.light, mmi->name, anim, e.o, e.attr1, 0, MDL_CULL_VFC | MDL_CULL_DIST | MDL_DYNLIGHT, NULL, NULL, basetime); } @@ -479,7 +478,7 @@ void renderreflectedmapmodels() for(vtxarray *va = reflectedva; va; va = va->rnext) { if(va->mapmodels.empty() || va->distance > reflectdist) continue; - loopv(va->mapmodels) + loopv(va->mapmodels) { octaentities *oe = va->mapmodels[i]; *lastmms = oe; @@ -536,7 +535,7 @@ void rendermapmodels() rendered = true; oe->query = doquery && oe->distance>0 && !(++skipoq%oqmm) ? newquery(oe) : NULL; if(oe->query) startmodelquery(oe->query); - } + } rendermapmodel(e); e.flags &= ~EF_RENDER; } @@ -567,7 +566,7 @@ void rendermapmodels() static inline bool bbinsideva(const ivec &bo, const ivec &br, vtxarray *va) { return bo.x >= va->bbmin.x && bo.y >= va->bbmin.y && bo.z >= va->bbmin.z && - br.x <= va->bbmax.x && br.y <= va->bbmax.y && br.z <= va->bbmax.z; + br.x <= va->bbmax.x && br.y <= va->bbmax.y && br.z <= va->bbmax.z; } static inline bool bboccluded(const ivec &bo, const ivec &br, cube *c, const ivec &o, int size) @@ -654,7 +653,7 @@ void renderoutline() drawvatris(va, 3*va->alphatris, &va->edata[3*(va->tris + va->blendtris)]); xtravertsva += 3*va->alphatris; } - + prev = va; } @@ -716,7 +715,7 @@ void renderblendbrush(GLuint tex, float x, float y, float w, float h) gle::clearebo(); gle::disablevertex(); } - + void rendershadowmapreceivers() { SETSHADER(shadowmapreceiver); @@ -733,7 +732,7 @@ void rendershadowmapreceivers() glEnable(GL_BLEND); glBlendEquation_(GL_MAX); glBlendFunc(GL_ONE, GL_ONE); - + vtxarray *prev = NULL; for(vtxarray *va = visibleva; va; va = va->next) { @@ -759,7 +758,7 @@ void rendershadowmapreceivers() glCullFace(GL_BACK); glDepthMask(GL_TRUE); glDepthFunc(GL_LESS); - + if(!ati_minmax_bug) glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); gle::clearvbo(); @@ -785,7 +784,7 @@ void renderdepthobstacles(const vec &bbmin, const vec &bbmax, float scale, float SETSHADER(depthfxworld); if(!numranges) loopi(4) scales[i] = 1.0f/scale; - else loopi(numranges) + else loopi(numranges) { scales[i] = 1.0f/scale; offsets[i] = -ranges[i]/scale; @@ -799,7 +798,7 @@ void renderdepthobstacles(const vec &bbmin, const vec &bbmax, float scale, float vtxarray *prev = NULL; for(vtxarray *va = visibleva; va; va = va->next) { - if(!va->texs || va->occluded >= OCCLUDE_GEOM || + if(!va->texs || va->occluded >= OCCLUDE_GEOM || va->o.x > bbmax.x || va->o.y > bbmax.y || va->o.z > bbmax.z || va->o.x + va->size < bbmin.x || va->o.y + va->size < bbmin.y || va->o.z + va->size < bbmin.z) continue; @@ -936,10 +935,10 @@ static int firstbatch = -1, numbatches = 0; static void mergetexs(renderstate &cur, vtxarray *va, elementset *texs = NULL, int numtexs = 0, ushort *edata = NULL) { - if(!texs) - { - texs = va->eslist; - numtexs = va->texs; + if(!texs) + { + texs = va->eslist; + numtexs = va->texs; edata = va->edata; if(cur.alphaing) { @@ -954,7 +953,7 @@ static void mergetexs(renderstate &cur, vtxarray *va, elementset *texs = NULL, i { firstbatch = geombatches.length(); numbatches = numtexs; - loopi(numtexs-1) + loopi(numtexs-1) { geombatches.add(geombatch(texs[i], edata, va)).next = i+1; edata += texs[i].length[1]; @@ -962,7 +961,7 @@ static void mergetexs(renderstate &cur, vtxarray *va, elementset *texs = NULL, i geombatches.add(geombatch(texs[numtexs-1], edata, va)); return; } - + int prevbatch = -1, curbatch = firstbatch, curtex = 0; do { @@ -997,9 +996,9 @@ static void mergetexs(renderstate &cur, vtxarray *va, elementset *texs = NULL, i { b.batch = next; geombatches[last].batch = geombatches.length()-1; - } + } } - else + else { numbatches++; b.next = curbatch; @@ -1060,7 +1059,7 @@ static void changebatchtmus(renderstate &cur, int pass, geombatch &b) bool changed = false; extern bool brightengeom; extern int fullbright; - int lmid = brightengeom && (b.es.lmid < LMID_RESERVED || (fullbright && editmode)) ? LMID_BRIGHT : b.es.lmid; + int lmid = brightengeom && (b.es.lmid < LMID_RESERVED || (fullbright && editmode)) ? LMID_BRIGHT : b.es.lmid; if(cur.textures[1]!=lightmaptexs[lmid].id) { glActiveTexture_(GL_TEXTURE1); @@ -1109,7 +1108,7 @@ static void changeslottmus(renderstate &cur, int pass, Slot &slot, VSlot &vslot) if(cur.alphaing) { float alpha = cur.alphaing > 1 ? vslot.alphafront : vslot.alphaback; - if(cur.colorscale != vslot.colorscale || cur.alphascale != alpha) + if(cur.colorscale != vslot.colorscale || cur.alphascale != alpha) { cur.colorscale = vslot.colorscale; cur.alphascale = alpha; @@ -1137,7 +1136,7 @@ static void changeslottmus(renderstate &cur, int pass, Slot &slot, VSlot &vslot) glBindTexture(GL_TEXTURE_CUBE_MAP, cur.textures[envmaptmu] = t.t->id); } } - else + else { if(cur.textures[tmu]!=t.t->id) { @@ -1215,7 +1214,7 @@ static void renderbatch(renderstate &cur, int pass, geombatch &b) for(geombatch *curbatch = &b;; curbatch = &geombatches[curbatch->batch]) { ushort len = curbatch->es.length[curbatch->va->shadowed ? 0 : 1]; - if(len) + if(len) { if(rendered < 0) { @@ -1224,8 +1223,8 @@ static void renderbatch(renderstate &cur, int pass, geombatch &b) gbatches++; } ushort minvert = curbatch->es.minvert[0], maxvert = curbatch->es.maxvert[0]; - if(!curbatch->va->shadowed) { minvert = min(minvert, curbatch->es.minvert[1]); maxvert = max(maxvert, curbatch->es.maxvert[1]); } - drawtris(len, curbatch->edata, minvert, maxvert); + if(!curbatch->va->shadowed) { minvert = min(minvert, curbatch->es.minvert[1]); maxvert = max(maxvert, curbatch->es.maxvert[1]); } + drawtris(len, curbatch->edata, minvert, maxvert); vtris += len/3; } if(curbatch->es.length[1] > len && !shadowed) shadowed = curbatch; @@ -1274,14 +1273,14 @@ static void renderbatches(renderstate &cur, int pass) if(cur.vquery) disablevquery(cur); enablevattribs(cur); } - } + } while(curbatch >= 0) { geombatch &b = geombatches[curbatch]; curbatch = b.next; if(cur.vbuf != b.va->vbuf) changevbuf(cur, pass, b.va); - if(cur.vslot != &b.vslot) + if(cur.vslot != &b.vslot) { changeslottmus(cur, pass, *b.vslot.slot, b.vslot); if(cur.texgendim != b.es.dim || (cur.texgendim <= 2 && cur.texgenvslot != &b.vslot)) changetexgen(cur, b.es.dim, *b.vslot.slot, b.vslot); @@ -1298,7 +1297,7 @@ static void renderbatches(renderstate &cur, int pass) void renderzpass(renderstate &cur, vtxarray *va) { if(!cur.vattribs) - { + { if(cur.vquery) disablevquery(cur); enablevattribs(cur, false); } @@ -1409,7 +1408,7 @@ void renderva(renderstate &cur, vtxarray *va, int pass = RENDERPASS_LIGHTMAP, bo drawvatris(va, 3*va->tris, va->edata); xtravertsva += va->verts; break; - + case RENDERPASS_Z: if(doquery) startvaquery(va, ); renderzpass(cur, va); @@ -1498,7 +1497,7 @@ static void rendergeommultipass(renderstate &cur, int pass, bool fogpass) { if(!va->texs) continue; if(refracting) - { + { if((refracting < 0 ? va->geommin.z > reflectz : va->geommax.z <= reflectz) || va->occluded >= OCCLUDE_GEOM) continue; if(ishiddencube(va->o, va->size)) continue; } @@ -1529,7 +1528,7 @@ void rendergeom(float causticspass, bool fogpass) flipqueries(); vtris = vverts = 0; } - if(!doZP) + if(!doZP) { if(shadowmap && mainpass) rendershadowmap(); setupgeom(cur); @@ -1567,7 +1566,7 @@ void rendergeom(float causticspass, bool fogpass) va->occluded = pvsoccluded(va->geommin, va->geommax) ? OCCLUDE_GEOM : OCCLUDE_NOTHING; if(va->occluded >= OCCLUDE_GEOM) { - if(va->query) + if(va->query) { if(!zpass && geombatches.length()) renderbatches(cur, RENDERPASS_LIGHTMAP); if(cur.vattribs) disablevattribs(cur, !doZP); @@ -1596,7 +1595,7 @@ void rendergeom(float causticspass, bool fogpass) if(!cur.colormask) { cur.colormask = true; glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); } if(!cur.depthmask) { cur.depthmask = true; glDepthMask(GL_TRUE); } - + bool multipassing = false; if(doZP) @@ -1720,7 +1719,7 @@ void renderalphageom(bool fogpass) { if(va->geommax.z <= reflectz) continue; } - else + else { if(va->occluded >= OCCLUDE_BB) continue; if(va->occluded >= OCCLUDE_GEOM && pvsoccluded(va->geommin, va->geommax)) continue; @@ -1746,7 +1745,7 @@ void renderalphageom(bool fogpass) if(cur.depthmask) { cur.depthmask = false; glDepthMask(GL_FALSE); } cur.colormask = true; glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE); - + if(cur.vattribs) disablevattribs(cur, false); if(cur.vbuf) disablevbuf(cur); @@ -1773,7 +1772,7 @@ void renderalphageom(bool fogpass) glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, fading ? GL_FALSE : GL_TRUE); } - + void findreflectedvas(vector<vtxarray *> &vas, int prevvfc = VFC_PART_VISIBLE) { loopv(vas) @@ -1813,7 +1812,7 @@ void renderreflectedgeom(bool causticspass, bool fogpass) rendergeom(causticspass ? 1 : 0, fogpass); } else rendergeom(causticspass ? 1 : 0, fogpass); -} +} static vtxarray *prevskyva = NULL; @@ -1855,7 +1854,7 @@ void renderreflectedskyvas(vector<vtxarray *> &vas, int prevvfc = VFC_PART_VISIB if(prevvfc >= VFC_NOT_VISIBLE) va->curvfc = prevvfc; if((va->curvfc == VFC_FULL_VISIBLE && va->occluded >= OCCLUDE_BB) || va->curvfc==PVS_FULL_VISIBLE) continue; if(va->o.z+va->size <= reflectz || ishiddencube(va->o, va->size)) continue; - if(va->sky+va->explicitsky) + if(va->sky+va->explicitsky) { updateskystats(va); renderskyva(va); @@ -1886,7 +1885,7 @@ bool rendersky(bool explicitonly) if(prevskyva) { - gle::disablevertex(); + gle::disablevertex(); gle::clearvbo(); gle::clearebo(); } |
