#include "csprogs.h"
#include "r_shadow.h"
#include "libcurl.h"
+#include "snd_main.h"
// we need to declare some mouse variables here, because the menu system
// references them even when on a unix system.
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);
}
}
===============
CL_ModelIndexList_f
-List all models in the client modelindex
+List information on all models in the client modelindex
===============
*/
static void CL_ModelIndexList_f(void)
{
- int nModelIndexCnt = 1;
+ int i = 1;
- while(cl.model_precache[nModelIndexCnt] && nModelIndexCnt != MAX_MODELS)
+ // Print Header
+ Con_Printf("%3s: %-30s %-8s %-8s\n", "ID", "Name", "Type", "Triangles");
+
+ while(cl.model_precache[i] && i != MAX_MODELS)
{ // Valid Model
- Con_Printf("%i : %s\n", nModelIndexCnt, cl.model_precache[nModelIndexCnt]->name);
- nModelIndexCnt++;
+ if(cl.model_precache[i]->loaded || cl.model_precache[i]->isworldmodel)
+ Con_Printf("%3i: %-30s %-8s %-10i\n", i, cl.model_precache[i]->name, cl.model_precache[i]->modeldatatypestring, cl.model_precache[i]->surfmesh.num_triangles);
+ else
+ Con_Printf("%3i: %-30s %-30s\n", i, cl.model_precache[i]->name, "--no local model found--");
+ i++;
+ }
+}
+
+/*
+===============
+CL_SoundIndexList_f
+
+List all sounds in the client soundindex
+===============
+*/
+static void CL_SoundIndexList_f(void)
+{
+ int i = 1;
+
+ while(cl.sound_precache[i] && i != MAX_SOUNDS)
+ { // Valid Sound
+ Con_Printf("%i : %s\n", i, cl.sound_precache[i]->name);
+ i++;
}
}
{
const matrix4x4_t *matrix;
matrix4x4_t blendmatrix, tempmatrix, matrix2;
- int j, k, l;
+ int j, k, l, frame;
float origin[3], angles[3], delta[3], lerp, d;
entity_t *t;
model_t *model;
e->render.entitynumber = e - cl.entities;
if (e->state_current.flags & RENDER_COLORMAPPED)
{
- int cb;
unsigned char *cbcolor;
e->render.colormap = e->state_current.colormap;
- cb = (e->render.colormap & 0xF) << 4;cb += (cb >= 128 && cb < 224) ? 4 : 12;
- cbcolor = (unsigned char *) (&palette_complete[cb]);
+ cbcolor = (unsigned char *) (&palette_pantscolormap[e->render.colormap & 0xF]);
e->render.colormap_pantscolor[0] = cbcolor[0] * (1.0f / 255.0f);
e->render.colormap_pantscolor[1] = cbcolor[1] * (1.0f / 255.0f);
e->render.colormap_pantscolor[2] = cbcolor[2] * (1.0f / 255.0f);
- cb = (e->render.colormap & 0xF0);cb += (cb >= 128 && cb < 224) ? 4 : 12;
- cbcolor = (unsigned char *) (&palette_complete[cb]);
+ cbcolor = (unsigned char *) (&palette_shirtcolormap[(e->render.colormap & 0xF0) >> 4]);
e->render.colormap_shirtcolor[0] = cbcolor[0] * (1.0f / 255.0f);
e->render.colormap_shirtcolor[1] = cbcolor[1] * (1.0f / 255.0f);
e->render.colormap_shirtcolor[2] = cbcolor[2] * (1.0f / 255.0f);
}
- else if (e->state_current.colormap && cl.scores != NULL)
+ else if (e->state_current.colormap && cl.scores != NULL && e->state_current.colormap <= cl.maxclients)
{
- int cb;
unsigned char *cbcolor;
e->render.colormap = cl.scores[e->state_current.colormap - 1].colors; // color it
- cb = (e->render.colormap & 0xF) << 4;cb += (cb >= 128 && cb < 224) ? 4 : 12;
- cbcolor = (unsigned char *) (&palette_complete[cb]);
+ cbcolor = (unsigned char *) (&palette_pantscolormap[e->render.colormap & 0xF]);
e->render.colormap_pantscolor[0] = cbcolor[0] * (1.0f / 255.0f);
e->render.colormap_pantscolor[1] = cbcolor[1] * (1.0f / 255.0f);
e->render.colormap_pantscolor[2] = cbcolor[2] * (1.0f / 255.0f);
- cb = (e->render.colormap & 0xF0);cb += (cb >= 128 && cb < 224) ? 4 : 12;
- cbcolor = (unsigned char *) (&palette_complete[cb]);
+ cbcolor = (unsigned char *) (&palette_shirtcolormap[(e->render.colormap & 0xF0) >> 4]);
e->render.colormap_shirtcolor[0] = cbcolor[0] * (1.0f / 255.0f);
e->render.colormap_shirtcolor[1] = cbcolor[1] * (1.0f / 255.0f);
e->render.colormap_shirtcolor[2] = cbcolor[2] * (1.0f / 255.0f);
}
// model setup and some modelflags
- if(e->state_current.modelindex < MAX_MODELS)
+ frame = e->state_current.frame;
+ if (e->state_current.modelindex < MAX_MODELS)
e->render.model = cl.model_precache[e->state_current.modelindex];
+ else
+ e->render.model = NULL;
if (e->render.model)
{
+ if (e->render.skinnum >= e->render.model->numskins)
+ e->render.skinnum = 0;
+ if (frame >= e->render.model->numframes)
+ frame = 0;
// models can set flags such as EF_ROCKET
// this 0xFF800000 mask is EF_NOMODELFLAGS plus all the higher EF_ flags such as EF_ROCKET
if (!(e->render.effects & 0xFF800000))
}
// animation lerp
- if (e->render.frame2 == e->state_current.frame)
+ if (e->render.frame2 == frame)
{
// update frame lerp fraction
e->render.framelerp = 1;
// 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 = frame;
e->render.frame2time = cl.time;
e->render.framelerp = 0;
}
if (e->persistent.muzzleflash > 0)
e->persistent.muzzleflash -= bound(0, cl.time - cl.oldtime, 0.1) * 20;
// LordHavoc: if the entity has no effects, don't check each
- if (e->render.model && e->render.effects && !(e->render.flags & RENDER_VIEWMODEL))
+ if (e->render.effects && !(e->render.flags & RENDER_VIEWMODEL))
{
if (e->render.effects & EF_GIB)
trailtype = EFFECT_TR_BLOOD;
// 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;
}
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);
Cmd_AddCommand ("timedemo", CL_TimeDemo_f, "play back a demo as fast as possible and save statistics to benchmark.log");
// Support Client-side Model Index List
- Cmd_AddCommand ("cl_modelindexlist", CL_ModelIndexList_f, "list all models in the client modelindex");
+ Cmd_AddCommand ("cl_modelindexlist", CL_ModelIndexList_f, "list information on all models in the client modelindex");
+ // Support Client-side Sound Index List
+ Cmd_AddCommand ("cl_soundindexlist", CL_SoundIndexList_f, "list all sounds in the client soundindex");
Cvar_RegisterVariable (&cl_autodemo);
Cvar_RegisterVariable (&cl_autodemo_nameformat);