]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into Mario/monsters
authorMario <mario@smbclan.net>
Tue, 12 Jun 2018 05:24:17 +0000 (15:24 +1000)
committerMario <mario@smbclan.net>
Tue, 12 Jun 2018 05:24:17 +0000 (15:24 +1000)
1  2 
qcsrc/client/csqcmodel_hooks.qc
qcsrc/client/weapons/projectile.qc

index 8f6938768a328f4fe105bf7c8c53ea1179366365,d8f6d26a33895e91fd40fb6a8d1b42e723de8575..651b575ac73ce6faeab12c65bb1f0983a0f10ba9
  .float death_time;
  .int modelflags;
  
- void CSQCModel_Hook_PreDraw(entity this, bool isplayer);
  .bool isplayermodel;
  
  // FEATURE: LOD
  .int lodmodelindex0;
  .int lodmodelindex1;
  .int lodmodelindex2;
 -void CSQCPlayer_LOD_Apply(entity this)
 +void CSQCPlayer_LOD_Apply(entity this, bool isplayer)
  {
 +      int detailreduction = ((isplayer) ? autocvar_cl_playerdetailreduction : autocvar_cl_modeldetailreduction);
 +
        // LOD model loading
        if(this.lodmodelindex0 != this.modelindex)
        {
        }
  
        // apply LOD
 -      if(autocvar_cl_playerdetailreduction <= 0)
 +      if(detailreduction <= 0)
        {
 -              if(autocvar_cl_playerdetailreduction <= -2)
 +              if(detailreduction <= -2)
                        this.modelindex = this.lodmodelindex2;
 -              else if(autocvar_cl_playerdetailreduction <= -1)
 +              else if(detailreduction <= -1)
                        this.modelindex = this.lodmodelindex1;
                else
                        this.modelindex = this.lodmodelindex0;
        }
        else
        {
 -              float distance = vlen(this.origin - view_origin);
 -              float f = (distance * current_viewzoom + 100.0) * autocvar_cl_playerdetailreduction;
 +              float distance = vlen(((isplayer) ? this.origin : NearestPointOnBox(this, view_origin)) - view_origin); // TODO: perhaps it should just use NearestPointOnBox all the time, player hitbox can potentially be huge
 +              float f = (distance * current_viewzoom + 100.0) * detailreduction;
                f *= 1.0 / bound(0.01, view_quality, 1);
                if(f > autocvar_cl_loddistance2)
                        this.modelindex = this.lodmodelindex2;
@@@ -615,7 -611,7 +613,7 @@@ void CSQCModel_Hook_PreDraw(entity this
        if(this.isplayermodel) // this checks if it's a player MODEL!
        {
                CSQCPlayer_ModelAppearance_Apply(this, this.entnum == player_localnum + 1);
 -              CSQCPlayer_LOD_Apply(this);
 +              CSQCPlayer_LOD_Apply(this, true);
  
                if(!isplayer)
                {
                        }
                }
        }
 +      else
 +              CSQCPlayer_LOD_Apply(this, false);
  
        CSQCModel_AutoTagIndex_Apply(this);
  
index 92435c01724c88b11fe8b5d97479ade25aab3e60,41b97694496616fa4de17b8f73aa2c163cb2fa6d..47cd743452ce915f4417edff8201284f3799d7e6
@@@ -11,6 -11,8 +11,8 @@@
  #include <common/net_linked.qh>
  #include <common/physics/movetypes/movetypes.qh>
  
+ #include <common/mutators/mutator/nades/nades.qh>
  #include <lib/csqcmodel/interpolate.qh>
  
  #include <lib/warpzone/anglestransform.qh>
@@@ -50,8 -52,6 +52,6 @@@ void Projectile_DrawTrail(entity this, 
        }
  }
  
- bool Projectile_isnade(int proj); // TODO: remove
  void Projectile_Draw(entity this)
  {
        vector rot;
@@@ -322,7 -322,7 +322,7 @@@ NET_HANDLE(ENT_CLIENT_PROJECTILE, bool 
                        HANDLE(SEEKER)             this.traileffect = EFFECT_SEEKER_TRAIL.m_id; break;
  
                        HANDLE(MAGE_SPIKE)         this.traileffect = EFFECT_TR_VORESPIKE.m_id; break;
 -                      HANDLE(SHAMBLER_LIGHTNING) this.traileffect = EFFECT_TR_NEXUIZPLASMA.m_id; break;
 +                      HANDLE(GOLEM_LIGHTNING) this.traileffect = EFFECT_TR_NEXUIZPLASMA.m_id; break;
  
                        HANDLE(RAPTORBOMB)         this.gravity = 1; this.avelocity = '0 0 180'; this.traileffect = EFFECT_Null.m_id; break;
                        HANDLE(RAPTORBOMBLET)      this.gravity = 1; this.avelocity = '0 0 180'; this.traileffect = EFFECT_Null.m_id; break;
                                this.bouncefactor = WEP_CVAR(mortar, bouncefactor);
                                this.bouncestop = WEP_CVAR(mortar, bouncestop);
                                break;
 -                      case PROJECTILE_SHAMBLER_LIGHTNING:
 +                      case PROJECTILE_GOLEM_LIGHTNING:
                                this.mins = '-8 -8 -8';
                                this.maxs = '8 8 8';
                                this.scale = 2.5;