]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/lib/csqcmodel/cl_model.qc
Clean up 2 WarpZoneLib functions
[xonotic/xonotic-data.pk3dir.git] / qcsrc / lib / csqcmodel / cl_model.qc
index 53b58e6297be9dc07e6d6cfd72c8e2cbd5799d45..05aba388c4b7c27a49d13cdb160a75afc559a43b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011 Rudolf PolzerCSQCModel_InterpolateAnimation_2To4_PreNote
+ * Copyright (c) 2011 Rudolf Polzer
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to
 #include "cl_player.qh"
 #include "common.qh"
 #include "interpolate.qh"
-#include <client/defs.qh>
-#include <common/animdecide.qh>
 #include <common/csqcmodel_settings.qh>
-#include <common/util.qh>
 
 float autocvar_cl_lerpanim_maxdelta_framegroups = 0.1;
 float autocvar_cl_nolerp = 0;
@@ -192,7 +189,15 @@ void CSQCModel_Draw(entity this)
 
        CSQCModel_InterpolateAnimation_Do(this);
 
-       { CSQCMODEL_HOOK_PREDRAW }
+       CSQCModel_Hook_PreDraw(this, isplayer);
+
+       if(isplayer)
+       {
+               if(this.entnum == player_localentnum)
+                       this.renderflags |= RF_EXTERNALMODEL;
+               else
+                       this.renderflags &= ~RF_EXTERNALMODEL;
+       }
 
        // inherit draw flags easily
        entity root = this;
@@ -220,21 +225,21 @@ NET_HANDLE(ENT_CLIENT_MODEL, bool isnew)
        int sf = ReadInt24_t();
 
        // some nice flags for CSQCMODEL_IF and the hooks
-       bool isplayer = (this.entnum >= 1 && this.entnum <= maxclients);
+       bool isplayer = ReadByte() || (this.entnum >= 1 && this.entnum <= maxclients);
        if (isnew && isplayer)
        {
                CSQCModel_players[this.entnum - 1] = this;
                this.entremove = CSQCModel_remove;
        }
        bool islocalplayer = (this.entnum == player_localnum + 1);
-       noref bool isnolocalplayer = (isplayer && (this.entnum != player_localnum + 1));
+       noref bool isnolocalplayer = (isplayer && !islocalplayer);
 
        this.classname = "csqcmodel";
        this.iflags |= IFLAG_ORIGIN; // interpolate origin too
        this.iflags |= IFLAG_ANGLES; // interpolate angles too
        this.iflags |= IFLAG_VELOCITY | IFLAG_AUTOVELOCITY; // let's calculate velocity automatically
 
-       { CSQCMODEL_HOOK_PREUPDATE }
+       CSQCModel_Hook_PreUpdate(this, isnew, isplayer, islocalplayer);
 
        CSQCPlayer_PreUpdate(this);
        InterpolateOrigin_Undo(this);
@@ -267,11 +272,14 @@ NET_HANDLE(ENT_CLIENT_MODEL, bool isnew)
                this.csqcmodel_teleported = 1;
        }
 
+       if(sf & BIT(14))
+               viewloc_SetTags(this);
+
        CSQCModel_InterpolateAnimation_Note(this, sf);
        InterpolateOrigin_Note(this);
        CSQCPlayer_PostUpdate(this);
 
-       { CSQCMODEL_HOOK_POSTUPDATE }
+       CSQCModel_Hook_PostUpdate(this, isnew, isplayer, islocalplayer);
 
 #ifdef CSQCMODEL_SUPPORT_GETTAGINFO_BEFORE_DRAW
        InterpolateOrigin_Do(this);
@@ -300,6 +308,6 @@ entity CSQCModel_server2csqc(int i)
 {
        if (i < maxclients) return CSQCModel_players[i];
        ++i;
-       LOG_DEBUGF("player out of bounds: %d\n", i);
+       LOG_DEBUGF("player out of bounds: %d", i);
        return findfloat(NULL, entnum, i);
 }