#include "clprogdefs.h"
#include "csprogs.h"
#include "cl_collision.h"
+#include "snd_main.h"
//============================================================================
// Client prog handling
VectorSet(prog->globals.client->input_movevalues, cl.movecmd[0].forwardmove, cl.movecmd[0].sidemove, cl.movecmd[0].upmove);
//VectorCopy(cl.movement_origin, cl.csqc_origin);
Matrix4x4_OriginFromMatrix(&cl.entities[cl.viewentity].render.matrix, cl.csqc_origin);
+
+ // LordHavoc: Spike says not to do this, but without pmove_org the
+ // CSQC is useless as it can't alter the view origin without
+ // completely replacing it
+ VectorCopy(cl.csqc_origin, prog->globals.client->pmove_org);
+ VectorCopy(cl.velocity, prog->globals.client->pmove_vel);
+
if ((val = PRVM_GLOBALFIELDVALUE(prog->globaloffsets.view_angles)))
VectorCopy(cl.viewangles, val->vector);
prog->globals.client->maxclients = cl.maxclients;
else
palcol = cl.scores[e->render.colormap-1].colors;
- cbcolor = (unsigned char *) (&palette_pantscolormap[palcol & 0xF]);
+ cbcolor = palette_rgb_pantscolormap[palcol & 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);
- cbcolor = (unsigned char *) (&palette_shirtcolormap[(palcol & 0xF0) >> 4]);
+ cbcolor = palette_rgb_shirtcolormap[(palcol & 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);
CSQC_END
}
}
+qboolean CL_VM_Event_Sound(int sound_num, int volume, int channel, float attenuation, int ent, vec3_t pos)
+{
+ qboolean r = false;
+ if(cl.csqc_loaded)
+ {
+ CSQC_BEGIN
+ if(prog->funcoffsets.CSQC_Event_Sound)
+ {
+ prog->globals.client->time = cl.time;
+ PRVM_G_FLOAT(OFS_PARM0) = ent;
+ PRVM_G_FLOAT(OFS_PARM1) = channel;
+ PRVM_G_INT(OFS_PARM2) = PRVM_SetTempString(cl.sound_name[sound_num] );
+ PRVM_G_FLOAT(OFS_PARM3) = volume;
+ PRVM_G_FLOAT(OFS_PARM4) = attenuation;
+ VectorCopy(pos, PRVM_G_VECTOR(OFS_PARM5) );
+ PRVM_ExecuteProgram(prog->funcoffsets.CSQC_Event_Sound, "QC function CSQC_Event_Sound is missing");
+ r = CSQC_RETURNVAL;
+ }
+ CSQC_END
+ }
+
+ return r;
+}
void CL_VM_UpdateCoopDeathmatchGlobals (int gametype)
{
// Avoid global names for clean(er) coding
prog->limit_edicts = CL_MAX_EDICTS;
prog->reserved_edicts = 0;
prog->edictprivate_size = sizeof(edict_engineprivate_t);
+ // TODO: add a shared extension string #define and add real support for csqc extension strings [12/5/2007 Black]
prog->extensionstring = vm_sv_extensions;
prog->builtins = vm_cl_builtins;
prog->numbuiltins = vm_cl_numbuiltins;