]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_main.c
changed all references to entity_render_t->frame to frame2 to eliminate
[xonotic/darkplaces.git] / cl_main.c
index 8cba25a7d602e8be5cad11550323dba3af94d38a..edbcd5bb482a0f66a1bce28c5618016736dd7093 100644 (file)
--- a/cl_main.c
+++ b/cl_main.c
@@ -110,6 +110,11 @@ void CL_ClearState(void)
        // reset the view zoom interpolation
        cl.mviewzoom[0] = cl.mviewzoom[1] = 1;
 
+       // enable rendering of the world and such
+       cl.csqc_vidvars.drawworld = true;
+       cl.csqc_vidvars.drawenginesbar = true;
+       cl.csqc_vidvars.drawcrosshair = true;
+
        // set up the float version of the stats array for easier access to float stats
        cl.statsf = (float *)cl.stats;
 
@@ -341,9 +346,9 @@ void CL_Disconnect(void)
                        Con_DPrint("Sending clc_disconnect\n");
                        MSG_WriteByte(&buf, clc_disconnect);
                }
-               NetConn_SendUnreliableMessage(cls.netcon, &buf, cls.protocol, 10000);
-               NetConn_SendUnreliableMessage(cls.netcon, &buf, cls.protocol, 10000);
-               NetConn_SendUnreliableMessage(cls.netcon, &buf, cls.protocol, 10000);
+               NetConn_SendUnreliableMessage(cls.netcon, &buf, cls.protocol, 10000, false);
+               NetConn_SendUnreliableMessage(cls.netcon, &buf, cls.protocol, 10000, false);
+               NetConn_SendUnreliableMessage(cls.netcon, &buf, cls.protocol, 10000, false);
                NetConn_Close(cls.netcon);
                cls.netcon = NULL;
        }
@@ -435,7 +440,7 @@ static void CL_PrintEntities_f(void)
                        modelname = ent->render.model->name;
                else
                        modelname = "--no model--";
-               Con_Printf("%3i: %-25s:%4i (%5i %5i %5i) [%3i %3i %3i] %4.2f %5.3f\n", i, modelname, ent->render.frame, (int) ent->state_current.origin[0], (int) ent->state_current.origin[1], (int) ent->state_current.origin[2], (int) ent->state_current.angles[0] % 360, (int) ent->state_current.angles[1] % 360, (int) ent->state_current.angles[2] % 360, ent->render.scale, ent->render.alpha);
+               Con_Printf("%3i: %-25s:%4i (%5i %5i %5i) [%3i %3i %3i] %4.2f %5.3f\n", i, modelname, ent->render.frame2, (int) ent->state_current.origin[0], (int) ent->state_current.origin[1], (int) ent->state_current.origin[2], (int) ent->state_current.angles[0] % 360, (int) ent->state_current.angles[1] % 360, (int) ent->state_current.angles[2] % 360, ent->render.scale, ent->render.alpha);
        }
 }
 
@@ -900,7 +905,10 @@ void CL_UpdateNetworkEntity(entity_t *e, int recursionlimit, qboolean interpolat
        else if (e->render.flags & RENDER_VIEWMODEL)
        {
                // view-relative entity (guns and such)
-               matrix = &viewmodelmatrix;
+               if (e->render.effects & EF_NOGUNBOB)
+                       matrix = &r_view.matrix; // really attached to view
+               else
+                       matrix = &viewmodelmatrix; // attached to gun bob matrix
        }
        else
        {
@@ -949,7 +957,9 @@ void CL_UpdateNetworkEntity(entity_t *e, int recursionlimit, qboolean interpolat
        if (e->render.model)
        {
                // models can set flags such as EF_ROCKET
-               e->render.effects |= e->render.model->effects;
+               // this 0xFF800000 mask is EF_NOMODELFLAGS plus all the higher EF_ flags such as EF_ROCKET
+               if (!(e->render.effects & 0xFF800000))
+                       e->render.effects |= e->render.model->effects;
                // if model is alias or this is a tenebrae-like dlight, reverse pitch direction
                if (e->render.model->type == mod_alias)
                        angles[0] = -angles[0];
@@ -986,7 +996,7 @@ void CL_UpdateNetworkEntity(entity_t *e, int recursionlimit, qboolean interpolat
                // begin a new frame lerp
                e->render.frame1 = e->render.frame2;
                e->render.frame1time = e->render.frame2time;
-               e->render.frame = e->render.frame2 = e->state_current.frame;
+               e->render.frame2 = e->state_current.frame;
                e->render.frame2time = cl.time;
                e->render.framelerp = 0;
        }
@@ -1216,12 +1226,12 @@ void CL_UpdateViewModel(void)
                        ent->state_current.modelindex = 0;
        }
        ent->state_current.alpha = cl.entities[cl.viewentity].state_current.alpha;
-       ent->state_current.effects = EF_NOSHADOW | (cl.entities[cl.viewentity].state_current.effects & (EF_ADDITIVE | EF_FULLBRIGHT | EF_NODEPTHTEST));
+       ent->state_current.effects = EF_NOSHADOW | (cl.entities[cl.viewentity].state_current.effects & (EF_ADDITIVE | EF_FULLBRIGHT | EF_NODEPTHTEST | EF_NOGUNBOB));
 
        // reset animation interpolation on weaponmodel if model changed
        if (ent->state_previous.modelindex != ent->state_current.modelindex)
        {
-               ent->render.frame = ent->render.frame1 = ent->render.frame2 = ent->state_current.frame;
+               ent->render.frame1 = ent->render.frame2 = ent->state_current.frame;
                ent->render.frame1time = ent->render.frame2time = cl.time;
                ent->render.framelerp = 1;
        }
@@ -1502,7 +1512,6 @@ static void CL_RelinkEffects(void)
                                        ent->render.model = cl.model_precache[e->modelindex];
                                else
                                        ent->render.model = cl.csqc_model_precache[-(e->modelindex+1)];
-                               ent->render.frame = ent->render.frame2;
                                ent->render.colormap = -1; // no special coloring
                                ent->render.alpha = 1;
                                VectorSet(ent->render.colormod, 1, 1, 1);
@@ -1554,7 +1563,7 @@ void CL_RelinkBeams(void)
        vec3_t dist, org, start, end;
        float d;
        entity_t *ent;
-       float yaw, pitch;
+       double yaw, pitch;
        float forward;
        matrix4x4_t tempmatrix;
 
@@ -1597,12 +1606,12 @@ void CL_RelinkBeams(void)
                }
                else
                {
-                       yaw = (int) (atan2(dist[1], dist[0]) * 180 / M_PI);
+                       yaw = atan2(dist[1], dist[0]) * 180 / M_PI;
                        if (yaw < 0)
                                yaw += 360;
 
                        forward = sqrt (dist[0]*dist[0] + dist[1]*dist[1]);
-                       pitch = (int) (atan2(dist[2], forward) * 180 / M_PI);
+                       pitch = atan2(dist[2], forward) * 180 / M_PI;
                        if (pitch < 0)
                                pitch += 360;
                }