]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_main.c
Serious-Sam style crosshair (an actual sprite in the world, with slight variation...
[xonotic/darkplaces.git] / cl_main.c
index 11155759efe41e82f4dddf51edca1791bf41101b..f64a4e057c5e9583930f30902234539c8e01d6bd 100644 (file)
--- a/cl_main.c
+++ b/cl_main.c
@@ -20,6 +20,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 // cl_main.c  -- client main loop
 
 #include "quakedef.h"
+#include "cl_collision.h"
+#include "cl_video.h"
 
 // we need to declare some mouse variables here, because the menu system
 // references them even when on a unix system.
@@ -354,66 +356,9 @@ static void CL_RelinkNetworkEntities()
                        VectorCopy (ent->state_current.origin, oldorg); // skip trails
                        VectorCopy (ent->state_current.origin, neworg);
                        VectorCopy (ent->state_current.angles, ent->render.angles);
-
-                       /*
-                       // monster interpolation
-                       ent->persistent.steplerptime = 0;
-                       VectorCopy(ent->state_current.origin, ent->persistent.stepoldorigin);
-                       VectorCopy(ent->state_current.angles, ent->persistent.stepoldangles);
-                       VectorCopy(ent->state_current.origin, ent->persistent.steporigin);
-                       VectorCopy(ent->state_current.angles, ent->persistent.stepangles);
-                       */
-               }
-               /*
-               else if ((ent->state_current.flags & ent->state_previous.flags) & ENTFLAG_STEP)
-               {
-                       if (ent->state_current.origin[0] != ent->persistent.steporigin[0]
-                        || ent->state_current.origin[1] != ent->persistent.steporigin[1]
-                        || ent->state_current.origin[2] != ent->persistent.steporigin[2]
-                        || ent->state_current.angles[0] != ent->persistent.stepangles[0]
-                        || ent->state_current.angles[1] != ent->persistent.stepangles[1]
-                        || ent->state_current.angles[2] != ent->persistent.stepangles[2])
-                       {
-                               // update lerp positions
-                               ent->clientpersistent.steplerptime = sv.time;
-                               VectorCopy(ent->steporigin, ent->stepoldorigin);
-                               VectorCopy(ent->stepangles, ent->stepoldangles);
-                               VectorCopy(ent->v.origin, ent->steporigin);
-                               VectorCopy(ent->v.angles, ent->stepangles);
-                       }
-                       lerp = (cl.time - ent->persistent.steplerptime) * 10.0;
-                       if (lerp < 1)
-                       {
-                               // origin
-                               VectorSubtract(ent->persistent.steporigin, ent->persistent.stepoldorigin, delta);
-                               VectorMA(ent->persistent.stepoldorigin, lerp, delta, neworg);
-
-                               // angles
-                               VectorSubtract(ent->persistent.stepangles, ent->persistent.stepoldangles, delta);
-                               // choose shortest rotate (to avoid 'spin around' situations)
-                               if (delta[0] < -180) delta[0] += 360;else if (delta[0] >= 180) delta[0] -= 360;
-                               if (delta[1] < -180) delta[1] += 360;else if (delta[1] >= 180) delta[1] -= 360;
-                               if (delta[2] < -180) delta[2] += 360;else if (delta[2] >= 180) delta[2] -= 360;
-                               VectorMA(ent->stepoldangles, lerp, delta, ent->render.angles);
-                       }
-                       else
-                       {
-                               VectorCopy(ent->persistent.steporigin, neworg);
-                               VectorCopy(ent->persistent.stepangles, ent->render.angles);
-                       }
                }
-               */
                else
                {
-                       /*
-                       // monster interpolation
-                       ent->persistent.steplerptime = 0;
-                       VectorCopy(ent->state_current.origin, ent->persistent.stepoldorigin);
-                       VectorCopy(ent->state_current.angles, ent->persistent.stepoldangles);
-                       VectorCopy(ent->state_current.origin, ent->persistent.steporigin);
-                       VectorCopy(ent->state_current.angles, ent->persistent.stepangles);
-                       */
-
                        // if the delta is large, assume a teleport and don't lerp
                        VectorSubtract(ent->state_current.origin, ent->state_previous.origin, delta);
                        // LordHavoc: increased tolerance from 100 to 200, and now to 1000
@@ -476,18 +421,7 @@ static void CL_RelinkNetworkEntities()
                        if (effects & EF_BRIGHTFIELD)
                                CL_EntityParticles (ent);
                        if (effects & EF_MUZZLEFLASH)
-                       {
-                               vec3_t v, v2;
-
-                               AngleVectors (ent->render.angles, v, NULL, NULL);
-
-                               v2[0] = v[0] * 18 + neworg[0];
-                               v2[1] = v[1] * 18 + neworg[1];
-                               v2[2] = v[2] * 18 + neworg[2] + 16;
-                               TraceLine(neworg, v2, v, NULL, 0, true);
-
-                               CL_AllocDlight (NULL, v, 100, 1, 1, 1, 0, 0);
-                       }
+                               ent->persistent.muzzleflash = 100.0f;
                        if (effects & EF_DIMLIGHT)
                        {
                                dlightcolor[0] += 200.0f;
@@ -519,23 +453,6 @@ static void CL_RelinkNetworkEntities()
                                {
                                        vec3_t mins, maxs;
                                        int temp;
-                                       /*
-                                       if (ent->render.angles[0] || ent->render.angles[2])
-                                       {
-                                               VectorMA(neworg, 0.25f, ent->render.model->rotatedmins, mins);
-                                               VectorMA(neworg, 0.25f, ent->render.model->rotatedmaxs, maxs);
-                                       }
-                                       else if (ent->render.angles[1])
-                                       {
-                                               VectorMA(neworg, 0.25f, ent->render.model->yawmins, mins);
-                                               VectorMA(neworg, 0.25f, ent->render.model->yawmaxs, maxs);
-                                       }
-                                       else
-                                       {
-                                               VectorMA(neworg, 0.25f, ent->render.model->normalmins, mins);
-                                               VectorMA(neworg, 0.25f, ent->render.model->normalmaxs, maxs);
-                                       }
-                                       */
                                        mins[0] = neworg[0] - 16.0f;
                                        mins[1] = neworg[1] - 16.0f;
                                        mins[2] = neworg[2] - 16.0f;
@@ -557,23 +474,6 @@ static void CL_RelinkNetworkEntities()
                                {
                                        vec3_t mins, maxs;
                                        int temp;
-                                       /*
-                                       if (ent->render.angles[0] || ent->render.angles[2])
-                                       {
-                                               VectorMA(neworg, 0.25f, ent->render.model->rotatedmins, mins);
-                                               VectorMA(neworg, 0.25f, ent->render.model->rotatedmaxs, maxs);
-                                       }
-                                       else if (ent->render.angles[1])
-                                       {
-                                               VectorMA(neworg, 0.25f, ent->render.model->yawmins, mins);
-                                               VectorMA(neworg, 0.25f, ent->render.model->yawmaxs, maxs);
-                                       }
-                                       else
-                                       {
-                                               VectorMA(neworg, 0.25f, ent->render.model->normalmins, mins);
-                                               VectorMA(neworg, 0.25f, ent->render.model->normalmaxs, maxs);
-                                       }
-                                       */
                                        mins[0] = neworg[0] - 16.0f;
                                        mins[1] = neworg[1] - 16.0f;
                                        mins[2] = neworg[2] - 16.0f;
@@ -591,6 +491,21 @@ static void CL_RelinkNetworkEntities()
                        }
                }
 
+               if (ent->persistent.muzzleflash > 0)
+               {
+                       vec3_t v, v2;
+
+                       AngleVectors (ent->render.angles, v, NULL, NULL);
+
+                       v2[0] = v[0] * 18 + neworg[0];
+                       v2[1] = v[1] * 18 + neworg[1];
+                       v2[2] = v[2] * 18 + neworg[2] + 16;
+                       CL_TraceLine(neworg, v2, v, NULL, 0, true);
+
+                       CL_AllocDlight (NULL, v, ent->persistent.muzzleflash, 1, 1, 1, 0, 0);
+                       ent->persistent.muzzleflash -= cl.frametime * 1000;
+               }
+
                // LordHavoc: if the model has no flags, don't check each
                if (ent->render.model && ent->render.model->flags)
                {
@@ -607,9 +522,19 @@ static void CL_RelinkNetworkEntities()
                                else if (ent->render.model->flags & EF_ZOMGIB)
                                        CL_RocketTrail (oldorg, neworg, 4, ent);
                                else if (ent->render.model->flags & EF_TRACER)
+                               {
                                        CL_RocketTrail (oldorg, neworg, 3, ent);
+                                       dlightcolor[0] += 0x10;
+                                       dlightcolor[1] += 0x40;
+                                       dlightcolor[2] += 0x10;
+                               }
                                else if (ent->render.model->flags & EF_TRACER2)
+                               {
                                        CL_RocketTrail (oldorg, neworg, 5, ent);
+                                       dlightcolor[0] += 0x50;
+                                       dlightcolor[1] += 0x30;
+                                       dlightcolor[2] += 0x10;
+                               }
                                else if (ent->render.model->flags & EF_ROCKET)
                                {
                                        CL_RocketTrail (oldorg, ent->render.origin, 0, ent);
@@ -625,7 +550,12 @@ static void CL_RelinkNetworkEntities()
                                                CL_RocketTrail (oldorg, neworg, 1, ent);
                                }
                                else if (ent->render.model->flags & EF_TRACER3)
+                               {
                                        CL_RocketTrail (oldorg, neworg, 6, ent);
+                                       dlightcolor[0] += 0x50;
+                                       dlightcolor[1] += 0x20;
+                                       dlightcolor[2] += 0x40;
+                               }
                        }
                }
                // LordHavoc: customizable glow
@@ -650,7 +580,7 @@ static void CL_RelinkNetworkEntities()
                        // hack to make glowing player light shine on their gun
                        if (i == cl.viewentity && !chase_active.integer)
                                vec[2] += 30;
-                       CL_AllocDlight (/*&ent->render*/ NULL, vec, 1, dlightcolor[0], dlightcolor[1], dlightcolor[2], 0, 0);
+                       CL_AllocDlight (NULL, vec, 1, dlightcolor[0], dlightcolor[1], dlightcolor[2], 0, 0);
                }
 
                if (chase_active.integer)
@@ -792,7 +722,7 @@ void CL_RelinkEntities (void)
        CL_DecayLights ();
        CL_RelinkStaticEntities();
        CL_RelinkNetworkEntities();
-       TraceLine_ScanForBModels();
+       CL_TraceLine_ScanForBModels();
        CL_RelinkEffects();
        CL_MoveParticles();
        CL_UpdateTEnts();
@@ -1046,4 +976,7 @@ void CL_Init (void)
        CL_Particles_Init();
        CL_Screen_Init();
        CL_CGVM_Init();
+
+       CL_Video_Init();
 }
+