DarkPlaces
Game engine based on the Quake 1 engine by id Software, developed by LadyHavoc
 
clvm_cmds.c File Reference
#include "quakedef.h"
#include "prvm_cmds.h"
#include "csprogs.h"
#include "cl_collision.h"
#include "r_shadow.h"
#include "jpeg.h"
#include "image.h"
+ Include dependency graph for clvm_cmds.c:

Go to the source code of this file.

Data Structures

struct  vmparticlespawner_t
 
struct  vmparticletheme_t
 

Macros

#define CL_HitNetworkBrushModels(move)
 
#define CL_HitNetworkPlayers(move)
 
#define PMF_DUCKED   4
 
#define PMF_JUMP_HELD   1
 
#define PMF_LADDER   2
 
#define PMF_ONGROUND   8
 
#define PRECACHE_PIC_FROMWAD   1 /* FTEQW, not supported here */
 
#define PRECACHE_PIC_MIPMAP   8
 
#define PRECACHE_PIC_NOTPERSISTENT   2
 
#define REFDEFFLAG_DEAD   4
 
#define REFDEFFLAG_INTERMISSION   8
 
#define REFDEFFLAG_JUMPING   2
 
#define REFDEFFLAG_TELEPORTED   1
 

Functions

static qbool CL_CheckBottom (prvm_edict_t *ent)
 
static int CL_GetEntityLocalTagMatrix (prvm_prog_t *prog, prvm_edict_t *ent, int tagindex, matrix4x4_t *out)
 
void CL_GetEntityMatrix (prvm_prog_t *prog, prvm_edict_t *ent, matrix4x4_t *out, qbool viewmatrix)
 
static int CL_GetExtendedTagInfo (prvm_prog_t *prog, prvm_edict_t *e, int tagindex, int *parentindex, const char **tagname, matrix4x4_t *tag_localmatrix)
 
int CL_GetPitchSign (prvm_prog_t *prog, prvm_edict_t *ent)
 
static int CL_GetTagIndex (prvm_prog_t *prog, prvm_edict_t *e, const char *tagname)
 
int CL_GetTagMatrix (prvm_prog_t *prog, matrix4x4_t *out, prvm_edict_t *ent, int tagindex, prvm_vec_t *returnshadingorigin)
 
static qbool CL_movestep (prvm_edict_t *ent, vec3_t move, qbool relink, qbool noenemy, qbool settrace)
 
static trace_t CL_Trace_Toss (prvm_prog_t *prog, prvm_edict_t *tossent, prvm_edict_t *ignore, int *svent)
 
static void CL_VM_SetTraceGlobals (prvm_prog_t *prog, const trace_t *trace, int svent)
 
void CLVM_init_cmd (prvm_prog_t *prog)
 
void CLVM_reset_cmd (prvm_prog_t *prog)
 
void CSQC_R_RecalcView (void)
 
static dp_font_tgetdrawfont (prvm_prog_t *prog)
 
static float getdrawfontnum (const char *fontname)
 
static void getdrawfontscale (prvm_prog_t *prog, float *sx, float *sy)
 
static void SetMinMaxSize (prvm_prog_t *prog, prvm_edict_t *e, const vec_t *min, const vec_t *max)
 
static void SetMinMaxSizePRVM (prvm_prog_t *prog, prvm_edict_t *e, prvm_vec_t *min, prvm_vec_t *max)
 
static void VM_CL_ambientsound (prvm_prog_t *prog)
 
static void VM_CL_boxparticles (prvm_prog_t *prog)
 
static void VM_CL_checkbottom (prvm_prog_t *prog)
 
static void VM_CL_checkpvs (prvm_prog_t *prog)
 
static void VM_CL_copyentity (prvm_prog_t *prog)
 
static void VM_CL_droptofloor (prvm_prog_t *prog)
 
static void VM_CL_effect (prvm_prog_t *prog)
 
static void VM_CL_findbox (prvm_prog_t *prog)
 
static void VM_CL_findradius (prvm_prog_t *prog)
 
static void VM_CL_frameduration (prvm_prog_t *prog)
 
static void VM_CL_frameforname (prvm_prog_t *prog)
 
static void VM_CL_GetEntity (prvm_prog_t *prog)
 
static void VM_CL_getinputstate (prvm_prog_t *prog)
 
static void VM_CL_getlight (prvm_prog_t *prog)
 
static void VM_CL_getmousepos (prvm_prog_t *prog)
 
static void VM_CL_getplayerkey (prvm_prog_t *prog)
 
static void VM_CL_getstatf (prvm_prog_t *prog)
 
static void VM_CL_getstati (prvm_prog_t *prog)
 
static void VM_CL_getstats (prvm_prog_t *prog)
 
static void VM_CL_gettagindex (prvm_prog_t *prog)
 
static void VM_CL_gettaginfo (prvm_prog_t *prog)
 
static void VM_CL_InitParticleSpawner (prvm_prog_t *prog)
 
static void VM_CL_lightstyle (prvm_prog_t *prog)
 
static void VM_CL_loadcubemap (prvm_prog_t *prog)
 
static void VM_CL_makestatic (prvm_prog_t *prog)
 
static void VM_CL_makevectors (prvm_prog_t *prog)
 
static void VM_CL_modelnameforindex (prvm_prog_t *prog)
 
static void VM_CL_particle (prvm_prog_t *prog)
 
static void VM_CL_particleeffectnum (prvm_prog_t *prog)
 
static void VM_CL_ParticleTheme (prvm_prog_t *prog)
 
static void VM_CL_ParticleThemeFree (prvm_prog_t *prog)
 
static void VM_CL_ParticleThemeFromGlobals (vmparticletheme_t *theme, prvm_prog_t *prog)
 
static void VM_CL_ParticleThemeSave (prvm_prog_t *prog)
 
static void VM_CL_ParticleThemeToGlobals (vmparticletheme_t *theme, prvm_prog_t *prog)
 
static void VM_CL_pointcontents (prvm_prog_t *prog)
 
static void VM_CL_pointparticles (prvm_prog_t *prog)
 
static void VM_CL_pointsound (prvm_prog_t *prog)
 
static void VM_CL_precache_model (prvm_prog_t *prog)
 
static void VM_CL_project (prvm_prog_t *prog)
 
static void VM_CL_R_AddDynamicLight (prvm_prog_t *prog)
 
static void VM_CL_R_AddEntities (prvm_prog_t *prog)
 
static void VM_CL_R_AddEntity (prvm_prog_t *prog)
 
static void VM_CL_R_ClearScene (prvm_prog_t *prog)
 
static void VM_CL_R_PolygonBegin (prvm_prog_t *prog)
 
static void VM_CL_R_PolygonEnd (prvm_prog_t *prog)
 
static void VM_CL_R_PolygonVertex (prvm_prog_t *prog)
 
static void VM_CL_R_RenderScene (prvm_prog_t *prog)
 
static void VM_CL_R_SetView (prvm_prog_t *prog)
 
static void VM_CL_ReadAngle (prvm_prog_t *prog)
 
static void VM_CL_ReadByte (prvm_prog_t *prog)
 
static void VM_CL_ReadChar (prvm_prog_t *prog)
 
static void VM_CL_ReadCoord (prvm_prog_t *prog)
 
static void VM_CL_ReadFloat (prvm_prog_t *prog)
 
static void VM_CL_ReadLong (prvm_prog_t *prog)
 
static void VM_CL_ReadPicture (prvm_prog_t *prog)
 
static void VM_CL_ReadShort (prvm_prog_t *prog)
 
static void VM_CL_ReadString (prvm_prog_t *prog)
 
static void VM_CL_registercmd (prvm_prog_t *prog)
 
static void VM_CL_ResetParticle (prvm_prog_t *prog)
 
static void VM_CL_RotateMoves (prvm_prog_t *prog)
 
static void VM_CL_runplayerphysics (prvm_prog_t *prog)
 
static void VM_CL_serverkey (prvm_prog_t *prog)
 
static void VM_CL_setattachment (prvm_prog_t *prog)
 
static void VM_CL_setcursormode (prvm_prog_t *prog)
 
static void VM_CL_setlistener (prvm_prog_t *prog)
 
static void VM_CL_setmodel (prvm_prog_t *prog)
 
static void VM_CL_setmodelindex (prvm_prog_t *prog)
 
static void VM_CL_setorigin (prvm_prog_t *prog)
 
static void VM_CL_setpause (prvm_prog_t *prog)
 
static void VM_CL_setsensitivityscale (prvm_prog_t *prog)
 
static void VM_CL_setsize (prvm_prog_t *prog)
 
static void VM_CL_skel_build (prvm_prog_t *prog)
 
static void VM_CL_skel_copybones (prvm_prog_t *prog)
 
static void VM_CL_skel_create (prvm_prog_t *prog)
 
static void VM_CL_skel_delete (prvm_prog_t *prog)
 
static void VM_CL_skel_find_bone (prvm_prog_t *prog)
 
static void VM_CL_skel_get_boneabs (prvm_prog_t *prog)
 
static void VM_CL_skel_get_bonename (prvm_prog_t *prog)
 
static void VM_CL_skel_get_boneparent (prvm_prog_t *prog)
 
static void VM_CL_skel_get_bonerel (prvm_prog_t *prog)
 
static void VM_CL_skel_get_numbones (prvm_prog_t *prog)
 
static void VM_CL_skel_mul_bone (prvm_prog_t *prog)
 
static void VM_CL_skel_mul_bones (prvm_prog_t *prog)
 
static void VM_CL_skel_set_bone (prvm_prog_t *prog)
 
static void VM_CL_sound (prvm_prog_t *prog)
 
static void VM_CL_spawn (prvm_prog_t *prog)
 
static void VM_CL_SpawnParticle (prvm_prog_t *prog)
 
static void VM_CL_SpawnParticleDelayed (prvm_prog_t *prog)
 
static void VM_CL_te_beam (prvm_prog_t *prog)
 
static void VM_CL_te_blood (prvm_prog_t *prog)
 
static void VM_CL_te_bloodshower (prvm_prog_t *prog)
 
static void VM_CL_te_customflash (prvm_prog_t *prog)
 
static void VM_CL_te_explosion (prvm_prog_t *prog)
 
static void VM_CL_te_explosion2 (prvm_prog_t *prog)
 
static void VM_CL_te_explosionquad (prvm_prog_t *prog)
 
static void VM_CL_te_explosionrgb (prvm_prog_t *prog)
 
static void VM_CL_te_flamejet (prvm_prog_t *prog)
 
static void VM_CL_te_gunshot (prvm_prog_t *prog)
 
static void VM_CL_te_gunshotquad (prvm_prog_t *prog)
 
static void VM_CL_te_knightspike (prvm_prog_t *prog)
 
static void VM_CL_te_lavasplash (prvm_prog_t *prog)
 
static void VM_CL_te_lightning1 (prvm_prog_t *prog)
 
static void VM_CL_te_lightning2 (prvm_prog_t *prog)
 
static void VM_CL_te_lightning3 (prvm_prog_t *prog)
 
static void VM_CL_te_particlecube (prvm_prog_t *prog)
 
static void VM_CL_te_particlerain (prvm_prog_t *prog)
 
static void VM_CL_te_particlesnow (prvm_prog_t *prog)
 
static void VM_CL_te_plasmaburn (prvm_prog_t *prog)
 
static void VM_CL_te_smallflash (prvm_prog_t *prog)
 
static void VM_CL_te_spark (prvm_prog_t *prog)
 
static void VM_CL_te_spike (prvm_prog_t *prog)
 
static void VM_CL_te_spikequad (prvm_prog_t *prog)
 
static void VM_CL_te_superspike (prvm_prog_t *prog)
 
static void VM_CL_te_superspikequad (prvm_prog_t *prog)
 
static void VM_CL_te_tarexplosion (prvm_prog_t *prog)
 
static void VM_CL_te_teleport (prvm_prog_t *prog)
 
static void VM_CL_te_wizspike (prvm_prog_t *prog)
 
static void VM_CL_tracebox (prvm_prog_t *prog)
 
static void VM_CL_traceline (prvm_prog_t *prog)
 
static void VM_CL_tracetoss (prvm_prog_t *prog)
 
static void VM_CL_trailparticles (prvm_prog_t *prog)
 
static void VM_CL_unproject (prvm_prog_t *prog)
 
static void VM_CL_V_CalcRefdef (prvm_prog_t *prog)
 
static void VM_CL_walkmove (prvm_prog_t *prog)
 
void VM_drawcharacter (prvm_prog_t *prog)
 
void VM_drawcolorcodedstring (prvm_prog_t *prog)
 
void VM_drawfill (prvm_prog_t *prog)
 
void VM_drawline (prvm_prog_t *prog)
 
void VM_drawpic (prvm_prog_t *prog)
 
void VM_drawresetcliparea (prvm_prog_t *prog)
 
void VM_drawrotpic (prvm_prog_t *prog)
 
void VM_drawsetcliparea (prvm_prog_t *prog)
 
void VM_drawstring (prvm_prog_t *prog)
 
void VM_drawsubpic (prvm_prog_t *prog)
 
void VM_findfont (prvm_prog_t *prog)
 
void VM_freepic (prvm_prog_t *prog)
 
void VM_getimagesize (prvm_prog_t *prog)
 
static void VM_InitParticleSpawner (prvm_prog_t *prog, int maxthemes)
 
void VM_iscachedpic (prvm_prog_t *prog)
 
void VM_loadfont (prvm_prog_t *prog)
 
void VM_precache_pic (prvm_prog_t *prog)
 
static void VM_ResetParticleTheme (vmparticletheme_t *theme)
 
void VM_stringwidth (prvm_prog_t *prog)
 

Variables

cvar_t cl_bob
 
cvar_t cl_bobcycle
 
cvar_t cl_bobup
 
cvar_t cl_readpicture_force
 
cvar_t cl_sound_ric_gunshot
 
r_refdef_view_t csqc_main_r_refdef_view
 
r_refdef_view_t csqc_original_r_refdef_view
 
cvar_t v_flipped
 
cvar_t v_yshearing
 
prvm_builtin_t vm_cl_builtins []
 
const int vm_cl_numbuiltins = sizeof(vm_cl_builtins) / sizeof(prvm_builtin_t)
 
vmparticlespawner_t vmpartspawner
 

Macro Definition Documentation

◆ CL_HitNetworkBrushModels

#define CL_HitNetworkBrushModels ( move)
Value:
!((move) == MOVE_WORLDONLY)
#define MOVE_WORLDONLY
Definition world.h:31

Definition at line 277 of file clvm_cmds.c.

Referenced by VM_CL_tracebox(), and VM_CL_traceline().

◆ CL_HitNetworkPlayers

#define CL_HitNetworkPlayers ( move)
Value:
!((move) == MOVE_WORLDONLY || (move) == MOVE_NOMONSTERS)
#define MOVE_NOMONSTERS
Definition world.h:29

Definition at line 278 of file clvm_cmds.c.

Referenced by VM_CL_tracebox(), and VM_CL_traceline().

◆ PMF_DUCKED

#define PMF_DUCKED   4

Definition at line 2327 of file clvm_cmds.c.

Referenced by VM_CL_runplayerphysics().

◆ PMF_JUMP_HELD

#define PMF_JUMP_HELD   1

Definition at line 2325 of file clvm_cmds.c.

Referenced by VM_CL_runplayerphysics().

◆ PMF_LADDER

#define PMF_LADDER   2

Definition at line 2326 of file clvm_cmds.c.

◆ PMF_ONGROUND

#define PMF_ONGROUND   8

Definition at line 2328 of file clvm_cmds.c.

Referenced by VM_CL_runplayerphysics(), and VM_CL_V_CalcRefdef().

◆ PRECACHE_PIC_FROMWAD

#define PRECACHE_PIC_FROMWAD   1 /* FTEQW, not supported here */

Definition at line 1302 of file clvm_cmds.c.

◆ PRECACHE_PIC_MIPMAP

#define PRECACHE_PIC_MIPMAP   8

Definition at line 1305 of file clvm_cmds.c.

Referenced by VM_precache_pic().

◆ PRECACHE_PIC_NOTPERSISTENT

#define PRECACHE_PIC_NOTPERSISTENT   2

Definition at line 1303 of file clvm_cmds.c.

Referenced by VM_precache_pic().

◆ REFDEFFLAG_DEAD

#define REFDEFFLAG_DEAD   4

Definition at line 4956 of file clvm_cmds.c.

Referenced by VM_CL_V_CalcRefdef().

◆ REFDEFFLAG_INTERMISSION

#define REFDEFFLAG_INTERMISSION   8

Definition at line 4957 of file clvm_cmds.c.

Referenced by VM_CL_V_CalcRefdef().

◆ REFDEFFLAG_JUMPING

#define REFDEFFLAG_JUMPING   2

Definition at line 4955 of file clvm_cmds.c.

Referenced by VM_CL_V_CalcRefdef().

◆ REFDEFFLAG_TELEPORTED

#define REFDEFFLAG_TELEPORTED   1

Definition at line 4954 of file clvm_cmds.c.

Referenced by VM_CL_V_CalcRefdef().

Function Documentation

◆ CL_CheckBottom()

static qbool CL_CheckBottom ( prvm_edict_t * ent)
static

Definition at line 4273 of file clvm_cmds.c.

4274{
4275 prvm_prog_t *prog = CLVM_prog;
4276 vec3_t mins, maxs, start, stop;
4277 trace_t trace;
4278 int x, y;
4279 float mid, bottom;
4280
4283
4284// if all of the points under the corners are solid world, don't bother
4285// with the tougher checks
4286// the corners must be within 16 of the midpoint
4287 start[2] = mins[2] - 1;
4288 for (x=0 ; x<=1 ; x++)
4289 for (y=0 ; y<=1 ; y++)
4290 {
4291 start[0] = x ? maxs[0] : mins[0];
4292 start[1] = y ? maxs[1] : mins[1];
4294 goto realcheck;
4295 }
4296
4297 return true; // we got out easy
4298
4299realcheck:
4300//
4301// check it for real...
4302//
4303 start[2] = mins[2];
4304
4305// the midpoint must be within 16 of the bottom
4306 start[0] = stop[0] = (mins[0] + maxs[0])*0.5;
4307 start[1] = stop[1] = (mins[1] + maxs[1])*0.5;
4308 stop[2] = start[2] - 2*sv_stepheight.value;
4309 trace = CL_TraceLine(start, stop, MOVE_NOMONSTERS, ent, CL_GenericHitSuperContentsMask(ent), 0, 0, collision_extendmovelength.value, true, false, NULL, true, false);
4310
4311 if (trace.fraction == 1.0)
4312 return false;
4313 mid = bottom = trace.endpos[2];
4314
4315// the corners must be within 16 of the midpoint
4316 for (x=0 ; x<=1 ; x++)
4317 for (y=0 ; y<=1 ; y++)
4318 {
4319 start[0] = stop[0] = x ? maxs[0] : mins[0];
4320 start[1] = stop[1] = y ? maxs[1] : mins[1];
4321
4322 trace = CL_TraceLine(start, stop, MOVE_NOMONSTERS, ent, CL_GenericHitSuperContentsMask(ent), 0, 0, collision_extendmovelength.value, true, false, NULL, true, false);
4323
4324 if (trace.fraction != 1.0 && trace.endpos[2] > bottom)
4325 bottom = trace.endpos[2];
4326 if (trace.fraction == 1.0 || mid - trace.endpos[2] > sv_stepheight.value)
4327 return false;
4328 }
4329
4330 return true;
4331}
#define SUPERCONTENTS_BODY
Definition bspfile.h:201
#define SUPERCONTENTS_SOLID
Definition bspfile.h:196
int CL_GenericHitSuperContentsMask(const prvm_edict_t *passedict)
trace_t CL_TraceLine(const vec3_t start, const vec3_t end, int type, prvm_edict_t *passedict, int hitsupercontentsmask, int skipsupercontentsmask, int skipmaterialflagsmask, float extend, qbool hitnetworkbrushmodels, qbool hitnetworkplayers, int *hitnetworkentity, qbool hitcsqcentities, qbool hitsurfaces)
#define CL_PointSuperContents(point)
cvar_t collision_extendmovelength
Definition collision.c:14
vector mins
vector maxs
vector origin
GLint GLenum GLint GLint y
Definition glquake.h:651
GLint GLenum GLint x
Definition glquake.h:651
#define VectorAdd(a, b, out)
Definition mathlib.h:100
#define CLVM_prog
Definition progsvm.h:767
#define PRVM_clientedictvector(ed, fieldname)
Definition progsvm.h:185
#define NULL
Definition qtypes.h:12
vec_t vec3_t[3]
Definition qtypes.h:71
cvar_t sv_stepheight
Definition sv_main.c:153
float value
Definition cvar.h:74
double fraction
Definition collision.h:40
double endpos[3]
Definition collision.h:42

References CL_GenericHitSuperContentsMask(), CL_PointSuperContents, CL_TraceLine(), CLVM_prog, collision_extendmovelength, trace_t::endpos, trace_t::fraction, maxs, mins, MOVE_NOMONSTERS, NULL, origin, PRVM_clientedictvector, SUPERCONTENTS_BODY, SUPERCONTENTS_SOLID, sv_stepheight, cvar_t::value, VectorAdd, x, and y.

Referenced by CL_movestep().

◆ CL_GetEntityLocalTagMatrix()

static int CL_GetEntityLocalTagMatrix ( prvm_prog_t * prog,
prvm_edict_t * ent,
int tagindex,
matrix4x4_t * out )
static

Definition at line 3260 of file clvm_cmds.c.

3261{
3262 model_t *model;
3263 if (tagindex >= 0
3264 && (model = CL_GetModelFromEdict(ent))
3265 && model->animscenes)
3266 {
3267 VM_GenerateFrameGroupBlend(prog, ent->priv.server->framegroupblend, ent);
3268 VM_FrameBlendFromFrameGroupBlend(ent->priv.server->frameblend, ent->priv.server->framegroupblend, model, cl.time);
3269 VM_UpdateEdictSkeleton(prog, ent, model, ent->priv.server->frameblend);
3270 return Mod_Alias_GetTagMatrix(model, ent->priv.server->frameblend, &ent->priv.server->skeleton, tagindex, out);
3271 }
3272 *out = identitymatrix;
3273 return 0;
3274}
model_t * CL_GetModelFromEdict(prvm_edict_t *ed)
client_state_t cl
Definition cl_main.c:117
string model
const matrix4x4_t identitymatrix
Definition matrixlib.c:9
int Mod_Alias_GetTagMatrix(const model_t *model, const frameblend_t *frameblend, const skeleton_t *skeleton, int tagindex, matrix4x4_t *outmatrix)
void VM_UpdateEdictSkeleton(prvm_prog_t *prog, prvm_edict_t *ed, const struct model_s *edmodel, const struct frameblend_s *frameblend)
void VM_GenerateFrameGroupBlend(prvm_prog_t *prog, struct framegroupblend_s *framegroupblend, const prvm_edict_t *ed)
void VM_FrameBlendFromFrameGroupBlend(struct frameblend_s *frameblend, const struct framegroupblend_s *framegroupblend, const struct model_s *model, double curtime)
double time
Definition client.h:868
union prvm_edict_t::@29 priv
struct edict_engineprivate_s * server
FIXME: this server pointer really means world, not server (it is used by both server qc and client qc...
Definition progsvm.h:106

References cl, CL_GetModelFromEdict(), identitymatrix, Mod_Alias_GetTagMatrix(), model, prvm_edict_t::priv, prvm_edict_t::server, client_state_t::time, VM_FrameBlendFromFrameGroupBlend(), VM_GenerateFrameGroupBlend(), and VM_UpdateEdictSkeleton().

Referenced by CL_GetTagMatrix().

◆ CL_GetEntityMatrix()

void CL_GetEntityMatrix ( prvm_prog_t * prog,
prvm_edict_t * ent,
matrix4x4_t * out,
qbool viewmatrix )

Definition at line 3230 of file clvm_cmds.c.

3231{
3232 float scale;
3233 float pitchsign = 1;
3234
3236 if (!scale)
3237 scale = 1.0f;
3238
3239 if(viewmatrix)
3240 *out = r_refdef.view.matrix;
3241 else if ((int)PRVM_clientedictfloat(ent, renderflags) & RF_USEAXIS)
3242 {
3244 vec3_t left;
3245 vec3_t up;
3246 vec3_t origin;
3251 Matrix4x4_FromVectors(out, forward, left, up, origin);
3252 }
3253 else
3254 {
3255 pitchsign = CL_GetPitchSign(prog, ent);
3257 }
3258}
int CL_GetPitchSign(prvm_prog_t *prog, prvm_edict_t *ent)
Definition clvm_cmds.c:3222
#define RF_USEAXIS
Definition csprogs.h:85
vector v_up
vector v_right
vector angles
vector v_forward
float scale
r_refdef_t r_refdef
Definition gl_rmain.c:57
#define VectorCopy(in, out)
Definition mathlib.h:101
#define VectorScale(in, scale, out)
Definition mathlib.h:111
void Matrix4x4_CreateFromQuakeEntity(matrix4x4_t *out, double x, double y, double z, double pitch, double yaw, double roll, double scale)
Definition matrixlib.c:715
void Matrix4x4_FromVectors(matrix4x4_t *out, const float vx[3], const float vy[3], const float vz[3], const float t[3])
Definition matrixlib.c:970
#define PRVM_clientglobalvector(fieldname)
Definition progsvm.h:190
#define PRVM_clientedictfloat(ed, fieldname)
Definition progsvm.h:184
r_refdef_view_t view
Definition render.h:406
matrix4x4_t matrix
Definition render.h:266
static vec3_t forward
Definition sv_user.c:305
static vec3_t up
Definition sv_user.c:305

References angles, CL_GetPitchSign(), forward, r_refdef_view_t::matrix, Matrix4x4_CreateFromQuakeEntity(), Matrix4x4_FromVectors(), origin, PRVM_clientedictfloat, PRVM_clientedictvector, PRVM_clientglobalvector, r_refdef, RF_USEAXIS, scale, up, v_forward, v_right, v_up, VectorCopy, VectorScale, and r_refdef_t::view.

Referenced by CL_GetTagMatrix(), and getmatrix().

◆ CL_GetExtendedTagInfo()

static int CL_GetExtendedTagInfo ( prvm_prog_t * prog,
prvm_edict_t * e,
int tagindex,
int * parentindex,
const char ** tagname,
matrix4x4_t * tag_localmatrix )
static

Definition at line 3198 of file clvm_cmds.c.

3199{
3200 int r;
3201 model_t *model;
3202
3203 *tagname = NULL;
3204 *parentindex = 0;
3205 Matrix4x4_CreateIdentity(tag_localmatrix);
3206
3207 if (tagindex >= 0
3208 && (model = CL_GetModelFromEdict(e))
3209 && model->animscenes)
3210 {
3211 r = Mod_Alias_GetExtendedTagInfoForIndex(model, (int)PRVM_clientedictfloat(e, skin), e->priv.server->frameblend, &e->priv.server->skeleton, tagindex - 1, parentindex, tagname, tag_localmatrix);
3212
3213 if(!r) // success?
3214 *parentindex += 1;
3215
3216 return r;
3217 }
3218
3219 return 1;
3220}
float skin
void Matrix4x4_CreateIdentity(matrix4x4_t *out)
Definition matrixlib.c:564
int Mod_Alias_GetExtendedTagInfoForIndex(const model_t *model, unsigned int skin, const frameblend_t *frameblend, const skeleton_t *skeleton, int tagindex, int *parentindex, const char **tagname, matrix4x4_t *tag_localmatrix)
dp_FragColor r

References CL_GetModelFromEdict(), Matrix4x4_CreateIdentity(), Mod_Alias_GetExtendedTagInfoForIndex(), model, NULL, prvm_edict_t::priv, PRVM_clientedictfloat, r, prvm_edict_t::server, and skin.

Referenced by VM_CL_gettaginfo().

◆ CL_GetPitchSign()

int CL_GetPitchSign ( prvm_prog_t * prog,
prvm_edict_t * ent )

Definition at line 3222 of file clvm_cmds.c.

3223{
3224 model_t *model;
3225 if ((model = CL_GetModelFromEdict(ent)) && model->type == mod_alias)
3226 return -1;
3227 return 1;
3228}
@ mod_alias

References CL_GetModelFromEdict(), mod_alias, and model.

Referenced by CL_GetEntityMatrix().

◆ CL_GetTagIndex()

static int CL_GetTagIndex ( prvm_prog_t * prog,
prvm_edict_t * e,
const char * tagname )
static

Definition at line 3189 of file clvm_cmds.c.

3190{
3192 if (model)
3194 else
3195 return -1;
3196}
int Mod_Alias_GetTagIndexForName(const model_t *model, unsigned int skin, const char *tagname)

References CL_GetModelFromEdict(), Mod_Alias_GetTagIndexForName(), model, PRVM_clientedictfloat, and skin.

Referenced by VM_CL_gettagindex().

◆ CL_GetTagMatrix()

int CL_GetTagMatrix ( prvm_prog_t * prog,
matrix4x4_t * out,
prvm_edict_t * ent,
int tagindex,
prvm_vec_t * returnshadingorigin )

Definition at line 3286 of file clvm_cmds.c.

3287{
3288 int ret;
3289 int attachloop;
3290 matrix4x4_t entitymatrix, tagmatrix, attachmatrix;
3291 model_t *model;
3292 vec3_t shadingorigin;
3293
3294 *out = identitymatrix; // warnings and errors return identical matrix
3295
3296 if (ent == prog->edicts)
3297 return 1;
3298 if (ent->free)
3299 return 2;
3300
3302 if(!model)
3303 return 3;
3304
3305 tagmatrix = identitymatrix;
3306 attachloop = 0;
3307 for(;;)
3308 {
3309 if(attachloop >= 256)
3310 return 5;
3311 // apply transformation by child's tagindex on parent entity and then
3312 // by parent entity itself
3313 ret = CL_GetEntityLocalTagMatrix(prog, ent, tagindex - 1, &attachmatrix);
3314 if(ret && attachloop == 0)
3315 return ret;
3316 CL_GetEntityMatrix(prog, ent, &entitymatrix, false);
3317 Matrix4x4_Concat(&tagmatrix, &attachmatrix, out);
3318 Matrix4x4_Concat(out, &entitymatrix, &tagmatrix);
3319 // next iteration we process the parent entity
3321 {
3322 tagindex = (int)PRVM_clientedictfloat(ent, tag_index);
3324 }
3325 else
3326 break;
3327 attachloop++;
3328 }
3329
3330 // RENDER_VIEWMODEL magic
3331 if ((int)PRVM_clientedictfloat(ent, renderflags) & RF_VIEWMODEL)
3332 {
3333 Matrix4x4_Copy(&tagmatrix, out);
3334
3335 CL_GetEntityMatrix(prog, prog->edicts, &entitymatrix, true);
3336 Matrix4x4_Concat(out, &entitymatrix, &tagmatrix);
3337
3338 /*
3339 // Cl_bob, ported from rendering code
3340 if (PRVM_clientedictfloat(ent, health) > 0 && cl_bob.value && cl_bobcycle.value)
3341 {
3342 double bob, cycle;
3343 // LadyHavoc: this code is *weird*, but not replacable (I think it
3344 // should be done in QC on the server, but oh well, quake is quake)
3345 // LadyHavoc: figured out bobup: the time at which the sin is at 180
3346 // degrees (which allows lengthening or squishing the peak or valley)
3347 cycle = cl.time/cl_bobcycle.value;
3348 cycle -= (int)cycle;
3349 if (cycle < cl_bobup.value)
3350 cycle = sin(M_PI * cycle / cl_bobup.value);
3351 else
3352 cycle = sin(M_PI + M_PI * (cycle-cl_bobup.value)/(1.0 - cl_bobup.value));
3353 // bob is proportional to velocity in the xy plane
3354 // (don't count Z, or jumping messes it up)
3355 bob = sqrt(PRVM_clientedictvector(ent, velocity)[0]*PRVM_clientedictvector(ent, velocity)[0] + PRVM_clientedictvector(ent, velocity)[1]*PRVM_clientedictvector(ent, velocity)[1])*cl_bob.value;
3356 bob = bob*0.3 + bob*0.7*cycle;
3357 Matrix4x4_AdjustOrigin(out, 0, 0, bound(-7, bob, 4));
3358 }
3359 */
3360
3361 // return the origin of the view
3363 }
3364 else
3365 {
3366 // return the origin of the root entity in the chain
3367 Matrix4x4_OriginFromMatrix(out, shadingorigin);
3368 }
3369 if (returnshadingorigin)
3370 VectorCopy(shadingorigin, returnshadingorigin);
3371 return 0;
3372}
static int CL_GetEntityLocalTagMatrix(prvm_prog_t *prog, prvm_edict_t *ent, int tagindex, matrix4x4_t *out)
Definition clvm_cmds.c:3260
void CL_GetEntityMatrix(prvm_prog_t *prog, prvm_edict_t *ent, matrix4x4_t *out, qbool viewmatrix)
Definition clvm_cmds.c:3230
#define RF_VIEWMODEL
Definition csprogs.h:81
entity tag_entity
float tag_index
static int(ZEXPORT *qz_inflate)(z_stream *strm
void Matrix4x4_Concat(matrix4x4_t *out, const matrix4x4_t *in1, const matrix4x4_t *in2)
Definition matrixlib.c:83
void Matrix4x4_Copy(matrix4x4_t *out, const matrix4x4_t *in)
Definition matrixlib.c:19
void Matrix4x4_OriginFromMatrix(const matrix4x4_t *in, float *out)
Definition matrixlib.c:1792
#define PRVM_clientedictedict(ed, fieldname)
Definition progsvm.h:187
#define PRVM_EDICT_NUM(n)
Definition progsvm.h:867
return ret
qbool free
true if this edict is unused
Definition progsvm.h:93
prvm_edict_t * edicts
Definition progsvm.h:680

References CL_GetEntityLocalTagMatrix(), CL_GetEntityMatrix(), CL_GetModelFromEdict(), prvm_prog_t::edicts, prvm_edict_t::free, identitymatrix, int(), r_refdef_view_t::matrix, Matrix4x4_Concat(), Matrix4x4_Copy(), Matrix4x4_OriginFromMatrix(), model, PRVM_clientedictedict, PRVM_clientedictfloat, PRVM_EDICT_NUM, r_refdef, ret, RF_VIEWMODEL, tag_entity, tag_index, VectorCopy, and r_refdef_t::view.

Referenced by CL_VM_GetEntitySoundOrigin(), CSQC_AddRenderEdict(), VM_CL_gettaginfo(), and VM_CL_V_CalcRefdef().

◆ CL_movestep()

static qbool CL_movestep ( prvm_edict_t * ent,
vec3_t move,
qbool relink,
qbool noenemy,
qbool settrace )
static

Definition at line 4342 of file clvm_cmds.c.

4343{
4344 prvm_prog_t *prog = CLVM_prog;
4345 float dz;
4346 vec3_t oldorg, neworg, end, traceendpos;
4347 vec3_t mins, maxs, start;
4348 trace_t trace;
4349 int i, svent;
4351
4352// try the move
4356 VectorAdd (PRVM_clientedictvector(ent, origin), move, neworg);
4357
4358// flying monsters don't step up
4359 if ( (int)PRVM_clientedictfloat(ent, flags) & (FL_SWIM | FL_FLY) )
4360 {
4361 // try one move with vertical motion, then one without
4362 for (i=0 ; i<2 ; i++)
4363 {
4364 VectorAdd (PRVM_clientedictvector(ent, origin), move, neworg);
4366 if (i == 0 && enemy != prog->edicts)
4367 {
4369 if (dz > 40)
4370 neworg[2] -= 8;
4371 if (dz < 30)
4372 neworg[2] += 8;
4373 }
4375 trace = CL_TraceBox(start, mins, maxs, neworg, MOVE_NORMAL, ent, CL_GenericHitSuperContentsMask(ent), 0, 0, collision_extendmovelength.value, true, true, &svent, true);
4376 if (settrace)
4377 CL_VM_SetTraceGlobals(prog, &trace, svent);
4378
4379 if (trace.fraction == 1)
4380 {
4381 VectorCopy(trace.endpos, traceendpos);
4383 return false; // swim monster left water
4384
4385 VectorCopy (traceendpos, PRVM_clientedictvector(ent, origin));
4386 if (relink)
4387 CL_LinkEdict(ent);
4388 return true;
4389 }
4390
4391 if (enemy == prog->edicts)
4392 break;
4393 }
4394
4395 return false;
4396 }
4397
4398// push down from a step height above the wished position
4399 neworg[2] += sv_stepheight.value;
4400 VectorCopy (neworg, end);
4401 end[2] -= sv_stepheight.value*2;
4402
4403 trace = CL_TraceBox(neworg, mins, maxs, end, MOVE_NORMAL, ent, CL_GenericHitSuperContentsMask(ent), 0, 0, collision_extendmovelength.value, true, true, &svent, true);
4404 if (settrace)
4405 CL_VM_SetTraceGlobals(prog, &trace, svent);
4406
4407 if (trace.startsolid)
4408 {
4409 neworg[2] -= sv_stepheight.value;
4410 trace = CL_TraceBox(neworg, mins, maxs, end, MOVE_NORMAL, ent, CL_GenericHitSuperContentsMask(ent), 0, 0, collision_extendmovelength.value, true, true, &svent, true);
4411 if (settrace)
4412 CL_VM_SetTraceGlobals(prog, &trace, svent);
4413 if (trace.startsolid)
4414 return false;
4415 }
4416 if (trace.fraction == 1)
4417 {
4418 // if monster had the ground pulled out, go ahead and fall
4419 if ( (int)PRVM_clientedictfloat(ent, flags) & FL_PARTIALGROUND )
4420 {
4422 if (relink)
4423 CL_LinkEdict(ent);
4424 PRVM_clientedictfloat(ent, flags) = (int)PRVM_clientedictfloat(ent, flags) & ~FL_ONGROUND;
4425 return true;
4426 }
4427
4428 return false; // walked off an edge
4429 }
4430
4431// check point traces down for dangling corners
4433
4434 if (!CL_CheckBottom (ent))
4435 {
4436 if ( (int)PRVM_clientedictfloat(ent, flags) & FL_PARTIALGROUND )
4437 { // entity had floor mostly pulled out from underneath it
4438 // and is trying to correct
4439 if (relink)
4440 CL_LinkEdict(ent);
4441 return true;
4442 }
4444 return false;
4445 }
4446
4447 if ( (int)PRVM_clientedictfloat(ent, flags) & FL_PARTIALGROUND )
4448 PRVM_clientedictfloat(ent, flags) = (int)PRVM_clientedictfloat(ent, flags) & ~FL_PARTIALGROUND;
4449
4451
4452// the move is ok
4453 if (relink)
4454 CL_LinkEdict(ent);
4455 return true;
4456}
#define SUPERCONTENTS_LIQUIDSMASK
Definition bspfile.h:218
trace_t CL_TraceBox(const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end, int type, prvm_edict_t *passedict, int hitsupercontentsmask, int skipsupercontentsmask, int skipmaterialflagsmask, float extend, qbool hitnetworkbrushmodels, qbool hitnetworkplayers, int *hitnetworkentity, qbool hitcsqcentities)
void CL_LinkEdict(prvm_edict_t *ent)
static qbool CL_CheckBottom(prvm_edict_t *ent)
Definition clvm_cmds.c:4273
static void CL_VM_SetTraceGlobals(prvm_prog_t *prog, const trace_t *trace, int svent)
Definition clvm_cmds.c:271
float flags
entity enemy
entity groundentity
Definition progsdefs.qc:134
#define PRVM_EDICT_TO_PROG(e)
Definition progsvm.h:875
#define PRVM_PROG_TO_EDICT(n)
Definition progsvm.h:877
int i
#define FL_FLY
Definition server.h:357
#define FL_PARTIALGROUND
not all corners are valid
Definition server.h:367
#define FL_SWIM
Definition server.h:358
void * ent
Definition collision.h:47
qbool startsolid
Definition collision.h:26
#define MOVE_NORMAL
Definition world.h:28

References CL_CheckBottom(), CL_GenericHitSuperContentsMask(), CL_LinkEdict(), CL_PointSuperContents, CL_TraceBox(), CL_VM_SetTraceGlobals(), CLVM_prog, collision_extendmovelength, prvm_prog_t::edicts, trace_t::endpos, enemy, trace_t::ent, FL_FLY, FL_PARTIALGROUND, FL_SWIM, flags, trace_t::fraction, groundentity, i, int(), maxs, mins, MOVE_NORMAL, origin, PRVM_clientedictedict, PRVM_clientedictfloat, PRVM_clientedictvector, PRVM_EDICT_TO_PROG, PRVM_PROG_TO_EDICT, trace_t::startsolid, SUPERCONTENTS_LIQUIDSMASK, sv_stepheight, cvar_t::value, VectorAdd, and VectorCopy.

Referenced by VM_CL_walkmove().

◆ CL_Trace_Toss()

static trace_t CL_Trace_Toss ( prvm_prog_t * prog,
prvm_edict_t * tossent,
prvm_edict_t * ignore,
int * svent )
static

Definition at line 348 of file clvm_cmds.c.

349{
350 int i;
351 float gravity;
352 vec3_t start, end, mins, maxs, move;
353 vec3_t original_origin;
354 vec3_t original_velocity;
355 vec3_t original_angles;
356 vec3_t original_avelocity;
357 trace_t trace;
358
359 VectorCopy(PRVM_clientedictvector(tossent, origin) , original_origin );
360 VectorCopy(PRVM_clientedictvector(tossent, velocity) , original_velocity );
361 VectorCopy(PRVM_clientedictvector(tossent, angles) , original_angles );
362 VectorCopy(PRVM_clientedictvector(tossent, avelocity), original_avelocity);
363
364 gravity = PRVM_clientedictfloat(tossent, gravity);
365 if (!gravity)
366 gravity = 1.0f;
367 gravity *= cl.movevars_gravity * 0.05;
368
369 for (i = 0;i < 200;i++) // LadyHavoc: sanity check; never trace more than 10 seconds
370 {
371 PRVM_clientedictvector(tossent, velocity)[2] -= gravity;
373 VectorScale (PRVM_clientedictvector(tossent, velocity), 0.05, move);
374 VectorAdd (PRVM_clientedictvector(tossent, origin), move, end);
375 VectorCopy(PRVM_clientedictvector(tossent, origin), start);
378 trace = CL_TraceBox(start, mins, maxs, end, MOVE_NORMAL, tossent, CL_GenericHitSuperContentsMask(tossent), 0, 0, collision_extendmovelength.value, true, true, NULL, true);
380
381 if (trace.fraction < 1)
382 break;
383 }
384
385 VectorCopy(original_origin , PRVM_clientedictvector(tossent, origin) );
386 VectorCopy(original_velocity , PRVM_clientedictvector(tossent, velocity) );
387 VectorCopy(original_angles , PRVM_clientedictvector(tossent, angles) );
388 VectorCopy(original_avelocity, PRVM_clientedictvector(tossent, avelocity));
389
390 return trace;
391}
vector avelocity
vector velocity
#define VectorMA(a, scale, b, out)
Definition mathlib.h:114
float movevars_gravity
Definition client.h:1059

References angles, avelocity, cl, CL_GenericHitSuperContentsMask(), CL_TraceBox(), collision_extendmovelength, trace_t::endpos, trace_t::fraction, i, maxs, mins, MOVE_NORMAL, client_state_t::movevars_gravity, NULL, origin, PRVM_clientedictfloat, PRVM_clientedictvector, cvar_t::value, VectorAdd, VectorCopy, VectorMA, VectorScale, and velocity.

Referenced by VM_CL_tracetoss().

◆ CL_VM_SetTraceGlobals()

static void CL_VM_SetTraceGlobals ( prvm_prog_t * prog,
const trace_t * trace,
int svent )
static

Definition at line 271 of file clvm_cmds.c.

272{
273 VM_SetTraceGlobals(prog, trace);
275}
float trace_networkentity
#define PRVM_clientglobalfloat(fieldname)
Definition progsvm.h:189
void VM_SetTraceGlobals(prvm_prog_t *prog, const trace_t *trace)
Definition prvm_cmds.c:5228

References PRVM_clientglobalfloat, trace_networkentity, and VM_SetTraceGlobals().

Referenced by CL_movestep(), VM_CL_tracebox(), VM_CL_traceline(), and VM_CL_tracetoss().

◆ CLVM_init_cmd()

void CLVM_init_cmd ( prvm_prog_t * prog)

Definition at line 5656 of file clvm_cmds.c.

5657{
5658 VM_Cmd_Init(prog);
5659 prog->polygonbegin_model = NULL;
5660 prog->polygonbegin_guess2d = 0;
5661}
void VM_Cmd_Init(prvm_prog_t *prog)
Definition prvm_cmds.c:5265
struct model_s * polygonbegin_model
this tracks the last polygonbegin's choice of CL_Mesh_CSQC or CL_Mesh_UI for this polygon
Definition progsvm.h:654
qbool polygonbegin_guess2d
indicates if polygonbegin should be interpreted as 2d (clearscene sets this to false,...
Definition progsvm.h:661

References NULL, prvm_prog_t::polygonbegin_guess2d, prvm_prog_t::polygonbegin_model, and VM_Cmd_Init().

Referenced by CL_VM_Init().

◆ CLVM_reset_cmd()

void CLVM_reset_cmd ( prvm_prog_t * prog)

Definition at line 5663 of file clvm_cmds.c.

5664{
5665 World_End(&cl.world);
5666 VM_Cmd_Reset(prog);
5667 prog->polygonbegin_model = NULL;
5668 prog->polygonbegin_guess2d = 0;
5669}
void VM_Cmd_Reset(prvm_prog_t *prog)
Definition prvm_cmds.c:5274
world_t world
Definition client.h:1122
void World_End(world_t *world)
Definition world.c:69

References cl, NULL, prvm_prog_t::polygonbegin_guess2d, prvm_prog_t::polygonbegin_model, VM_Cmd_Reset(), client_state_t::world, and World_End().

Referenced by CL_VM_Init().

◆ CSQC_R_RecalcView()

void CSQC_R_RecalcView ( void )

Definition at line 756 of file clvm_cmds.c.

757{
761 if (v_yshearing.value > 0)
766}
matrix4x4_t viewmodelmatrix_withbob
Definition cl_main.c:1056
matrix4x4_t viewmodelmatrix_nobob
Definition cl_main.c:1057
cvar_t v_yshearing
Definition view.c:143
void Matrix4x4_QuakeToDuke3D(const matrix4x4_t *in, matrix4x4_t *out, double maxShearAngle)
Definition matrixlib.c:891
void Matrix4x4_ConcatScale(matrix4x4_t *out, double x)
Definition matrixlib.c:1775
cvar_t cl_viewmodel_scale
Definition view.c:82
matrix4x4_t csqc_viewmodelmatrixfromengine
Definition client.h:1115
vec3_t csqc_viewangles
Definition client.h:1112
vec3_t csqc_vieworigin
Definition client.h:1111

References cl, cl_viewmodel_scale, client_state_t::csqc_viewangles, client_state_t::csqc_viewmodelmatrixfromengine, client_state_t::csqc_vieworigin, r_refdef_view_t::matrix, Matrix4x4_Concat(), Matrix4x4_ConcatScale(), Matrix4x4_Copy(), Matrix4x4_CreateFromQuakeEntity(), Matrix4x4_QuakeToDuke3D(), r_refdef, v_yshearing, cvar_t::value, r_refdef_t::view, viewmodelmatrix_nobob, and viewmodelmatrix_withbob.

Referenced by CSQC_SetGlobals(), VM_CL_R_ClearScene(), VM_CL_R_SetView(), and VM_CL_V_CalcRefdef().

◆ getdrawfont()

static dp_font_t * getdrawfont ( prvm_prog_t * prog)
static

Definition at line 1363 of file clvm_cmds.c.

1364{
1367 return FONT_DEFAULT;
1368 return &dp_fonts.f[f];
1369}
float drawfont
#define FONT_DEFAULT
Definition draw.h:128
dp_fonts_t dp_fonts
Definition gl_draw.c:50
#define PRVM_drawglobalfloat(fieldname)
Definition progsvm.h:153
float f
int maxsize
Definition draw.h:121
dp_font_t * f
Definition draw.h:120

References dp_fonts, drawfont, dp_fonts_t::f, f, FONT_DEFAULT, int(), dp_fonts_t::maxsize, and PRVM_drawglobalfloat.

Referenced by VM_drawcharacter(), VM_drawcolorcodedstring(), VM_drawstring(), and VM_stringwidth().

◆ getdrawfontnum()

static float getdrawfontnum ( const char * fontname)
static

Definition at line 1606 of file clvm_cmds.c.

1607{
1608 int i;
1609
1610 for(i = 0; i < dp_fonts.maxsize; ++i)
1611 if(!strcmp(dp_fonts.f[i].title, fontname))
1612 return i;
1613 return -1;
1614}
char title[MAX_QPATH]
Definition draw.h:104

References dp_fonts, dp_fonts_t::f, i, dp_fonts_t::maxsize, and dp_font_t::title.

Referenced by VM_findfont().

◆ getdrawfontscale()

static void getdrawfontscale ( prvm_prog_t * prog,
float * sx,
float * sy )
static

Definition at line 1351 of file clvm_cmds.c.

1352{
1353 vec3_t v;
1354 *sx = *sy = 1;
1355 VectorCopy(PRVM_drawglobalvector(drawfontscale), v);
1356 if(VectorLength2(v) > 0)
1357 {
1358 *sx = v[0];
1359 *sy = v[1];
1360 }
1361}
const GLdouble * v
Definition glquake.h:762
#define VectorLength2(a)
Definition mathlib.h:110
#define PRVM_drawglobalvector(fieldname)
Definition progsvm.h:154

References PRVM_drawglobalvector, v, VectorCopy, and VectorLength2.

Referenced by VM_drawcharacter(), VM_drawcolorcodedstring(), VM_drawstring(), and VM_stringwidth().

◆ SetMinMaxSize()

static void SetMinMaxSize ( prvm_prog_t * prog,
prvm_edict_t * e,
const vec_t * min,
const vec_t * max )
static

Definition at line 81 of file clvm_cmds.c.

82{
86 SetMinMaxSizePRVM(prog, e, mins, maxs);
87}
static void SetMinMaxSizePRVM(prvm_prog_t *prog, prvm_edict_t *e, prvm_vec_t *min, prvm_vec_t *max)
Definition clvm_cmds.c:65
#define max(A, B)
Definition mathlib.h:38
#define min(A, B)
Definition mathlib.h:37
prvm_vec_t prvm_vec3_t[3]
Definition qtypes.h:63

References max, maxs, min, mins, SetMinMaxSizePRVM(), and VectorCopy.

Referenced by VM_CL_setmodel(), VM_CL_setmodelindex(), and VM_CL_setsize().

◆ SetMinMaxSizePRVM()

static void SetMinMaxSizePRVM ( prvm_prog_t * prog,
prvm_edict_t * e,
prvm_vec_t * min,
prvm_vec_t * max )
static

Definition at line 65 of file clvm_cmds.c.

66{
67 int i;
68
69 for (i=0 ; i<3 ; i++)
70 if (min[i] > max[i])
71 prog->error_cmd("SetMinMaxSize: backwards mins/maxs");
72
73 // set derived values
77
78 CL_LinkEdict (e);
79}
vector size
#define VectorSubtract(a, b, out)
Definition mathlib.h:99
void(* error_cmd)(const char *format,...) DP_FUNC_PRINTF(1) DP_FUNC_NORETURN
[INIT]
Definition progsvm.h:747

References CL_LinkEdict(), prvm_prog_t::error_cmd, i, max, maxs, min, mins, PRVM_clientedictvector, size, VectorCopy, and VectorSubtract.

Referenced by SetMinMaxSize().

◆ VM_CL_ambientsound()

static void VM_CL_ambientsound ( prvm_prog_t * prog)
static

Definition at line 722 of file clvm_cmds.c.

723{
724 vec3_t f;
725 sfx_t *s;
730}
static void VM_CL_ambientsound(prvm_prog_t *prog)
Definition clvm_cmds.c:722
#define OFS_PARM2
Definition pr_comp.h:36
#define OFS_PARM3
Definition pr_comp.h:37
#define OFS_PARM0
Definition pr_comp.h:34
#define OFS_PARM1
Definition pr_comp.h:35
#define PRVM_G_STRING(o)
Definition progsvm.h:887
#define PRVM_G_FLOAT(o)
Definition progsvm.h:882
#define PRVM_G_VECTOR(o)
Definition progsvm.h:886
#define VM_SAFEPARMCOUNT(p, f)
Definition prvm_cmds.h:207
void S_StaticSound(sfx_t *sfx, vec3_t origin, float fvol, float attenuation)
Definition snd_main.c:1809
sfx_t * S_FindName(const char *name)
Definition snd_main.c:895

References f, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, PRVM_G_FLOAT, PRVM_G_STRING, PRVM_G_VECTOR, S_FindName(), S_StaticSound(), VectorCopy, VM_CL_ambientsound(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_ambientsound().

◆ VM_CL_boxparticles()

static void VM_CL_boxparticles ( prvm_prog_t * prog)
static

Definition at line 2195 of file clvm_cmds.c.

2196{
2197 int effectnum;
2198 // prvm_edict_t *own;
2199 vec3_t origin_from, origin_to, dir_from, dir_to;
2200 float count;
2201 int flags;
2202 qbool istrail;
2203 float tintmins[4], tintmaxs[4], fade;
2205
2206 effectnum = (int)PRVM_G_FLOAT(OFS_PARM0);
2207 if (effectnum < 0)
2208 return;
2209 // own = PRVM_G_EDICT(OFS_PARM1); // TODO find use for this
2210 VectorCopy(PRVM_G_VECTOR(OFS_PARM2), origin_from);
2211 VectorCopy(PRVM_G_VECTOR(OFS_PARM3), origin_to );
2212 VectorCopy(PRVM_G_VECTOR(OFS_PARM4), dir_from );
2215 if(prog->argc >= 8)
2217 else
2218 flags = 0;
2219
2220 Vector4Set(tintmins, 1, 1, 1, 1);
2221 Vector4Set(tintmaxs, 1, 1, 1, 1);
2222 fade = 1;
2223 istrail = false;
2224
2225 if(flags & 1) // read alpha
2226 {
2229 }
2230 if(flags & 2) // read color
2231 {
2234 }
2235 if(flags & 4) // read fade
2236 {
2238 }
2239 if(flags & 128) // draw as trail
2240 {
2241 istrail = true;
2242 }
2243
2244 if (istrail)
2245 CL_ParticleTrail(effectnum, count, origin_from, origin_to, dir_from, dir_to, NULL, 0, true, true, tintmins, tintmaxs, fade);
2246 else
2247 CL_ParticleBox(effectnum, count, origin_from, origin_to, dir_from, dir_to, NULL, 0, true, true, tintmins, tintmaxs, fade);
2248}
void CL_ParticleTrail(int effectnameindex, float pcount, const vec3_t originmins, const vec3_t originmaxs, const vec3_t velocitymins, const vec3_t velocitymaxs, entity_t *ent, int palettecolor, qbool spawndlight, qbool spawnparticles, float tintmins[4], float tintmaxs[4], float fade)
void CL_ParticleBox(int effectnameindex, float pcount, const vec3_t originmins, const vec3_t originmaxs, const vec3_t velocitymins, const vec3_t velocitymaxs, entity_t *ent, int palettecolor, qbool spawndlight, qbool spawnparticles, float tintmins[4], float tintmaxs[4], float fade)
static void VM_CL_boxparticles(prvm_prog_t *prog)
Definition clvm_cmds.c:2195
vector particles_colormin
float particles_alphamax
vector particles_colormax
float particles_alphamin
float particles_fade
GLenum GLenum GLsizei count
Definition glquake.h:656
#define Vector4Set(vec, r, g, b, a)
Definition mathlib.h:86
#define OFS_PARM4
Definition pr_comp.h:38
#define OFS_PARM5
Definition pr_comp.h:39
#define OFS_PARM6
Definition pr_comp.h:40
#define OFS_PARM7
Definition pr_comp.h:41
#define VM_SAFEPARMCOUNTRANGE(p1, p2, f)
Definition prvm_cmds.h:206
bool qbool
Definition qtypes.h:9

References prvm_prog_t::argc, CL_ParticleBox(), CL_ParticleTrail(), count, flags, int(), NULL, OFS_PARM0, OFS_PARM2, OFS_PARM3, OFS_PARM4, OFS_PARM5, OFS_PARM6, OFS_PARM7, particles_alphamax, particles_alphamin, particles_colormax, particles_colormin, particles_fade, PRVM_clientglobalfloat, PRVM_clientglobalvector, PRVM_G_FLOAT, PRVM_G_VECTOR, Vector4Set, VectorCopy, VM_CL_boxparticles(), and VM_SAFEPARMCOUNTRANGE.

Referenced by VM_CL_boxparticles().

◆ VM_CL_checkbottom()

static void VM_CL_checkbottom ( prvm_prog_t * prog)
static

Definition at line 627 of file clvm_cmds.c.

628{
629 static int cs_yes, cs_no;
630 prvm_edict_t *ent;
631 vec3_t mins, maxs, start, stop;
632 trace_t trace;
633 int x, y;
634 float mid, bottom;
635
637 ent = PRVM_G_EDICT(OFS_PARM0);
639
642
643// if all of the points under the corners are solid world, don't bother
644// with the tougher checks
645// the corners must be within 16 of the midpoint
646 start[2] = mins[2] - 1;
647 for (x=0 ; x<=1 ; x++)
648 for (y=0 ; y<=1 ; y++)
649 {
650 start[0] = x ? maxs[0] : mins[0];
651 start[1] = y ? maxs[1] : mins[1];
653 goto realcheck;
654 }
655
656 cs_yes++;
657 PRVM_G_FLOAT(OFS_RETURN) = true;
658 return; // we got out easy
659
660realcheck:
661 cs_no++;
662//
663// check it for real...
664//
665 start[2] = mins[2];
666
667// the midpoint must be within 16 of the bottom
668 start[0] = stop[0] = (mins[0] + maxs[0])*0.5;
669 start[1] = stop[1] = (mins[1] + maxs[1])*0.5;
670 stop[2] = start[2] - 2*sv_stepheight.value;
671 trace = CL_TraceLine(start, stop, MOVE_NORMAL, ent, CL_GenericHitSuperContentsMask(ent), 0, 0, collision_extendmovelength.value, true, true, NULL, true, false);
672
673 if (trace.fraction == 1.0)
674 return;
675
676 mid = bottom = trace.endpos[2];
677
678// the corners must be within 16 of the midpoint
679 for (x=0 ; x<=1 ; x++)
680 for (y=0 ; y<=1 ; y++)
681 {
682 start[0] = stop[0] = x ? maxs[0] : mins[0];
683 start[1] = stop[1] = y ? maxs[1] : mins[1];
684
685 trace = CL_TraceLine(start, stop, MOVE_NORMAL, ent, CL_GenericHitSuperContentsMask(ent), 0, 0, collision_extendmovelength.value, true, true, NULL, true, false);
686
687 if (trace.fraction != 1.0 && trace.endpos[2] > bottom)
688 bottom = trace.endpos[2];
689 if (trace.fraction == 1.0 || mid - trace.endpos[2] > sv_stepheight.value)
690 return;
691 }
692
693 cs_yes++;
694 PRVM_G_FLOAT(OFS_RETURN) = true;
695}
static void VM_CL_checkbottom(prvm_prog_t *prog)
Definition clvm_cmds.c:627
#define OFS_RETURN
Definition pr_comp.h:33
#define PRVM_G_EDICT(o)
Definition progsvm.h:884

References CL_GenericHitSuperContentsMask(), CL_PointSuperContents, CL_TraceLine(), collision_extendmovelength, trace_t::endpos, trace_t::fraction, maxs, mins, MOVE_NORMAL, NULL, OFS_PARM0, OFS_RETURN, origin, PRVM_clientedictvector, PRVM_G_EDICT, PRVM_G_FLOAT, SUPERCONTENTS_BODY, SUPERCONTENTS_SOLID, sv_stepheight, cvar_t::value, VectorAdd, VM_CL_checkbottom(), VM_SAFEPARMCOUNT, x, and y.

Referenced by VM_CL_checkbottom().

◆ VM_CL_checkpvs()

static void VM_CL_checkpvs ( prvm_prog_t * prog)
static

Definition at line 4540 of file clvm_cmds.c.

4541{
4542 vec3_t viewpos;
4543 prvm_edict_t *viewee;
4544 vec3_t mi, ma;
4545#if 1
4546 unsigned char *pvs;
4547#else
4548 unsigned char *fatpvs = NULL;
4549#endif
4550
4553 viewee = PRVM_G_EDICT(OFS_PARM1);
4554
4555 if(viewee->free)
4556 {
4557 VM_Warning(prog, "checkpvs: can not check free entity\n");
4559 return;
4560 }
4561
4564
4565#if 1
4566 if(!cl.worldmodel || !cl.worldmodel->brush.GetPVS || !cl.worldmodel->brush.BoxTouchingPVS)
4567 {
4568 // no PVS support on this worldmodel... darn
4570 return;
4571 }
4572 pvs = cl.worldmodel->brush.GetPVS(cl.worldmodel, viewpos);
4573 if(!pvs)
4574 {
4575 // viewpos isn't in any PVS... darn
4577 return;
4578 }
4579 PRVM_G_FLOAT(OFS_RETURN) = cl.worldmodel->brush.BoxTouchingPVS(cl.worldmodel, pvs, mi, ma);
4580#else
4581 // using fat PVS like FTEQW does (slow)
4582 if(!cl.worldmodel || !cl.worldmodel->brush.FatPVS || !cl.worldmodel->brush.BoxTouchingPVS)
4583 {
4584 // no PVS support on this worldmodel... darn
4586 return;
4587 }
4588 cl.worldmodel->brush.FatPVS(cl.worldmodel, viewpos, 8, &fatpvs, cls.levelmempool, false);
4589 if(!fatpvs)
4590 {
4591 // viewpos isn't in any PVS... darn
4593 return;
4594 }
4595 PRVM_G_FLOAT(OFS_RETURN) = cl.worldmodel->brush.BoxTouchingPVS(cl.worldmodel, fatpvs, mi, ma);
4596#endif
4597}
client_static_t cls
Definition cl_main.c:116
static void VM_CL_checkpvs(prvm_prog_t *prog)
Definition clvm_cmds.c:4540
#define PRVM_serveredictvector(ed, fieldname)
Definition progsvm.h:173
void VM_Warning(prvm_prog_t *prog, const char *fmt,...) DP_FUNC_PRINTF(2)
Definition prvm_cmds.c:25
struct model_s * worldmodel
Definition client.h:934
mempool_t * levelmempool
Definition client.h:571

References cl, cls, prvm_edict_t::free, client_static_t::levelmempool, maxs, mins, NULL, OFS_PARM0, OFS_PARM1, OFS_RETURN, origin, PRVM_G_EDICT, PRVM_G_FLOAT, PRVM_G_VECTOR, PRVM_serveredictvector, VectorAdd, VectorCopy, VM_CL_checkpvs(), VM_SAFEPARMCOUNT, VM_Warning(), and client_state_t::worldmodel.

Referenced by VM_CL_checkpvs().

◆ VM_CL_copyentity()

static void VM_CL_copyentity ( prvm_prog_t * prog)
static

Definition at line 2680 of file clvm_cmds.c.

2681{
2682 prvm_edict_t *in, *out;
2684 in = PRVM_G_EDICT(OFS_PARM0);
2685 if (in == prog->edicts)
2686 {
2687 VM_Warning(prog, "copyentity: can not read world entity\n");
2688 return;
2689 }
2690 if (in->free)
2691 {
2692 VM_Warning(prog, "copyentity: can not read free entity\n");
2693 return;
2694 }
2695 out = PRVM_G_EDICT(OFS_PARM1);
2696 if (out == prog->edicts)
2697 {
2698 VM_Warning(prog, "copyentity: can not modify world entity\n");
2699 return;
2700 }
2701 if (out->free)
2702 {
2703 VM_Warning(prog, "copyentity: can not modify free entity\n");
2704 return;
2705 }
2706 memcpy(out->fields.fp, in->fields.fp, prog->entityfields * sizeof(prvm_vec_t));
2707
2708 CL_LinkEdict(out);
2709}
static void VM_CL_copyentity(prvm_prog_t *prog)
Definition clvm_cmds.c:2680
float prvm_vec_t
Definition qtypes.h:55
prvm_vec_t * fp
Definition progsvm.h:102
union prvm_edict_t::@30 fields
int entityfields
number of vec_t fields in progs (some variables are 3)
Definition progsvm.h:548

References CL_LinkEdict(), prvm_prog_t::edicts, prvm_prog_t::entityfields, prvm_edict_t::fields, prvm_edict_t::fp, prvm_edict_t::free, OFS_PARM0, OFS_PARM1, PRVM_G_EDICT, VM_CL_copyentity(), VM_SAFEPARMCOUNT, and VM_Warning().

Referenced by VM_CL_copyentity().

◆ VM_CL_droptofloor()

static void VM_CL_droptofloor ( prvm_prog_t * prog)
static

Definition at line 559 of file clvm_cmds.c.

560{
561 prvm_edict_t *ent;
562 vec3_t start, end, mins, maxs;
563 trace_t trace;
564
565 VM_SAFEPARMCOUNTRANGE(0, 2, VM_CL_droptofloor); // allow 2 parameters because the id1 defs.qc had an incorrect prototype
566
567 // assume failure if it returns early
569
571 if (ent == prog->edicts)
572 {
573 VM_Warning(prog, "droptofloor: can not modify world entity\n");
574 return;
575 }
576 if (ent->free)
577 {
578 VM_Warning(prog, "droptofloor: can not modify free entity\n");
579 return;
580 }
581
586 if (cl.worldmodel->brush.isq3bsp)
587 end[2] -= 4096;
588 else if (cl.worldmodel->brush.isq2bsp)
589 end[2] -= 128;
590 else
591 end[2] -= 256; // Quake, QuakeWorld
592
593 trace = CL_TraceBox(start, mins, maxs, end, MOVE_NORMAL, ent, CL_GenericHitSuperContentsMask(ent), 0, 0, collision_extendmovelength.value, true, true, NULL, true);
594
595 if (trace.fraction != 1)
596 {
601 // if support is destroyed, keep suspended (gross hack for floating items in various maps)
602// ent->priv.server->suspendedinairflag = true;
603 }
604}
static void VM_CL_droptofloor(prvm_prog_t *prog)
Definition clvm_cmds.c:559
entity self
#define PRVM_clientglobaledict(fieldname)
Definition progsvm.h:192
#define FL_ONGROUND
Definition server.h:366

References cl, CL_GenericHitSuperContentsMask(), CL_TraceBox(), collision_extendmovelength, prvm_prog_t::edicts, trace_t::endpos, trace_t::ent, FL_ONGROUND, flags, trace_t::fraction, prvm_edict_t::free, groundentity, int(), maxs, mins, MOVE_NORMAL, NULL, OFS_RETURN, origin, PRVM_clientedictedict, PRVM_clientedictfloat, PRVM_clientedictvector, PRVM_clientglobaledict, PRVM_EDICT_TO_PROG, PRVM_G_FLOAT, PRVM_PROG_TO_EDICT, self, cvar_t::value, VectorCopy, VM_CL_droptofloor(), VM_SAFEPARMCOUNTRANGE, VM_Warning(), and client_state_t::worldmodel.

Referenced by VM_CL_droptofloor().

◆ VM_CL_effect()

static void VM_CL_effect ( prvm_prog_t * prog)
static

Definition at line 2714 of file clvm_cmds.c.

2715{
2716 model_t *model;
2717 vec3_t org;
2720
2722 if(model->loaded)
2724 else
2725 Con_Printf(CON_ERROR "VM_CL_effect: Could not load model '%s'\n", PRVM_G_STRING(OFS_PARM1));
2726}
void CL_Effect(vec3_t org, model_t *model, int startframe, int framecount, float framerate)
Definition cl_main.c:816
static void VM_CL_effect(prvm_prog_t *prog)
Definition clvm_cmds.c:2714
void Con_Printf(const char *fmt,...)
Prints to all appropriate console targets.
Definition console.c:1514
#define CON_ERROR
Definition console.h:102
model_t * Mod_FindName(const char *name, const char *parentname)

References CL_Effect(), CON_ERROR, Con_Printf(), Mod_FindName(), model, NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, PRVM_G_FLOAT, PRVM_G_STRING, PRVM_G_VECTOR, VectorCopy, VM_CL_effect(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_effect().

◆ VM_CL_findbox()

static void VM_CL_findbox ( prvm_prog_t * prog)
static

Definition at line 524 of file clvm_cmds.c.

525{
527 int i, numtouchedicts;
528 static prvm_edict_t *touchedicts[MAX_EDICTS];
529 int chainfield;
530
532
533 if(prog->argc == 3)
534 chainfield = PRVM_G_INT(OFS_PARM2);
535 else
536 chainfield = prog->fieldoffsets.chain;
537 if(chainfield < 0)
538 prog->error_cmd("VM_CL_findbox: %s doesnt have the specified chain field !", prog->name);
539
540 chain = (prvm_edict_t *)prog->edicts;
541
543 if (numtouchedicts > MAX_EDICTS)
544 {
545 // this never happens //[515]: for what then ?
546 Con_Printf("World_EntitiesInBox returned %i edicts, max was %i\n", numtouchedicts, MAX_EDICTS);
547 numtouchedicts = MAX_EDICTS;
548 }
549 for (i = 0; i < numtouchedicts; ++i)
550 {
551 PRVM_EDICTFIELDEDICT(touchedicts[i], chainfield) = PRVM_EDICT_TO_PROG(chain);
552 chain = touchedicts[i];
553 }
554
556}
static void VM_CL_findbox(prvm_prog_t *prog)
Definition clvm_cmds.c:524
entity chain
#define PRVM_EDICTFIELDEDICT(ed, fieldoffset)
Definition progsvm.h:213
#define PRVM_G_INT(o)
Definition progsvm.h:883
#define VM_RETURN_EDICT(e)
Definition prvm_cmds.h:213
#define MAX_EDICTS
max number of objects in game world at once (32768 protocol limit)
Definition qdefs.h:105
const char * name
name of the prog, e.g. "Server", "Client" or "Menu" (used for text output)
Definition progsvm.h:700
prvm_prog_fieldoffsets_t fieldoffsets
Definition progsvm.h:691
int World_EntitiesInBox(world_t *world, const vec3_t requestmins, const vec3_t requestmaxs, int maxlist, prvm_edict_t **list)
Definition world.c:188

References prvm_prog_t::argc, chain, cl, Con_Printf(), prvm_prog_t::edicts, prvm_prog_t::error_cmd, prvm_prog_t::fieldoffsets, i, MAX_EDICTS, prvm_prog_t::name, OFS_PARM0, OFS_PARM1, OFS_PARM2, PRVM_EDICT_TO_PROG, PRVM_EDICTFIELDEDICT, PRVM_G_INT, PRVM_G_VECTOR, VM_CL_findbox(), VM_RETURN_EDICT, VM_SAFEPARMCOUNTRANGE, client_state_t::world, and World_EntitiesInBox().

Referenced by VM_CL_findbox().

◆ VM_CL_findradius()

static void VM_CL_findradius ( prvm_prog_t * prog)
static

Definition at line 456 of file clvm_cmds.c.

457{
458 prvm_edict_t *ent, *chain;
459 vec_t radius, radius2;
460 vec3_t org, eorg, mins, maxs;
461 int i, numtouchedicts;
462 static prvm_edict_t *touchedicts[MAX_EDICTS];
463 int chainfield;
464
466
467 if(prog->argc == 3)
468 chainfield = PRVM_G_INT(OFS_PARM2);
469 else
470 chainfield = prog->fieldoffsets.chain;
471 if(chainfield < 0)
472 prog->error_cmd("VM_CL_findradius: %s doesnt have the specified chain field !", prog->name);
473
474 chain = (prvm_edict_t *)prog->edicts;
475
477 radius = PRVM_G_FLOAT(OFS_PARM1);
478 radius2 = radius * radius;
479
480 mins[0] = org[0] - (radius + 1);
481 mins[1] = org[1] - (radius + 1);
482 mins[2] = org[2] - (radius + 1);
483 maxs[0] = org[0] + (radius + 1);
484 maxs[1] = org[1] + (radius + 1);
485 maxs[2] = org[2] + (radius + 1);
486 numtouchedicts = World_EntitiesInBox(&cl.world, mins, maxs, MAX_EDICTS, touchedicts);
487 if (numtouchedicts > MAX_EDICTS)
488 {
489 // this never happens //[515]: for what then ?
490 Con_Printf("CSQC_EntitiesInBox returned %i edicts, max was %i\n", numtouchedicts, MAX_EDICTS);
491 numtouchedicts = MAX_EDICTS;
492 }
493 for (i = 0;i < numtouchedicts;i++)
494 {
495 ent = touchedicts[i];
496 // Quake did not return non-solid entities but darkplaces does
497 // (note: this is the reason you can't blow up fallen zombies)
499 continue;
500 // LadyHavoc: compare against bounding box rather than center so it
501 // doesn't miss large objects, and use DotProduct instead of Length
502 // for a major speedup
505 {
506 eorg[0] -= bound(PRVM_clientedictvector(ent, mins)[0], eorg[0], PRVM_clientedictvector(ent, maxs)[0]);
507 eorg[1] -= bound(PRVM_clientedictvector(ent, mins)[1], eorg[1], PRVM_clientedictvector(ent, maxs)[1]);
508 eorg[2] -= bound(PRVM_clientedictvector(ent, mins)[2], eorg[2], PRVM_clientedictvector(ent, maxs)[2]);
509 }
510 else
511 VectorMAMAM(1, eorg, -0.5f, PRVM_clientedictvector(ent, mins), -0.5f, PRVM_clientedictvector(ent, maxs), eorg);
512 if (DotProduct(eorg, eorg) < radius2)
513 {
515 chain = ent;
516 }
517 }
518
520}
static void VM_CL_findradius(prvm_prog_t *prog)
Definition clvm_cmds.c:456
float solid
#define bound(min, num, max)
Definition mathlib.h:34
#define VectorMAMAM(scale1, b1, scale2, b2, scale3, b3, out)
Definition mathlib.h:117
#define DotProduct(a, b)
Definition mathlib.h:98
float vec_t
Definition qtypes.h:68
cvar_t sv_gameplayfix_findradiusdistancetobox
Definition sv_main.c:110
#define SOLID_NOT
no interaction with other objects
Definition server.h:332
cvar_t sv_gameplayfix_blowupfallenzombies
Definition sv_main.c:104
int integer
Definition cvar.h:73

References prvm_prog_t::argc, bound, chain, cl, Con_Printf(), DotProduct, prvm_prog_t::edicts, prvm_prog_t::error_cmd, prvm_prog_t::fieldoffsets, i, cvar_t::integer, MAX_EDICTS, maxs, mins, prvm_prog_t::name, OFS_PARM0, OFS_PARM1, OFS_PARM2, origin, PRVM_clientedictfloat, PRVM_clientedictvector, PRVM_EDICT_TO_PROG, PRVM_EDICTFIELDEDICT, PRVM_G_FLOAT, PRVM_G_INT, PRVM_G_VECTOR, solid, SOLID_NOT, sv_gameplayfix_blowupfallenzombies, sv_gameplayfix_findradiusdistancetobox, VectorCopy, VectorMAMAM, VectorSubtract, VM_CL_findradius(), VM_RETURN_EDICT, VM_SAFEPARMCOUNTRANGE, client_state_t::world, and World_EntitiesInBox().

Referenced by VM_CL_findradius().

◆ VM_CL_frameduration()

static void VM_CL_frameduration ( prvm_prog_t * prog)
static

Definition at line 4893 of file clvm_cmds.c.

4894{
4897 int framenum = (int)PRVM_G_FLOAT(OFS_PARM1);
4899 if (!model || !model->animscenes || framenum < 0 || framenum >= model->numframes)
4900 return;
4901 if (model->animscenes[framenum].framerate)
4902 PRVM_G_FLOAT(OFS_RETURN) = model->animscenes[framenum].framecount / model->animscenes[framenum].framerate;
4903}
model_t * CL_GetModelByIndex(int modelindex)
float modelindex

References CL_GetModelByIndex(), int(), model, modelindex, OFS_PARM0, OFS_PARM1, OFS_RETURN, and PRVM_G_FLOAT.

◆ VM_CL_frameforname()

static void VM_CL_frameforname ( prvm_prog_t * prog)
static

Definition at line 4873 of file clvm_cmds.c.

4874{
4877 const char *name = PRVM_G_STRING(OFS_PARM1);
4878 int i;
4880 if (!model || !model->animscenes)
4881 return;
4882 for (i = 0;i < model->numframes;i++)
4883 {
4884 if (!strcasecmp(model->animscenes[i].name, name))
4885 {
4887 break;
4888 }
4889 }
4890}
const GLchar * name
Definition glquake.h:601

References CL_GetModelByIndex(), i, int(), model, modelindex, name, OFS_PARM0, OFS_PARM1, OFS_RETURN, PRVM_G_FLOAT, and PRVM_G_STRING.

◆ VM_CL_GetEntity()

static void VM_CL_GetEntity ( prvm_prog_t * prog)
static

Definition at line 4000 of file clvm_cmds.c.

4001{
4002 int entnum, fieldnum;
4003 vec3_t forward, left, up, org;
4005
4008 {
4010 return;
4011 }
4012 fieldnum = PRVM_G_FLOAT(OFS_PARM1);
4013 switch(fieldnum)
4014 {
4015 case 0: // active state
4017 break;
4018 case 1: // origin
4021 break;
4022 case 2: // forward
4025 break;
4026 case 3: // right
4029 break;
4030 case 4: // up
4033 break;
4034 case 5: // scale
4036 break;
4037 case 6: // origin + v_forward, v_right, v_up
4043 break;
4044 case 7: // alpha
4046 break;
4047 case 8: // colormor
4049 break;
4050 case 9: // pants colormod
4052 break;
4053 case 10: // shirt colormod
4055 break;
4056 case 11: // skinnum
4058 break;
4059 case 12: // mins
4061 break;
4062 case 13: // maxs
4064 break;
4065 case 14: // absmin
4068 break;
4069 case 15: // absmax
4072 break;
4073 case 16: // light
4075 break;
4076 default:
4078 break;
4079 }
4080}
static void VM_CL_GetEntity(prvm_prog_t *prog)
Definition clvm_cmds.c:4000
float entnum
#define VectorNegate(a, b)
Definition mathlib.h:95
double Matrix4x4_ScaleFromMatrix(const matrix4x4_t *in)
Definition matrixlib.c:1805
void Matrix4x4_ToVectors(const matrix4x4_t *in, float vx[3], float vy[3], float vz[3], float t[3])
Definition matrixlib.c:939
unsigned char * entities_active
Definition client.h:993
entity_t * entities
Definition client.h:991
matrix4x4_t matrix
Definition client.h:332
float colormod[3]
Definition client.h:359
vec3_t mins
Definition client.h:371
vec3_t colormap_shirtcolor
Definition client.h:348
float render_modellight_ambient[3]
Definition client.h:416
float render_modellight_diffuse[3]
Definition client.h:417
vec3_t colormap_pantscolor
Definition client.h:347
vec3_t maxs
Definition client.h:371
entity_render_t render
Definition client.h:477

References entity_render_t::alpha, cl, entity_render_t::colormap_pantscolor, entity_render_t::colormap_shirtcolor, entity_render_t::colormod, client_state_t::entities, client_state_t::entities_active, entnum, forward, entity_render_t::matrix, Matrix4x4_OriginFromMatrix(), Matrix4x4_ScaleFromMatrix(), Matrix4x4_ToVectors(), entity_render_t::maxs, entity_render_t::mins, client_state_t::num_entities, OFS_PARM0, OFS_PARM1, OFS_RETURN, PRVM_clientglobalvector, PRVM_G_FLOAT, PRVM_G_VECTOR, entity_t::render, entity_render_t::render_modellight_ambient, entity_render_t::render_modellight_diffuse, entity_render_t::skinnum, up, v_forward, v_right, v_up, VectorAdd, VectorCopy, VectorMA, VectorNegate, VM_CL_GetEntity(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_GetEntity().

◆ VM_CL_getinputstate()

static void VM_CL_getinputstate ( prvm_prog_t * prog)
static

Definition at line 2285 of file clvm_cmds.c.

2286{
2287 unsigned int i, frame;
2289 frame = (unsigned int)PRVM_G_FLOAT(OFS_PARM0);
2290 PRVM_G_FLOAT(OFS_RETURN) = false;
2291 for (i = 0;i < CL_MAX_USERCMDS;i++)
2292 {
2293 if (cl.movecmd[i].sequence == frame)
2294 {
2296 PRVM_clientglobalfloat(input_buttons) = cl.movecmd[i].buttons; // FIXME: this should not be directly exposed to csqc (translation layer needed?)
2301 // this probably shouldn't be here
2302 if(cl.movecmd[i].crouch)
2303 {
2306 }
2307 else
2308 {
2311 }
2312 PRVM_G_FLOAT(OFS_RETURN) = true;
2313 }
2314 }
2315}
static void VM_CL_getinputstate(prvm_prog_t *prog)
Definition clvm_cmds.c:2285
vector input_angles
vector pmove_maxs
vector input_movevalues
float input_buttons
vector pmove_mins
float input_timelength
float frame
#define CL_MAX_USERCMDS
max number of predicted input packets in queue
Definition qdefs.h:115
vec3_t playerstandmins
Definition client.h:972
vec3_t playerstandmaxs
Definition client.h:973
vec3_t playercrouchmaxs
Definition client.h:975
vec3_t playercrouchmins
Definition client.h:974
usercmd_t movecmd[CL_MAX_USERCMDS]
Definition client.h:754
vec3_t viewangles
Definition protocol.h:377
float forwardmove
Definition protocol.h:380
qbool crouch
Definition protocol.h:405
int buttons
Definition protocol.h:395
float upmove
Definition protocol.h:382
double frametime
Definition protocol.h:402
unsigned int sequence
Definition protocol.h:397
float sidemove
Definition protocol.h:381

References usercmd_t::buttons, cl, CL_MAX_USERCMDS, usercmd_t::crouch, usercmd_t::forwardmove, frame, usercmd_t::frametime, i, input_angles, input_buttons, input_movevalues, input_timelength, int(), client_state_t::movecmd, OFS_PARM0, OFS_RETURN, client_state_t::playercrouchmaxs, client_state_t::playercrouchmins, client_state_t::playerstandmaxs, client_state_t::playerstandmins, pmove_maxs, pmove_mins, PRVM_clientglobalfloat, PRVM_clientglobalvector, PRVM_G_FLOAT, usercmd_t::sequence, usercmd_t::sidemove, usercmd_t::upmove, VectorCopy, usercmd_t::viewangles, VM_CL_getinputstate(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_getinputstate().

◆ VM_CL_getlight()

static void VM_CL_getlight ( prvm_prog_t * prog)
static

Definition at line 733 of file clvm_cmds.c.

734{
735 vec3_t ambientcolor, diffusecolor, diffusenormal;
736 vec3_t p;
737 int flags = prog->argc >= 2 ? PRVM_G_FLOAT(OFS_PARM1) : LP_LIGHTMAP;
738
740
742 R_CompleteLightPoint(ambientcolor, diffusecolor, diffusenormal, p, flags, r_refdef.scene.lightmapintensity, r_refdef.scene.ambientintensity);
743 VectorMA(ambientcolor, 0.5, diffusecolor, PRVM_G_VECTOR(OFS_RETURN));
750}
static void VM_CL_getlight(prvm_prog_t *prog)
Definition clvm_cmds.c:733
vector getlight_dir
vector getlight_diffuse
vector getlight_ambient
void R_CompleteLightPoint(float *ambient, float *diffuse, float *lightdir, const vec3_t p, const int flags, float lightmapintensity, float ambientintensity)
Definition r_shadow.c:6014
#define LP_LIGHTMAP
Definition r_shadow.h:192
float ambientintensity
Definition render.h:384
float lightmapintensity
Definition render.h:387
r_refdef_scene_t scene
Definition render.h:418

References r_refdef_scene_t::ambientintensity, prvm_prog_t::argc, flags, getlight_ambient, getlight_diffuse, getlight_dir, r_refdef_scene_t::lightmapintensity, LP_LIGHTMAP, OFS_PARM0, OFS_PARM1, OFS_RETURN, PRVM_clientglobalvector, PRVM_G_FLOAT, PRVM_G_VECTOR, R_CompleteLightPoint(), r_refdef, r_refdef_t::scene, VectorCopy, VectorMA, VM_CL_getlight(), and VM_SAFEPARMCOUNTRANGE.

Referenced by VM_CL_getlight().

◆ VM_CL_getmousepos()

static void VM_CL_getmousepos ( prvm_prog_t * prog)
static

Definition at line 2272 of file clvm_cmds.c.

2273{
2275
2278 else if (cl.csqc_wantsmousemove)
2280 else
2282}
cvar_t vid_conheight
Definition cl_screen.c:57
cvar_t vid_conwidth
Definition cl_screen.c:56
static void VM_CL_getmousepos(prvm_prog_t *prog)
Definition clvm_cmds.c:2272
float in_windowmouse_y
Definition input.h:32
float in_windowmouse_x
Definition vid_shared.c:71
float in_mouse_y
Definition input.h:33
float in_mouse_x
Definition vid_shared.c:70
keydest_t key_dest
Definition keys.c:37
int key_consoleactive
Definition keys.c:38
@ key_game
Definition keys.h:372
#define VectorSet(vec, x, y, z)
Definition mathlib.h:96
qbool csqc_wantsmousemove
Definition client.h:835
int width
Definition vid.h:60
int height
Definition vid.h:61
viddef_mode_t mode
currently active video mode
Definition vid.h:73
viddef_t vid
global video state
Definition vid_shared.c:64

References cl, client_state_t::csqc_wantsmousemove, viddef_mode_t::height, in_mouse_x, in_mouse_y, in_windowmouse_x, in_windowmouse_y, cvar_t::integer, key_consoleactive, key_dest, key_game, viddef_t::mode, OFS_RETURN, PRVM_G_VECTOR, VectorSet, vid, vid_conheight, vid_conwidth, VM_CL_getmousepos(), VM_SAFEPARMCOUNT, and viddef_mode_t::width.

Referenced by VM_CL_getmousepos().

◆ VM_CL_getplayerkey()

static void VM_CL_getplayerkey ( prvm_prog_t * prog)
static

Definition at line 2396 of file clvm_cmds.c.

2397{
2398 int i;
2399 char t[128];
2400 size_t t_len;
2401 const char *c;
2402
2404
2409
2410 if (i < 0)
2413 return;
2414
2415 t[0] = 0;
2416 t_len = 0;
2417
2418 if(!strcasecmp(c, "name"))
2419 t_len = dp_strlcpy(t, cl.scores[i].name, sizeof(t));
2420 else
2421 if(!strcasecmp(c, "frags"))
2422 t_len = dpsnprintf(t, sizeof(t), "%i", cl.scores[i].frags);
2423 else
2424 if(!strcasecmp(c, "ping"))
2425 t_len = dpsnprintf(t, sizeof(t), "%i", cl.scores[i].qw_ping);
2426 else
2427 if(!strcasecmp(c, "pl"))
2428 t_len = dpsnprintf(t, sizeof(t), "%i", cl.scores[i].qw_packetloss);
2429 else
2430 if(!strcasecmp(c, "movementloss"))
2431 t_len = dpsnprintf(t, sizeof(t), "%i", cl.scores[i].qw_movementloss);
2432 else
2433 if(!strcasecmp(c, "entertime"))
2434 t_len = dpsnprintf(t, sizeof(t), "%f", cl.scores[i].qw_entertime);
2435 else
2436 if(!strcasecmp(c, "colors"))
2437 t_len = dpsnprintf(t, sizeof(t), "%i", cl.scores[i].colors);
2438 else
2439 if(!strcasecmp(c, "topcolor"))
2440 t_len = dpsnprintf(t, sizeof(t), "%i", cl.scores[i].colors & 0xf0);
2441 else
2442 if(!strcasecmp(c, "bottomcolor"))
2443 t_len = dpsnprintf(t, sizeof(t), "%i", (cl.scores[i].colors &15)<<4);
2444 else
2445 if(!strcasecmp(c, "viewentity"))
2446 t_len = dpsnprintf(t, sizeof(t), "%i", i+1);
2447 if(!t[0])
2448 return;
2449 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, t, t_len);
2450}
static void VM_CL_getplayerkey(prvm_prog_t *prog)
Definition clvm_cmds.c:2396
int dpsnprintf(char *buffer, size_t buffersize, const char *format,...)
Returns the number of printed characters, excluding the final '\0' or returns -1 if the buffer isn't ...
Definition common.c:997
#define dp_strlcpy(dst, src, dsize)
Definition common.h:303
#define OFS_NULL
Definition pr_comp.h:32
int PRVM_SetTempString(prvm_prog_t *prog, const char *s, size_t slen)
Takes an strlen (not a buffer size).
int Sbar_GetSortedPlayerIndex(int index)
Definition sbar.c:546
void Sbar_SortFrags(void)
Definition sbar.c:554
scoreboard_t * scores
Definition client.h:945
int qw_movementloss
Definition client.h:498
int qw_packetloss
Definition client.h:497
char name[MAX_SCOREBOARDNAME]
Definition client.h:489
int qw_ping
Definition client.h:496
float qw_entertime
Definition client.h:495

References cl, scoreboard_t::colors, dp_strlcpy, dpsnprintf(), scoreboard_t::frags, i, int(), client_state_t::maxclients, scoreboard_t::name, OFS_NULL, OFS_PARM0, OFS_PARM1, OFS_RETURN, PRVM_G_FLOAT, PRVM_G_INT, PRVM_G_STRING, PRVM_SetTempString(), scoreboard_t::qw_entertime, scoreboard_t::qw_movementloss, scoreboard_t::qw_packetloss, scoreboard_t::qw_ping, Sbar_GetSortedPlayerIndex(), Sbar_SortFrags(), client_state_t::scores, VM_CL_getplayerkey(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_getplayerkey().

◆ VM_CL_getstatf()

static void VM_CL_getstatf ( prvm_prog_t * prog)
static

Definition at line 2026 of file clvm_cmds.c.

2027{
2028 int i;
2029 union
2030 {
2031 float f;
2032 int l;
2033 }dat;
2037 {
2039 VM_Warning(prog, "VM_CL_getstatf: index>=MAX_CL_STATS or index<0\n");
2040 return;
2041 }
2042 dat.l = cl.stats[i];
2043 PRVM_G_FLOAT(OFS_RETURN) = dat.f;
2044}
static void VM_CL_getstatf(prvm_prog_t *prog)
Definition clvm_cmds.c:2026
#define MAX_CL_STATS
Definition qstats.h:7
int stats[MAX_CL_STATS]
Definition client.h:758

References cl, f, i, int(), MAX_CL_STATS, OFS_PARM0, OFS_RETURN, PRVM_G_FLOAT, client_state_t::stats, VM_CL_getstatf(), VM_SAFEPARMCOUNT, and VM_Warning().

Referenced by VM_CL_getstatf().

◆ VM_CL_getstati()

static void VM_CL_getstati ( prvm_prog_t * prog)
static

Definition at line 2047 of file clvm_cmds.c.

2048{
2049 int index, firstbit, bitcount;
2050
2052
2055 {
2057 VM_Warning(prog, "VM_CL_getstati: index(%i) is >=MAX_CL_STATS(%i) or <0\n", index, MAX_CL_STATS);
2058 return;
2059 }
2060
2061 if (prog->argc > 1)
2062 {
2063 firstbit = (int)PRVM_G_FLOAT(OFS_PARM1);
2064 if (prog->argc > 2)
2065 bitcount = (int)PRVM_G_FLOAT(OFS_PARM2);
2066 else
2067 bitcount = 1;
2068 }
2069 else
2070 {
2071 firstbit = 0;
2072 bitcount = 32;
2073 }
2074
2075 if (bitcount < 32) //32 causes the mask to overflow, so there's nothing to subtract from.
2076 PRVM_G_FLOAT(OFS_RETURN) = cl.stats[index]>>firstbit & ((1<<bitcount)-1);
2077 else
2079}
static void VM_CL_getstati(prvm_prog_t *prog)
Definition clvm_cmds.c:2047
GLuint index
Definition glquake.h:629

References prvm_prog_t::argc, cl, index, int(), MAX_CL_STATS, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_RETURN, PRVM_G_FLOAT, client_state_t::stats, VM_CL_getstati(), VM_SAFEPARMCOUNTRANGE, and VM_Warning().

Referenced by VM_CL_getstati().

◆ VM_CL_getstats()

static void VM_CL_getstats ( prvm_prog_t * prog)
static

Definition at line 2082 of file clvm_cmds.c.

2083{
2084 int i;
2085 char t[17];
2086 size_t t_len;
2090 {
2092 VM_Warning(prog, "VM_CL_getstats: index>MAX_CL_STATS-4 or index<0\n");
2093 return;
2094 }
2095 t_len = dp_strlcpy(t, (char*)&cl.stats[i], sizeof(t));
2096 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, t, t_len);
2097}
static void VM_CL_getstats(prvm_prog_t *prog)
Definition clvm_cmds.c:2082

References cl, dp_strlcpy, i, int(), MAX_CL_STATS, OFS_NULL, OFS_PARM0, OFS_RETURN, PRVM_G_FLOAT, PRVM_G_INT, PRVM_SetTempString(), client_state_t::stats, VM_CL_getstats(), VM_SAFEPARMCOUNT, and VM_Warning().

Referenced by VM_CL_getstats().

◆ VM_CL_gettagindex()

static void VM_CL_gettagindex ( prvm_prog_t * prog)
static

Definition at line 3375 of file clvm_cmds.c.

3376{
3377 prvm_edict_t *ent;
3378 const char *tag_name;
3379 int tag_index;
3380
3382
3383 ent = PRVM_G_EDICT(OFS_PARM0);
3384 tag_name = PRVM_G_STRING(OFS_PARM1);
3385 if (ent == prog->edicts)
3386 {
3387 VM_Warning(prog, "VM_CL_gettagindex(entity #%i): can't affect world entity\n", PRVM_NUM_FOR_EDICT(ent));
3388 return;
3389 }
3390 if (ent->free)
3391 {
3392 VM_Warning(prog, "VM_CL_gettagindex(entity #%i): can't affect free entity\n", PRVM_NUM_FOR_EDICT(ent));
3393 return;
3394 }
3395
3396 tag_index = 0;
3397 if (!CL_GetModelFromEdict(ent))
3398 Con_DPrintf("VM_CL_gettagindex(entity #%i): null or non-precached model\n", PRVM_NUM_FOR_EDICT(ent));
3399 else
3400 {
3401 tag_index = CL_GetTagIndex(prog, ent, tag_name);
3402 if (tag_index == 0)
3404 Con_DPrintf("VM_CL_gettagindex(entity #%i): tag \"%s\" not found\n", PRVM_NUM_FOR_EDICT(ent), tag_name);
3405 }
3407}
static int CL_GetTagIndex(prvm_prog_t *prog, prvm_edict_t *e, const char *tagname)
Definition clvm_cmds.c:3189
void VM_CL_gettagindex(void)
void Con_DPrintf(const char *fmt,...)
A Con_Printf that only shows up if the "developer" cvar is set.
Definition console.c:1544
cvar_t developer_extra
Definition host.c:49
#define PRVM_NUM_FOR_EDICT(e)
Definition progsvm.h:870

References CL_GetModelFromEdict(), CL_GetTagIndex(), Con_DPrintf(), developer_extra, prvm_prog_t::edicts, prvm_edict_t::free, cvar_t::integer, OFS_PARM0, OFS_PARM1, OFS_RETURN, PRVM_G_EDICT, PRVM_G_FLOAT, PRVM_G_STRING, PRVM_NUM_FOR_EDICT, tag_index, VM_CL_gettagindex(), VM_SAFEPARMCOUNT, and VM_Warning().

◆ VM_CL_gettaginfo()

static void VM_CL_gettaginfo ( prvm_prog_t * prog)
static

Definition at line 3410 of file clvm_cmds.c.

3411{
3412 prvm_edict_t *e;
3413 int tagindex;
3414 matrix4x4_t tag_matrix;
3415 matrix4x4_t tag_localmatrix;
3416 int parentindex;
3417 const char *tagname;
3418 int returncode;
3419 vec3_t forward, left, up, origin;
3420 const model_t *model;
3421
3423
3425 tagindex = (int)PRVM_G_FLOAT(OFS_PARM1);
3426 returncode = CL_GetTagMatrix(prog, &tag_matrix, e, tagindex, NULL);
3427 Matrix4x4_ToVectors(&tag_matrix, forward, left, up, origin);
3433 VM_GenerateFrameGroupBlend(prog, e->priv.server->framegroupblend, e);
3434 VM_FrameBlendFromFrameGroupBlend(e->priv.server->frameblend, e->priv.server->framegroupblend, model, cl.time);
3435 VM_UpdateEdictSkeleton(prog, e, model, e->priv.server->frameblend);
3436 CL_GetExtendedTagInfo(prog, e, tagindex, &parentindex, &tagname, &tag_localmatrix);
3437 Matrix4x4_ToVectors(&tag_localmatrix, forward, left, up, origin);
3438
3440 PRVM_clientglobalstring(gettaginfo_name) = tagname ? PRVM_SetTempString(prog, tagname, strlen(tagname)) : 0;
3445
3446 switch(returncode)
3447 {
3448 case 1:
3449 VM_Warning(prog, "gettagindex: can't affect world entity\n");
3450 break;
3451 case 2:
3452 VM_Warning(prog, "gettagindex: can't affect free entity\n");
3453 break;
3454 case 3:
3455 Con_DPrintf("CL_GetTagMatrix(entity #%i): null or non-precached model\n", PRVM_NUM_FOR_EDICT(e));
3456 break;
3457 case 4:
3458 Con_DPrintf("CL_GetTagMatrix(entity #%i): model has no tag with requested index %i\n", PRVM_NUM_FOR_EDICT(e), tagindex);
3459 break;
3460 case 5:
3461 Con_DPrintf("CL_GetTagMatrix(entity #%i): runaway loop at attachment chain\n", PRVM_NUM_FOR_EDICT(e));
3462 break;
3463 }
3464}
static int CL_GetExtendedTagInfo(prvm_prog_t *prog, prvm_edict_t *e, int tagindex, int *parentindex, const char **tagname, matrix4x4_t *tag_localmatrix)
Definition clvm_cmds.c:3198
int CL_GetTagMatrix(prvm_prog_t *prog, matrix4x4_t *out, prvm_edict_t *ent, int tagindex, prvm_vec_t *returnshadingorigin)
Definition clvm_cmds.c:3286
void VM_CL_gettaginfo(void)
float gettaginfo_parent
vector gettaginfo_forward
string gettaginfo_name
vector gettaginfo_right
vector gettaginfo_up
vector gettaginfo_offset
float strlen(string s)
#define PRVM_clientglobalstring(fieldname)
Definition progsvm.h:191

References cl, CL_GetExtendedTagInfo(), CL_GetModelFromEdict(), CL_GetTagMatrix(), Con_DPrintf(), forward, gettaginfo_forward, gettaginfo_name, gettaginfo_offset, gettaginfo_parent, gettaginfo_right, gettaginfo_up, int(), Matrix4x4_ToVectors(), model, NULL, OFS_PARM0, OFS_PARM1, OFS_RETURN, origin, prvm_edict_t::priv, PRVM_clientglobalfloat, PRVM_clientglobalstring, PRVM_clientglobalvector, PRVM_G_EDICT, PRVM_G_FLOAT, PRVM_G_VECTOR, PRVM_NUM_FOR_EDICT, PRVM_SetTempString(), prvm_edict_t::server, strlen(), client_state_t::time, up, v_forward, v_right, v_up, VectorCopy, VectorScale, VM_CL_gettaginfo(), VM_FrameBlendFromFrameGroupBlend(), VM_GenerateFrameGroupBlend(), VM_SAFEPARMCOUNT, VM_UpdateEdictSkeleton(), and VM_Warning().

◆ VM_CL_InitParticleSpawner()

static void VM_CL_InitParticleSpawner ( prvm_prog_t * prog)
static

Definition at line 3641 of file clvm_cmds.c.

3642{
3647 PRVM_G_FLOAT(OFS_RETURN) = (vmpartspawner.verified == true) ? 1 : 0;
3648}
vmparticlespawner_t vmpartspawner
Definition clvm_cmds.c:3517
static void VM_InitParticleSpawner(prvm_prog_t *prog, int maxthemes)
Definition clvm_cmds.c:3520
static void VM_ResetParticleTheme(vmparticletheme_t *theme)
Definition clvm_cmds.c:3541
static void VM_CL_InitParticleSpawner(prvm_prog_t *prog)
Definition clvm_cmds.c:3641
vmparticletheme_t * themes
Definition clvm_cmds.c:3513

References vmparticletheme_t::initialized, OFS_PARM0, OFS_RETURN, PRVM_G_FLOAT, vmparticlespawner_t::themes, vmparticlespawner_t::verified, VM_CL_InitParticleSpawner(), VM_InitParticleSpawner(), VM_ResetParticleTheme(), VM_SAFEPARMCOUNTRANGE, and vmpartspawner.

Referenced by VM_CL_InitParticleSpawner().

◆ VM_CL_lightstyle()

static void VM_CL_lightstyle ( prvm_prog_t * prog)
static

Definition at line 607 of file clvm_cmds.c.

608{
609 int i;
610 const char *c;
611
613
616 if (i >= cl.max_lightstyle)
617 {
618 VM_Warning(prog, "VM_CL_lightstyle >= MAX_LIGHTSTYLES\n");
619 return;
620 }
621 dp_strlcpy (cl.lightstyle[i].map, c, sizeof (cl.lightstyle[i].map));
624}
static void VM_CL_lightstyle(prvm_prog_t *prog)
Definition clvm_cmds.c:607
#define MAX_STYLESTRING
max length of flicker pattern for light style
Definition qdefs.h:109
lightstyle_t * lightstyle
Definition client.h:998
int max_lightstyle
Definition client.h:986
char map[MAX_STYLESTRING]
Definition client.h:484

References cl, dp_strlcpy, i, int(), lightstyle_t::length, client_state_t::lightstyle, lightstyle_t::map, client_state_t::max_lightstyle, MAX_STYLESTRING, OFS_PARM0, OFS_PARM1, PRVM_G_FLOAT, PRVM_G_STRING, strlen(), VM_CL_lightstyle(), VM_SAFEPARMCOUNT, and VM_Warning().

Referenced by VM_CL_lightstyle().

◆ VM_CL_loadcubemap()

static void VM_CL_loadcubemap ( prvm_prog_t * prog)
static

Definition at line 4945 of file clvm_cmds.c.

4946{
4947 const char *name;
4948
4952}
static void VM_CL_loadcubemap(prvm_prog_t *prog)
Definition clvm_cmds.c:4945
rtexture_t * R_GetCubemap(const char *basename)
Definition gl_rmain.c:2982

References name, OFS_PARM0, PRVM_G_STRING, R_GetCubemap(), VM_CL_loadcubemap(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_loadcubemap().

◆ VM_CL_makestatic()

static void VM_CL_makestatic ( prvm_prog_t * prog)
static

Definition at line 2582 of file clvm_cmds.c.

2583{
2584 prvm_edict_t *ent;
2585
2587
2588 ent = PRVM_G_EDICT(OFS_PARM0);
2589 if (ent == prog->edicts)
2590 {
2591 VM_Warning(prog, "makestatic: can not modify world entity\n");
2592 return;
2593 }
2594 if (ent->free)
2595 {
2596 VM_Warning(prog, "makestatic: can not modify free entity\n");
2597 return;
2598 }
2599
2601 {
2602 int renderflags;
2604
2605 // copy it to the current state
2606 memset(staticent, 0, sizeof(*staticent));
2609 staticent->render.framegroupblend[0].lerp = 1;
2610 // make torchs play out of sync
2611 staticent->render.framegroupblend[0].start = lhrandom(-10, -1);
2612 staticent->render.skinnum = (int)PRVM_clientedictfloat(ent, skin);
2613 staticent->render.effects = (int)PRVM_clientedictfloat(ent, effects);
2614 staticent->render.alpha = PRVM_clientedictfloat(ent, alpha);
2615 staticent->render.scale = PRVM_clientedictfloat(ent, scale);
2618
2619 // sanitize values
2620 if (!staticent->render.alpha)
2621 staticent->render.alpha = 1.0f;
2622 if (!staticent->render.scale)
2623 staticent->render.scale = 1.0f;
2624 if (!VectorLength2(staticent->render.colormod))
2625 VectorSet(staticent->render.colormod, 1, 1, 1);
2626 if (!VectorLength2(staticent->render.glowmod))
2627 VectorSet(staticent->render.glowmod, 1, 1, 1);
2628
2629 renderflags = (int)PRVM_clientedictfloat(ent, renderflags);
2630 if (renderflags & RF_USEAXIS)
2631 {
2632 vec3_t forward, left, up, origin;
2637 Matrix4x4_FromVectors(&staticent->render.matrix, forward, left, up, origin);
2638 Matrix4x4_Scale(&staticent->render.matrix, staticent->render.scale, 1);
2639 }
2640 else
2642
2643 // either fullbright or lit
2645 {
2646 if (!(staticent->render.effects & EF_FULLBRIGHT))
2647 staticent->render.flags |= RENDER_LIGHT;
2648 }
2649 // turn off shadows from transparent objects
2650 if (!(staticent->render.effects & (EF_NOSHADOW | EF_ADDITIVE | EF_NODEPTHTEST)) && (staticent->render.alpha >= 1))
2651 staticent->render.flags |= RENDER_SHADOW;
2652 if (staticent->render.effects & EF_NODEPTHTEST)
2653 staticent->render.flags |= RENDER_NODEPTHTEST;
2654 if (staticent->render.effects & EF_ADDITIVE)
2655 staticent->render.flags |= RENDER_ADDITIVE;
2656 if (staticent->render.effects & EF_DOUBLESIDED)
2657 staticent->render.flags |= RENDER_DOUBLESIDED;
2658
2659 staticent->render.allowdecals = true;
2660 CL_UpdateRenderEntity(&staticent->render);
2661 }
2662 else
2663 Con_Printf("Too many static entities");
2664
2665// throw the entity away now
2666 PRVM_ED_Free(prog, ent);
2667}
void CL_UpdateRenderEntity(entity_render_t *ent)
Definition cl_main.c:702
static void VM_CL_makestatic(prvm_prog_t *prog)
Definition clvm_cmds.c:2582
float effects
vector glowmod
float alpha
vector colormod
cvar_t r_fullbright
Definition gl_rmain.c:112
#define lhrandom(MIN, MAX)
LadyHavoc: this function never returns exactly MIN or exactly MAX, because of a QuakeC bug in id1 whe...
Definition mathlib.h:48
void Matrix4x4_Scale(matrix4x4_t *out, double rotatescale, double originscale)
Definition matrixlib.c:1837
void PRVM_ED_Free(prvm_prog_t *prog, prvm_edict_t *ed)
Definition prvm_edict.c:314
#define EF_FULLBRIGHT
Definition protocol.h:77
#define EF_NOSHADOW
Definition protocol.h:80
#define EF_NODEPTHTEST
Definition protocol.h:81
#define EF_ADDITIVE
Definition protocol.h:73
#define RENDER_SHADOW
Definition protocol.h:365
#define EF_DOUBLESIDED
Definition protocol.h:83
#define RENDER_DOUBLESIDED
Definition protocol.h:371
#define RENDER_ADDITIVE
Definition protocol.h:370
#define RENDER_LIGHT
Definition protocol.h:366
#define RENDER_NODEPTHTEST
Definition protocol.h:369
int max_static_entities
Definition client.h:982
entity_t * static_entities
Definition client.h:994
int num_static_entities
Definition client.h:1004
model_t * model
Definition client.h:343
framegroupblend_t framegroupblend[MAX_FRAMEGROUPBLENDS]
Definition client.h:363
float glowmod[3]
Definition client.h:360

References entity_render_t::allowdecals, alpha, entity_render_t::alpha, angles, cl, CL_GetModelByIndex(), CL_UpdateRenderEntity(), colormod, entity_render_t::colormod, Con_Printf(), prvm_prog_t::edicts, EF_ADDITIVE, EF_DOUBLESIDED, EF_FULLBRIGHT, EF_NODEPTHTEST, EF_NOSHADOW, effects, entity_render_t::effects, entity_render_t::flags, forward, frame, framegroupblend_t::frame, entity_render_t::framegroupblend, prvm_edict_t::free, entity_render_t::glowmod, glowmod, int(), cvar_t::integer, framegroupblend_t::lerp, lhrandom, entity_render_t::matrix, Matrix4x4_CreateFromQuakeEntity(), Matrix4x4_FromVectors(), Matrix4x4_Scale(), client_state_t::max_static_entities, entity_render_t::model, modelindex, client_state_t::num_static_entities, OFS_PARM0, origin, PRVM_clientedictfloat, PRVM_clientedictvector, PRVM_clientglobalvector, PRVM_ED_Free(), PRVM_G_EDICT, r_fullbright, entity_t::render, RENDER_ADDITIVE, RENDER_DOUBLESIDED, RENDER_LIGHT, RENDER_NODEPTHTEST, RENDER_SHADOW, RF_USEAXIS, entity_render_t::scale, scale, skin, entity_render_t::skinnum, framegroupblend_t::start, client_state_t::static_entities, up, v_forward, v_right, v_up, VectorCopy, VectorLength2, VectorNegate, VectorSet, VM_CL_makestatic(), VM_SAFEPARMCOUNT, and VM_Warning().

Referenced by VM_CL_makestatic().

◆ VM_CL_makevectors()

static void VM_CL_makevectors ( prvm_prog_t * prog)
static

Definition at line 29 of file clvm_cmds.c.

30{
38}
static void VM_CL_makevectors(prvm_prog_t *prog)
Definition clvm_cmds.c:29
void AngleVectors(const vec3_t angles, vec3_t forward, vec3_t right, vec3_t up)
Definition mathlib.c:444
static vec3_t right
Definition sv_user.c:305

References angles, AngleVectors(), forward, OFS_PARM0, PRVM_clientglobalvector, PRVM_G_VECTOR, right, up, v_forward, v_right, v_up, VectorCopy, VM_CL_makevectors(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_makevectors().

◆ VM_CL_modelnameforindex()

static void VM_CL_modelnameforindex ( prvm_prog_t * prog)
static

Definition at line 2137 of file clvm_cmds.c.

2138{
2139 model_t *model;
2140
2142
2146}
static void VM_CL_modelnameforindex(prvm_prog_t *prog)
Definition clvm_cmds.c:2137
int PRVM_SetEngineString(prvm_prog_t *prog, const char *s)

References CL_GetModelByIndex(), model, prvm_prog_t::name, OFS_NULL, OFS_PARM0, OFS_RETURN, PRVM_G_FLOAT, PRVM_G_INT, PRVM_SetEngineString(), VM_CL_modelnameforindex(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_modelnameforindex().

◆ VM_CL_particle()

static void VM_CL_particle ( prvm_prog_t * prog)
static

Definition at line 707 of file clvm_cmds.c.

708{
709 vec3_t org, dir;
710 int count;
711 unsigned char color;
713
719}
void CL_ParticleEffect(int effectnameindex, float pcount, const vec3_t originmins, const vec3_t originmaxs, const vec3_t velocitymins, const vec3_t velocitymaxs, entity_t *ent, int palettecolor)
@ EFFECT_SVC_PARTICLE
static void VM_CL_particle(prvm_prog_t *prog)
Definition clvm_cmds.c:707
vector color
vec2 dir

References CL_ParticleEffect(), color, count, dir, EFFECT_SVC_PARTICLE, int(), NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, PRVM_G_FLOAT, PRVM_G_VECTOR, VectorCopy, VM_CL_particle(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_particle().

◆ VM_CL_particleeffectnum()

static void VM_CL_particleeffectnum ( prvm_prog_t * prog)
static

Definition at line 2149 of file clvm_cmds.c.

2150{
2151 int i;
2154 if (i == 0)
2155 i = -1;
2157}
int CL_ParticleEffectIndexForName(const char *name)
static void VM_CL_particleeffectnum(prvm_prog_t *prog)
Definition clvm_cmds.c:2149

References CL_ParticleEffectIndexForName(), i, OFS_PARM0, OFS_RETURN, PRVM_G_FLOAT, PRVM_G_STRING, VM_CL_particleeffectnum(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_particleeffectnum().

◆ VM_CL_ParticleTheme()

static void VM_CL_ParticleTheme ( prvm_prog_t * prog)
static

Definition at line 3663 of file clvm_cmds.c.

3664{
3665 int themenum;
3666
3668 if (vmpartspawner.verified == false)
3669 {
3670 VM_Warning(prog, "VM_CL_ParticleTheme: particle spawner not initialized\n");
3671 return;
3672 }
3673 themenum = (int)PRVM_G_FLOAT(OFS_PARM0);
3674 if (themenum < 0 || themenum >= vmpartspawner.max_themes)
3675 {
3676 VM_Warning(prog, "VM_CL_ParticleTheme: bad theme number %i\n", themenum);
3678 return;
3679 }
3680 if (vmpartspawner.themes[themenum].initialized == false)
3681 {
3682 VM_Warning(prog, "VM_CL_ParticleTheme: theme #%i not exists\n", themenum);
3684 return;
3685 }
3686 // load particle theme into globals
3688}
static void VM_CL_ParticleTheme(prvm_prog_t *prog)
Definition clvm_cmds.c:3663
static void VM_CL_ParticleThemeToGlobals(vmparticletheme_t *theme, prvm_prog_t *prog)
Definition clvm_cmds.c:3573

References vmparticletheme_t::initialized, int(), vmparticlespawner_t::max_themes, OFS_PARM0, PRVM_G_FLOAT, vmparticlespawner_t::themes, vmparticlespawner_t::verified, VM_CL_ParticleTheme(), VM_CL_ParticleThemeToGlobals(), VM_SAFEPARMCOUNT, VM_Warning(), and vmpartspawner.

Referenced by VM_CL_ParticleTheme().

◆ VM_CL_ParticleThemeFree()

static void VM_CL_ParticleThemeFree ( prvm_prog_t * prog)
static

Definition at line 3734 of file clvm_cmds.c.

3735{
3736 int themenum;
3737
3739 if (vmpartspawner.verified == false)
3740 {
3741 VM_Warning(prog, "VM_CL_ParticleThemeFree: particle spawner not initialized\n");
3742 return;
3743 }
3744 themenum = (int)PRVM_G_FLOAT(OFS_PARM0);
3745 // check parms
3746 if (themenum <= 0 || themenum >= vmpartspawner.max_themes)
3747 {
3748 VM_Warning(prog, "VM_CL_ParticleThemeFree: bad theme number %i\n", themenum);
3749 return;
3750 }
3751 if (vmpartspawner.themes[themenum].initialized == false)
3752 {
3753 VM_Warning(prog, "VM_CL_ParticleThemeFree: theme #%i already freed\n", themenum);
3755 return;
3756 }
3757 // free theme
3759 vmpartspawner.themes[themenum].initialized = false;
3760}
static void VM_CL_ParticleThemeFree(prvm_prog_t *prog)
Definition clvm_cmds.c:3734

References vmparticletheme_t::initialized, int(), vmparticlespawner_t::max_themes, OFS_PARM0, PRVM_G_FLOAT, vmparticlespawner_t::themes, vmparticlespawner_t::verified, VM_CL_ParticleThemeFree(), VM_CL_ParticleThemeToGlobals(), VM_ResetParticleTheme(), VM_SAFEPARMCOUNT, VM_Warning(), and vmpartspawner.

Referenced by VM_CL_ParticleThemeFree().

◆ VM_CL_ParticleThemeFromGlobals()

static void VM_CL_ParticleThemeFromGlobals ( vmparticletheme_t * theme,
prvm_prog_t * prog )
static

Definition at line 3607 of file clvm_cmds.c.

3608{
3609 theme->typeindex = (unsigned short)PRVM_clientglobalfloat(particle_type);
3637}
pblend_t
porientation_t
float particle_delaycollision
float particle_spin
float particle_stretch
float particle_alphafade
vector particle_staincolor2
float particle_tex
float particle_size
float particle_qualityreduction
vector particle_color2
vector particle_staincolor1
float particle_delayspawn
float particle_time
float particle_originjitter
float particle_gravity
float particle_sizeincrease
float particle_airfriction
float particle_stainsize
float particle_liquidfriction
float particle_velocityjitter
float particle_staintex
float particle_type
float particle_stainalpha
const float true
float particle_angle
float particle_orientation
vector particle_color1
float particle_blendmode
float particle_alpha
float particle_bounce
porientation_t orientation
Definition clvm_cmds.c:3479
unsigned short typeindex
Definition clvm_cmds.c:3476

References vmparticletheme_t::airfriction, vmparticletheme_t::alpha, vmparticletheme_t::alphafade, vmparticletheme_t::angle, vmparticletheme_t::blendmode, vmparticletheme_t::bounce, vmparticletheme_t::color1, vmparticletheme_t::color2, vmparticletheme_t::delaycollision, vmparticletheme_t::delayspawn, vmparticletheme_t::gravity, int(), vmparticletheme_t::lifetime, vmparticletheme_t::liquidfriction, vmparticletheme_t::orientation, vmparticletheme_t::originjitter, particle_airfriction, particle_alpha, particle_alphafade, particle_angle, particle_blendmode, particle_bounce, particle_color1, particle_color2, particle_delaycollision, particle_delayspawn, particle_gravity, particle_liquidfriction, particle_orientation, particle_originjitter, particle_qualityreduction, particle_size, particle_sizeincrease, particle_spin, particle_stainalpha, particle_staincolor1, particle_staincolor2, particle_stainsize, particle_staintex, particle_stretch, particle_tex, particle_time, particle_type, particle_velocityjitter, PRVM_clientglobalfloat, PRVM_clientglobalvector, vmparticletheme_t::qualityreduction, vmparticletheme_t::size, vmparticletheme_t::sizeincrease, vmparticletheme_t::spin, vmparticletheme_t::stainalpha, vmparticletheme_t::staincolor1, vmparticletheme_t::staincolor2, vmparticletheme_t::stainsize, vmparticletheme_t::staintex, vmparticletheme_t::stretch, vmparticletheme_t::tex, true, vmparticletheme_t::typeindex, and vmparticletheme_t::velocityjitter.

Referenced by VM_CL_ParticleThemeSave().

◆ VM_CL_ParticleThemeSave()

static void VM_CL_ParticleThemeSave ( prvm_prog_t * prog)
static

Definition at line 3692 of file clvm_cmds.c.

3693{
3694 int themenum;
3695
3697 if (vmpartspawner.verified == false)
3698 {
3699 VM_Warning(prog, "VM_CL_ParticleThemeSave: particle spawner not initialized\n");
3700 return;
3701 }
3702 // allocate new theme, save it and return
3703 if (prog->argc < 1)
3704 {
3705 for (themenum = 0; themenum < vmpartspawner.max_themes; themenum++)
3706 if (vmpartspawner.themes[themenum].initialized == false)
3707 break;
3708 if (themenum >= vmpartspawner.max_themes)
3709 {
3710 if (vmpartspawner.max_themes == 2048)
3711 VM_Warning(prog, "VM_CL_ParticleThemeSave: no free theme slots\n");
3712 else
3713 VM_Warning(prog, "VM_CL_ParticleThemeSave: no free theme slots, try initparticlespawner() with highter max_themes\n");
3715 return;
3716 }
3717 vmpartspawner.themes[themenum].initialized = true;
3719 PRVM_G_FLOAT(OFS_RETURN) = themenum;
3720 return;
3721 }
3722 // update existing theme
3723 themenum = (int)PRVM_G_FLOAT(OFS_PARM0);
3724 if (themenum < 0 || themenum >= vmpartspawner.max_themes)
3725 {
3726 VM_Warning(prog, "VM_CL_ParticleThemeSave: bad theme number %i\n", themenum);
3727 return;
3728 }
3729 vmpartspawner.themes[themenum].initialized = true;
3731}
static void VM_CL_ParticleThemeFromGlobals(vmparticletheme_t *theme, prvm_prog_t *prog)
Definition clvm_cmds.c:3607
static void VM_CL_ParticleThemeSave(prvm_prog_t *prog)
Definition clvm_cmds.c:3692

References prvm_prog_t::argc, vmparticletheme_t::initialized, int(), vmparticlespawner_t::max_themes, OFS_PARM0, OFS_RETURN, PRVM_G_FLOAT, vmparticlespawner_t::themes, vmparticlespawner_t::verified, VM_CL_ParticleThemeFromGlobals(), VM_CL_ParticleThemeSave(), VM_SAFEPARMCOUNTRANGE, VM_Warning(), and vmpartspawner.

Referenced by VM_CL_ParticleThemeSave().

◆ VM_CL_ParticleThemeToGlobals()

static void VM_CL_ParticleThemeToGlobals ( vmparticletheme_t * theme,
prvm_prog_t * prog )
static

Definition at line 3573 of file clvm_cmds.c.

3574{
3578 // VorteX: int only can store 0-255, not 0-256 which means 0 - 0,99609375...
3579 VectorSet(PRVM_clientglobalvector(particle_color1), (theme->color1 >> 16) & 0xFF, (theme->color1 >> 8) & 0xFF, (theme->color1 >> 0) & 0xFF);
3580 VectorSet(PRVM_clientglobalvector(particle_color2), (theme->color2 >> 16) & 0xFF, (theme->color2 >> 8) & 0xFF, (theme->color2 >> 0) & 0xFF);
3595 VectorSet(PRVM_clientglobalvector(particle_staincolor1), ((int)theme->staincolor1 >> 16) & 0xFF, ((int)theme->staincolor1 >> 8) & 0xFF, ((int)theme->staincolor1 >> 0) & 0xFF);
3596 VectorSet(PRVM_clientglobalvector(particle_staincolor2), ((int)theme->staincolor2 >> 16) & 0xFF, ((int)theme->staincolor2 >> 8) & 0xFF, ((int)theme->staincolor2 >> 0) & 0xFF);
3604}

References vmparticletheme_t::airfriction, vmparticletheme_t::alpha, vmparticletheme_t::alphafade, vmparticletheme_t::angle, vmparticletheme_t::blendmode, vmparticletheme_t::bounce, vmparticletheme_t::color1, vmparticletheme_t::color2, vmparticletheme_t::delaycollision, vmparticletheme_t::delayspawn, vmparticletheme_t::gravity, vmparticletheme_t::lifetime, vmparticletheme_t::liquidfriction, vmparticletheme_t::orientation, vmparticletheme_t::originjitter, particle_airfriction, particle_alpha, particle_alphafade, particle_angle, particle_blendmode, particle_bounce, particle_color1, particle_color2, particle_delaycollision, particle_delayspawn, particle_gravity, particle_liquidfriction, particle_orientation, particle_originjitter, particle_qualityreduction, particle_size, particle_sizeincrease, particle_spin, particle_stainalpha, particle_staincolor1, particle_staincolor2, particle_stainsize, particle_staintex, particle_stretch, particle_tex, particle_time, particle_type, particle_velocityjitter, PRVM_clientglobalfloat, PRVM_clientglobalvector, vmparticletheme_t::qualityreduction, vmparticletheme_t::size, vmparticletheme_t::sizeincrease, vmparticletheme_t::spin, vmparticletheme_t::stainalpha, vmparticletheme_t::staincolor1, vmparticletheme_t::staincolor2, vmparticletheme_t::stainsize, vmparticletheme_t::staintex, vmparticletheme_t::stretch, vmparticletheme_t::tex, vmparticletheme_t::typeindex, VectorSet, and vmparticletheme_t::velocityjitter.

Referenced by VM_CL_ParticleTheme(), VM_CL_ParticleThemeFree(), and VM_CL_ResetParticle().

◆ VM_CL_pointcontents()

static void VM_CL_pointcontents ( prvm_prog_t * prog)
static

◆ VM_CL_pointparticles()

static void VM_CL_pointparticles ( prvm_prog_t * prog)
static

Definition at line 2179 of file clvm_cmds.c.

2180{
2181 int i;
2182 float n;
2183 vec3_t f, v;
2189 if (i < 0)
2190 return;
2191 CL_ParticleEffect(i, n, f, f, v, v, NULL, prog->argc >= 5 ? (int)PRVM_G_FLOAT(OFS_PARM4) : 0);
2192}
static void VM_CL_pointparticles(prvm_prog_t *prog)
Definition clvm_cmds.c:2179
#define n(x, y)

References prvm_prog_t::argc, CL_ParticleEffect(), f, i, int(), n, NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, PRVM_G_FLOAT, PRVM_G_VECTOR, v, VectorCopy, VM_CL_pointparticles(), and VM_SAFEPARMCOUNTRANGE.

Referenced by VM_CL_pointparticles().

◆ VM_CL_pointsound()

static void VM_CL_pointsound ( prvm_prog_t * prog)
static

Definition at line 233 of file clvm_cmds.c.

234{
235 const char *sample;
236 float fvolume;
237 float attenuation;
238 vec3_t org;
239
241
243 sample = PRVM_G_STRING(OFS_PARM1);
244 fvolume = PRVM_G_FLOAT(OFS_PARM2);
245 attenuation = PRVM_G_FLOAT(OFS_PARM3);
246
247 if (fvolume < 0 || fvolume > 1)
248 {
249 VM_Warning(prog, "VM_CL_pointsound: volume must be in range 0-1\n");
250 return;
251 }
252
253 if (attenuation < 0 || attenuation > 4)
254 {
255 VM_Warning(prog, "VM_CL_pointsound: attenuation must be in range 0-4\n");
256 return;
257 }
258
259 // Send World Entity as Entity to Play Sound (for CSQC, that is MAX_EDICTS)
260 S_StartSound(MAX_EDICTS, 0, S_FindName(sample), org, fvolume, attenuation);
261}
static void VM_CL_pointsound(prvm_prog_t *prog)
Definition clvm_cmds.c:233
int S_StartSound(int entnum, int entchannel, sfx_t *sfx, vec3_t origin, float fvol, float attenuation)
S_StartSound returns the channel index, or -1 if an error occurred.
Definition snd_main.c:1643

References MAX_EDICTS, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, PRVM_G_FLOAT, PRVM_G_STRING, PRVM_G_VECTOR, S_FindName(), S_StartSound(), VectorCopy, VM_CL_pointsound(), VM_SAFEPARMCOUNT, and VM_Warning().

Referenced by VM_CL_pointsound().

◆ VM_CL_precache_model()

static void VM_CL_precache_model ( prvm_prog_t * prog)
static

Definition at line 419 of file clvm_cmds.c.

420{
421 const char *name;
422 int i;
423 model_t *m;
424
426
428 for (i = 0;i < MAX_MODELS && cl.csqc_model_precache[i];i++)
429 {
430 if(!strcmp(cl.csqc_model_precache[i]->name, name))
431 {
432 PRVM_G_FLOAT(OFS_RETURN) = -(i+1);
433 return;
434 }
435 }
437 m = Mod_ForName(name, false, false, name[0] == '*' ? cl.model_name[1] : NULL);
438 if(m && m->loaded)
439 {
440 for (i = 0;i < MAX_MODELS;i++)
441 {
443 {
445 PRVM_G_FLOAT(OFS_RETURN) = -(i+1);
446 return;
447 }
448 }
449 VM_Warning(prog, "VM_CL_precache_model: no free models\n");
450 return;
451 }
452 VM_Warning(prog, "VM_CL_precache_model: model \"%s\" not found\n", name);
453}
void VM_CL_precache_model(void)
model_t * Mod_ForName(const char *name, qbool crash, qbool checkdisk, const char *parentname)
#define MAX_MODELS
max number of models loaded at once (including during level transitions)
Definition qdefs.h:106
char model_name[MAX_MODELS][MAX_QPATH]
Definition client.h:892
struct model_s * csqc_model_precache[MAX_MODELS]
Definition client.h:836
qbool loaded

References cl, client_state_t::csqc_model_precache, i, model_t::loaded, MAX_MODELS, Mod_ForName(), client_state_t::model_name, name, NULL, OFS_PARM0, OFS_RETURN, PRVM_G_FLOAT, PRVM_G_STRING, VM_CL_precache_model(), VM_SAFEPARMCOUNT, and VM_Warning().

◆ VM_CL_project()

static void VM_CL_project ( prvm_prog_t * prog)
static

Definition at line 1229 of file clvm_cmds.c.

1230{
1231 vec3_t f;
1232 vec3_t v;
1233 matrix4x4_t m;
1234
1238 Matrix4x4_Transform(&m, f, v);
1239 if(v_flipped.integer)
1240 v[1] = -v[1];
1242 vid_conwidth.integer * (0.5*(1.0+v[1]/v[0]/-r_refdef.view.frustum_x)),
1243 vid_conheight.integer * (0.5*(1.0+v[2]/v[0]/-r_refdef.view.frustum_y)),
1244 v[0]);
1245 // explanation:
1246 // after transforming, relative position to viewport (0..1) = 0.5 * (1 + v[2]/v[0]/-frustum_{x \or y})
1247 // as 2D drawing honors the viewport too, to get the same pixel, we simply multiply this by conwidth/height
1248}
cvar_t v_flipped
Definition gl_backend.c:20
static void VM_CL_project(prvm_prog_t *prog)
Definition clvm_cmds.c:1229
void Matrix4x4_Transform(const matrix4x4_t *in, const float v[3], float out[3])
Definition matrixlib.c:1657
int Matrix4x4_Invert_Full(matrix4x4_t *out, const matrix4x4_t *in1)
Definition matrixlib.c:145
float frustum_y
Definition render.h:277
float frustum_x
Definition render.h:277

References f, r_refdef_view_t::frustum_x, r_refdef_view_t::frustum_y, cvar_t::integer, r_refdef_view_t::matrix, Matrix4x4_Invert_Full(), Matrix4x4_Transform(), OFS_PARM0, OFS_RETURN, PRVM_G_VECTOR, r_refdef, v, v_flipped, VectorCopy, VectorSet, vid_conheight, vid_conwidth, r_refdef_t::view, VM_CL_project(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_project().

◆ VM_CL_R_AddDynamicLight()

static void VM_CL_R_AddDynamicLight ( prvm_prog_t * prog)
static

Definition at line 1154 of file clvm_cmds.c.

1155{
1156 double t = Sys_DirtyTime();
1157 vec3_t org;
1158 float radius = 300;
1159 vec3_t col;
1160 int style = -1;
1161 const char *cubemapname = NULL;
1163 float coronaintensity = 1;
1164 float coronasizescale = 0.25;
1165 qbool castshadow = true;
1166 float ambientscale = 0;
1167 float diffusescale = 1;
1168 float specularscale = 1;
1169 matrix4x4_t matrix;
1170 vec3_t forward, left, up;
1172
1173 // if we've run out of dlights, just return
1175 return;
1176
1178 radius = PRVM_G_FLOAT(OFS_PARM1);
1180 if (prog->argc >= 4)
1181 {
1183 if (style >= MAX_LIGHTSTYLES)
1184 {
1185 Con_DPrintf("VM_CL_R_AddDynamicLight: out of bounds lightstyle index %i\n", style);
1186 style = -1;
1187 }
1188 }
1189 if (prog->argc >= 5)
1190 cubemapname = PRVM_G_STRING(OFS_PARM4);
1191 if (prog->argc >= 6)
1193 coronaintensity = (pflags & PFLAGS_CORONA) != 0;
1194 castshadow = (pflags & PFLAGS_NOSHADOW) == 0;
1195
1199 Matrix4x4_FromVectors(&matrix, forward, left, up, org);
1200
1201 R_RTLight_Update(&r_refdef.scene.templights[r_refdef.scene.numlights], false, &matrix, col, style, cubemapname, castshadow, coronaintensity, coronasizescale, ambientscale, diffusescale, specularscale, LIGHTFLAG_NORMALMODE | LIGHTFLAG_REALTIMEMODE);
1203 t = Sys_DirtyTime() - t;if (t < 0 || t >= 1800) t = 0;
1205}
#define LIGHTFLAG_NORMALMODE
Definition client.h:34
#define LIGHTFLAG_REALTIMEMODE
Definition client.h:35
void VM_CL_R_AddDynamicLight(void)
void CSQC_UpdateView(float vid_width, float vid_height, float notmenu)
float style
float pflags
#define PRVM_clientfunction(funcname)
Definition progsvm.h:194
#define PFLAGS_NOSHADOW
Definition protocol.h:106
#define PFLAGS_FULLDYNAMIC
Definition protocol.h:108
#define PFLAGS_CORONA
Definition protocol.h:107
#define MAX_LIGHTSTYLES
max flickering light styles in level (note: affects savegame format)
Definition qdefs.h:108
#define MAX_DLIGHTS
max number of dynamic lights (rocket flashes, etc) in scene at once
Definition qdefs.h:132
void R_RTLight_Update(rtlight_t *rtlight, int isstatic, matrix4x4_t *matrix, vec3_t color, int style, const char *cubemapname, int shadow, vec_t corona, vec_t coronasizescale, vec_t ambientscale, vec_t diffusescale, vec_t specularscale, int flags)
Definition r_shadow.c:2980
double totaltime
Definition pr_comp.h:454
mfunction_t * functions
Definition progsvm.h:541
rtlight_t templights[MAX_DLIGHTS]
Definition render.h:373
rtlight_t * lights[MAX_DLIGHTS]
Definition render.h:372
double Sys_DirtyTime(void)
Definition sys_shared.c:417

References prvm_prog_t::argc, Con_DPrintf(), CSQC_UpdateView(), forward, prvm_prog_t::functions, int(), LIGHTFLAG_NORMALMODE, LIGHTFLAG_REALTIMEMODE, r_refdef_scene_t::lights, Matrix4x4_FromVectors(), MAX_DLIGHTS, MAX_LIGHTSTYLES, NULL, r_refdef_scene_t::numlights, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, OFS_PARM5, pflags, PFLAGS_CORONA, PFLAGS_FULLDYNAMIC, PFLAGS_NOSHADOW, PRVM_clientfunction, PRVM_clientglobalvector, PRVM_G_FLOAT, PRVM_G_STRING, PRVM_G_VECTOR, r_refdef, R_RTLight_Update(), r_refdef_t::scene, style, Sys_DirtyTime(), r_refdef_scene_t::templights, mfunction_t::totaltime, up, v_forward, v_right, v_up, VectorCopy, VectorScale, VM_CL_R_AddDynamicLight(), and VM_SAFEPARMCOUNTRANGE.

◆ VM_CL_R_AddEntities()

static void VM_CL_R_AddEntities ( prvm_prog_t * prog)
static

Definition at line 790 of file clvm_cmds.c.

791{
792 double t = Sys_DirtyTime();
793 int i, drawmask;
794 prvm_edict_t *ed;
798
800 for(i=1;i<prog->num_edicts;i++)
801 {
802 // so we can easily check if CSQC entity #edictnum is currently drawn
804 ed = &prog->edicts[i];
805 if(ed->free)
806 continue;
807 CSQC_Think(ed);
808 if(ed->free)
809 continue;
810 // note that for RF_USEAXIS entities, Predraw sets v_forward/v_right/v_up globals that are read by CSQC_AddRenderEdict
811 CSQC_Predraw(ed);
812 if(ed->free)
813 continue;
814 if(!((int)PRVM_clientedictfloat(ed, drawmask) & drawmask))
815 continue;
817 }
818
819 // callprofile fixing hack: do not include this time in what is counted for CSQC_UpdateView
820 t = Sys_DirtyTime() - t;if (t < 0 || t >= 1800) t = 0;
822}
void CSQC_RelinkAllEntities(int drawmask)
Definition cl_main.c:2021
void VM_CL_R_AddEntities(void)
void CSQC_Think(prvm_edict_t *ed)
Definition csprogs.c:295
qbool CSQC_AddRenderEdict(prvm_edict_t *ed, int edictnum)
Definition csprogs.c:311
void CSQC_Predraw(prvm_edict_t *ed)
Definition csprogs.c:283
float drawmask
float time
entity_render_t * csqcrenderentities
Definition client.h:992
int num_edicts
copies of some vars that were former read from sv
Definition progsvm.h:671

References cl, CSQC_AddRenderEdict(), CSQC_Predraw(), CSQC_RelinkAllEntities(), CSQC_Think(), CSQC_UpdateView(), client_state_t::csqcrenderentities, drawmask, prvm_prog_t::edicts, entity_render_t::entitynumber, prvm_edict_t::free, prvm_prog_t::functions, i, int(), prvm_prog_t::num_edicts, OFS_PARM0, PRVM_clientedictfloat, PRVM_clientfunction, PRVM_clientglobalfloat, PRVM_G_FLOAT, Sys_DirtyTime(), client_state_t::time, time, mfunction_t::totaltime, VM_CL_R_AddEntities(), and VM_SAFEPARMCOUNT.

◆ VM_CL_R_AddEntity()

static void VM_CL_R_AddEntity ( prvm_prog_t * prog)
static

◆ VM_CL_R_ClearScene()

static void VM_CL_R_ClearScene ( prvm_prog_t * prog)
static

Definition at line 769 of file clvm_cmds.c.

770{
772 // clear renderable entity and light lists
775 // restore the view settings to the values that VM_CL_UpdateView received from the client code
777 // polygonbegin without draw2d arg has to guess
778 prog->polygonbegin_guess2d = false;
785 // clear the CL_Mesh_Scene() used for CSQC polygons and engine effects, they will be added by CSQC_RelinkAllEntities and manually created by CSQC
787}
void CL_MeshEntities_Scene_Clear(void)
Definition cl_main.c:2594
r_refdef_view_t csqc_original_r_refdef_view
Definition clvm_cmds.c:25
void CSQC_R_RecalcView(void)
Definition clvm_cmds.c:756
void VM_CL_R_ClearScene(void)
cvar_t r_drawworld
Definition gl_rmain.c:98
vec3_t csqc_viewanglesfromengine
Definition client.h:1114
vec3_t csqc_vieworiginfromengine
Definition client.h:1113
csqc_vidvars_t csqc_vidvars
Definition client.h:834
qbool drawenginesbar
Definition client.h:707
qbool drawworld
Definition client.h:706
qbool drawcrosshair
Definition client.h:708

References cl, CL_MeshEntities_Scene_Clear(), csqc_original_r_refdef_view, CSQC_R_RecalcView(), client_state_t::csqc_vidvars, client_state_t::csqc_viewangles, client_state_t::csqc_viewanglesfromengine, client_state_t::csqc_vieworigin, client_state_t::csqc_vieworiginfromengine, csqc_vidvars_t::drawcrosshair, csqc_vidvars_t::drawenginesbar, csqc_vidvars_t::drawworld, cvar_t::integer, r_refdef_scene_t::numentities, r_refdef_scene_t::numlights, prvm_prog_t::polygonbegin_guess2d, r_drawworld, r_refdef, r_refdef_t::scene, VectorCopy, r_refdef_t::view, VM_CL_R_ClearScene(), and VM_SAFEPARMCOUNT.

◆ VM_CL_R_PolygonBegin()

static void VM_CL_R_PolygonBegin ( prvm_prog_t * prog)
static

Definition at line 4131 of file clvm_cmds.c.

4132{
4133 const char *texname;
4134 int drawflags;
4135 qbool draw2d;
4136 model_t *mod;
4137
4139
4140 texname = PRVM_G_STRING(OFS_PARM0);
4141 drawflags = (int)PRVM_G_FLOAT(OFS_PARM1);
4142 if (prog->argc >= 3)
4143 draw2d = PRVM_G_FLOAT(OFS_PARM2) != 0;
4144 else
4145 {
4146 // weird hacky way to figure out if this is a 2D HUD polygon or a scene
4147 // polygon, for compatibility with mods aimed at old darkplaces versions
4148 // - polygonbegin_guess2d is 0 if the most recent major call was
4149 // clearscene, 1 if the most recent major call was drawpic (and similar)
4150 // or renderscene
4151 draw2d = prog->polygonbegin_guess2d;
4152 }
4153
4154 // we need to remember whether this is a 2D or 3D mesh we're adding to
4155 mod = draw2d ? CL_Mesh_UI() : CL_Mesh_Scene();
4156 prog->polygonbegin_model = mod;
4157 if (texname == NULL || texname[0] == 0)
4158 texname = "$whiteimage";
4159 dp_strlcpy(prog->polygonbegin_texname, texname, sizeof(prog->polygonbegin_texname));
4160 prog->polygonbegin_drawflags = drawflags;
4161 prog->polygonbegin_numvertices = 0;
4162}
#define CL_Mesh_UI()
Definition client.h:1372
#define CL_Mesh_Scene()
Definition client.h:1371
void VM_CL_R_PolygonBegin(void)
float mod(float dividend, float divisor)
int polygonbegin_drawflags
Definition progsvm.h:664
int polygonbegin_numvertices
Definition progsvm.h:666
char polygonbegin_texname[MAX_QPATH]
Definition progsvm.h:663

References prvm_prog_t::argc, CL_Mesh_Scene, CL_Mesh_UI, dp_strlcpy, int(), mod(), NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, prvm_prog_t::polygonbegin_drawflags, prvm_prog_t::polygonbegin_guess2d, prvm_prog_t::polygonbegin_model, prvm_prog_t::polygonbegin_numvertices, prvm_prog_t::polygonbegin_texname, PRVM_G_FLOAT, PRVM_G_STRING, VM_CL_R_PolygonBegin(), and VM_SAFEPARMCOUNTRANGE.

◆ VM_CL_R_PolygonEnd()

static void VM_CL_R_PolygonEnd ( prvm_prog_t * prog)
static

Definition at line 4202 of file clvm_cmds.c.

4203{
4204 int i;
4205 qbool hascolor;
4206 qbool hasalpha;
4207 int e0 = 0, e1 = 0, e2 = 0;
4208 float *o;
4210 msurface_t *surf;
4211 texture_t *tex;
4212 int materialflags;
4213
4215 if (!mod)
4216 {
4217 VM_Warning(prog, "VM_CL_R_PolygonEnd: VM_CL_R_PolygonBegin wasn't called\n");
4218 return;
4219 }
4220
4221 // determine if vertex alpha is being used so we can provide that hint to GetTexture...
4222 hascolor = false;
4223 hasalpha = false;
4224 for (i = 0; i < prog->polygonbegin_numvertices; i++)
4225 {
4226 o = prog->polygonbegin_vertexdata + 10 * i;
4227 if (o[6] != 1.0f || o[7] != 1.0f || o[8] != 1.0f)
4228 hascolor = true;
4229 if (o[9] != 1.0f)
4230 hasalpha = true;
4231 }
4232
4233 // create the surface, looking up the best matching texture/shader
4236 materialflags |= MATERIALFLAG_NOCULLFACE;
4237 if (hascolor)
4238 materialflags |= MATERIALFLAG_VERTEXCOLOR;
4239 if (hasalpha)
4242 surf = Mod_Mesh_AddSurface(mod, tex, false);
4243 // create triangle fan
4244 for (i = 0; i < prog->polygonbegin_numvertices; i++)
4245 {
4246 o = prog->polygonbegin_vertexdata + 10 * i;
4247 e2 = Mod_Mesh_IndexForVertex(mod, surf, o[0], o[1], o[2], 0, 0, 0, o[3], o[4], 0, 0, o[6], o[7], o[8], o[9]);
4248 if (i >= 2)
4249 Mod_Mesh_AddTriangle(mod, surf, e0, e1, e2);
4250 else if (i == 0)
4251 e0 = e2;
4252 e1 = e2;
4253 }
4254 // build normals (since they are not provided)
4255 Mod_BuildNormals(surf->num_firstvertex, surf->num_vertices, surf->num_triangles, mod->surfmesh.data_vertex3f, mod->surfmesh.data_element3i + 3 * surf->num_firsttriangle, mod->surfmesh.data_normal3f, true);
4256
4257 // reset state
4258 prog->polygonbegin_model = NULL;
4259 prog->polygonbegin_texname[0] = 0;
4260 prog->polygonbegin_drawflags = 0;
4261 prog->polygonbegin_numvertices = 0;
4262}
cvar_t csqc_polygons_defaultmaterial_nocullface
Definition cl_main.c:39
void VM_CL_R_PolygonEnd(void)
#define MATERIALFLAG_VERTEXCOLOR
#define MATERIALFLAG_FULLBRIGHT
Definition model_brush.h:87
#define MATERIALFLAG_ALPHA
Definition model_brush.h:79
#define MATERIALFLAG_BLENDED
#define MATERIALFLAG_ALPHAGEN_VERTEX
#define MATERIALFLAG_WALL
Definition model_brush.h:89
#define MATERIALFLAG_NOSHADOW
#define MATERIALFLAG_NOCULLFACE
msurface_t * Mod_Mesh_AddSurface(model_t *mod, texture_t *tex, qbool batchwithprevioussurface)
int Mod_Mesh_IndexForVertex(model_t *mod, msurface_t *surf, float x, float y, float z, float nx, float ny, float nz, float s, float t, float u, float v, float r, float g, float b, float a)
void Mod_BuildNormals(int firstvertex, int numvertices, int numtriangles, const float *vertex3f, const int *elements, float *normal3f, qbool areaweighting)
texture_t * Mod_Mesh_GetTexture(model_t *mod, const char *name, int defaultdrawflags, int defaulttexflags, int defaultmaterialflags)
void Mod_Mesh_AddTriangle(model_t *mod, msurface_t *surf, int e0, int e1, int e2)
#define TEXF_ALPHA
Definition r_textures.h:9
describes the textures to use on a range of triangles in the model, and mins/maxs (AABB) for culling.
int num_firsttriangle
int num_triangles
range of triangles and vertices in model->surfmesh
int num_firstvertex
float * polygonbegin_vertexdata
Definition progsvm.h:668

References csqc_polygons_defaultmaterial_nocullface, i, cvar_t::integer, MATERIALFLAG_ALPHA, MATERIALFLAG_ALPHAGEN_VERTEX, MATERIALFLAG_BLENDED, MATERIALFLAG_FULLBRIGHT, MATERIALFLAG_NOCULLFACE, MATERIALFLAG_NOSHADOW, MATERIALFLAG_VERTEXCOLOR, MATERIALFLAG_WALL, mod(), Mod_BuildNormals(), Mod_Mesh_AddSurface(), Mod_Mesh_AddTriangle(), Mod_Mesh_GetTexture(), Mod_Mesh_IndexForVertex(), NULL, msurface_t::num_firsttriangle, msurface_t::num_firstvertex, msurface_t::num_triangles, msurface_t::num_vertices, prvm_prog_t::polygonbegin_drawflags, prvm_prog_t::polygonbegin_model, prvm_prog_t::polygonbegin_numvertices, prvm_prog_t::polygonbegin_texname, prvm_prog_t::polygonbegin_vertexdata, TEXF_ALPHA, VM_CL_R_PolygonEnd(), VM_SAFEPARMCOUNT, and VM_Warning().

◆ VM_CL_R_PolygonVertex()

static void VM_CL_R_PolygonVertex ( prvm_prog_t * prog)
static

Definition at line 4165 of file clvm_cmds.c.

4166{
4171 float *o;
4173
4175
4176 if (!mod)
4177 {
4178 VM_Warning(prog, "VM_CL_R_PolygonVertex: VM_CL_R_PolygonBegin wasn't called\n");
4179 return;
4180 }
4181
4183 {
4185 prog->polygonbegin_vertexdata = (float *)Mem_Realloc(prog->progs_mempool, prog->polygonbegin_vertexdata, prog->polygonbegin_maxvertices * sizeof(float[10]));
4186 }
4187 o = prog->polygonbegin_vertexdata + prog->polygonbegin_numvertices++ * 10;
4188
4189 o[0] = v[0];
4190 o[1] = v[1];
4191 o[2] = v[2];
4192 o[3] = tc[0];
4193 o[4] = tc[1];
4194 o[5] = tc[2];
4195 o[6] = c[0];
4196 o[7] = c[1];
4197 o[8] = c[2];
4198 o[9] = a;
4199}
void VM_CL_R_PolygonVertex(void)
void vec2 tc
ret a
mempool_t * progs_mempool
all memory allocations related to this vm_prog (code, edicts, strings)
Definition progsvm.h:602
int polygonbegin_maxvertices
Definition progsvm.h:667
#define Mem_Realloc(pool, data, size)
Definition zone.h:94

References a, max, Mem_Realloc, mod(), OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, prvm_prog_t::polygonbegin_maxvertices, prvm_prog_t::polygonbegin_model, prvm_prog_t::polygonbegin_numvertices, prvm_prog_t::polygonbegin_vertexdata, prvm_prog_t::progs_mempool, PRVM_G_FLOAT, PRVM_G_VECTOR, tc, v, VM_CL_R_PolygonVertex(), VM_SAFEPARMCOUNT, and VM_Warning().

◆ VM_CL_R_RenderScene()

static void VM_CL_R_RenderScene ( prvm_prog_t * prog)
static

Definition at line 4090 of file clvm_cmds.c.

4091{
4092 qbool ismain = r_refdef.view.ismain;
4093 double t = Sys_DirtyTime();
4095
4096 // update the views
4097 if(ismain)
4098 {
4099 // set the main view
4101 }
4102
4103 // now after all of the predraw we know the geometry in the scene mesh and can finalize it for rendering
4105
4106 // we need to update any RENDER_VIEWMODEL entities at this point because
4107 // csqc supplies its own view matrix
4110
4111 // now draw stuff!
4113
4114 // callprofile fixing hack: do not include this time in what is counted for CSQC_UpdateView
4115 t = Sys_DirtyTime() - t;if (t < 0 || t >= 1800) t = 0;
4117
4118 // polygonbegin without draw2d arg has to guess
4119 prog->polygonbegin_guess2d = false;
4120
4121 // update the views
4122 if (ismain)
4123 {
4124 // clear the flags so no other view becomes "main" unless CSQC sets VF_MAINVIEW
4125 r_refdef.view.ismain = false;
4127 }
4128}
void CL_UpdateViewEntities(void)
Definition cl_main.c:1432
void CL_MeshEntities_Scene_FinalizeRenderEntity(void)
Definition cl_main.c:2605
void CL_UpdateEntityShading(void)
Definition cl_main.c:2777
r_refdef_view_t csqc_main_r_refdef_view
Definition clvm_cmds.c:26
void VM_CL_R_RenderScene(void)
void R_RenderView(int fbo, rtexture_t *depthtexture, rtexture_t *colortexture, int x, int y, int width, int height)
Definition gl_rmain.c:5637
qbool ismain
if true, this is the MAIN view (which is, after CSQC, copied into the scene for use e....
Definition render.h:309

References CL_MeshEntities_Scene_FinalizeRenderEntity(), CL_UpdateEntityShading(), CL_UpdateViewEntities(), csqc_main_r_refdef_view, csqc_original_r_refdef_view, CSQC_UpdateView(), prvm_prog_t::functions, r_refdef_view_t::height, r_refdef_view_t::ismain, NULL, prvm_prog_t::polygonbegin_guess2d, PRVM_clientfunction, r_refdef, R_RenderView(), Sys_DirtyTime(), mfunction_t::totaltime, r_refdef_t::view, VM_CL_R_RenderScene(), VM_SAFEPARMCOUNT, r_refdef_view_t::width, r_refdef_view_t::x, and r_refdef_view_t::y.

◆ VM_CL_R_SetView()

static void VM_CL_R_SetView ( prvm_prog_t * prog)
static

Definition at line 840 of file clvm_cmds.c.

841{
842 int c;
843 prvm_vec_t *f;
844 float k;
845
847
849
850 // return value?
851 if (prog->argc < 2)
852 {
853 switch(c)
854 {
855 case VF_MIN:
857 break;
858 case VF_MIN_X:
860 break;
861 case VF_MIN_Y:
863 break;
864 case VF_SIZE:
866 break;
867 case VF_SIZE_X:
869 break;
870 case VF_SIZE_Y:
872 break;
873 case VF_VIEWPORT:
874 VM_Warning(prog, "VM_CL_R_GetView : VF_VIEWPORT can't be retrieved, use VF_MIN/VF_SIZE instead\n");
875 break;
876 case VF_FOV:
878 break;
879 case VF_FOVX:
881 break;
882 case VF_FOVY:
884 break;
885 case VF_ORIGIN:
887 break;
888 case VF_ORIGIN_X:
890 break;
891 case VF_ORIGIN_Y:
893 break;
894 case VF_ORIGIN_Z:
896 break;
897 case VF_ANGLES:
899 break;
900 case VF_ANGLES_X:
902 break;
903 case VF_ANGLES_Y:
905 break;
906 case VF_ANGLES_Z:
908 break;
909 case VF_DRAWWORLD:
911 break;
914 break;
915 case VF_DRAWCROSSHAIR:
917 break;
918 case VF_CL_VIEWANGLES:
920 break;
923 break;
926 break;
929 break;
930 case VF_PERSPECTIVE:
932 break;
933 case VF_CLEARSCREEN:
935 break;
936 case VF_MAINVIEW:
938 break;
939 case VF_FOG_DENSITY:
941 break;
942 case VF_FOG_COLOR:
946 break;
947 case VF_FOG_COLOR_R:
949 break;
950 case VF_FOG_COLOR_G:
952 break;
953 case VF_FOG_COLOR_B:
955 break;
956 case VF_FOG_ALPHA:
958 break;
959 case VF_FOG_START:
961 break;
962 case VF_FOG_END:
964 break;
965 case VF_FOG_HEIGHT:
967 break;
968 case VF_FOG_FADEDEPTH:
970 break;
973 break;
974 default:
976 VM_Warning(prog, "VM_CL_R_GetView : unknown parm %i\n", c);
977 return;
978 }
980 {
981 switch(c)
982 {
983 case VF_MIN: case VF_MIN_X: case VF_MIN_Y: case VF_SIZE: case VF_SIZE_X: case VF_SIZE_Y: case VF_VIEWPORT:
985 }
986 }
987 return;
988 }
989
991 {
993 switch(c)
994 {
995 case VF_MIN: case VF_MIN_X: case VF_MIN_Y: case VF_SIZE: case VF_SIZE_X: case VF_SIZE_Y: case VF_VIEWPORT:
998 }
999 }
1002 switch(c)
1003 {
1004 case VF_MIN:
1005 r_refdef.view.x = (int)(f[0]);
1006 r_refdef.view.y = (int)(f[1]);
1008 break;
1009 case VF_MIN_X:
1010 r_refdef.view.x = (int)(k);
1012 break;
1013 case VF_MIN_Y:
1014 r_refdef.view.y = (int)(k);
1016 break;
1017 case VF_SIZE:
1018 r_refdef.view.width = (int)(f[0]);
1019 r_refdef.view.height = (int)(f[1]);
1021 break;
1022 case VF_SIZE_X:
1023 r_refdef.view.width = (int)(k);
1025 break;
1026 case VF_SIZE_Y:
1027 r_refdef.view.height = (int)(k);
1029 break;
1030 case VF_VIEWPORT:
1031 r_refdef.view.x = (int)(f[0]);
1032 r_refdef.view.y = (int)(f[1]);
1034 r_refdef.view.width = (int)(f[0]);
1035 r_refdef.view.height = (int)(f[1]);
1037 break;
1038 case VF_FOV:
1039 r_refdef.view.frustum_x = tan(f[0] * M_PI / 360.0);r_refdef.view.ortho_x = f[0];
1040 r_refdef.view.frustum_y = tan(f[1] * M_PI / 360.0);r_refdef.view.ortho_y = f[1];
1041 break;
1042 case VF_FOVX:
1043 r_refdef.view.frustum_x = tan(k * M_PI / 360.0);r_refdef.view.ortho_x = k;
1044 break;
1045 case VF_FOVY:
1046 r_refdef.view.frustum_y = tan(k * M_PI / 360.0);r_refdef.view.ortho_y = k;
1047 break;
1048 case VF_ORIGIN:
1051 break;
1052 case VF_ORIGIN_X:
1053 cl.csqc_vieworigin[0] = k;
1055 break;
1056 case VF_ORIGIN_Y:
1057 cl.csqc_vieworigin[1] = k;
1059 break;
1060 case VF_ORIGIN_Z:
1061 cl.csqc_vieworigin[2] = k;
1063 break;
1064 case VF_ANGLES:
1067 break;
1068 case VF_ANGLES_X:
1069 cl.csqc_viewangles[0] = k;
1071 break;
1072 case VF_ANGLES_Y:
1073 cl.csqc_viewangles[1] = k;
1075 break;
1076 case VF_ANGLES_Z:
1077 cl.csqc_viewangles[2] = k;
1079 break;
1080 case VF_DRAWWORLD:
1082 break;
1083 case VF_DRAWENGINESBAR:
1085 break;
1086 case VF_DRAWCROSSHAIR:
1087 cl.csqc_vidvars.drawcrosshair = k != 0;
1088 break;
1089 case VF_CL_VIEWANGLES:
1091 break;
1092 case VF_CL_VIEWANGLES_X:
1093 cl.viewangles[0] = k;
1094 break;
1095 case VF_CL_VIEWANGLES_Y:
1096 cl.viewangles[1] = k;
1097 break;
1098 case VF_CL_VIEWANGLES_Z:
1099 cl.viewangles[2] = k;
1100 break;
1101 case VF_PERSPECTIVE:
1102 r_refdef.view.useperspective = k != 0;
1103 break;
1104 case VF_CLEARSCREEN:
1105 r_refdef.view.isoverlay = !k;
1106 break;
1107 case VF_MAINVIEW:
1109 break;
1110 case VF_FOG_DENSITY:
1112 break;
1113 case VF_FOG_COLOR:
1114 r_refdef.fog_red = f[0];
1115 r_refdef.fog_green = f[1];
1116 r_refdef.fog_blue = f[2];
1117 break;
1118 case VF_FOG_COLOR_R:
1119 r_refdef.fog_red = k;
1120 break;
1121 case VF_FOG_COLOR_G:
1122 r_refdef.fog_green = k;
1123 break;
1124 case VF_FOG_COLOR_B:
1125 r_refdef.fog_blue = k;
1126 break;
1127 case VF_FOG_ALPHA:
1128 r_refdef.fog_alpha = k;
1129 break;
1130 case VF_FOG_START:
1131 r_refdef.fog_start = k;
1132 break;
1133 case VF_FOG_END:
1134 r_refdef.fog_end = k;
1135 break;
1136 case VF_FOG_HEIGHT:
1137 r_refdef.fog_height = k;
1138 break;
1139 case VF_FOG_FADEDEPTH:
1141 break;
1142 case VF_MINFPS_QUALITY:
1143 r_refdef.view.quality = k;
1144 break;
1145 default:
1147 VM_Warning(prog, "VM_CL_R_SetView : unknown parm %i\n", c);
1148 return;
1149 }
1151}
cvar_t csqc_lowres
Definition cl_main.c:40
void VM_CL_R_SetView(void)
#define VF_FOG_START
Definition csprogs.h:72
#define VF_FOG_HEIGHT
Definition csprogs.h:74
#define VF_FOVY
Definition csprogs.h:40
#define VF_ANGLES_Z
Definition csprogs.h:48
#define VF_ANGLES_Y
Definition csprogs.h:47
#define VF_FOG_COLOR_R
Definition csprogs.h:68
#define VF_ORIGIN_X
Definition csprogs.h:42
#define VF_PERSPECTIVE
Definition csprogs.h:60
#define VF_SIZE
Definition csprogs.h:34
#define VF_MAINVIEW
Definition csprogs.h:78
#define VF_FOVX
Definition csprogs.h:39
#define VF_DRAWENGINESBAR
Definition csprogs.h:51
#define VF_FOG_COLOR_B
Definition csprogs.h:70
#define VF_CLEARSCREEN
Definition csprogs.h:63
#define VF_DRAWWORLD
Definition csprogs.h:50
#define VF_SIZE_X
Definition csprogs.h:35
#define VF_ORIGIN_Y
Definition csprogs.h:43
#define VF_ORIGIN
Definition csprogs.h:41
#define VF_FOV
Definition csprogs.h:38
#define VF_CL_VIEWANGLES_Y
Definition csprogs.h:56
#define VF_FOG_DENSITY
Definition csprogs.h:66
#define VF_FOG_COLOR_G
Definition csprogs.h:69
#define VF_FOG_FADEDEPTH
Definition csprogs.h:75
#define VF_MIN
Definition csprogs.h:31
#define VF_MIN_X
Definition csprogs.h:32
#define VF_ORIGIN_Z
Definition csprogs.h:44
#define VF_MIN_Y
Definition csprogs.h:33
#define VF_MINFPS_QUALITY
Definition csprogs.h:79
#define VF_FOG_END
Definition csprogs.h:73
#define VF_VIEWPORT
Definition csprogs.h:37
#define VF_CL_VIEWANGLES_Z
Definition csprogs.h:57
#define VF_DRAWCROSSHAIR
Definition csprogs.h:52
#define VF_CL_VIEWANGLES
Definition csprogs.h:54
#define VF_SIZE_Y
Definition csprogs.h:36
#define VF_FOG_COLOR
Definition csprogs.h:67
#define VF_CL_VIEWANGLES_X
Definition csprogs.h:55
#define VF_FOG_ALPHA
Definition csprogs.h:71
#define VF_ANGLES_X
Definition csprogs.h:46
#define VF_ANGLES
Definition csprogs.h:45
void DrawQ_RecalcView(void)
Definition gl_draw.c:1462
#define M_PI
Definition mathlib.h:28
vec3_t viewangles
Definition client.h:786
float fog_start
Definition render.h:436
float fog_density
Definition render.h:431
float fog_height
Definition render.h:438
float fog_green
Definition render.h:433
float fog_alpha
Definition render.h:435
float fog_fadedepth
Definition render.h:439
float fog_end
Definition render.h:437
float fog_blue
Definition render.h:434
float fog_red
Definition render.h:432
float quality
render quality (0 to 1) - affects r_drawparticles_drawdistance and others
Definition render.h:321
int useperspective
if turned off it renders an ortho view
Definition render.h:280
qbool isoverlay
if true, don't clear or do any post process effects (bloom, etc)
Definition render.h:307
float ortho_x
Definition render.h:287
float ortho_y
Definition render.h:287

References prvm_prog_t::argc, cl, csqc_lowres, CSQC_R_RecalcView(), client_state_t::csqc_vidvars, client_state_t::csqc_viewangles, client_state_t::csqc_vieworigin, csqc_vidvars_t::drawcrosshair, csqc_vidvars_t::drawenginesbar, DrawQ_RecalcView(), csqc_vidvars_t::drawworld, f, r_refdef_t::fog_alpha, r_refdef_t::fog_blue, r_refdef_t::fog_density, r_refdef_t::fog_end, r_refdef_t::fog_fadedepth, r_refdef_t::fog_green, r_refdef_t::fog_height, r_refdef_t::fog_red, r_refdef_t::fog_start, r_refdef_view_t::frustum_x, r_refdef_view_t::frustum_y, r_refdef_view_t::height, int(), cvar_t::integer, r_refdef_view_t::ismain, r_refdef_view_t::isoverlay, M_PI, viddef_t::mode, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_RETURN, r_refdef_view_t::ortho_x, r_refdef_view_t::ortho_y, PRVM_G_FLOAT, PRVM_G_VECTOR, r_refdef_view_t::quality, r_drawworld, r_refdef, scale, r_refdef_view_t::useperspective, cvar_t::value, VectorCopy, VectorScale, VectorSet, VF_ANGLES, VF_ANGLES_X, VF_ANGLES_Y, VF_ANGLES_Z, VF_CL_VIEWANGLES, VF_CL_VIEWANGLES_X, VF_CL_VIEWANGLES_Y, VF_CL_VIEWANGLES_Z, VF_CLEARSCREEN, VF_DRAWCROSSHAIR, VF_DRAWENGINESBAR, VF_DRAWWORLD, VF_FOG_ALPHA, VF_FOG_COLOR, VF_FOG_COLOR_B, VF_FOG_COLOR_G, VF_FOG_COLOR_R, VF_FOG_DENSITY, VF_FOG_END, VF_FOG_FADEDEPTH, VF_FOG_HEIGHT, VF_FOG_START, VF_FOV, VF_FOVX, VF_FOVY, VF_MAINVIEW, VF_MIN, VF_MIN_X, VF_MIN_Y, VF_MINFPS_QUALITY, VF_ORIGIN, VF_ORIGIN_X, VF_ORIGIN_Y, VF_ORIGIN_Z, VF_PERSPECTIVE, VF_SIZE, VF_SIZE_X, VF_SIZE_Y, VF_VIEWPORT, vid, vid_conwidth, r_refdef_t::view, client_state_t::viewangles, VM_CL_R_SetView(), VM_SAFEPARMCOUNTRANGE, VM_Warning(), r_refdef_view_t::width, viddef_mode_t::width, r_refdef_view_t::x, and r_refdef_view_t::y.

◆ VM_CL_ReadAngle()

static void VM_CL_ReadAngle ( prvm_prog_t * prog)
static

Definition at line 2508 of file clvm_cmds.c.

2509{
2512}
static void VM_CL_ReadAngle(prvm_prog_t *prog)
Definition clvm_cmds.c:2508
float MSG_ReadAngle(sizebuf_t *sb, protocolversion_t protocol)
Definition com_msg.c:424
sizebuf_t cl_message
Definition netconn.c:71
protocolversion_t protocol
Definition client.h:617

References cl_message, cls, MSG_ReadAngle(), OFS_RETURN, client_static_t::protocol, PRVM_G_FLOAT, VM_CL_ReadAngle(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_ReadAngle().

◆ VM_CL_ReadByte()

static void VM_CL_ReadByte ( prvm_prog_t * prog)
static

Definition at line 2473 of file clvm_cmds.c.

2474{
2477}
static void VM_CL_ReadByte(prvm_prog_t *prog)
Definition clvm_cmds.c:2473
#define MSG_ReadByte(sb)
Definition common.h:188

References cl_message, MSG_ReadByte, OFS_RETURN, PRVM_G_FLOAT, VM_CL_ReadByte(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_ReadByte().

◆ VM_CL_ReadChar()

static void VM_CL_ReadChar ( prvm_prog_t * prog)
static

Definition at line 2480 of file clvm_cmds.c.

2481{
2484}
static void VM_CL_ReadChar(prvm_prog_t *prog)
Definition clvm_cmds.c:2480
#define MSG_ReadChar(sb)
Definition common.h:187

References cl_message, MSG_ReadChar, OFS_RETURN, PRVM_G_FLOAT, VM_CL_ReadChar(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_ReadChar().

◆ VM_CL_ReadCoord()

static void VM_CL_ReadCoord ( prvm_prog_t * prog)
static

Definition at line 2501 of file clvm_cmds.c.

2502{
2505}
static void VM_CL_ReadCoord(prvm_prog_t *prog)
Definition clvm_cmds.c:2501
float MSG_ReadCoord(sizebuf_t *sb, protocolversion_t protocol)
Definition com_msg.c:389

References cl_message, cls, MSG_ReadCoord(), OFS_RETURN, client_static_t::protocol, PRVM_G_FLOAT, VM_CL_ReadCoord(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_ReadCoord().

◆ VM_CL_ReadFloat()

static void VM_CL_ReadFloat ( prvm_prog_t * prog)
static

Definition at line 2525 of file clvm_cmds.c.

2526{
2529}
static void VM_CL_ReadFloat(prvm_prog_t *prog)
Definition clvm_cmds.c:2525
#define MSG_ReadFloat
Definition common.h:193

References cl_message, MSG_ReadFloat, OFS_RETURN, PRVM_G_FLOAT, VM_CL_ReadFloat(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_ReadFloat().

◆ VM_CL_ReadLong()

static void VM_CL_ReadLong ( prvm_prog_t * prog)
static

Definition at line 2494 of file clvm_cmds.c.

2495{
2498}
static void VM_CL_ReadLong(prvm_prog_t *prog)
Definition clvm_cmds.c:2494
#define MSG_ReadLong
Definition common.h:192

References cl_message, MSG_ReadLong, OFS_RETURN, PRVM_G_FLOAT, VM_CL_ReadLong(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_ReadLong().

◆ VM_CL_ReadPicture()

static void VM_CL_ReadPicture ( prvm_prog_t * prog)
static

Definition at line 2533 of file clvm_cmds.c.

2534{
2535 const char *name;
2536 size_t name_len;
2537 unsigned char *data;
2538 unsigned char *buf;
2539 unsigned short size;
2540 int i;
2541 cachepic_t *pic;
2542
2544
2547 size = (unsigned short) MSG_ReadShort(&cl_message);
2548
2549 // check if a texture of that name exists
2550 // if yes, it is used and the data is discarded
2551 // if not, the (low quality) data is used to build a new texture, whose name will get returned
2552
2554
2555 if(size)
2556 {
2558 {
2559 // texture found and loaded
2560 // skip over the jpeg as we don't need it
2561 for(i = 0; i < size; ++i)
2562 (void) MSG_ReadByte(&cl_message);
2563 }
2564 else
2565 {
2566 // texture not found
2567 // use the attached jpeg as texture
2568 buf = (unsigned char *) Mem_Alloc(tempmempool, size);
2571 Mem_Free(buf);
2573 Mem_Free(data);
2574 }
2575 }
2576
2577 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, name, name_len);
2578}
cvar_t cl_readpicture_force
Definition cl_parse.c:181
static void VM_CL_ReadPicture(prvm_prog_t *prog)
Definition clvm_cmds.c:2533
size_t MSG_ReadBytes(sizebuf_t *sb, size_t numbytes, unsigned char *out)
Definition com_msg.c:364
size_t MSG_ReadString_len(sizebuf_t *sb, char *string, size_t maxstring)
Same as MSG_ReadString except it returns the number of bytes written to *string excluding the \0 term...
Definition com_msg.c:352
#define MSG_ReadShort
Definition common.h:191
@ CACHEPICFLAG_FAILONMISSING
Definition draw.h:44
@ CACHEPICFLAG_NOTPERSISTENT
Definition draw.h:36
cachepic_t * Draw_NewPic(const char *picname, int width, int height, unsigned char *pixels, textype_t textype, int texflags)
Definition gl_draw.c:256
cachepic_t * Draw_CachePic_Flags(const char *path, unsigned int cachepicflags)
Definition gl_draw.c:86
qbool Draw_IsPicLoaded(cachepic_t *pic)
Definition gl_draw.c:211
GLsizeiptr const GLvoid * data
Definition glquake.h:639
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition glquake.h:657
int image_height
Definition image.c:10
int image_width
Definition image.c:9
unsigned char * JPEG_LoadImage_BGRA(const unsigned char *f, int filesize, int *miplevel)
Definition jpeg.c:606
char cl_readstring[MAX_INPUTLINE]
Definition netconn.c:75
@ TEXTYPE_BGRA
Definition r_textures.h:53
#define TEXF_CLAMP
Definition r_textures.h:15
mempool_t * tempmempool
Definition zone.c:794
#define Mem_Free(mem)
Definition zone.h:96
#define Mem_Alloc(pool, size)
Definition zone.h:92

References buf, CACHEPICFLAG_FAILONMISSING, CACHEPICFLAG_NOTPERSISTENT, cl_message, cl_readpicture_force, cl_readstring, data, Draw_CachePic_Flags(), Draw_IsPicLoaded(), Draw_NewPic(), i, image_height, image_width, cvar_t::integer, JPEG_LoadImage_BGRA(), Mem_Alloc, Mem_Free, MSG_ReadByte, MSG_ReadBytes(), MSG_ReadShort, MSG_ReadString_len(), name, NULL, OFS_RETURN, PRVM_G_INT, PRVM_SetTempString(), size, tempmempool, TEXF_CLAMP, TEXTYPE_BGRA, VM_CL_ReadPicture(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_ReadPicture().

◆ VM_CL_ReadShort()

static void VM_CL_ReadShort ( prvm_prog_t * prog)
static

Definition at line 2487 of file clvm_cmds.c.

2488{
2491}
static void VM_CL_ReadShort(prvm_prog_t *prog)
Definition clvm_cmds.c:2487

References cl_message, MSG_ReadShort, OFS_RETURN, PRVM_G_FLOAT, VM_CL_ReadShort(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_ReadShort().

◆ VM_CL_ReadString()

static void VM_CL_ReadString ( prvm_prog_t * prog)
static

Definition at line 2515 of file clvm_cmds.c.

2516{
2517 size_t cl_readstring_len;
2518
2520 cl_readstring_len = MSG_ReadString_len(&cl_message, cl_readstring, sizeof(cl_readstring));
2521 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, cl_readstring, cl_readstring_len);
2522}
static void VM_CL_ReadString(prvm_prog_t *prog)
Definition clvm_cmds.c:2515

References cl_message, cl_readstring, MSG_ReadString_len(), OFS_RETURN, PRVM_G_INT, PRVM_SetTempString(), VM_CL_ReadString(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_ReadString().

◆ VM_CL_registercmd()

static void VM_CL_registercmd ( prvm_prog_t * prog)
static

Definition at line 2466 of file clvm_cmds.c.

2467{
2469 Cmd_AddCommand(CF_CLIENT, PRVM_G_STRING(OFS_PARM0), NULL, "console command created by QuakeC");
2470}
static void VM_CL_registercmd(prvm_prog_t *prog)
Definition clvm_cmds.c:2466
void Cmd_AddCommand(unsigned flags, const char *cmd_name, xcommand_t function, const char *description)
called by the init functions of other parts of the program to register commands and functions to call...
Definition cmd.c:1661
#define CF_CLIENT
cvar/command that only the client can change/execute
Definition cmd.h:48

References CF_CLIENT, Cmd_AddCommand(), NULL, OFS_PARM0, PRVM_G_STRING, VM_CL_registercmd(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_registercmd().

◆ VM_CL_ResetParticle()

static void VM_CL_ResetParticle ( prvm_prog_t * prog)
static

Definition at line 3651 of file clvm_cmds.c.

3652{
3654 if (vmpartspawner.verified == false)
3655 {
3656 VM_Warning(prog, "VM_CL_ResetParticle: particle spawner not initialized\n");
3657 return;
3658 }
3660}
static void VM_CL_ResetParticle(prvm_prog_t *prog)
Definition clvm_cmds.c:3651

References vmparticlespawner_t::themes, vmparticlespawner_t::verified, VM_CL_ParticleThemeToGlobals(), VM_CL_ResetParticle(), VM_SAFEPARMCOUNT, VM_Warning(), and vmpartspawner.

Referenced by VM_CL_ResetParticle().

◆ VM_CL_RotateMoves()

static void VM_CL_RotateMoves ( prvm_prog_t * prog)
static

Definition at line 4905 of file clvm_cmds.c.

4906{
4907 /*
4908 * Obscure builtin used by GAME_XONOTIC.
4909 *
4910 * Edits the input history of cl_movement by rotating all move commands
4911 * currently in the queue using the given transform.
4912 *
4913 * The vector passed is an "angles transform" as used by warpzonelib, i.e.
4914 * v_angle-like (non-inverted) euler angles that perform the rotation
4915 * of the space that is to be done.
4916 *
4917 * This is meant to be used as a fixangle replacement after passing
4918 * through a warpzone/portal: the client is told about the warp transform,
4919 * and calls this function in the same frame as the one on which the
4920 * client's origin got changed by the serverside teleport. Then this code
4921 * transforms the pre-warp input (which matches the empty space behind
4922 * the warp plane) into post-warp input (which matches the target area
4923 * of the warp). Also, at the same time, the client has to use
4924 * R_SetView to adjust VF_CL_VIEWANGLES according to the same transform.
4925 *
4926 * This together allows warpzone motion to be perfectly predicted by
4927 * the client!
4928 *
4929 * Furthermore, for perfect warpzone behaviour, the server side also
4930 * has to detect input the client sent before it received the origin
4931 * update, but after the warp occurred on the server, and has to adjust
4932 * input appropriately.
4933 */
4934 matrix4x4_t m;
4935 vec3_t v = {0, 0, 0};
4936 vec3_t a, x, y, z;
4939 AngleVectorsFLU(a, x, y, z);
4940 Matrix4x4_FromVectors(&m, x, y, z, v);
4941 CL_RotateMoves(&m);
4942}
void CL_RotateMoves(const matrix4x4_t *m)
Definition cl_input.c:1746
static void VM_CL_RotateMoves(prvm_prog_t *prog)
Definition clvm_cmds.c:4905
GLubyte GLubyte GLubyte z
Definition glquake.h:782
void AngleVectorsFLU(const vec3_t angles, vec3_t forward, vec3_t left, vec3_t up)
LadyHavoc: proper matrix version of AngleVectors.
Definition mathlib.c:498

References a, AngleVectorsFLU(), CL_RotateMoves(), Matrix4x4_FromVectors(), OFS_PARM0, PRVM_G_VECTOR, v, VectorCopy, VM_CL_RotateMoves(), VM_SAFEPARMCOUNT, x, y, and z.

Referenced by VM_CL_RotateMoves().

◆ VM_CL_runplayerphysics()

static void VM_CL_runplayerphysics ( prvm_prog_t * prog)
static

Definition at line 2329 of file clvm_cmds.c.

2330{
2332 prvm_edict_t *ent;
2333
2334 memset(&s, 0, sizeof(s));
2335
2337
2338 ent = (prog->argc == 1 ? PRVM_G_EDICT(OFS_PARM0) : prog->edicts);
2339 if(ent == prog->edicts)
2340 {
2341 // deprecated use
2342 s.self = NULL;
2343 VectorCopy(PRVM_clientglobalvector(pmove_org), s.origin);
2344 VectorCopy(PRVM_clientglobalvector(pmove_vel), s.velocity);
2345 VectorCopy(PRVM_clientglobalvector(pmove_mins), s.mins);
2346 VectorCopy(PRVM_clientglobalvector(pmove_maxs), s.maxs);
2347 s.crouched = 0;
2348 s.waterjumptime = PRVM_clientglobalfloat(pmove_waterjumptime);
2349 s.cmd.canjump = (int)PRVM_clientglobalfloat(pmove_jump_held) == 0;
2350 }
2351 else
2352 {
2353 // new use
2354 s.self = ent;
2355 VectorCopy(PRVM_clientedictvector(ent, origin), s.origin);
2356 VectorCopy(PRVM_clientedictvector(ent, velocity), s.velocity);
2357 VectorCopy(PRVM_clientedictvector(ent, mins), s.mins);
2358 VectorCopy(PRVM_clientedictvector(ent, maxs), s.maxs);
2359 s.crouched = ((int)PRVM_clientedictfloat(ent, pmove_flags) & PMF_DUCKED) != 0;
2360 s.waterjumptime = 0; // FIXME where do we get this from? FTEQW lacks support for this too
2361 s.cmd.canjump = ((int)PRVM_clientedictfloat(ent, pmove_flags) & PMF_JUMP_HELD) == 0;
2362 }
2363
2370 s.cmd.jump = (s.cmd.buttons & 2) != 0;
2371 s.cmd.crouch = (s.cmd.buttons & 16) != 0;
2372
2374
2375 if(ent == prog->edicts)
2376 {
2377 // deprecated use
2380 PRVM_clientglobalfloat(pmove_jump_held) = !s.cmd.canjump;
2381 PRVM_clientglobalfloat(pmove_waterjumptime) = s.waterjumptime;
2382 }
2383 else
2384 {
2385 // new use
2388 PRVM_clientedictfloat(ent, pmove_flags) =
2389 (s.crouched ? PMF_DUCKED : 0) |
2390 (s.cmd.canjump ? 0 : PMF_JUMP_HELD) |
2391 (s.onground ? PMF_ONGROUND : 0);
2392 }
2393}
void CL_ClientMovement_PlayerMove_Frame(cl_clientmovement_state_t *s)
Definition cl_input.c:1586
#define PMF_DUCKED
Definition clvm_cmds.c:2327
#define PMF_JUMP_HELD
Definition clvm_cmds.c:2325
static void VM_CL_runplayerphysics(prvm_prog_t *prog)
Definition clvm_cmds.c:2329
#define PMF_ONGROUND
Definition clvm_cmds.c:2328
vector pmove_vel
vector pmove_org
qbool jump
Definition protocol.h:404
qbool canjump
Definition protocol.h:403

References prvm_prog_t::argc, usercmd_t::buttons, usercmd_t::canjump, CL_ClientMovement_PlayerMove_Frame(), cl_clientmovement_state_t::cmd, usercmd_t::crouch, cl_clientmovement_state_t::crouched, prvm_prog_t::edicts, usercmd_t::forwardmove, usercmd_t::frametime, input_angles, input_buttons, input_movevalues, input_timelength, int(), usercmd_t::jump, cl_clientmovement_state_t::maxs, maxs, cl_clientmovement_state_t::mins, mins, NULL, OFS_PARM0, cl_clientmovement_state_t::onground, cl_clientmovement_state_t::origin, origin, PMF_DUCKED, PMF_JUMP_HELD, PMF_ONGROUND, pmove_maxs, pmove_mins, pmove_org, pmove_vel, PRVM_clientedictfloat, PRVM_clientedictvector, PRVM_clientglobalfloat, PRVM_clientglobalvector, PRVM_G_EDICT, cl_clientmovement_state_t::self, usercmd_t::sidemove, usercmd_t::upmove, VectorCopy, cl_clientmovement_state_t::velocity, velocity, usercmd_t::viewangles, VM_CL_runplayerphysics(), VM_SAFEPARMCOUNTRANGE, and cl_clientmovement_state_t::waterjumptime.

Referenced by VM_CL_runplayerphysics().

◆ VM_CL_serverkey()

static void VM_CL_serverkey ( prvm_prog_t * prog)
static

Definition at line 4522 of file clvm_cmds.c.

4523{
4524 char string[VM_TEMPSTRING_MAXSIZE];
4526 InfoString_GetValue(cl.qw_serverinfo, PRVM_G_STRING(OFS_PARM0), string, sizeof(string));
4527 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, string, strlen(string));
4528}
static void VM_CL_serverkey(prvm_prog_t *prog)
Definition clvm_cmds.c:4522
size_t InfoString_GetValue(const char *buffer, const char *key, char *value, size_t valuesize)
Returns the number of bytes written to *value excluding the \0 terminator.
#define VM_TEMPSTRING_MAXSIZE
Definition prvm_cmds.h:215
char qw_serverinfo[MAX_SERVERINFO_STRING]
Definition client.h:1033

References cl, InfoString_GetValue(), OFS_PARM0, OFS_RETURN, PRVM_G_INT, PRVM_G_STRING, PRVM_SetTempString(), client_state_t::qw_serverinfo, strlen(), VM_CL_serverkey(), VM_SAFEPARMCOUNT, and VM_TEMPSTRING_MAXSIZE.

Referenced by VM_CL_serverkey().

◆ VM_CL_setattachment()

static void VM_CL_setattachment ( prvm_prog_t * prog)
static

Definition at line 3139 of file clvm_cmds.c.

3140{
3141 prvm_edict_t *e;
3142 prvm_edict_t *tagentity;
3143 const char *tagname;
3144 int modelindex;
3145 int tagindex;
3146 model_t *model;
3148
3150 tagentity = PRVM_G_EDICT(OFS_PARM1);
3151 tagname = PRVM_G_STRING(OFS_PARM2);
3152
3153 if (e == prog->edicts)
3154 {
3155 VM_Warning(prog, "setattachment: can not modify world entity\n");
3156 return;
3157 }
3158 if (e->free)
3159 {
3160 VM_Warning(prog, "setattachment: can not modify free entity\n");
3161 return;
3162 }
3163
3164 if (tagentity == NULL)
3165 tagentity = prog->edicts;
3166
3167 tagindex = 0;
3168 if (tagentity != NULL && tagentity != prog->edicts && tagname && tagname[0])
3169 {
3172 if (model)
3173 {
3174 tagindex = Mod_Alias_GetTagIndexForName(model, (int)PRVM_clientedictfloat(tagentity, skin), tagname);
3175 if (tagindex == 0)
3176 Con_DPrintf("setattachment(edict %i, edict %i, string \"%s\"): tried to find tag named \"%s\" on entity %i (model \"%s\") but could not find it\n", PRVM_NUM_FOR_EDICT(e), PRVM_NUM_FOR_EDICT(tagentity), tagname, tagname, PRVM_NUM_FOR_EDICT(tagentity), model->name);
3177 }
3178 else
3179 Con_DPrintf("setattachment(edict %i, edict %i, string \"%s\"): tried to find tag named \"%s\" on entity %i but it has no model\n", PRVM_NUM_FOR_EDICT(e), PRVM_NUM_FOR_EDICT(tagentity), tagname, tagname, PRVM_NUM_FOR_EDICT(tagentity));
3180 }
3181
3183 PRVM_clientedictfloat(e, tag_index) = tagindex;
3184}
void VM_CL_setattachment(void)

References CL_GetModelByIndex(), Con_DPrintf(), prvm_prog_t::edicts, prvm_edict_t::free, int(), Mod_Alias_GetTagIndexForName(), model, modelindex, NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, PRVM_clientedictedict, PRVM_clientedictfloat, PRVM_EDICT_TO_PROG, PRVM_G_EDICT, PRVM_G_STRING, PRVM_NUM_FOR_EDICT, skin, tag_entity, tag_index, VM_CL_setattachment(), VM_SAFEPARMCOUNT, and VM_Warning().

◆ VM_CL_setcursormode()

static void VM_CL_setcursormode ( prvm_prog_t * prog)
static

Definition at line 2264 of file clvm_cmds.c.

2265{
2269}
int cl_ignoremousemoves
Definition cl_input.c:474
static void VM_CL_setcursormode(prvm_prog_t *prog)
Definition clvm_cmds.c:2264

References cl, cl_ignoremousemoves, client_state_t::csqc_wantsmousemove, OFS_PARM0, PRVM_G_FLOAT, VM_CL_setcursormode(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_setcursormode().

◆ VM_CL_setlistener()

◆ VM_CL_setmodel()

static void VM_CL_setmodel ( prvm_prog_t * prog)
static

Definition at line 90 of file clvm_cmds.c.

91{
92 prvm_edict_t *e;
93 const char *m;
94 model_t *mod;
95 int i;
96
98
102
104 mod = NULL;
105 for (i = 0;i < MAX_MODELS && cl.csqc_model_precache[i];i++)
106 {
107 if (!strcmp(cl.csqc_model_precache[i]->name, m))
108 {
112 break;
113 }
114 }
115
116 if( !mod ) {
117 for (i = 0;i < MAX_MODELS;i++)
118 {
120 if (mod && !strcmp(mod->name, m))
121 {
124 break;
125 }
126 }
127 }
128
129 if( mod ) {
130 // TODO: check if this breaks needed consistency and maybe add a cvar for it too?? [1/10/2008 Black]
131 // LadyHavoc: erm you broke it by commenting this out - setmodel must do setsize or else the qc can't find out the model size, and ssqc does this by necessity, consistency.
132 SetMinMaxSize (prog, e, mod->normalmins, mod->normalmaxs);
133 }
134 else
135 {
137 VM_Warning(prog, "setmodel: model '%s' not precached\n", m);
138 }
139}
static void SetMinMaxSize(prvm_prog_t *prog, prvm_edict_t *e, const vec_t *min, const vec_t *max)
Definition clvm_cmds.c:81
void VM_CL_setmodel(void)
vec3_t vec3_origin
Definition mathlib.c:26
#define PRVM_clientedictstring(ed, fieldname)
Definition progsvm.h:186
struct model_s * model_precache[MAX_MODELS]
Definition client.h:888

References cl, client_state_t::csqc_model_precache, i, MAX_MODELS, mod(), model, client_state_t::model_precache, modelindex, NULL, OFS_PARM0, OFS_PARM1, PRVM_clientedictfloat, PRVM_clientedictstring, PRVM_G_EDICT, PRVM_G_STRING, PRVM_SetEngineString(), SetMinMaxSize(), vec3_origin, VM_CL_setmodel(), VM_SAFEPARMCOUNT, and VM_Warning().

◆ VM_CL_setmodelindex()

static void VM_CL_setmodelindex ( prvm_prog_t * prog)
static

Definition at line 2100 of file clvm_cmds.c.

2101{
2102 int i;
2103 prvm_edict_t *t;
2104 struct model_s *model;
2105
2107
2109
2111
2114
2115 if (!i)
2116 return;
2117
2119 if (!model)
2120 {
2121 VM_Warning(prog, "VM_CL_setmodelindex: null model\n");
2122 return;
2123 }
2126
2127 // TODO: check if this breaks needed consistency and maybe add a cvar for it too?? [1/10/2008 Black]
2128 if (model)
2129 {
2130 SetMinMaxSize (prog, t, model->normalmins, model->normalmaxs);
2131 }
2132 else
2134}
static void VM_CL_setmodelindex(prvm_prog_t *prog)
Definition clvm_cmds.c:2100

References CL_GetModelByIndex(), i, int(), model, modelindex, prvm_prog_t::name, OFS_PARM0, OFS_PARM1, PRVM_clientedictfloat, PRVM_clientedictstring, PRVM_G_EDICT, PRVM_G_FLOAT, PRVM_SetEngineString(), SetMinMaxSize(), vec3_origin, VM_CL_setmodelindex(), VM_SAFEPARMCOUNT, and VM_Warning().

Referenced by VM_CL_setmodelindex().

◆ VM_CL_setorigin()

static void VM_CL_setorigin ( prvm_prog_t * prog)
static

Definition at line 41 of file clvm_cmds.c.

42{
43 prvm_edict_t *e;
44 prvm_vec_t *org;
46
48 if (e == prog->edicts)
49 {
50 VM_Warning(prog, "setorigin: can not modify world entity\n");
51 return;
52 }
53 if (e->free)
54 {
55 VM_Warning(prog, "setorigin: can not modify free entity\n");
56 return;
57 }
62 CL_LinkEdict(e);
63}
void VM_CL_setorigin(void)
#define PRVM_EDICT_MARK_SETORIGIN_CAUGHT
Definition progsvm.h:79
#define PRVM_EDICT_MARK_WAIT_FOR_SETORIGIN
Definition progsvm.h:78
int mark
mark for the leak detector
Definition progsvm.h:85
prvm_edict_private_t * required
Definition progsvm.h:101

References CL_LinkEdict(), prvm_prog_t::edicts, prvm_edict_t::free, prvm_edict_private_t::mark, OFS_PARM0, OFS_PARM1, origin, prvm_edict_t::priv, PRVM_clientedictvector, PRVM_EDICT_MARK_SETORIGIN_CAUGHT, PRVM_EDICT_MARK_WAIT_FOR_SETORIGIN, PRVM_G_EDICT, PRVM_G_VECTOR, prvm_edict_t::required, VectorCopy, VM_CL_setorigin(), VM_SAFEPARMCOUNT, and VM_Warning().

◆ VM_CL_setpause()

static void VM_CL_setpause ( prvm_prog_t * prog)
static

Definition at line 2251 of file clvm_cmds.c.

2252{
2254 if(cl.islocalgame)
2255 {
2256 if ((int)PRVM_G_FLOAT(OFS_PARM0) != 0)
2257 host.paused = true;
2258 else
2259 host.paused = false;
2260 }
2261}
static void VM_CL_setpause(prvm_prog_t *prog)
Definition clvm_cmds.c:2251
host_static_t host
Definition host.c:41
int islocalgame
Definition client.h:746
qbool paused
global paused state, pauses both client and server
Definition host.h:50

References cl, host, client_state_t::islocalgame, OFS_PARM0, host_static_t::paused, PRVM_G_FLOAT, VM_CL_setpause(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_setpause().

◆ VM_CL_setsensitivityscale()

static void VM_CL_setsensitivityscale ( prvm_prog_t * prog)
static

Definition at line 2318 of file clvm_cmds.c.

2319{
2322}
static void VM_CL_setsensitivityscale(prvm_prog_t *prog)
Definition clvm_cmds.c:2318
float sensitivityscale
Definition client.h:833

References cl, OFS_PARM0, PRVM_G_FLOAT, client_state_t::sensitivityscale, VM_CL_setsensitivityscale(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_setsensitivityscale().

◆ VM_CL_setsize()

static void VM_CL_setsize ( prvm_prog_t * prog)
static

Definition at line 142 of file clvm_cmds.c.

143{
144 prvm_edict_t *e;
147
149 if (e == prog->edicts)
150 {
151 VM_Warning(prog, "setsize: can not modify world entity\n");
152 return;
153 }
154 if (e->free)
155 {
156 VM_Warning(prog, "setsize: can not modify free entity\n");
157 return;
158 }
161
162 SetMinMaxSize( prog, e, mins, maxs );
163
164 CL_LinkEdict(e);
165}
static void VM_CL_setsize(prvm_prog_t *prog)
Definition clvm_cmds.c:142

References CL_LinkEdict(), prvm_prog_t::edicts, prvm_edict_t::free, maxs, mins, OFS_PARM0, OFS_PARM1, OFS_PARM2, PRVM_G_EDICT, PRVM_G_VECTOR, SetMinMaxSize(), VectorCopy, VM_CL_setsize(), VM_SAFEPARMCOUNT, and VM_Warning().

Referenced by VM_CL_setsize().

◆ VM_CL_skel_build()

static void VM_CL_skel_build ( prvm_prog_t * prog)
static

Definition at line 4624 of file clvm_cmds.c.

4625{
4627 skeleton_t *skeleton;
4630 float retainfrac = PRVM_G_FLOAT(OFS_PARM3);
4631 int firstbone = PRVM_G_FLOAT(OFS_PARM4) - 1;
4632 int lastbone = PRVM_G_FLOAT(OFS_PARM5) - 1;
4634 int numblends;
4635 int bonenum;
4636 int blendindex;
4637 framegroupblend_t framegroupblend[MAX_FRAMEGROUPBLENDS];
4638 frameblend_t frameblend[MAX_FRAMEBLENDS];
4639 matrix4x4_t bonematrix;
4640 matrix4x4_t matrix;
4643 return;
4644 firstbone = max(0, firstbone);
4645 lastbone = min(lastbone, model->num_bones - 1);
4646 lastbone = min(lastbone, skeleton->model->num_bones - 1);
4647 VM_GenerateFrameGroupBlend(prog, framegroupblend, ed);
4648 VM_FrameBlendFromFrameGroupBlend(frameblend, framegroupblend, model, cl.time);
4649 for (numblends = 0;numblends < MAX_FRAMEBLENDS && frameblend[numblends].lerp;numblends++)
4650 ;
4651 for (bonenum = firstbone;bonenum <= lastbone;bonenum++)
4652 {
4653 memset(&bonematrix, 0, sizeof(bonematrix));
4654 for (blendindex = 0;blendindex < numblends;blendindex++)
4655 {
4656 Matrix4x4_FromBonePose7s(&matrix, model->num_posescale, model->data_poses7s + 7 * (frameblend[blendindex].subframe * model->num_bones + bonenum));
4657 Matrix4x4_Accumulate(&bonematrix, &matrix, frameblend[blendindex].lerp);
4658 }
4659 Matrix4x4_Normalize3(&bonematrix, &bonematrix);
4660 Matrix4x4_Interpolate(&skeleton->relativetransforms[bonenum], &bonematrix, &skeleton->relativetransforms[bonenum], retainfrac);
4661 }
4663}
#define MAX_FRAMEBLENDS
Definition client.h:309
float skeletonindex
void Matrix4x4_FromBonePose7s(matrix4x4_t *m, float originscale, const short *pose7s)
Definition matrixlib.c:1599
void Matrix4x4_Normalize3(matrix4x4_t *out, matrix4x4_t *in1)
Definition matrixlib.c:508
void Matrix4x4_Interpolate(matrix4x4_t *out, matrix4x4_t *in1, matrix4x4_t *in2, double frac)
Definition matrixlib.c:475
void Matrix4x4_Accumulate(matrix4x4_t *out, matrix4x4_t *in, double weight)
Definition matrixlib.c:491
#define MAX_FRAMEGROUPBLENDS
Definition protocol.h:408
float lerp
Definition client.h:313
struct skeleton_s * skeletons[MAX_EDICTS]
Definition progsvm.h:640
const struct model_s * model
Definition protocol.h:425
struct matrix4x4_s * relativetransforms
Definition protocol.h:426

References cl, CL_GetModelByIndex(), int(), frameblend_t::lerp, Matrix4x4_Accumulate(), Matrix4x4_FromBonePose7s(), Matrix4x4_Interpolate(), Matrix4x4_Normalize3(), max, MAX_EDICTS, MAX_FRAMEBLENDS, MAX_FRAMEGROUPBLENDS, min, model, skeleton_t::model, modelindex, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, OFS_PARM5, OFS_RETURN, PRVM_G_EDICT, PRVM_G_FLOAT, skeleton_t::relativetransforms, skeletonindex, prvm_prog_t::skeletons, frameblend_t::subframe, client_state_t::time, VM_FrameBlendFromFrameGroupBlend(), and VM_GenerateFrameGroupBlend().

◆ VM_CL_skel_copybones()

static void VM_CL_skel_copybones ( prvm_prog_t * prog)
static

Definition at line 4841 of file clvm_cmds.c.

4842{
4843 int skeletonindexdst = (int)PRVM_G_FLOAT(OFS_PARM0) - 1;
4844 int skeletonindexsrc = (int)PRVM_G_FLOAT(OFS_PARM1) - 1;
4845 int firstbone = PRVM_G_FLOAT(OFS_PARM2) - 1;
4846 int lastbone = PRVM_G_FLOAT(OFS_PARM3) - 1;
4847 int bonenum;
4848 skeleton_t *skeletondst;
4849 skeleton_t *skeletonsrc;
4850 if (skeletonindexdst < 0 || skeletonindexdst >= MAX_EDICTS || !(skeletondst = prog->skeletons[skeletonindexdst]))
4851 return;
4852 if (skeletonindexsrc < 0 || skeletonindexsrc >= MAX_EDICTS || !(skeletonsrc = prog->skeletons[skeletonindexsrc]))
4853 return;
4854 firstbone = max(0, firstbone);
4855 lastbone = min(lastbone, skeletondst->model->num_bones - 1);
4856 lastbone = min(lastbone, skeletonsrc->model->num_bones - 1);
4857 for (bonenum = firstbone;bonenum <= lastbone;bonenum++)
4858 skeletondst->relativetransforms[bonenum] = skeletonsrc->relativetransforms[bonenum];
4859}

References int(), max, MAX_EDICTS, min, skeleton_t::model, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, PRVM_G_FLOAT, skeleton_t::relativetransforms, and prvm_prog_t::skeletons.

◆ VM_CL_skel_create()

static void VM_CL_skel_create ( prvm_prog_t * prog)
static

Definition at line 4600 of file clvm_cmds.c.

4601{
4604 skeleton_t *skeleton;
4605 int i;
4607 if (!model || !model->num_bones)
4608 return;
4609 for (i = 0;i < MAX_EDICTS;i++)
4610 if (!prog->skeletons[i])
4611 break;
4612 if (i == MAX_EDICTS)
4613 return;
4614 prog->skeletons[i] = skeleton = (skeleton_t *)Mem_Alloc(cls.levelmempool, sizeof(skeleton_t) + model->num_bones * sizeof(matrix4x4_t));
4615 PRVM_G_FLOAT(OFS_RETURN) = i + 1;
4616 skeleton->model = model;
4617 skeleton->relativetransforms = (matrix4x4_t *)(skeleton+1);
4618 // initialize to identity matrices
4619 for (i = 0;i < skeleton->model->num_bones;i++)
4620 skeleton->relativetransforms[i] = identitymatrix;
4621}

References CL_GetModelByIndex(), cls, i, identitymatrix, int(), client_static_t::levelmempool, MAX_EDICTS, Mem_Alloc, model, skeleton_t::model, modelindex, OFS_PARM0, OFS_RETURN, PRVM_G_FLOAT, skeleton_t::relativetransforms, and prvm_prog_t::skeletons.

◆ VM_CL_skel_delete()

static void VM_CL_skel_delete ( prvm_prog_t * prog)
static

Definition at line 4862 of file clvm_cmds.c.

4863{
4865 skeleton_t *skeleton;
4867 return;
4868 Mem_Free(skeleton);
4869 prog->skeletons[skeletonindex] = NULL;
4870}

References int(), MAX_EDICTS, Mem_Free, NULL, OFS_PARM0, PRVM_G_FLOAT, skeletonindex, and prvm_prog_t::skeletons.

◆ VM_CL_skel_find_bone()

static void VM_CL_skel_find_bone ( prvm_prog_t * prog)
static

◆ VM_CL_skel_get_boneabs()

static void VM_CL_skel_get_boneabs ( prvm_prog_t * prog)
static

Definition at line 4741 of file clvm_cmds.c.

4742{
4744 int bonenum = (int)PRVM_G_FLOAT(OFS_PARM1) - 1;
4745 skeleton_t *skeleton;
4746 matrix4x4_t matrix;
4747 matrix4x4_t temp;
4748 vec3_t forward, left, up, origin;
4754 return;
4755 if (bonenum < 0 || bonenum >= skeleton->model->num_bones)
4756 return;
4757 matrix = skeleton->relativetransforms[bonenum];
4758 // convert to absolute
4759 while ((bonenum = skeleton->model->data_bones[bonenum].parent) >= 0)
4760 {
4761 temp = matrix;
4762 Matrix4x4_Concat(&matrix, &skeleton->relativetransforms[bonenum], &temp);
4763 }
4764 Matrix4x4_ToVectors(&matrix, forward, left, up, origin);
4769}
#define VectorClear(a)
Definition mathlib.h:97

References forward, int(), Matrix4x4_Concat(), Matrix4x4_ToVectors(), MAX_EDICTS, skeleton_t::model, OFS_PARM0, OFS_PARM1, OFS_RETURN, origin, PRVM_clientglobalvector, PRVM_G_FLOAT, PRVM_G_VECTOR, skeleton_t::relativetransforms, skeletonindex, prvm_prog_t::skeletons, up, v_forward, v_right, v_up, VectorClear, VectorCopy, and VectorNegate.

◆ VM_CL_skel_get_bonename()

static void VM_CL_skel_get_bonename ( prvm_prog_t * prog)
static

Definition at line 4677 of file clvm_cmds.c.

4678{
4680 int bonenum = (int)PRVM_G_FLOAT(OFS_PARM1) - 1;
4681 skeleton_t *skeleton;
4684 return;
4685 if (bonenum < 0 || bonenum >= skeleton->model->num_bones)
4686 return;
4687 PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(prog, skeleton->model->data_bones[bonenum].name, strlen(skeleton->model->data_bones[bonenum].name));
4688}

References int(), MAX_EDICTS, skeleton_t::model, OFS_PARM0, OFS_PARM1, OFS_RETURN, PRVM_G_FLOAT, PRVM_G_INT, PRVM_SetTempString(), skeletonindex, prvm_prog_t::skeletons, and strlen().

◆ VM_CL_skel_get_boneparent()

static void VM_CL_skel_get_boneparent ( prvm_prog_t * prog)
static

Definition at line 4691 of file clvm_cmds.c.

4692{
4694 int bonenum = (int)PRVM_G_FLOAT(OFS_PARM1) - 1;
4695 skeleton_t *skeleton;
4698 return;
4699 if (bonenum < 0 || bonenum >= skeleton->model->num_bones)
4700 return;
4701 PRVM_G_FLOAT(OFS_RETURN) = skeleton->model->data_bones[bonenum].parent + 1;
4702}

References int(), MAX_EDICTS, skeleton_t::model, OFS_PARM0, OFS_PARM1, OFS_RETURN, PRVM_G_FLOAT, skeletonindex, and prvm_prog_t::skeletons.

◆ VM_CL_skel_get_bonerel()

◆ VM_CL_skel_get_numbones()

static void VM_CL_skel_get_numbones ( prvm_prog_t * prog)
static

Definition at line 4666 of file clvm_cmds.c.

4667{
4669 skeleton_t *skeleton;
4672 return;
4673 PRVM_G_FLOAT(OFS_RETURN) = skeleton->model->num_bones;
4674}

References int(), MAX_EDICTS, skeleton_t::model, OFS_PARM0, OFS_RETURN, PRVM_G_FLOAT, skeletonindex, and prvm_prog_t::skeletons.

◆ VM_CL_skel_mul_bone()

static void VM_CL_skel_mul_bone ( prvm_prog_t * prog)
static

Definition at line 4792 of file clvm_cmds.c.

4793{
4795 int bonenum = (int)PRVM_G_FLOAT(OFS_PARM1) - 1;
4796 vec3_t forward, left, up, origin;
4797 skeleton_t *skeleton;
4798 matrix4x4_t matrix;
4799 matrix4x4_t temp;
4801 return;
4802 if (bonenum < 0 || bonenum >= skeleton->model->num_bones)
4803 return;
4808 Matrix4x4_FromVectors(&matrix, forward, left, up, origin);
4809 temp = skeleton->relativetransforms[bonenum];
4810 Matrix4x4_Concat(&skeleton->relativetransforms[bonenum], &matrix, &temp);
4811}

References forward, int(), Matrix4x4_Concat(), Matrix4x4_FromVectors(), MAX_EDICTS, skeleton_t::model, OFS_PARM0, OFS_PARM1, OFS_PARM2, origin, PRVM_clientglobalvector, PRVM_G_FLOAT, PRVM_G_VECTOR, skeleton_t::relativetransforms, skeletonindex, prvm_prog_t::skeletons, up, v_forward, v_right, v_up, VectorCopy, and VectorNegate.

◆ VM_CL_skel_mul_bones()

static void VM_CL_skel_mul_bones ( prvm_prog_t * prog)
static

Definition at line 4814 of file clvm_cmds.c.

4815{
4817 int firstbone = PRVM_G_FLOAT(OFS_PARM1) - 1;
4818 int lastbone = PRVM_G_FLOAT(OFS_PARM2) - 1;
4819 int bonenum;
4820 vec3_t forward, left, up, origin;
4821 skeleton_t *skeleton;
4822 matrix4x4_t matrix;
4823 matrix4x4_t temp;
4825 return;
4830 Matrix4x4_FromVectors(&matrix, forward, left, up, origin);
4831 firstbone = max(0, firstbone);
4832 lastbone = min(lastbone, skeleton->model->num_bones - 1);
4833 for (bonenum = firstbone;bonenum <= lastbone;bonenum++)
4834 {
4835 temp = skeleton->relativetransforms[bonenum];
4836 Matrix4x4_Concat(&skeleton->relativetransforms[bonenum], &matrix, &temp);
4837 }
4838}

References forward, int(), Matrix4x4_Concat(), Matrix4x4_FromVectors(), max, MAX_EDICTS, min, skeleton_t::model, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, origin, PRVM_clientglobalvector, PRVM_G_FLOAT, PRVM_G_VECTOR, skeleton_t::relativetransforms, skeletonindex, prvm_prog_t::skeletons, up, v_forward, v_right, v_up, VectorCopy, and VectorNegate.

◆ VM_CL_skel_set_bone()

static void VM_CL_skel_set_bone ( prvm_prog_t * prog)
static

◆ VM_CL_sound()

static void VM_CL_sound ( prvm_prog_t * prog)
static

Definition at line 168 of file clvm_cmds.c.

169{
170 const char *sample;
171 int channel;
173 float fvolume;
174 float attenuation;
175 float pitchchange;
176 float startposition;
177 int flags;
178 vec3_t org;
179
181
183 channel = (int)PRVM_G_FLOAT(OFS_PARM1);
184 sample = PRVM_G_STRING(OFS_PARM2);
185 fvolume = PRVM_G_FLOAT(OFS_PARM3);
186 attenuation = PRVM_G_FLOAT(OFS_PARM4);
187
188 if (fvolume < 0 || fvolume > 1)
189 {
190 VM_Warning(prog, "VM_CL_sound: volume must be in range 0-1\n");
191 return;
192 }
193
194 if (attenuation < 0 || attenuation > 4)
195 {
196 VM_Warning(prog, "VM_CL_sound: attenuation must be in range 0-4\n");
197 return;
198 }
199
200 if (prog->argc < 6)
201 pitchchange = 0;
202 else
203 pitchchange = PRVM_G_FLOAT(OFS_PARM5);
204
205 if (prog->argc < 7)
206 flags = 0;
207 else
208 {
209 // LadyHavoc: we only let the qc set certain flags, others are off-limits
211 }
212
213 // sound_starttime exists instead of sound_startposition because in a
214 // networking sense you might not know when something is being received,
215 // so making sounds match up in sync would be impossible if relative
216 // position was sent
217 if (PRVM_clientglobalfloat(sound_starttime))
218 startposition = cl.time - PRVM_clientglobalfloat(sound_starttime);
219 else
220 startposition = 0;
221
222 if (!IS_CHAN(channel))
223 {
224 VM_Warning(prog, "VM_CL_sound: channel must be in range 0-127\n");
225 return;
226 }
227
229 S_StartSound_StartPosition_Flags(MAX_EDICTS + PRVM_NUM_FOR_EDICT(entity), channel, S_FindName(sample), org, fvolume, attenuation, startposition, flags, pitchchange > 0.0f ? pitchchange * 0.01f : 1.0f);
230}
static void VM_CL_sound(prvm_prog_t *prog)
Definition clvm_cmds.c:168
qbool CL_VM_GetEntitySoundOrigin(int entnum, vec3_t out)
Definition csprogs.c:1172
entity() spawn
int S_StartSound_StartPosition_Flags(int entnum, int entchannel, sfx_t *sfx, vec3_t origin, float fvol, float attenuation, float startposition, int flags, float fspeed)
Definition snd_main.c:1571
#define CHANNELFLAG_FORCELOOP
Definition sound.h:39
#define CHANNELFLAG_RELIABLE
Definition sound.h:38
#define CHANNELFLAG_FULLVOLUME
Definition sound.h:42
#define CHANNELFLAG_PAUSED
Definition sound.h:41
#define IS_CHAN(n)
Definition sound.h:82

References prvm_prog_t::argc, CHANNELFLAG_FORCELOOP, CHANNELFLAG_FULLVOLUME, CHANNELFLAG_PAUSED, CHANNELFLAG_RELIABLE, cl, CL_VM_GetEntitySoundOrigin(), entity(), flags, int(), IS_CHAN, MAX_EDICTS, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, OFS_PARM5, OFS_PARM6, PRVM_clientglobalfloat, PRVM_G_EDICT, PRVM_G_FLOAT, PRVM_G_STRING, PRVM_NUM_FOR_EDICT, S_FindName(), S_StartSound_StartPosition_Flags(), client_state_t::time, VM_CL_sound(), VM_SAFEPARMCOUNTRANGE, and VM_Warning().

Referenced by VM_CL_sound().

◆ VM_CL_spawn()

static void VM_CL_spawn ( prvm_prog_t * prog)
static

Definition at line 264 of file clvm_cmds.c.

265{
266 prvm_edict_t *ed;
267 ed = PRVM_ED_Alloc(prog);
268 VM_RETURN_EDICT(ed);
269}
prvm_edict_t * PRVM_ED_Alloc(prvm_prog_t *prog)
Definition prvm_edict.c:269

References PRVM_ED_Alloc(), and VM_RETURN_EDICT.

◆ VM_CL_SpawnParticle()

static void VM_CL_SpawnParticle ( prvm_prog_t * prog)
static

Definition at line 3764 of file clvm_cmds.c.

3765{
3766 vec3_t org, dir;
3767 vmparticletheme_t *theme;
3768 particle_t *part;
3769 int themenum;
3770
3772 if (vmpartspawner.verified == false)
3773 {
3774 VM_Warning(prog, "VM_CL_SpawnParticle: particle spawner not initialized\n");
3776 return;
3777 }
3780
3781 if (prog->argc < 3) // global-set particle
3782 {
3783 part = CL_NewParticle(org,
3784 (unsigned short)PRVM_clientglobalfloat(particle_type),
3794 org[0],
3795 org[1],
3796 org[2],
3797 dir[0],
3798 dir[1],
3799 dir[2],
3816 NULL);
3817 if (!part)
3818 {
3820 return;
3821 }
3824 //if (PRVM_clientglobalfloat(particle_delaycollision))
3825 // part->delayedcollisions = cl.time + PRVM_clientglobalfloat(particle_delaycollision);
3826 }
3827 else // quick themed particle
3828 {
3829 themenum = (int)PRVM_G_FLOAT(OFS_PARM2);
3830 if (themenum <= 0 || themenum >= vmpartspawner.max_themes)
3831 {
3832 VM_Warning(prog, "VM_CL_SpawnParticle: bad theme number %i\n", themenum);
3834 return;
3835 }
3836 theme = &vmpartspawner.themes[themenum];
3837 part = CL_NewParticle(org,
3838 theme->typeindex,
3839 theme->color1,
3840 theme->color2,
3841 theme->tex,
3842 theme->size,
3843 theme->sizeincrease,
3844 theme->alpha,
3845 theme->alphafade,
3846 theme->gravity,
3847 theme->bounce,
3848 org[0],
3849 org[1],
3850 org[2],
3851 dir[0],
3852 dir[1],
3853 dir[2],
3854 theme->airfriction,
3855 theme->liquidfriction,
3856 theme->originjitter,
3857 theme->velocityjitter,
3858 theme->qualityreduction,
3859 theme->lifetime,
3860 theme->stretch,
3861 theme->blendmode,
3862 theme->orientation,
3863 theme->staincolor1,
3864 theme->staincolor2,
3865 theme->staintex,
3866 theme->stainalpha,
3867 theme->stainsize,
3868 theme->angle,
3869 theme->spin,
3870 NULL);
3871 if (!part)
3872 {
3874 return;
3875 }
3876 if (theme->delayspawn)
3877 part->delayedspawn = cl.time + theme->delayspawn;
3878 //if (theme->delaycollision)
3879 // part->delayedcollisions = cl.time + theme->delaycollision;
3880 }
3882}
particle_t * CL_NewParticle(const vec3_t sortorigin, unsigned short ptypeindex, int pcolor1, int pcolor2, int ptex, float psize, float psizeincrease, float palpha, float palphafade, float pgravity, float pbounce, float px, float py, float pz, float pvx, float pvy, float pvz, float pairfriction, float pliquidfriction, float originjitter, float velocityjitter, qbool pqualityreduction, float lifetime, float stretch, pblend_t blendmode, porientation_t orientation, int staincolor1, int staincolor2, int staintex, float stainalpha, float stainsize, float angle, float spin, float tint[4])
Creates a new particle and returns a pointer to it.
static void VM_CL_SpawnParticle(prvm_prog_t *prog)
Definition clvm_cmds.c:3764
float delayedspawn
time that particle appears and begins moving

References vmparticletheme_t::airfriction, vmparticletheme_t::alpha, vmparticletheme_t::alphafade, vmparticletheme_t::angle, prvm_prog_t::argc, vmparticletheme_t::blendmode, vmparticletheme_t::bounce, cl, CL_NewParticle(), vmparticletheme_t::color1, vmparticletheme_t::color2, particle_t::delayedspawn, vmparticletheme_t::delayspawn, dir, vmparticletheme_t::gravity, int(), vmparticletheme_t::lifetime, vmparticletheme_t::liquidfriction, vmparticlespawner_t::max_themes, NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_RETURN, vmparticletheme_t::orientation, vmparticletheme_t::originjitter, particle_airfriction, particle_alpha, particle_alphafade, particle_angle, particle_blendmode, particle_bounce, particle_color1, particle_color2, particle_delayspawn, particle_gravity, particle_liquidfriction, particle_orientation, particle_originjitter, particle_qualityreduction, particle_size, particle_sizeincrease, particle_spin, particle_stainalpha, particle_staincolor1, particle_staincolor2, particle_stainsize, particle_staintex, particle_stretch, particle_tex, particle_time, particle_type, particle_velocityjitter, PRVM_clientglobalfloat, PRVM_clientglobalvector, PRVM_G_FLOAT, PRVM_G_VECTOR, vmparticletheme_t::qualityreduction, vmparticletheme_t::size, vmparticletheme_t::sizeincrease, vmparticletheme_t::spin, vmparticletheme_t::stainalpha, vmparticletheme_t::staincolor1, vmparticletheme_t::staincolor2, vmparticletheme_t::stainsize, vmparticletheme_t::staintex, vmparticletheme_t::stretch, vmparticletheme_t::tex, vmparticlespawner_t::themes, client_state_t::time, vmparticletheme_t::typeindex, VectorCopy, vmparticletheme_t::velocityjitter, vmparticlespawner_t::verified, VM_CL_SpawnParticle(), VM_SAFEPARMCOUNTRANGE, VM_Warning(), and vmpartspawner.

Referenced by VM_CL_SpawnParticle().

◆ VM_CL_SpawnParticleDelayed()

static void VM_CL_SpawnParticleDelayed ( prvm_prog_t * prog)
static

Definition at line 3886 of file clvm_cmds.c.

3887{
3888 vec3_t org, dir;
3889 vmparticletheme_t *theme;
3890 particle_t *part;
3891 int themenum;
3892
3894 if (vmpartspawner.verified == false)
3895 {
3896 VM_Warning(prog, "VM_CL_SpawnParticleDelayed: particle spawner not initialized\n");
3898 return;
3899 }
3902 if (prog->argc < 5) // global-set particle
3903 part = CL_NewParticle(org,
3904 (unsigned short)PRVM_clientglobalfloat(particle_type),
3914 org[0],
3915 org[1],
3916 org[2],
3917 dir[0],
3918 dir[1],
3919 dir[2],
3936 NULL);
3937 else // themed particle
3938 {
3939 themenum = (int)PRVM_G_FLOAT(OFS_PARM4);
3940 if (themenum <= 0 || themenum >= vmpartspawner.max_themes)
3941 {
3942 VM_Warning(prog, "VM_CL_SpawnParticleDelayed: bad theme number %i\n", themenum);
3944 return;
3945 }
3946 theme = &vmpartspawner.themes[themenum];
3947 part = CL_NewParticle(org,
3948 theme->typeindex,
3949 theme->color1,
3950 theme->color2,
3951 theme->tex,
3952 theme->size,
3953 theme->sizeincrease,
3954 theme->alpha,
3955 theme->alphafade,
3956 theme->gravity,
3957 theme->bounce,
3958 org[0],
3959 org[1],
3960 org[2],
3961 dir[0],
3962 dir[1],
3963 dir[2],
3964 theme->airfriction,
3965 theme->liquidfriction,
3966 theme->originjitter,
3967 theme->velocityjitter,
3968 theme->qualityreduction,
3969 theme->lifetime,
3970 theme->stretch,
3971 theme->blendmode,
3972 theme->orientation,
3973 theme->staincolor1,
3974 theme->staincolor2,
3975 theme->staintex,
3976 theme->stainalpha,
3977 theme->stainsize,
3978 theme->angle,
3979 theme->spin,
3980 NULL);
3981 }
3982 if (!part)
3983 {
3985 return;
3986 }
3988 //part->delayedcollisions = cl.time + PRVM_G_FLOAT(OFS_PARM3);
3990}
static void VM_CL_SpawnParticleDelayed(prvm_prog_t *prog)
Definition clvm_cmds.c:3886

References vmparticletheme_t::airfriction, vmparticletheme_t::alpha, vmparticletheme_t::alphafade, vmparticletheme_t::angle, prvm_prog_t::argc, vmparticletheme_t::blendmode, vmparticletheme_t::bounce, cl, CL_NewParticle(), vmparticletheme_t::color1, vmparticletheme_t::color2, particle_t::delayedspawn, dir, vmparticletheme_t::gravity, int(), vmparticletheme_t::lifetime, vmparticletheme_t::liquidfriction, vmparticlespawner_t::max_themes, NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM4, OFS_RETURN, vmparticletheme_t::orientation, vmparticletheme_t::originjitter, particle_airfriction, particle_alpha, particle_alphafade, particle_angle, particle_blendmode, particle_bounce, particle_color1, particle_color2, particle_gravity, particle_liquidfriction, particle_orientation, particle_originjitter, particle_qualityreduction, particle_size, particle_sizeincrease, particle_spin, particle_stainalpha, particle_staincolor1, particle_staincolor2, particle_stainsize, particle_staintex, particle_stretch, particle_tex, particle_time, particle_type, particle_velocityjitter, PRVM_clientglobalfloat, PRVM_clientglobalvector, PRVM_G_FLOAT, PRVM_G_VECTOR, vmparticletheme_t::qualityreduction, vmparticletheme_t::size, vmparticletheme_t::sizeincrease, vmparticletheme_t::spin, vmparticletheme_t::stainalpha, vmparticletheme_t::staincolor1, vmparticletheme_t::staincolor2, vmparticletheme_t::stainsize, vmparticletheme_t::staintex, vmparticletheme_t::stretch, vmparticletheme_t::tex, vmparticlespawner_t::themes, client_state_t::time, vmparticletheme_t::typeindex, VectorCopy, vmparticletheme_t::velocityjitter, vmparticlespawner_t::verified, VM_CL_SpawnParticleDelayed(), VM_SAFEPARMCOUNTRANGE, VM_Warning(), and vmpartspawner.

Referenced by VM_CL_SpawnParticleDelayed().

◆ VM_CL_te_beam()

static void VM_CL_te_beam ( prvm_prog_t * prog)
static

Definition at line 3104 of file clvm_cmds.c.

3105{
3106 vec3_t start, end;
3110 CL_NewBeam(PRVM_G_EDICTNUM(OFS_PARM0), start, end, cl.model_beam, false);
3111}
void CL_NewBeam(int ent, vec3_t start, vec3_t end, model_t *m, int lightning)
Definition cl_parse.c:2356
static void VM_CL_te_beam(prvm_prog_t *prog)
Definition clvm_cmds.c:3104
#define PRVM_G_EDICTNUM(o)
Definition progsvm.h:885
model_t * model_beam
Definition client.h:920

References cl, CL_NewBeam(), client_state_t::model_beam, OFS_PARM0, OFS_PARM1, OFS_PARM2, PRVM_G_EDICTNUM, PRVM_G_VECTOR, VectorCopy, VM_CL_te_beam(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_beam().

◆ VM_CL_te_blood()

static void VM_CL_te_blood ( prvm_prog_t * prog)
static

Definition at line 2729 of file clvm_cmds.c.

2730{
2731 vec3_t pos, vel, pos2;
2733 if (PRVM_G_FLOAT(OFS_PARM2) < 1)
2734 return;
2737 CL_FindNonSolidLocation(pos, pos2, 4);
2738 CL_ParticleEffect(EFFECT_TE_BLOOD, PRVM_G_FLOAT(OFS_PARM2), pos2, pos2, vel, vel, NULL, 0);
2739}
void CL_FindNonSolidLocation(const vec3_t in, vec3_t out, vec_t radius)
@ EFFECT_TE_BLOOD
static void VM_CL_te_blood(prvm_prog_t *prog)
Definition clvm_cmds.c:2729

References CL_FindNonSolidLocation(), CL_ParticleEffect(), EFFECT_TE_BLOOD, NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, PRVM_G_FLOAT, PRVM_G_VECTOR, VectorCopy, VM_CL_te_blood(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_blood().

◆ VM_CL_te_bloodshower()

static void VM_CL_te_bloodshower ( prvm_prog_t * prog)
static

Definition at line 2742 of file clvm_cmds.c.

2743{
2744 vec_t speed;
2745 vec3_t mincorner, maxcorner, vel1, vel2;
2747 if (PRVM_G_FLOAT(OFS_PARM3) < 1)
2748 return;
2749 speed = PRVM_G_FLOAT(OFS_PARM2);
2750 vel1[0] = -speed;
2751 vel1[1] = -speed;
2752 vel1[2] = -speed;
2753 vel2[0] = speed;
2754 vel2[1] = speed;
2755 vel2[2] = speed;
2756 VectorCopy(PRVM_G_VECTOR(OFS_PARM0), mincorner);
2757 VectorCopy(PRVM_G_VECTOR(OFS_PARM1), maxcorner);
2758 CL_ParticleEffect(EFFECT_TE_BLOOD, PRVM_G_FLOAT(OFS_PARM3), mincorner, maxcorner, vel1, vel2, NULL, 0);
2759}
static void VM_CL_te_bloodshower(prvm_prog_t *prog)
Definition clvm_cmds.c:2742

References CL_ParticleEffect(), EFFECT_TE_BLOOD, NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, PRVM_G_FLOAT, PRVM_G_VECTOR, VectorCopy, VM_CL_te_bloodshower(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_bloodshower().

◆ VM_CL_te_customflash()

static void VM_CL_te_customflash ( prvm_prog_t * prog)
static

Definition at line 2908 of file clvm_cmds.c.

2909{
2910 vec3_t pos, pos2;
2911 matrix4x4_t tempmatrix;
2913
2915 CL_FindNonSolidLocation(pos, pos2, 4);
2916 Matrix4x4_CreateTranslate(&tempmatrix, pos2[0], pos2[1], pos2[2]);
2918}
void CL_AllocLightFlash(entity_render_t *ent, matrix4x4_t *matrix, float radius, float red, float green, float blue, float decay, float lifetime, char *cubemapname, int style, int shadowenable, vec_t corona, vec_t coronasizescale, vec_t ambientscale, vec_t diffusescale, vec_t specularscale, int flags)
Definition cl_main.c:852
static void VM_CL_te_customflash(prvm_prog_t *prog)
Definition clvm_cmds.c:2908
void Matrix4x4_CreateTranslate(matrix4x4_t *out, double x, double y, double z)
Definition matrixlib.c:584

References CL_AllocLightFlash(), CL_FindNonSolidLocation(), LIGHTFLAG_NORMALMODE, LIGHTFLAG_REALTIMEMODE, Matrix4x4_CreateTranslate(), NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, PRVM_G_FLOAT, PRVM_G_VECTOR, VectorCopy, VM_CL_te_customflash(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_customflash().

◆ VM_CL_te_explosion()

static void VM_CL_te_explosion ( prvm_prog_t * prog)
static

Definition at line 2984 of file clvm_cmds.c.

2985{
2986 vec3_t pos, pos2;
2988
2990 CL_FindNonSolidLocation(pos, pos2, 10);
2992 S_StartSound(-1, 0, cl.sfx_r_exp3, pos2, 1, 1);
2993}
@ EFFECT_TE_EXPLOSION
static void VM_CL_te_explosion(prvm_prog_t *prog)
Definition clvm_cmds.c:2984
sfx_t * sfx_r_exp3
Definition client.h:927

References cl, CL_FindNonSolidLocation(), CL_ParticleEffect(), EFFECT_TE_EXPLOSION, NULL, OFS_PARM0, PRVM_G_VECTOR, S_StartSound(), client_state_t::sfx_r_exp3, vec3_origin, VectorCopy, VM_CL_te_explosion(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_explosion().

◆ VM_CL_te_explosion2()

static void VM_CL_te_explosion2 ( prvm_prog_t * prog)
static

Definition at line 3050 of file clvm_cmds.c.

3051{
3052 vec3_t pos, pos2, color;
3053 matrix4x4_t tempmatrix;
3054 int colorStart, colorLength;
3055 unsigned char *tempcolor;
3057
3059 colorStart = (int)PRVM_G_FLOAT(OFS_PARM1);
3060 colorLength = (int)PRVM_G_FLOAT(OFS_PARM2);
3061 CL_FindNonSolidLocation(pos, pos2, 10);
3062 CL_ParticleExplosion2(pos2, colorStart, colorLength);
3063 tempcolor = palette_rgb[(rand()%colorLength) + colorStart];
3064 color[0] = tempcolor[0] * (2.0f / 255.0f);
3065 color[1] = tempcolor[1] * (2.0f / 255.0f);
3066 color[2] = tempcolor[2] * (2.0f / 255.0f);
3067 Matrix4x4_CreateTranslate(&tempmatrix, pos2[0], pos2[1], pos2[2]);
3068 CL_AllocLightFlash(NULL, &tempmatrix, 350, color[0], color[1], color[2], 700, 0.5, NULL, -1, true, 1, 0.25, 0.25, 1, 1, LIGHTFLAG_NORMALMODE | LIGHTFLAG_REALTIMEMODE);
3069 S_StartSound(-1, 0, cl.sfx_r_exp3, pos2, 1, 1);
3070}
void CL_ParticleExplosion2(const vec3_t org, int colorStart, int colorLength)
static void VM_CL_te_explosion2(prvm_prog_t *prog)
Definition clvm_cmds.c:3050
unsigned char palette_rgb[256][3]
Definition palette.c:7

References cl, CL_AllocLightFlash(), CL_FindNonSolidLocation(), CL_ParticleExplosion2(), color, int(), LIGHTFLAG_NORMALMODE, LIGHTFLAG_REALTIMEMODE, Matrix4x4_CreateTranslate(), NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, palette_rgb, PRVM_G_FLOAT, PRVM_G_VECTOR, S_StartSound(), client_state_t::sfx_r_exp3, VectorCopy, VM_CL_te_explosion2(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_explosion2().

◆ VM_CL_te_explosionquad()

static void VM_CL_te_explosionquad ( prvm_prog_t * prog)
static

Definition at line 2885 of file clvm_cmds.c.

2886{
2887 vec3_t pos, pos2;
2889
2891 CL_FindNonSolidLocation(pos, pos2, 10);
2893 S_StartSound(-1, 0, cl.sfx_r_exp3, pos2, 1, 1);
2894}
@ EFFECT_TE_EXPLOSIONQUAD
static void VM_CL_te_explosionquad(prvm_prog_t *prog)
Definition clvm_cmds.c:2885

References cl, CL_FindNonSolidLocation(), CL_ParticleEffect(), EFFECT_TE_EXPLOSIONQUAD, NULL, OFS_PARM0, PRVM_G_VECTOR, S_StartSound(), client_state_t::sfx_r_exp3, vec3_origin, VectorCopy, VM_CL_te_explosionquad(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_explosionquad().

◆ VM_CL_te_explosionrgb()

static void VM_CL_te_explosionrgb ( prvm_prog_t * prog)
static

Definition at line 2762 of file clvm_cmds.c.

2763{
2764 vec3_t pos;
2765 vec3_t pos2;
2766 matrix4x4_t tempmatrix;
2769 CL_FindNonSolidLocation(pos, pos2, 10);
2771 Matrix4x4_CreateTranslate(&tempmatrix, pos2[0], pos2[1], pos2[2]);
2772 CL_AllocLightFlash(NULL, &tempmatrix, 350, PRVM_G_VECTOR(OFS_PARM1)[0], PRVM_G_VECTOR(OFS_PARM1)[1], PRVM_G_VECTOR(OFS_PARM1)[2], 700, 0.5, NULL, -1, true, 1, 0.25, 0.25, 1, 1, LIGHTFLAG_NORMALMODE | LIGHTFLAG_REALTIMEMODE);
2773}
void CL_ParticleExplosion(const vec3_t org)
static void VM_CL_te_explosionrgb(prvm_prog_t *prog)
Definition clvm_cmds.c:2762

References CL_AllocLightFlash(), CL_FindNonSolidLocation(), CL_ParticleExplosion(), LIGHTFLAG_NORMALMODE, LIGHTFLAG_REALTIMEMODE, Matrix4x4_CreateTranslate(), NULL, OFS_PARM0, OFS_PARM1, PRVM_G_VECTOR, VectorCopy, VM_CL_te_explosionrgb(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_explosionrgb().

◆ VM_CL_te_flamejet()

static void VM_CL_te_flamejet ( prvm_prog_t * prog)
static

Definition at line 3125 of file clvm_cmds.c.

3126{
3127 vec3_t pos, pos2, vel;
3129 if (PRVM_G_FLOAT(OFS_PARM2) < 1)
3130 return;
3133 CL_FindNonSolidLocation(pos, pos2, 4);
3134 CL_ParticleEffect(EFFECT_TE_FLAMEJET, PRVM_G_FLOAT(OFS_PARM2), pos2, pos2, vel, vel, NULL, 0);
3135}
@ EFFECT_TE_FLAMEJET
static void VM_CL_te_flamejet(prvm_prog_t *prog)
Definition clvm_cmds.c:3125

References CL_FindNonSolidLocation(), CL_ParticleEffect(), EFFECT_TE_FLAMEJET, NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, PRVM_G_FLOAT, PRVM_G_VECTOR, VectorCopy, VM_CL_te_flamejet(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_flamejet().

◆ VM_CL_te_gunshot()

static void VM_CL_te_gunshot ( prvm_prog_t * prog)
static

Definition at line 2921 of file clvm_cmds.c.

2922{
2923 vec3_t pos, pos2;
2924 int rnd;
2926
2928 CL_FindNonSolidLocation(pos, pos2, 4);
2931 {
2932 if (rand() % 5) S_StartSound(-1, 0, cl.sfx_tink1, pos2, 1, 1);
2933 else
2934 {
2935 rnd = rand() & 3;
2936 if (rnd == 1) S_StartSound(-1, 0, cl.sfx_ric1, pos2, 1, 1);
2937 else if (rnd == 2) S_StartSound(-1, 0, cl.sfx_ric2, pos2, 1, 1);
2938 else S_StartSound(-1, 0, cl.sfx_ric3, pos2, 1, 1);
2939 }
2940 }
2941}
@ EFFECT_TE_GUNSHOT
cvar_t cl_sound_ric_gunshot
Definition cl_parse.c:185
static void VM_CL_te_gunshot(prvm_prog_t *prog)
Definition clvm_cmds.c:2921
sfx_t * sfx_tink1
Definition client.h:923
sfx_t * sfx_ric3
Definition client.h:926
sfx_t * sfx_ric1
Definition client.h:924
sfx_t * sfx_ric2
Definition client.h:925

References cl, CL_FindNonSolidLocation(), CL_ParticleEffect(), cl_sound_ric_gunshot, EFFECT_TE_GUNSHOT, cvar_t::integer, NULL, OFS_PARM0, PRVM_G_VECTOR, S_StartSound(), client_state_t::sfx_ric1, client_state_t::sfx_ric2, client_state_t::sfx_ric3, client_state_t::sfx_tink1, vec3_origin, VectorCopy, VM_CL_te_gunshot(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_gunshot().

◆ VM_CL_te_gunshotquad()

static void VM_CL_te_gunshotquad ( prvm_prog_t * prog)
static

Definition at line 2822 of file clvm_cmds.c.

2823{
2824 vec3_t pos, pos2;
2825 int rnd;
2827
2829 CL_FindNonSolidLocation(pos, pos2, 4);
2832 {
2833 if (rand() % 5) S_StartSound(-1, 0, cl.sfx_tink1, pos2, 1, 1);
2834 else
2835 {
2836 rnd = rand() & 3;
2837 if (rnd == 1) S_StartSound(-1, 0, cl.sfx_ric1, pos2, 1, 1);
2838 else if (rnd == 2) S_StartSound(-1, 0, cl.sfx_ric2, pos2, 1, 1);
2839 else S_StartSound(-1, 0, cl.sfx_ric3, pos2, 1, 1);
2840 }
2841 }
2842}
@ EFFECT_TE_GUNSHOTQUAD
static void VM_CL_te_gunshotquad(prvm_prog_t *prog)
Definition clvm_cmds.c:2822

References cl, CL_FindNonSolidLocation(), CL_ParticleEffect(), cl_sound_ric_gunshot, EFFECT_TE_GUNSHOTQUAD, cvar_t::integer, NULL, OFS_PARM0, PRVM_G_VECTOR, S_StartSound(), client_state_t::sfx_ric1, client_state_t::sfx_ric2, client_state_t::sfx_ric3, client_state_t::sfx_tink1, vec3_origin, VectorCopy, VM_CL_te_gunshotquad(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_gunshotquad().

◆ VM_CL_te_knightspike()

static void VM_CL_te_knightspike ( prvm_prog_t * prog)
static

Definition at line 3020 of file clvm_cmds.c.

3021{
3022 vec3_t pos, pos2;
3024
3026 CL_FindNonSolidLocation(pos, pos2, 4);
3028 S_StartSound(-1, 0, cl.sfx_knighthit, pos2, 1, 1);
3029}
@ EFFECT_TE_KNIGHTSPIKE
static void VM_CL_te_knightspike(prvm_prog_t *prog)
Definition clvm_cmds.c:3020
sfx_t * sfx_knighthit
Definition client.h:922

References cl, CL_FindNonSolidLocation(), CL_ParticleEffect(), EFFECT_TE_KNIGHTSPIKE, NULL, OFS_PARM0, PRVM_G_VECTOR, S_StartSound(), client_state_t::sfx_knighthit, vec3_origin, VectorCopy, VM_CL_te_knightspike(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_knightspike().

◆ VM_CL_te_lavasplash()

static void VM_CL_te_lavasplash ( prvm_prog_t * prog)
static

Definition at line 3032 of file clvm_cmds.c.

3033{
3034 vec3_t pos;
3038}
@ EFFECT_TE_LAVASPLASH
static void VM_CL_te_lavasplash(prvm_prog_t *prog)
Definition clvm_cmds.c:3032

References CL_ParticleEffect(), EFFECT_TE_LAVASPLASH, NULL, OFS_PARM0, PRVM_G_VECTOR, vec3_origin, VectorCopy, VM_CL_te_lavasplash(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_lavasplash().

◆ VM_CL_te_lightning1()

static void VM_CL_te_lightning1 ( prvm_prog_t * prog)
static

Definition at line 3074 of file clvm_cmds.c.

3075{
3076 vec3_t start, end;
3080 CL_NewBeam(PRVM_G_EDICTNUM(OFS_PARM0), start, end, cl.model_bolt, true);
3081}
static void VM_CL_te_lightning1(prvm_prog_t *prog)
Definition clvm_cmds.c:3074
model_t * model_bolt
Definition client.h:917

References cl, CL_NewBeam(), client_state_t::model_bolt, OFS_PARM0, OFS_PARM1, OFS_PARM2, PRVM_G_EDICTNUM, PRVM_G_VECTOR, VectorCopy, VM_CL_te_lightning1(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_lightning1().

◆ VM_CL_te_lightning2()

static void VM_CL_te_lightning2 ( prvm_prog_t * prog)
static

Definition at line 3084 of file clvm_cmds.c.

3085{
3086 vec3_t start, end;
3090 CL_NewBeam(PRVM_G_EDICTNUM(OFS_PARM0), start, end, cl.model_bolt2, true);
3091}
static void VM_CL_te_lightning2(prvm_prog_t *prog)
Definition clvm_cmds.c:3084
model_t * model_bolt2
Definition client.h:918

References cl, CL_NewBeam(), client_state_t::model_bolt2, OFS_PARM0, OFS_PARM1, OFS_PARM2, PRVM_G_EDICTNUM, PRVM_G_VECTOR, VectorCopy, VM_CL_te_lightning2(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_lightning2().

◆ VM_CL_te_lightning3()

static void VM_CL_te_lightning3 ( prvm_prog_t * prog)
static

Definition at line 3094 of file clvm_cmds.c.

3095{
3096 vec3_t start, end;
3100 CL_NewBeam(PRVM_G_EDICTNUM(OFS_PARM0), start, end, cl.model_bolt3, false);
3101}
static void VM_CL_te_lightning3(prvm_prog_t *prog)
Definition clvm_cmds.c:3094
model_t * model_bolt3
Definition client.h:919

References cl, CL_NewBeam(), client_state_t::model_bolt3, OFS_PARM0, OFS_PARM1, OFS_PARM2, PRVM_G_EDICTNUM, PRVM_G_VECTOR, VectorCopy, VM_CL_te_lightning3(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_lightning3().

◆ VM_CL_te_particlecube()

static void VM_CL_te_particlecube ( prvm_prog_t * prog)
static

Definition at line 2776 of file clvm_cmds.c.

2777{
2778 vec3_t mincorner, maxcorner, vel;
2780 VectorCopy(PRVM_G_VECTOR(OFS_PARM0), mincorner);
2781 VectorCopy(PRVM_G_VECTOR(OFS_PARM1), maxcorner);
2784}
void CL_ParticleCube(const vec3_t mins, const vec3_t maxs, const vec3_t dir, int count, int colorbase, vec_t gravity, vec_t randomvel)
static void VM_CL_te_particlecube(prvm_prog_t *prog)
Definition clvm_cmds.c:2776

References CL_ParticleCube(), OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, OFS_PARM5, OFS_PARM6, PRVM_G_FLOAT, PRVM_G_VECTOR, VectorCopy, VM_CL_te_particlecube(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_particlecube().

◆ VM_CL_te_particlerain()

static void VM_CL_te_particlerain ( prvm_prog_t * prog)
static

Definition at line 2787 of file clvm_cmds.c.

2788{
2789 vec3_t mincorner, maxcorner, vel;
2791 VectorCopy(PRVM_G_VECTOR(OFS_PARM0), mincorner);
2792 VectorCopy(PRVM_G_VECTOR(OFS_PARM1), maxcorner);
2794 CL_ParticleRain(mincorner, maxcorner, vel, (int)PRVM_G_FLOAT(OFS_PARM3), (int)PRVM_G_FLOAT(OFS_PARM4), 0);
2795}
void CL_ParticleRain(const vec3_t mins, const vec3_t maxs, const vec3_t dir, int count, int colorbase, int type)
static void VM_CL_te_particlerain(prvm_prog_t *prog)
Definition clvm_cmds.c:2787

References CL_ParticleRain(), OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, PRVM_G_FLOAT, PRVM_G_VECTOR, VectorCopy, VM_CL_te_particlerain(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_particlerain().

◆ VM_CL_te_particlesnow()

static void VM_CL_te_particlesnow ( prvm_prog_t * prog)
static

Definition at line 2798 of file clvm_cmds.c.

2799{
2800 vec3_t mincorner, maxcorner, vel;
2802 VectorCopy(PRVM_G_VECTOR(OFS_PARM0), mincorner);
2803 VectorCopy(PRVM_G_VECTOR(OFS_PARM1), maxcorner);
2805 CL_ParticleRain(mincorner, maxcorner, vel, (int)PRVM_G_FLOAT(OFS_PARM3), (int)PRVM_G_FLOAT(OFS_PARM4), 1);
2806}
static void VM_CL_te_particlesnow(prvm_prog_t *prog)
Definition clvm_cmds.c:2798

References CL_ParticleRain(), OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, PRVM_G_FLOAT, PRVM_G_VECTOR, VectorCopy, VM_CL_te_particlesnow(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_particlesnow().

◆ VM_CL_te_plasmaburn()

static void VM_CL_te_plasmaburn ( prvm_prog_t * prog)
static

Definition at line 3114 of file clvm_cmds.c.

3115{
3116 vec3_t pos, pos2;
3118
3120 CL_FindNonSolidLocation(pos, pos2, 4);
3122}
@ EFFECT_TE_PLASMABURN
static void VM_CL_te_plasmaburn(prvm_prog_t *prog)
Definition clvm_cmds.c:3114

References CL_FindNonSolidLocation(), CL_ParticleEffect(), EFFECT_TE_PLASMABURN, NULL, OFS_PARM0, PRVM_G_VECTOR, vec3_origin, VectorCopy, VM_CL_te_plasmaburn(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_plasmaburn().

◆ VM_CL_te_smallflash()

static void VM_CL_te_smallflash ( prvm_prog_t * prog)
static

Definition at line 2897 of file clvm_cmds.c.

2898{
2899 vec3_t pos, pos2;
2901
2903 CL_FindNonSolidLocation(pos, pos2, 10);
2905}
@ EFFECT_TE_SMALLFLASH
static void VM_CL_te_smallflash(prvm_prog_t *prog)
Definition clvm_cmds.c:2897

References CL_FindNonSolidLocation(), CL_ParticleEffect(), EFFECT_TE_SMALLFLASH, NULL, OFS_PARM0, PRVM_G_VECTOR, vec3_origin, VectorCopy, VM_CL_te_smallflash(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_smallflash().

◆ VM_CL_te_spark()

static void VM_CL_te_spark ( prvm_prog_t * prog)
static

Definition at line 2809 of file clvm_cmds.c.

2810{
2811 vec3_t pos, pos2, vel;
2813
2816 CL_FindNonSolidLocation(pos, pos2, 4);
2817 CL_ParticleEffect(EFFECT_TE_SPARK, PRVM_G_FLOAT(OFS_PARM2), pos2, pos2, vel, vel, NULL, 0);
2818}
@ EFFECT_TE_SPARK
static void VM_CL_te_spark(prvm_prog_t *prog)
Definition clvm_cmds.c:2809

References CL_FindNonSolidLocation(), CL_ParticleEffect(), EFFECT_TE_SPARK, NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, PRVM_G_FLOAT, PRVM_G_VECTOR, VectorCopy, VM_CL_te_spark(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_spark().

◆ VM_CL_te_spike()

static void VM_CL_te_spike ( prvm_prog_t * prog)
static

Definition at line 2944 of file clvm_cmds.c.

2945{
2946 vec3_t pos, pos2;
2947 int rnd;
2949
2951 CL_FindNonSolidLocation(pos, pos2, 4);
2953 if (rand() % 5) S_StartSound(-1, 0, cl.sfx_tink1, pos2, 1, 1);
2954 else
2955 {
2956 rnd = rand() & 3;
2957 if (rnd == 1) S_StartSound(-1, 0, cl.sfx_ric1, pos2, 1, 1);
2958 else if (rnd == 2) S_StartSound(-1, 0, cl.sfx_ric2, pos2, 1, 1);
2959 else S_StartSound(-1, 0, cl.sfx_ric3, pos2, 1, 1);
2960 }
2961}
@ EFFECT_TE_SPIKE
static void VM_CL_te_spike(prvm_prog_t *prog)
Definition clvm_cmds.c:2944

References cl, CL_FindNonSolidLocation(), CL_ParticleEffect(), EFFECT_TE_SPIKE, NULL, OFS_PARM0, PRVM_G_VECTOR, S_StartSound(), client_state_t::sfx_ric1, client_state_t::sfx_ric2, client_state_t::sfx_ric3, client_state_t::sfx_tink1, vec3_origin, VectorCopy, VM_CL_te_spike(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_spike().

◆ VM_CL_te_spikequad()

static void VM_CL_te_spikequad ( prvm_prog_t * prog)
static

Definition at line 2845 of file clvm_cmds.c.

2846{
2847 vec3_t pos, pos2;
2848 int rnd;
2850
2852 CL_FindNonSolidLocation(pos, pos2, 4);
2854 if (rand() % 5) S_StartSound(-1, 0, cl.sfx_tink1, pos2, 1, 1);
2855 else
2856 {
2857 rnd = rand() & 3;
2858 if (rnd == 1) S_StartSound(-1, 0, cl.sfx_ric1, pos2, 1, 1);
2859 else if (rnd == 2) S_StartSound(-1, 0, cl.sfx_ric2, pos2, 1, 1);
2860 else S_StartSound(-1, 0, cl.sfx_ric3, pos2, 1, 1);
2861 }
2862}
@ EFFECT_TE_SPIKEQUAD
static void VM_CL_te_spikequad(prvm_prog_t *prog)
Definition clvm_cmds.c:2845

References cl, CL_FindNonSolidLocation(), CL_ParticleEffect(), EFFECT_TE_SPIKEQUAD, NULL, OFS_PARM0, PRVM_G_VECTOR, S_StartSound(), client_state_t::sfx_ric1, client_state_t::sfx_ric2, client_state_t::sfx_ric3, client_state_t::sfx_tink1, vec3_origin, VectorCopy, VM_CL_te_spikequad(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_spikequad().

◆ VM_CL_te_superspike()

static void VM_CL_te_superspike ( prvm_prog_t * prog)
static

Definition at line 2964 of file clvm_cmds.c.

2965{
2966 vec3_t pos, pos2;
2967 int rnd;
2969
2971 CL_FindNonSolidLocation(pos, pos2, 4);
2973 if (rand() % 5) S_StartSound(-1, 0, cl.sfx_tink1, pos2, 1, 1);
2974 else
2975 {
2976 rnd = rand() & 3;
2977 if (rnd == 1) S_StartSound(-1, 0, cl.sfx_ric1, pos2, 1, 1);
2978 else if (rnd == 2) S_StartSound(-1, 0, cl.sfx_ric2, pos2, 1, 1);
2979 else S_StartSound(-1, 0, cl.sfx_ric3, pos2, 1, 1);
2980 }
2981}
@ EFFECT_TE_SUPERSPIKE
static void VM_CL_te_superspike(prvm_prog_t *prog)
Definition clvm_cmds.c:2964

References cl, CL_FindNonSolidLocation(), CL_ParticleEffect(), EFFECT_TE_SUPERSPIKE, NULL, OFS_PARM0, PRVM_G_VECTOR, S_StartSound(), client_state_t::sfx_ric1, client_state_t::sfx_ric2, client_state_t::sfx_ric3, client_state_t::sfx_tink1, vec3_origin, VectorCopy, VM_CL_te_superspike(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_superspike().

◆ VM_CL_te_superspikequad()

static void VM_CL_te_superspikequad ( prvm_prog_t * prog)
static

Definition at line 2865 of file clvm_cmds.c.

2866{
2867 vec3_t pos, pos2;
2868 int rnd;
2870
2872 CL_FindNonSolidLocation(pos, pos2, 4);
2874 if (rand() % 5) S_StartSound(-1, 0, cl.sfx_tink1, pos, 1, 1);
2875 else
2876 {
2877 rnd = rand() & 3;
2878 if (rnd == 1) S_StartSound(-1, 0, cl.sfx_ric1, pos2, 1, 1);
2879 else if (rnd == 2) S_StartSound(-1, 0, cl.sfx_ric2, pos2, 1, 1);
2880 else S_StartSound(-1, 0, cl.sfx_ric3, pos2, 1, 1);
2881 }
2882}
@ EFFECT_TE_SUPERSPIKEQUAD
static void VM_CL_te_superspikequad(prvm_prog_t *prog)
Definition clvm_cmds.c:2865

References cl, CL_FindNonSolidLocation(), CL_ParticleEffect(), EFFECT_TE_SUPERSPIKEQUAD, NULL, OFS_PARM0, PRVM_G_VECTOR, S_StartSound(), client_state_t::sfx_ric1, client_state_t::sfx_ric2, client_state_t::sfx_ric3, client_state_t::sfx_tink1, vec3_origin, VectorCopy, VM_CL_te_superspikequad(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_superspikequad().

◆ VM_CL_te_tarexplosion()

static void VM_CL_te_tarexplosion ( prvm_prog_t * prog)
static

Definition at line 2996 of file clvm_cmds.c.

2997{
2998 vec3_t pos, pos2;
3000
3002 CL_FindNonSolidLocation(pos, pos2, 10);
3004 S_StartSound(-1, 0, cl.sfx_r_exp3, pos2, 1, 1);
3005}
@ EFFECT_TE_TAREXPLOSION
static void VM_CL_te_tarexplosion(prvm_prog_t *prog)
Definition clvm_cmds.c:2996

References cl, CL_FindNonSolidLocation(), CL_ParticleEffect(), EFFECT_TE_TAREXPLOSION, NULL, OFS_PARM0, PRVM_G_VECTOR, S_StartSound(), client_state_t::sfx_r_exp3, vec3_origin, VectorCopy, VM_CL_te_tarexplosion(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_tarexplosion().

◆ VM_CL_te_teleport()

static void VM_CL_te_teleport ( prvm_prog_t * prog)
static

Definition at line 3041 of file clvm_cmds.c.

3042{
3043 vec3_t pos;
3047}
@ EFFECT_TE_TELEPORT
static void VM_CL_te_teleport(prvm_prog_t *prog)
Definition clvm_cmds.c:3041

References CL_ParticleEffect(), EFFECT_TE_TELEPORT, NULL, OFS_PARM0, PRVM_G_VECTOR, vec3_origin, VectorCopy, VM_CL_te_teleport(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_teleport().

◆ VM_CL_te_wizspike()

static void VM_CL_te_wizspike ( prvm_prog_t * prog)
static

Definition at line 3008 of file clvm_cmds.c.

3009{
3010 vec3_t pos, pos2;
3012
3014 CL_FindNonSolidLocation(pos, pos2, 4);
3016 S_StartSound(-1, 0, cl.sfx_wizhit, pos2, 1, 1);
3017}
@ EFFECT_TE_WIZSPIKE
static void VM_CL_te_wizspike(prvm_prog_t *prog)
Definition clvm_cmds.c:3008
sfx_t * sfx_wizhit
Definition client.h:921

References cl, CL_FindNonSolidLocation(), CL_ParticleEffect(), EFFECT_TE_WIZSPIKE, NULL, OFS_PARM0, PRVM_G_VECTOR, S_StartSound(), client_state_t::sfx_wizhit, vec3_origin, VectorCopy, VM_CL_te_wizspike(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_te_wizspike().

◆ VM_CL_tracebox()

static void VM_CL_tracebox ( prvm_prog_t * prog)
static

Definition at line 320 of file clvm_cmds.c.

321{
322 vec3_t v1, v2, m1, m2;
323 trace_t trace;
324 int move, svent;
325 prvm_edict_t *ent;
326
327// R_TimeReport("pretracebox");
328 VM_SAFEPARMCOUNTRANGE(6, 8, VM_CL_tracebox); // allow more parameters for future expansion
329
330 prog->xfunction->builtinsprofile += 30;
331
336 move = (int)PRVM_G_FLOAT(OFS_PARM4);
337 ent = PRVM_G_EDICT(OFS_PARM5);
338
339 if (isnan(v1[0]) || isnan(v1[1]) || isnan(v1[2]) || isnan(v2[0]) || isnan(v2[1]) || isnan(v2[2]))
340 prog->error_cmd("%s: NAN errors detected in tracebox('%f %f %f', '%f %f %f', '%f %f %f', '%f %f %f', %i, entity %i)\n", prog->name, v1[0], v1[1], v1[2], m1[0], m1[1], m1[2], m2[0], m2[1], m2[2], v2[0], v2[1], v2[2], move, PRVM_EDICT_TO_PROG(ent));
341
342 trace = CL_TraceBox(v1, m1, m2, v2, move, ent, CL_GenericHitSuperContentsMask(ent), 0, 0, collision_extendtraceboxlength.value, CL_HitNetworkBrushModels(move), CL_HitNetworkPlayers(move), &svent, true);
343
344 CL_VM_SetTraceGlobals(prog, &trace, svent);
345// R_TimeReport("tracebox");
346}
#define CL_HitNetworkPlayers(move)
Definition clvm_cmds.c:278
static void VM_CL_tracebox(prvm_prog_t *prog)
Definition clvm_cmds.c:320
#define CL_HitNetworkBrushModels(move)
Definition clvm_cmds.c:277
cvar_t collision_extendtraceboxlength
Definition collision.c:15
GLfloat GLfloat GLfloat v2
Definition glquake.h:747
GLfloat GLfloat v1
Definition glquake.h:743
double builtinsprofile
Definition pr_comp.h:452
mfunction_t * xfunction
Definition progsvm.h:620

References mfunction_t::builtinsprofile, CL_GenericHitSuperContentsMask(), CL_HitNetworkBrushModels, CL_HitNetworkPlayers, CL_TraceBox(), CL_VM_SetTraceGlobals(), collision_extendtraceboxlength, prvm_prog_t::error_cmd, int(), prvm_prog_t::name, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, OFS_PARM5, PRVM_EDICT_TO_PROG, PRVM_G_EDICT, PRVM_G_FLOAT, PRVM_G_VECTOR, v1, v2, cvar_t::value, VectorCopy, VM_CL_tracebox(), VM_SAFEPARMCOUNTRANGE, and prvm_prog_t::xfunction.

Referenced by VM_CL_tracebox().

◆ VM_CL_traceline()

static void VM_CL_traceline ( prvm_prog_t * prog)
static

Definition at line 281 of file clvm_cmds.c.

282{
283 vec3_t v1, v2;
284 trace_t trace;
285 int move, svent;
286 prvm_edict_t *ent;
287
288// R_TimeReport("pretraceline");
289
291
292 prog->xfunction->builtinsprofile += 30;
293
296 move = (int)PRVM_G_FLOAT(OFS_PARM2);
297 ent = PRVM_G_EDICT(OFS_PARM3);
298
299 if (isnan(v1[0]) || isnan(v1[1]) || isnan(v1[2]) || isnan(v2[0]) || isnan(v2[1]) || isnan(v2[2]))
300 prog->error_cmd("%s: NAN errors detected in traceline('%f %f %f', '%f %f %f', %i, entity %i)\n", prog->name, v1[0], v1[1], v1[2], v2[0], v2[1], v2[2], move, PRVM_EDICT_TO_PROG(ent));
301
303
304 CL_VM_SetTraceGlobals(prog, &trace, svent);
305// R_TimeReport("traceline");
306}
static void VM_CL_traceline(prvm_prog_t *prog)
Definition clvm_cmds.c:281
cvar_t collision_extendtracelinelength
Definition collision.c:16

References mfunction_t::builtinsprofile, CL_GenericHitSuperContentsMask(), CL_HitNetworkBrushModels, CL_HitNetworkPlayers, CL_TraceLine(), CL_VM_SetTraceGlobals(), collision_extendtracelinelength, prvm_prog_t::error_cmd, int(), prvm_prog_t::name, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, PRVM_EDICT_TO_PROG, PRVM_G_EDICT, PRVM_G_FLOAT, PRVM_G_VECTOR, v1, v2, cvar_t::value, VectorCopy, VM_CL_traceline(), VM_SAFEPARMCOUNTRANGE, and prvm_prog_t::xfunction.

Referenced by VM_CL_traceline().

◆ VM_CL_tracetoss()

static void VM_CL_tracetoss ( prvm_prog_t * prog)
static

Definition at line 393 of file clvm_cmds.c.

394{
395 trace_t trace;
396 prvm_edict_t *ent;
397 prvm_edict_t *ignore;
398 int svent = 0;
399
400 prog->xfunction->builtinsprofile += 600;
401
403
404 ent = PRVM_G_EDICT(OFS_PARM0);
405 if (ent == prog->edicts)
406 {
407 VM_Warning(prog, "tracetoss: can not use world entity\n");
408 return;
409 }
410 ignore = PRVM_G_EDICT(OFS_PARM1);
411
412 trace = CL_Trace_Toss (prog, ent, ignore, &svent);
413
414 CL_VM_SetTraceGlobals(prog, &trace, svent);
415}
static void VM_CL_tracetoss(prvm_prog_t *prog)
Definition clvm_cmds.c:393
static trace_t CL_Trace_Toss(prvm_prog_t *prog, prvm_edict_t *tossent, prvm_edict_t *ignore, int *svent)
Definition clvm_cmds.c:348

References mfunction_t::builtinsprofile, CL_Trace_Toss(), CL_VM_SetTraceGlobals(), prvm_prog_t::edicts, OFS_PARM0, OFS_PARM1, PRVM_G_EDICT, VM_CL_tracetoss(), VM_SAFEPARMCOUNT, VM_Warning(), and prvm_prog_t::xfunction.

Referenced by VM_CL_tracetoss().

◆ VM_CL_trailparticles()

static void VM_CL_trailparticles ( prvm_prog_t * prog)
static

Definition at line 2160 of file clvm_cmds.c.

2161{
2162 int i;
2163 vec3_t start, end, velocity;
2164 prvm_edict_t *t;
2166
2172
2173 if (i < 0)
2174 return;
2175 CL_ParticleTrail(i, 1, start, end, velocity, velocity, NULL, prog->argc >= 5 ? (int)PRVM_G_FLOAT(OFS_PARM4) : 0, true, true, NULL, NULL, 1);
2176}
static void VM_CL_trailparticles(prvm_prog_t *prog)
Definition clvm_cmds.c:2160

References prvm_prog_t::argc, CL_ParticleTrail(), i, int(), NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, PRVM_clientedictvector, PRVM_G_EDICT, PRVM_G_FLOAT, PRVM_G_VECTOR, VectorCopy, velocity, VM_CL_trailparticles(), and VM_SAFEPARMCOUNTRANGE.

Referenced by VM_CL_trailparticles().

◆ VM_CL_unproject()

static void VM_CL_unproject ( prvm_prog_t * prog)
static

Definition at line 1210 of file clvm_cmds.c.

1211{
1212 vec3_t f;
1213 vec3_t temp;
1214 vec3_t result;
1215
1218 VectorSet(temp,
1219 f[2],
1220 (-1.0 + 2.0 * (f[0] / vid_conwidth.integer)) * f[2] * -r_refdef.view.frustum_x,
1221 (-1.0 + 2.0 * (f[1] / vid_conheight.integer)) * f[2] * -r_refdef.view.frustum_y);
1222 if(v_flipped.integer)
1223 temp[1] = -temp[1];
1224 Matrix4x4_Transform(&r_refdef.view.matrix, temp, result);
1226}
static void VM_CL_unproject(prvm_prog_t *prog)
Definition clvm_cmds.c:1210

References f, r_refdef_view_t::frustum_x, r_refdef_view_t::frustum_y, cvar_t::integer, r_refdef_view_t::matrix, Matrix4x4_Transform(), OFS_PARM0, OFS_RETURN, PRVM_G_VECTOR, r_refdef, v_flipped, VectorCopy, VectorSet, vid_conheight, vid_conwidth, r_refdef_t::view, VM_CL_unproject(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_unproject().

◆ VM_CL_V_CalcRefdef()

static void VM_CL_V_CalcRefdef ( prvm_prog_t * prog)
static

Definition at line 4958 of file clvm_cmds.c.

4959{
4960 matrix4x4_t entrendermatrix;
4961 vec3_t clviewangles;
4962 vec3_t clvelocity;
4963 qbool teleported;
4964 qbool clonground;
4965 qbool clcmdjump;
4966 qbool cldead;
4967 float clstatsviewheight;
4968 prvm_edict_t *ent;
4969 int flags;
4970
4972 ent = PRVM_G_EDICT(OFS_PARM0);
4974
4975 // use the CL_GetTagMatrix function on self to ensure consistent behavior (duplicate code would be bad)
4976 CL_GetTagMatrix(prog, &entrendermatrix, ent, 0, NULL);
4977
4978 VectorCopy(cl.csqc_viewangles, clviewangles);
4979 teleported = (flags & REFDEFFLAG_TELEPORTED) != 0;
4980 clonground = ((int)PRVM_clientedictfloat(ent, pmove_flags) & PMF_ONGROUND) != 0;
4981 clcmdjump = (flags & REFDEFFLAG_JUMPING) != 0;
4982 clstatsviewheight = PRVM_clientedictvector(ent, view_ofs)[2];
4983 cldead = (flags & REFDEFFLAG_DEAD) != 0;
4985 VectorCopy(PRVM_clientedictvector(ent, velocity), clvelocity);
4986
4987 V_CalcRefdefUsing(&entrendermatrix, clviewangles, teleported, clonground, clcmdjump, clstatsviewheight, cldead, clvelocity);
4988
4992}
#define REFDEFFLAG_TELEPORTED
Definition clvm_cmds.c:4954
#define REFDEFFLAG_DEAD
Definition clvm_cmds.c:4956
#define REFDEFFLAG_JUMPING
Definition clvm_cmds.c:4955
static void VM_CL_V_CalcRefdef(prvm_prog_t *prog)
Definition clvm_cmds.c:4958
#define REFDEFFLAG_INTERMISSION
Definition clvm_cmds.c:4957
vector view_ofs
Definition progsdefs.qc:151
int intermission
Definition client.h:856
void V_CalcRefdefUsing(const matrix4x4_t *entrendermatrix, const vec3_t clviewangles, qbool teleported, qbool clonground, qbool clcmdjump, float clstatsviewheight, qbool cldead, const vec3_t clvelocity)
Definition view.c:512

References cl, CL_GetTagMatrix(), CSQC_R_RecalcView(), client_state_t::csqc_viewangles, client_state_t::csqc_viewanglesfromengine, client_state_t::csqc_vieworigin, client_state_t::csqc_vieworiginfromengine, flags, int(), client_state_t::intermission, NULL, OFS_PARM0, OFS_PARM1, PMF_ONGROUND, PRVM_clientedictfloat, PRVM_clientedictvector, PRVM_G_EDICT, PRVM_G_FLOAT, REFDEFFLAG_DEAD, REFDEFFLAG_INTERMISSION, REFDEFFLAG_JUMPING, REFDEFFLAG_TELEPORTED, V_CalcRefdefUsing(), VectorCopy, velocity, view_ofs, VM_CL_V_CalcRefdef(), and VM_SAFEPARMCOUNT.

Referenced by VM_CL_V_CalcRefdef().

◆ VM_CL_walkmove()

static void VM_CL_walkmove ( prvm_prog_t * prog)
static

Definition at line 4465 of file clvm_cmds.c.

4466{
4467 prvm_edict_t *ent;
4468 float yaw, dist;
4469 vec3_t move;
4470 mfunction_t *oldf;
4471 int oldself;
4472 qbool settrace;
4473
4475
4476 // assume failure if it returns early
4478
4480 if (ent == prog->edicts)
4481 {
4482 VM_Warning(prog, "walkmove: can not modify world entity\n");
4483 return;
4484 }
4485 if (ent->free)
4486 {
4487 VM_Warning(prog, "walkmove: can not modify free entity\n");
4488 return;
4489 }
4490 yaw = PRVM_G_FLOAT(OFS_PARM0);
4491 dist = PRVM_G_FLOAT(OFS_PARM1);
4492 settrace = prog->argc >= 3 && PRVM_G_FLOAT(OFS_PARM2);
4493
4494 if ( !( (int)PRVM_clientedictfloat(ent, flags) & (FL_ONGROUND|FL_FLY|FL_SWIM) ) )
4495 return;
4496
4497 yaw = yaw*M_PI*2 / 360;
4498
4499 move[0] = cos(yaw)*dist;
4500 move[1] = sin(yaw)*dist;
4501 move[2] = 0;
4502
4503// save program state, because CL_movestep may call other progs
4504 oldf = prog->xfunction;
4505 oldself = PRVM_clientglobaledict(self);
4506
4507 PRVM_G_FLOAT(OFS_RETURN) = CL_movestep(ent, move, true, false, settrace);
4508
4509
4510// restore program state
4511 prog->xfunction = oldf;
4512 PRVM_clientglobaledict(self) = oldself;
4513}
static void VM_CL_walkmove(prvm_prog_t *prog)
Definition clvm_cmds.c:4465
static qbool CL_movestep(prvm_edict_t *ent, vec3_t move, qbool relink, qbool noenemy, qbool settrace)
Definition clvm_cmds.c:4342
float cos(float f)
float sin(float f)

References prvm_prog_t::argc, CL_movestep(), cos(), prvm_prog_t::edicts, FL_FLY, FL_ONGROUND, FL_SWIM, flags, prvm_edict_t::free, M_PI, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_RETURN, PRVM_clientedictfloat, PRVM_clientglobaledict, PRVM_G_FLOAT, PRVM_PROG_TO_EDICT, self, sin(), VM_CL_walkmove(), VM_SAFEPARMCOUNTRANGE, VM_Warning(), and prvm_prog_t::xfunction.

Referenced by VM_CL_walkmove().

◆ VM_drawcharacter()

void VM_drawcharacter ( prvm_prog_t * prog)

Definition at line 1378 of file clvm_cmds.c.

1379{
1380 prvm_vec_t *pos,*scale,*rgb;
1381 char character;
1382 int flag;
1383 float sx, sy;
1385
1386 // polygonbegin without draw2d arg has to guess
1387 prog->polygonbegin_guess2d = true;
1388
1389 character = (char) PRVM_G_FLOAT(OFS_PARM1);
1390 if(character == 0)
1391 {
1393 VM_Warning(prog, "VM_drawcharacter: null character passed!\n");
1394 return;
1395 }
1396
1397 pos = PRVM_G_VECTOR(OFS_PARM0);
1400 flag = (int)PRVM_G_FLOAT(OFS_PARM5);
1401
1402 if(flag < DRAWFLAG_NORMAL || flag >=DRAWFLAG_NUMFLAGS)
1403 {
1405 VM_Warning(prog, "VM_drawcharacter: wrong DRAWFLAG %i !\n", flag);
1406 return;
1407 }
1408
1409 if(pos[2] || scale[2])
1410 VM_Warning(prog, "VM_drawcharacter: z value%c from %s discarded\n",(pos[2] && scale[2]) ? 's' : 0,((pos[2] && scale[2]) ? "pos and scale" : (pos[2] ? "pos" : "scale")));
1411
1412 if(!scale[0] || !scale[1])
1413 {
1415 VM_Warning(prog, "VM_drawcharacter: scale %s is null !\n", (scale[0] == 0) ? ((scale[1] == 0) ? "x and y" : "x") : "y");
1416 return;
1417 }
1418
1419 getdrawfontscale(prog, &sx, &sy);
1420 DrawQ_String_Scale(pos[0], pos[1], &character, 1, scale[0], scale[1], sx, sy, rgb[0], rgb[1], rgb[2], PRVM_G_FLOAT(OFS_PARM4), flag, NULL, true, getdrawfont(prog));
1422}
static dp_font_t * getdrawfont(prvm_prog_t *prog)
Definition clvm_cmds.c:1363
static void getdrawfontscale(prvm_prog_t *prog, float *sx, float *sy)
Definition clvm_cmds.c:1351
void VM_drawcharacter(prvm_prog_t *prog)
Definition clvm_cmds.c:1378
float DrawQ_String_Scale(float x, float y, const char *text, size_t maxlen, float sizex, float sizey, float scalex, float scaley, float basered, float basegreen, float baseblue, float basealpha, int flags, int *outcolor, qbool ignorecolorcodes, const dp_font_t *fnt)
Definition gl_draw.c:1085
@ DRAWFLAG_NUMFLAGS
Definition draw.h:79
dp_FragColor rgb

References DRAWFLAG_NUMFLAGS, DrawQ_String_Scale(), getdrawfont(), getdrawfontscale(), int(), NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, OFS_PARM5, OFS_RETURN, prvm_prog_t::polygonbegin_guess2d, PRVM_G_FLOAT, PRVM_G_VECTOR, rgb, scale, VM_drawcharacter(), VM_SAFEPARMCOUNT, and VM_Warning().

Referenced by VM_drawcharacter().

◆ VM_drawcolorcodedstring()

void VM_drawcolorcodedstring ( prvm_prog_t * prog)

Definition at line 1481 of file clvm_cmds.c.

1482{
1483 prvm_vec_t *pos, *scale;
1484 const char *string;
1485 int flag;
1486 vec3_t rgb;
1487 float sx, sy, alpha;
1488
1490
1491 // polygonbegin without draw2d arg has to guess
1492 prog->polygonbegin_guess2d = true;
1493
1494 if (prog->argc == 6) // full 6 parms, like normal drawstring
1495 {
1496 pos = PRVM_G_VECTOR(OFS_PARM0);
1497 string = PRVM_G_STRING(OFS_PARM1);
1501 flag = (int)PRVM_G_FLOAT(OFS_PARM5);
1502 }
1503 else
1504 {
1505 pos = PRVM_G_VECTOR(OFS_PARM0);
1506 string = PRVM_G_STRING(OFS_PARM1);
1508 rgb[0] = 1.0;
1509 rgb[1] = 1.0;
1510 rgb[2] = 1.0;
1512 flag = (int)PRVM_G_FLOAT(OFS_PARM4);
1513 }
1514
1515 if(flag < DRAWFLAG_NORMAL || flag >= DRAWFLAG_NUMFLAGS)
1516 {
1518 VM_Warning(prog, "VM_drawcolorcodedstring: wrong DRAWFLAG %i !\n", flag);
1519 return;
1520 }
1521
1522 if(!scale[0] || !scale[1])
1523 {
1525 VM_Warning(prog, "VM_drawcolorcodedstring: scale %s is null !\n", (scale[0] == 0) ? ((scale[1] == 0) ? "x and y" : "x") : "y");
1526 return;
1527 }
1528
1529 if(pos[2] || scale[2])
1530 VM_Warning(prog, "VM_drawcolorcodedstring: z value%s from %s discarded\n",(pos[2] && scale[2]) ? "s" : " ",((pos[2] && scale[2]) ? "pos and scale" : (pos[2] ? "pos" : "scale")));
1531
1532 getdrawfontscale(prog, &sx, &sy);
1533 DrawQ_String_Scale(pos[0], pos[1], string, 0, scale[0], scale[1], sx, sy, rgb[0], rgb[1], rgb[2], alpha, flag, NULL, false, getdrawfont(prog));
1534 if (prog->argc == 6) // also return vector of last color
1536 else
1538}
void VM_drawcolorcodedstring(prvm_prog_t *prog)
Definition clvm_cmds.c:1481
float DrawQ_Color[4]
Definition gl_draw.c:1084
GLsizei const GLchar ** string
Definition glquake.h:728

References alpha, prvm_prog_t::argc, DRAWFLAG_NUMFLAGS, DrawQ_Color, DrawQ_String_Scale(), getdrawfont(), getdrawfontscale(), int(), NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, OFS_PARM5, OFS_RETURN, prvm_prog_t::polygonbegin_guess2d, PRVM_G_FLOAT, PRVM_G_STRING, PRVM_G_VECTOR, rgb, scale, string, VectorCopy, VM_drawcolorcodedstring(), VM_SAFEPARMCOUNTRANGE, and VM_Warning().

Referenced by VM_drawcolorcodedstring().

◆ VM_drawfill()

void VM_drawfill ( prvm_prog_t * prog)

Definition at line 1925 of file clvm_cmds.c.

1926{
1927 prvm_vec_t *size, *pos, *rgb;
1928 int flag;
1929
1931
1932 // polygonbegin without draw2d arg has to guess
1933 prog->polygonbegin_guess2d = true;
1934
1935 pos = PRVM_G_VECTOR(OFS_PARM0);
1938 flag = (int) PRVM_G_FLOAT(OFS_PARM4);
1939
1940 if(flag < DRAWFLAG_NORMAL || flag >=DRAWFLAG_NUMFLAGS)
1941 {
1943 VM_Warning(prog, "VM_drawfill: wrong DRAWFLAG %i !\n", flag);
1944 return;
1945 }
1946
1947 if(pos[2] || size[2])
1948 VM_Warning(prog, "VM_drawfill: z value%s from %s discarded\n",(pos[2] && size[2]) ? "s" : " ",((pos[2] && size[2]) ? "pos and size" : (pos[2] ? "pos" : "size")));
1949
1950 DrawQ_Fill(pos[0], pos[1], size[0], size[1], rgb[0], rgb[1], rgb[2], PRVM_G_FLOAT(OFS_PARM3), flag);
1952}
void VM_drawfill(prvm_prog_t *prog)
Definition clvm_cmds.c:1925
void DrawQ_Fill(float x, float y, float width, float height, float red, float green, float blue, float alpha, int flags)
Definition gl_draw.c:847

References DRAWFLAG_NUMFLAGS, DrawQ_Fill(), int(), OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, OFS_RETURN, prvm_prog_t::polygonbegin_guess2d, PRVM_G_FLOAT, PRVM_G_VECTOR, rgb, size, VM_drawfill(), VM_SAFEPARMCOUNT, and VM_Warning().

Referenced by VM_drawfill().

◆ VM_drawline()

void VM_drawline ( prvm_prog_t * prog)

Definition at line 1260 of file clvm_cmds.c.

1261{
1262 prvm_vec_t *c1, *c2, *rgb;
1263 float alpha, width;
1264 unsigned char flags;
1265
1267
1268 // polygonbegin without draw2d arg has to guess
1269 prog->polygonbegin_guess2d = true;
1270
1277 DrawQ_Line(width, c1[0], c1[1], c2[0], c2[1], rgb[0], rgb[1], rgb[2], alpha, flags);
1278}
void VM_drawline(prvm_prog_t *prog)
Definition clvm_cmds.c:1260
void DrawQ_Line(float width, float x1, float y1, float x2, float y2, float r, float g, float b, float alpha, int flags)
Definition gl_draw.c:1402
GLenum GLsizei width
Definition glquake.h:622

References alpha, DrawQ_Line(), flags, int(), OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, OFS_PARM5, prvm_prog_t::polygonbegin_guess2d, PRVM_G_FLOAT, PRVM_G_VECTOR, rgb, VM_drawline(), VM_SAFEPARMCOUNT, and width.

Referenced by VM_drawline().

◆ VM_drawpic()

void VM_drawpic ( prvm_prog_t * prog)

Definition at line 1771 of file clvm_cmds.c.

1772{
1773 const char *picname;
1774 prvm_vec_t *size, *pos, *rgb;
1775 int flag = 0;
1776
1778
1779 // polygonbegin without draw2d arg has to guess
1780 prog->polygonbegin_guess2d = true;
1781
1782 picname = PRVM_G_STRING(OFS_PARM1);
1783 VM_CheckEmptyString(prog, picname);
1784
1785 // is pic cached ? no function yet for that
1786 if(!1)
1787 {
1789 VM_Warning(prog, "VM_drawpic: %s not cached !\n", picname);
1790 return;
1791 }
1792
1793 pos = PRVM_G_VECTOR(OFS_PARM0);
1796 if (prog->argc >= 6)
1797 flag = (int) PRVM_G_FLOAT(OFS_PARM5);
1798
1799 if(flag < DRAWFLAG_NORMAL || flag >=DRAWFLAG_NUMFLAGS)
1800 {
1802 VM_Warning(prog, "VM_drawpic: wrong DRAWFLAG %i !\n", flag);
1803 return;
1804 }
1805
1806 if(pos[2] || size[2])
1807 VM_Warning(prog, "VM_drawpic: z value%s from %s discarded\n",(pos[2] && size[2]) ? "s" : " ",((pos[2] && size[2]) ? "pos and size" : (pos[2] ? "pos" : "size")));
1808
1809 DrawQ_Pic(pos[0], pos[1], Draw_CachePic_Flags (picname, CACHEPICFLAG_NOTPERSISTENT), size[0], size[1], rgb[0], rgb[1], rgb[2], PRVM_G_FLOAT(OFS_PARM4), flag);
1811}
void VM_drawpic(prvm_prog_t *prog)
Definition clvm_cmds.c:1771
void DrawQ_Pic(float x, float y, cachepic_t *pic, float width, float height, float red, float green, float blue, float alpha, int flags)
Definition gl_draw.c:797
void VM_CheckEmptyString(prvm_prog_t *prog, const char *s)
Definition prvm_cmds.c:62

References prvm_prog_t::argc, CACHEPICFLAG_NOTPERSISTENT, Draw_CachePic_Flags(), DRAWFLAG_NUMFLAGS, DrawQ_Pic(), int(), OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, OFS_PARM5, OFS_RETURN, prvm_prog_t::polygonbegin_guess2d, PRVM_G_FLOAT, PRVM_G_STRING, PRVM_G_VECTOR, rgb, size, VM_CheckEmptyString(), VM_drawpic(), VM_SAFEPARMCOUNTRANGE, and VM_Warning().

Referenced by VM_drawpic().

◆ VM_drawresetcliparea()

void VM_drawresetcliparea ( prvm_prog_t * prog)

Definition at line 1984 of file clvm_cmds.c.

1985{
1987
1988 // polygonbegin without draw2d arg has to guess
1989 prog->polygonbegin_guess2d = true;
1990
1992}
void VM_drawresetcliparea(prvm_prog_t *prog)
Definition clvm_cmds.c:1984
void DrawQ_ResetClipArea(void)
Definition gl_draw.c:1450

References DrawQ_ResetClipArea(), prvm_prog_t::polygonbegin_guess2d, VM_drawresetcliparea(), and VM_SAFEPARMCOUNT.

Referenced by VM_drawresetcliparea().

◆ VM_drawrotpic()

void VM_drawrotpic ( prvm_prog_t * prog)

Definition at line 1819 of file clvm_cmds.c.

1820{
1821 const char *picname;
1822 prvm_vec_t *size, *pos, *org, *rgb;
1823 int flag;
1824
1826
1827 // polygonbegin without draw2d arg has to guess
1828 prog->polygonbegin_guess2d = true;
1829
1830 picname = PRVM_G_STRING(OFS_PARM1);
1831 VM_CheckEmptyString(prog, picname);
1832
1833 // is pic cached ? no function yet for that
1834 if(!1)
1835 {
1837 VM_Warning(prog, "VM_drawrotpic: %s not cached !\n", picname);
1838 return;
1839 }
1840
1841 pos = PRVM_G_VECTOR(OFS_PARM0);
1843 org = PRVM_G_VECTOR(OFS_PARM3);
1845 flag = (int) PRVM_G_FLOAT(OFS_PARM7);
1846
1847 if(flag < DRAWFLAG_NORMAL || flag >=DRAWFLAG_NUMFLAGS)
1848 {
1850 VM_Warning(prog, "VM_drawrotpic: wrong DRAWFLAG %i !\n", flag);
1851 return;
1852 }
1853
1854 if(pos[2] || size[2] || org[2])
1855 VM_Warning(prog, "VM_drawrotpic: z value from pos/size/org discarded\n");
1856
1857 DrawQ_RotPic(pos[0], pos[1], Draw_CachePic_Flags(picname, CACHEPICFLAG_NOTPERSISTENT), size[0], size[1], org[0], org[1], PRVM_G_FLOAT(OFS_PARM4), rgb[0], rgb[1], rgb[2], PRVM_G_FLOAT(OFS_PARM6), flag);
1859}
void VM_drawrotpic(prvm_prog_t *prog)
Definition clvm_cmds.c:1819
void DrawQ_RotPic(float x, float y, cachepic_t *pic, float width, float height, float org_x, float org_y, float angle, float red, float green, float blue, float alpha, int flags)
Definition gl_draw.c:819

References CACHEPICFLAG_NOTPERSISTENT, Draw_CachePic_Flags(), DRAWFLAG_NUMFLAGS, DrawQ_RotPic(), int(), OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, OFS_PARM5, OFS_PARM6, OFS_PARM7, OFS_RETURN, prvm_prog_t::polygonbegin_guess2d, PRVM_G_FLOAT, PRVM_G_STRING, PRVM_G_VECTOR, rgb, size, VM_CheckEmptyString(), VM_drawrotpic(), VM_SAFEPARMCOUNT, and VM_Warning().

Referenced by VM_drawrotpic().

◆ VM_drawsetcliparea()

void VM_drawsetcliparea ( prvm_prog_t * prog)

Definition at line 1961 of file clvm_cmds.c.

1962{
1963 float x,y,w,h;
1965
1966 // polygonbegin without draw2d arg has to guess
1967 prog->polygonbegin_guess2d = true;
1968
1973
1974 DrawQ_SetClipArea(x, y, w, h);
1975}
void VM_drawsetcliparea(prvm_prog_t *prog)
Definition clvm_cmds.c:1961
void DrawQ_SetClipArea(float x, float y, float width, float height)
Definition gl_draw.c:1428
GLubyte GLubyte GLubyte GLubyte w
Definition glquake.h:782

References bound, DrawQ_SetClipArea(), cvar_t::integer, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, prvm_prog_t::polygonbegin_guess2d, PRVM_G_FLOAT, vid_conheight, vid_conwidth, VM_drawsetcliparea(), VM_SAFEPARMCOUNT, w, x, and y.

Referenced by VM_drawsetcliparea().

◆ VM_drawstring()

void VM_drawstring ( prvm_prog_t * prog)

Definition at line 1431 of file clvm_cmds.c.

1432{
1433 prvm_vec_t *pos,*scale,*rgb;
1434 const char *string;
1435 int flag = 0;
1436 float sx, sy;
1438
1439 // polygonbegin without draw2d arg has to guess
1440 prog->polygonbegin_guess2d = true;
1441
1442 string = PRVM_G_STRING(OFS_PARM1);
1443 pos = PRVM_G_VECTOR(OFS_PARM0);
1446 if (prog->argc >= 6)
1447 flag = (int)PRVM_G_FLOAT(OFS_PARM5);
1448
1449 if(flag < DRAWFLAG_NORMAL || flag >=DRAWFLAG_NUMFLAGS)
1450 {
1452 VM_Warning(prog, "VM_drawstring: wrong DRAWFLAG %i !\n", flag);
1453 return;
1454 }
1455
1456 if(!scale[0] || !scale[1])
1457 {
1459 VM_Warning(prog, "VM_drawstring: scale %s is null !\n", (scale[0] == 0) ? ((scale[1] == 0) ? "x and y" : "x") : "y");
1460 return;
1461 }
1462
1463 if(pos[2] || scale[2])
1464 VM_Warning(prog, "VM_drawstring: z value%s from %s discarded\n",(pos[2] && scale[2]) ? "s" : " ",((pos[2] && scale[2]) ? "pos and scale" : (pos[2] ? "pos" : "scale")));
1465
1466 getdrawfontscale(prog, &sx, &sy);
1467 DrawQ_String_Scale(pos[0], pos[1], string, 0, scale[0], scale[1], sx, sy, rgb[0], rgb[1], rgb[2], PRVM_G_FLOAT(OFS_PARM4), flag, NULL, true, getdrawfont(prog));
1468 //Font_DrawString(pos[0], pos[1], string, 0, scale[0], scale[1], rgb[0], rgb[1], rgb[2], PRVM_G_FLOAT(OFS_PARM4), flag, NULL, true);
1470}
void VM_drawstring(prvm_prog_t *prog)
Definition clvm_cmds.c:1431

References prvm_prog_t::argc, DRAWFLAG_NUMFLAGS, DrawQ_String_Scale(), getdrawfont(), getdrawfontscale(), int(), NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, OFS_PARM5, OFS_RETURN, prvm_prog_t::polygonbegin_guess2d, PRVM_G_FLOAT, PRVM_G_STRING, PRVM_G_VECTOR, rgb, scale, string, VM_drawstring(), VM_SAFEPARMCOUNTRANGE, and VM_Warning().

Referenced by VM_drawstring().

◆ VM_drawsubpic()

void VM_drawsubpic ( prvm_prog_t * prog)

Definition at line 1868 of file clvm_cmds.c.

1869{
1870 const char *picname;
1871 prvm_vec_t *size, *pos, *rgb, *srcPos, *srcSize, alpha;
1872 int flag;
1873
1875
1876 // polygonbegin without draw2d arg has to guess
1877 prog->polygonbegin_guess2d = true;
1878
1879 picname = PRVM_G_STRING(OFS_PARM2);
1880 VM_CheckEmptyString(prog, picname);
1881
1882 // is pic cached ? no function yet for that
1883 if(!1)
1884 {
1886 VM_Warning(prog, "VM_drawsubpic: %s not cached !\n", picname);
1887 return;
1888 }
1889
1890 pos = PRVM_G_VECTOR(OFS_PARM0);
1892 srcPos = PRVM_G_VECTOR(OFS_PARM3);
1893 srcSize = PRVM_G_VECTOR(OFS_PARM4);
1896 flag = (int) PRVM_G_FLOAT(OFS_PARM7);
1897
1898 if(flag < DRAWFLAG_NORMAL || flag >=DRAWFLAG_NUMFLAGS)
1899 {
1901 VM_Warning(prog, "VM_drawsubpic: wrong DRAWFLAG %i !\n", flag);
1902 return;
1903 }
1904
1905 if(pos[2] || size[2])
1906 VM_Warning(prog, "VM_drawsubpic: z value%s from %s discarded\n",(pos[2] && size[2]) ? "s" : " ",((pos[2] && size[2]) ? "pos and size" : (pos[2] ? "pos" : "size")));
1907
1909 size[0], size[1],
1910 srcPos[0], srcPos[1], rgb[0], rgb[1], rgb[2], alpha,
1911 srcPos[0] + srcSize[0], srcPos[1], rgb[0], rgb[1], rgb[2], alpha,
1912 srcPos[0], srcPos[1] + srcSize[1], rgb[0], rgb[1], rgb[2], alpha,
1913 srcPos[0] + srcSize[0], srcPos[1] + srcSize[1], rgb[0], rgb[1], rgb[2], alpha,
1914 flag);
1916}
void VM_drawsubpic(prvm_prog_t *prog)
Definition clvm_cmds.c:1868
void DrawQ_SuperPic(float x, float y, cachepic_t *pic, float width, float height, float s1, float t1, float r1, float g1, float b1, float a1, float s2, float t2, float r2, float g2, float b2, float a2, float s3, float t3, float r3, float g3, float b3, float a3, float s4, float t4, float r4, float g4, float b4, float a4, int flags)
Definition gl_draw.c:1380

References alpha, CACHEPICFLAG_NOTPERSISTENT, Draw_CachePic_Flags(), DRAWFLAG_NUMFLAGS, DrawQ_SuperPic(), int(), OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, OFS_PARM5, OFS_PARM6, OFS_PARM7, OFS_RETURN, prvm_prog_t::polygonbegin_guess2d, PRVM_G_FLOAT, PRVM_G_STRING, PRVM_G_VECTOR, rgb, size, VM_CheckEmptyString(), VM_drawsubpic(), VM_SAFEPARMCOUNT, and VM_Warning().

Referenced by VM_drawsubpic().

◆ VM_findfont()

void VM_findfont ( prvm_prog_t * prog)

Definition at line 1616 of file clvm_cmds.c.

1617{
1620}
static float getdrawfontnum(const char *fontname)
Definition clvm_cmds.c:1606
void VM_findfont(prvm_prog_t *prog)
Definition clvm_cmds.c:1616

References getdrawfontnum(), OFS_PARM0, OFS_RETURN, PRVM_G_FLOAT, PRVM_G_STRING, VM_findfont(), and VM_SAFEPARMCOUNT.

Referenced by VM_findfont().

◆ VM_freepic()

void VM_freepic ( prvm_prog_t * prog)

Definition at line 1339 of file clvm_cmds.c.

1340{
1341 const char *s;
1342
1344
1346 VM_CheckEmptyString(prog, s);
1347
1348 Draw_FreePic(s);
1349}
void VM_freepic(prvm_prog_t *prog)
Definition clvm_cmds.c:1339
void Draw_FreePic(const char *picname)
Definition gl_draw.c:309

References Draw_FreePic(), OFS_PARM0, PRVM_G_STRING, VM_CheckEmptyString(), VM_freepic(), and VM_SAFEPARMCOUNT.

Referenced by VM_freepic().

◆ VM_getimagesize()

void VM_getimagesize ( prvm_prog_t * prog)

Definition at line 2001 of file clvm_cmds.c.

2002{
2003 const char *p;
2004 cachepic_t *pic;
2005
2007
2009 VM_CheckEmptyString(prog, p);
2010
2012 if (!Draw_IsPicLoaded(pic))
2013 {
2014 PRVM_G_VECTOR(OFS_RETURN)[0] = 0;
2015 PRVM_G_VECTOR(OFS_RETURN)[1] = 0;
2016 }
2017 else
2018 {
2021 }
2022 PRVM_G_VECTOR(OFS_RETURN)[2] = 0;
2023}
void VM_getimagesize(prvm_prog_t *prog)
Definition clvm_cmds.c:2001
@ CACHEPICFLAG_QUIET
Definition draw.h:37
int Draw_GetPicWidth(cachepic_t *pic)
Definition gl_draw.c:197
int Draw_GetPicHeight(cachepic_t *pic)
Definition gl_draw.c:204

References CACHEPICFLAG_NOTPERSISTENT, CACHEPICFLAG_QUIET, Draw_CachePic_Flags(), Draw_GetPicHeight(), Draw_GetPicWidth(), Draw_IsPicLoaded(), OFS_PARM0, OFS_RETURN, PRVM_G_STRING, PRVM_G_VECTOR, VM_CheckEmptyString(), VM_getimagesize(), and VM_SAFEPARMCOUNT.

Referenced by VM_getimagesize().

◆ VM_InitParticleSpawner()

static void VM_InitParticleSpawner ( prvm_prog_t * prog,
int maxthemes )
static

Definition at line 3520 of file clvm_cmds.c.

3521{
3522 // bound max themes to not be an insane value
3523 if (maxthemes < 4)
3524 maxthemes = 4;
3525 if (maxthemes > 2048)
3526 maxthemes = 2048;
3527 // allocate and set up structure
3528 if (vmpartspawner.initialized) // reallocate
3529 {
3531 memset(&vmpartspawner, 0, sizeof(vmparticlespawner_t));
3532 }
3533 vmpartspawner.pool = Mem_AllocPool("VMPARTICLESPAWNER", 0, NULL);
3535 vmpartspawner.max_themes = maxthemes;
3537 vmpartspawner.verified = true;
3538}
#define Mem_FreePool(pool)
Definition zone.h:105
#define Mem_AllocPool(name, flags, parent)
Definition zone.h:104

References vmparticlespawner_t::initialized, vmparticlespawner_t::max_themes, Mem_Alloc, Mem_AllocPool, Mem_FreePool, NULL, vmparticlespawner_t::pool, vmparticlespawner_t::themes, vmparticlespawner_t::verified, and vmpartspawner.

Referenced by VM_CL_InitParticleSpawner().

◆ VM_iscachedpic()

void VM_iscachedpic ( prvm_prog_t * prog)

Definition at line 1287 of file clvm_cmds.c.

1288{
1290
1291 // drawq hasnt such a function, thus always return true
1292 PRVM_G_FLOAT(OFS_RETURN) = false;
1293}
void VM_iscachedpic(prvm_prog_t *prog)
Definition clvm_cmds.c:1287

References OFS_RETURN, PRVM_G_FLOAT, VM_iscachedpic(), and VM_SAFEPARMCOUNT.

Referenced by VM_iscachedpic().

◆ VM_loadfont()

void VM_loadfont ( prvm_prog_t * prog)

Definition at line 1630 of file clvm_cmds.c.

1631{
1632 const char *fontname, *filelist, *sizes, *c, *cm;
1633 char mainfont[MAX_QPATH];
1634 int i, numsizes;
1635 float sz, scale, voffset;
1636 dp_font_t *f;
1637
1639
1640 fontname = PRVM_G_STRING(OFS_PARM0);
1641 if (!fontname[0])
1642 fontname = "default";
1643
1644 filelist = PRVM_G_STRING(OFS_PARM1);
1645 if (!filelist[0])
1646 filelist = "gfx/conchars";
1647
1648 sizes = PRVM_G_STRING(OFS_PARM2);
1649 if (!sizes[0])
1650 sizes = "10";
1651
1652 // find a font
1653 f = NULL;
1654 if (prog->argc >= 4)
1655 {
1657 if (i >= 0 && i < dp_fonts.maxsize)
1658 {
1659 f = &dp_fonts.f[i];
1660 dp_strlcpy(f->title, fontname, sizeof(f->title)); // replace name
1661 }
1662 }
1663 if (!f)
1664 f = FindFont(fontname, true);
1665 if (!f)
1666 {
1668 return; // something go wrong
1669 }
1670
1671 memset(f->fallbacks, 0, sizeof(f->fallbacks));
1672 memset(f->fallback_faces, 0, sizeof(f->fallback_faces));
1673
1674 // first font is handled "normally"
1675 c = strchr(filelist, ':');
1676 cm = strchr(filelist, ',');
1677 if(c && (!cm || c < cm))
1678 f->req_face = atoi(c+1);
1679 else
1680 {
1681 f->req_face = 0;
1682 c = cm;
1683 }
1684 if(!c || (c - filelist) >= MAX_QPATH)
1685 dp_strlcpy(mainfont, filelist, sizeof(mainfont));
1686 else
1687 {
1688 memcpy(mainfont, filelist, c - filelist);
1689 mainfont[c - filelist] = 0;
1690 }
1691
1692 // handle fallbacks
1693 for(i = 0; i < MAX_FONT_FALLBACKS; ++i)
1694 {
1695 c = strchr(filelist, ',');
1696 if(!c)
1697 break;
1698 filelist = c + 1;
1699 if(!*filelist)
1700 break;
1701 c = strchr(filelist, ':');
1702 cm = strchr(filelist, ',');
1703 if(c && (!cm || c < cm))
1704 f->fallback_faces[i] = atoi(c+1);
1705 else
1706 {
1707 f->fallback_faces[i] = 0; // f->req_face; could make it stick to the default-font's face index
1708 c = cm;
1709 }
1710 if(!c || (c-filelist) >= MAX_QPATH)
1711 {
1712 dp_strlcpy(f->fallbacks[i], filelist, sizeof(mainfont));
1713 }
1714 else
1715 {
1716 memcpy(f->fallbacks[i], filelist, c - filelist);
1717 f->fallbacks[i][c - filelist] = 0;
1718 }
1719 }
1720
1721 // handle sizes
1722 for(i = 0; i < MAX_FONT_SIZES; ++i)
1723 f->req_sizes[i] = -1;
1724 for (numsizes = 0,c = sizes;;)
1725 {
1726 if (!COM_ParseToken_VM_Tokenize(&c, 0))
1727 break;
1728 sz = atof(com_token);
1729 // detect crap size
1730 if (sz < 0.001f || sz > 1000.0f)
1731 {
1732 VM_Warning(prog, "VM_loadfont: crap size %s", com_token);
1733 continue;
1734 }
1735 // check overflow
1736 if (numsizes == MAX_FONT_SIZES)
1737 {
1738 VM_Warning(prog, "VM_loadfont: MAX_FONT_SIZES = %i exceeded", MAX_FONT_SIZES);
1739 break;
1740 }
1741 f->req_sizes[numsizes] = sz;
1742 numsizes++;
1743 }
1744
1745 // additional scale/hoffset parms
1746 scale = 1;
1747 voffset = 0;
1748 if (prog->argc >= 5)
1749 {
1751 if (scale <= 0)
1752 scale = 1;
1753 }
1754 if (prog->argc >= 6)
1755 voffset = PRVM_G_FLOAT(OFS_PARM5);
1756
1757 // load
1758 LoadFont(true, mainfont, f, scale, voffset);
1759
1760 // return index of loaded font
1762}
void VM_loadfont(prvm_prog_t *prog)
Definition clvm_cmds.c:1630
char com_token[MAX_INPUTLINE]
Definition common.c:39
qbool COM_ParseToken_VM_Tokenize(const char **datapointer, qbool returnnewline)
Definition common.c:700
#define MAX_FONT_FALLBACKS
Definition draw.h:95
#define MAX_FONT_SIZES
Definition draw.h:94
void LoadFont(qbool override, const char *name, dp_font_t *fnt, float scale, float voffset)
Definition gl_draw.c:330
dp_font_t * FindFont(const char *title, qbool allocate_new)
Definition gl_draw.c:481
#define MAX_QPATH
max length of a quake game pathname
Definition qdefs.h:169

References prvm_prog_t::argc, COM_ParseToken_VM_Tokenize(), com_token, dp_fonts, dp_strlcpy, dp_fonts_t::f, f, FindFont(), i, LoadFont(), MAX_FONT_FALLBACKS, MAX_FONT_SIZES, MAX_QPATH, dp_fonts_t::maxsize, NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_PARM3, OFS_PARM4, OFS_PARM5, OFS_RETURN, PRVM_G_FLOAT, PRVM_G_STRING, scale, VM_loadfont(), VM_SAFEPARMCOUNTRANGE, and VM_Warning().

Referenced by VM_loadfont().

◆ VM_precache_pic()

void VM_precache_pic ( prvm_prog_t * prog)

Definition at line 1306 of file clvm_cmds.c.

1307{
1308 const char *s;
1310
1312
1315 VM_CheckEmptyString(prog, s);
1316
1317 if(prog->argc >= 2)
1318 {
1319 int f = PRVM_G_FLOAT(OFS_PARM1);
1322 //if(f & PRECACHE_PIC_NOCLAMP)
1323 // flags |= CACHEPICFLAG_NOCLAMP;
1326 }
1327
1330}
void VM_precache_pic(prvm_prog_t *prog)
Definition clvm_cmds.c:1306
#define PRECACHE_PIC_NOTPERSISTENT
Definition clvm_cmds.c:1303
#define PRECACHE_PIC_MIPMAP
Definition clvm_cmds.c:1305
@ CACHEPICFLAG_MIPMAP
Definition draw.h:41

References prvm_prog_t::argc, CACHEPICFLAG_FAILONMISSING, CACHEPICFLAG_MIPMAP, CACHEPICFLAG_NOTPERSISTENT, CACHEPICFLAG_QUIET, Draw_CachePic_Flags(), Draw_IsPicLoaded(), f, flags, OFS_NULL, OFS_PARM0, OFS_PARM1, OFS_RETURN, PRECACHE_PIC_MIPMAP, PRECACHE_PIC_NOTPERSISTENT, PRVM_G_FLOAT, PRVM_G_INT, PRVM_G_STRING, VM_CheckEmptyString(), VM_precache_pic(), and VM_SAFEPARMCOUNTRANGE.

Referenced by VM_precache_pic().

◆ VM_ResetParticleTheme()

static void VM_ResetParticleTheme ( vmparticletheme_t * theme)
static

Definition at line 3541 of file clvm_cmds.c.

3542{
3543 theme->initialized = true;
3544 theme->typeindex = pt_static;
3545 theme->blendmode = PBLEND_ADD;
3547 theme->color1 = 0x808080;
3548 theme->color2 = 0xFFFFFF;
3549 theme->tex = 63;
3550 theme->size = 2;
3551 theme->sizeincrease = 0;
3552 theme->alpha = 256;
3553 theme->alphafade = 512;
3554 theme->gravity = 0.0f;
3555 theme->bounce = 0.0f;
3556 theme->airfriction = 1.0f;
3557 theme->liquidfriction = 4.0f;
3558 theme->originjitter = 0.0f;
3559 theme->velocityjitter = 0.0f;
3560 theme->qualityreduction = false;
3561 theme->lifetime = 4;
3562 theme->stretch = 1;
3563 theme->staincolor1 = -1;
3564 theme->staincolor2 = -1;
3565 theme->staintex = -1;
3566 theme->delayspawn = 0.0f;
3567 theme->delaycollision = 0.0f;
3568 theme->angle = 0.0f;
3569 theme->spin = 0.0f;
3570}
@ PBLEND_ADD
@ pt_static
@ PARTICLE_BILLBOARD

References vmparticletheme_t::airfriction, vmparticletheme_t::alpha, vmparticletheme_t::alphafade, vmparticletheme_t::angle, vmparticletheme_t::blendmode, vmparticletheme_t::bounce, vmparticletheme_t::color1, vmparticletheme_t::color2, vmparticletheme_t::delaycollision, vmparticletheme_t::delayspawn, vmparticletheme_t::gravity, vmparticletheme_t::initialized, vmparticletheme_t::lifetime, vmparticletheme_t::liquidfriction, vmparticletheme_t::orientation, vmparticletheme_t::originjitter, PARTICLE_BILLBOARD, PBLEND_ADD, pt_static, vmparticletheme_t::qualityreduction, vmparticletheme_t::size, vmparticletheme_t::sizeincrease, vmparticletheme_t::spin, vmparticletheme_t::staincolor1, vmparticletheme_t::staincolor2, vmparticletheme_t::staintex, vmparticletheme_t::stretch, vmparticletheme_t::tex, vmparticletheme_t::typeindex, and vmparticletheme_t::velocityjitter.

Referenced by VM_CL_InitParticleSpawner(), and VM_CL_ParticleThemeFree().

◆ VM_stringwidth()

void VM_stringwidth ( prvm_prog_t * prog)

Definition at line 1546 of file clvm_cmds.c.

1547{
1548 const char *string;
1549 vec2_t szv;
1550 float mult; // sz is intended font size so we can later add freetype support, mult is font size multiplier in pixels per character cell
1551 int colors;
1552 float sx, sy;
1553 size_t maxlen = 0;
1555
1556 getdrawfontscale(prog, &sx, &sy);
1557 if(prog->argc == 3)
1558 {
1560 mult = 1;
1561 }
1562 else
1563 {
1564 // we want the width for 8x8 font size, divided by 8
1565 Vector2Set(szv, 8, 8);
1566 mult = 0.125;
1567 // to make sure snapping is turned off, ALWAYS use a nontrivial scale in this case
1568 if(sx >= 0.9 && sx <= 1.1)
1569 {
1570 mult *= 2;
1571 sx /= 2;
1572 sy /= 2;
1573 }
1574 }
1575
1576 string = PRVM_G_STRING(OFS_PARM0);
1577 colors = (int)PRVM_G_FLOAT(OFS_PARM1);
1578
1579 PRVM_G_FLOAT(OFS_RETURN) = DrawQ_TextWidth_UntilWidth_TrackColors_Scale(string, &maxlen, szv[0], szv[1], sx, sy, NULL, !colors, getdrawfont(prog), 1000000000) * mult;
1580/*
1581 if(prog->argc == 3)
1582 {
1583 mult = sz = PRVM_G_FLOAT(OFS_PARM2);
1584 }
1585 else
1586 {
1587 sz = 8;
1588 mult = 1;
1589 }
1590
1591 string = PRVM_G_STRING(OFS_PARM0);
1592 colors = (int)PRVM_G_FLOAT(OFS_PARM1);
1593
1594 PRVM_G_FLOAT(OFS_RETURN) = DrawQ_TextWidth(string, 0, !colors, getdrawfont()) * mult; // 1x1 characters, don't actually draw
1595*/
1596}
void VM_stringwidth(prvm_prog_t *prog)
Definition clvm_cmds.c:1546
float DrawQ_TextWidth_UntilWidth_TrackColors_Scale(const char *text, size_t *maxlen, float w, float h, float sw, float sh, int *outcolor, qbool ignorecolorcodes, const dp_font_t *fnt, float maxwidth)
Definition gl_draw.c:928
#define Vector2Copy(in, out)
Definition mathlib.h:74
#define Vector2Set(vec, x, y)
Definition mathlib.h:76
vec_t vec2_t[2]
Definition qtypes.h:70

References prvm_prog_t::argc, DrawQ_TextWidth_UntilWidth_TrackColors_Scale(), getdrawfont(), getdrawfontscale(), int(), NULL, OFS_PARM0, OFS_PARM1, OFS_PARM2, OFS_RETURN, PRVM_G_FLOAT, PRVM_G_STRING, PRVM_G_VECTOR, string, Vector2Copy, Vector2Set, VM_SAFEPARMCOUNTRANGE, and VM_stringwidth().

Referenced by VM_stringwidth().

Variable Documentation

◆ cl_bob

cvar_t cl_bob
extern

Definition at line 38 of file view.c.

38{CF_CLIENT | CF_ARCHIVE, "cl_bob","0.02", "view bobbing amount"};
#define CF_ARCHIVE
cvar should have its set value saved to config.cfg and persist across sessions
Definition cmd.h:53

Referenced by V_CalcRefdefUsing(), and V_Init().

◆ cl_bobcycle

cvar_t cl_bobcycle
extern

Definition at line 39 of file view.c.

39{CF_CLIENT | CF_ARCHIVE, "cl_bobcycle","0.6", "view bobbing speed"};

Referenced by V_CalcRefdefUsing(), and V_Init().

◆ cl_bobup

cvar_t cl_bobup
extern

Definition at line 40 of file view.c.

40{CF_CLIENT | CF_ARCHIVE, "cl_bobup","0.5", "view bobbing adjustment that makes the up or down swing of the bob last longer"};

Referenced by V_CalcRefdefUsing(), and V_Init().

◆ cl_readpicture_force

cvar_t cl_readpicture_force
extern

Definition at line 181 of file cl_parse.c.

181{CF_CLIENT, "cl_readpicture_force", "0", "when enabled, the low quality pictures read by ReadPicture() are preferred over the high quality pictures on the file system"};

Referenced by CL_Parse_Init(), and VM_CL_ReadPicture().

◆ cl_sound_ric_gunshot

cvar_t cl_sound_ric_gunshot
extern

Definition at line 185 of file cl_parse.c.

185{CF_CLIENT, "cl_sound_ric_gunshot", "0", "specifies if and when the related cl_sound_ric and cl_sound_tink sounds apply to TE_GUNSHOT/TE_GUNSHOTQUAD, 0 = no sound, 1 = TE_GUNSHOT, 2 = TE_GUNSHOTQUAD, 3 = TE_GUNSHOT and TE_GUNSHOTQUAD"};

Referenced by CL_Parse_Init(), CL_ParseTempEntity(), VM_CL_te_gunshot(), and VM_CL_te_gunshotquad().

◆ csqc_main_r_refdef_view

r_refdef_view_t csqc_main_r_refdef_view

Definition at line 26 of file clvm_cmds.c.

Referenced by CL_VM_UpdateView(), and VM_CL_R_RenderScene().

◆ csqc_original_r_refdef_view

r_refdef_view_t csqc_original_r_refdef_view

Definition at line 25 of file clvm_cmds.c.

Referenced by CL_VM_UpdateView(), VM_CL_R_ClearScene(), and VM_CL_R_RenderScene().

◆ v_flipped

cvar_t v_flipped
extern

Definition at line 20 of file gl_backend.c.

20{CF_CLIENT, "v_flipped", "0", "mirror the screen (poor man's left handed mode)"};

Referenced by VM_CL_project(), and VM_CL_unproject().

◆ v_yshearing

cvar_t v_yshearing
extern

Definition at line 143 of file view.c.

143{CF_CLIENT, "v_yshearing", "0", "be all out of gum (set this to the maximum angle to allow Y shearing for - try values like 75)"};

Referenced by CSQC_R_RecalcView(), V_CalcIntermissionRefdef(), V_CalcRefdefUsing(), and V_Init().

◆ vm_cl_builtins

prvm_builtin_t vm_cl_builtins[]

Definition at line 5003 of file clvm_cmds.c.

5003 {
5004NULL, // #0 NULL function (not callable) (QUAKE)
5005VM_CL_makevectors, // #1 void(vector ang) makevectors (QUAKE)
5006VM_CL_setorigin, // #2 void(entity e, vector o) setorigin (QUAKE)
5007VM_CL_setmodel, // #3 void(entity e, string m) setmodel (QUAKE)
5008VM_CL_setsize, // #4 void(entity e, vector min, vector max) setsize (QUAKE)
5009NULL, // #5 void(entity e, vector min, vector max) setabssize (QUAKE)
5010VM_break, // #6 void() break (QUAKE)
5011VM_random, // #7 float() random (QUAKE)
5012VM_CL_sound, // #8 void(entity e, float chan, string samp, float volume, float atten[, float pitchchange[, float flags]]) sound (QUAKE)
5013VM_normalize, // #9 vector(vector v) normalize (QUAKE)
5014VM_error, // #10 void(string e) error (QUAKE)
5015VM_objerror, // #11 void(string e) objerror (QUAKE)
5016VM_vlen, // #12 float(vector v) vlen (QUAKE)
5017VM_vectoyaw, // #13 float(vector v) vectoyaw (QUAKE)
5018VM_CL_spawn, // #14 entity() spawn (QUAKE)
5019VM_remove, // #15 void(entity e) remove (QUAKE)
5020VM_CL_traceline, // #16 void(vector v1, vector v2, float tryents, entity ignoreentity) traceline (QUAKE)
5021NULL, // #17 entity() checkclient (QUAKE)
5022VM_find, // #18 entity(entity start, .string fld, string match) find (QUAKE)
5023VM_precache_sound, // #19 void(string s) precache_sound (QUAKE)
5024VM_CL_precache_model, // #20 void(string s) precache_model (QUAKE)
5025NULL, // #21 void(entity client, string s, ...) stuffcmd (QUAKE)
5026VM_CL_findradius, // #22 entity(vector org, float rad) findradius (QUAKE)
5027NULL, // #23 void(string s, ...) bprint (QUAKE)
5028NULL, // #24 void(entity client, string s, ...) sprint (QUAKE)
5029VM_dprint, // #25 void(string s, ...) dprint (QUAKE)
5030VM_ftos, // #26 string(float f) ftos (QUAKE)
5031VM_vtos, // #27 string(vector v) vtos (QUAKE)
5032VM_coredump, // #28 void() coredump (QUAKE)
5033VM_traceon, // #29 void() traceon (QUAKE)
5034VM_traceoff, // #30 void() traceoff (QUAKE)
5035VM_eprint, // #31 void(entity e) eprint (QUAKE)
5036VM_CL_walkmove, // #32 float(float yaw, float dist[, float settrace]) walkmove (QUAKE)
5037NULL, // #33 (QUAKE)
5038VM_CL_droptofloor, // #34 float() droptofloor (QUAKE)
5039VM_CL_lightstyle, // #35 void(float style, string value) lightstyle (QUAKE)
5040VM_rint, // #36 float(float v) rint (QUAKE)
5041VM_floor, // #37 float(float v) floor (QUAKE)
5042VM_ceil, // #38 float(float v) ceil (QUAKE)
5043NULL, // #39 (QUAKE)
5044VM_CL_checkbottom, // #40 float(entity e) checkbottom (QUAKE)
5045VM_CL_pointcontents, // #41 float(vector v) pointcontents (QUAKE)
5046NULL, // #42 (QUAKE)
5047VM_fabs, // #43 float(float f) fabs (QUAKE)
5048NULL, // #44 vector(entity e, float speed) aim (QUAKE)
5049VM_cvar, // #45 float(string s) cvar (QUAKE)
5050VM_localcmd, // #46 void(string s) localcmd (QUAKE)
5051VM_nextent, // #47 entity(entity e) nextent (QUAKE)
5052VM_CL_particle, // #48 void(vector o, vector d, float color, float count) particle (QUAKE)
5053VM_changeyaw, // #49 void() ChangeYaw (QUAKE)
5054NULL, // #50 (QUAKE)
5055VM_vectoangles, // #51 vector(vector v) vectoangles (QUAKE)
5056NULL, // #52 void(float to, float f) WriteByte (QUAKE)
5057NULL, // #53 void(float to, float f) WriteChar (QUAKE)
5058NULL, // #54 void(float to, float f) WriteShort (QUAKE)
5059NULL, // #55 void(float to, float f) WriteLong (QUAKE)
5060NULL, // #56 void(float to, float f) WriteCoord (QUAKE)
5061NULL, // #57 void(float to, float f) WriteAngle (QUAKE)
5062NULL, // #58 void(float to, string s) WriteString (QUAKE)
5063NULL, // #59 (QUAKE)
5064VM_sin, // #60 float(float f) sin (DP_QC_SINCOSSQRTPOW)
5065VM_cos, // #61 float(float f) cos (DP_QC_SINCOSSQRTPOW)
5066VM_sqrt, // #62 float(float f) sqrt (DP_QC_SINCOSSQRTPOW)
5067VM_changepitch, // #63 void(entity ent) changepitch (DP_QC_CHANGEPITCH)
5068VM_CL_tracetoss, // #64 void(entity e, entity ignore) tracetoss (DP_QC_TRACETOSS)
5069VM_etos, // #65 string(entity ent) etos (DP_QC_ETOS)
5070NULL, // #66 (QUAKE)
5071NULL, // #67 void(float step) movetogoal (QUAKE)
5072VM_precache_file, // #68 string(string s) precache_file (QUAKE)
5073VM_CL_makestatic, // #69 void(entity e) makestatic (QUAKE)
5074NULL, // #70 void(string s) changelevel (QUAKE)
5075NULL, // #71 (QUAKE)
5076VM_cvar_set, // #72 void(string var, string val) cvar_set (QUAKE)
5077NULL, // #73 void(entity client, strings) centerprint (QUAKE)
5078VM_CL_ambientsound, // #74 void(vector pos, string samp, float vol, float atten) ambientsound (QUAKE)
5079VM_CL_precache_model, // #75 string(string s) precache_model2 (QUAKE)
5080VM_precache_sound, // #76 string(string s) precache_sound2 (QUAKE)
5081VM_precache_file, // #77 string(string s) precache_file2 (QUAKE)
5082NULL, // #78 void(entity e) setspawnparms (QUAKE)
5083NULL, // #79 void(entity killer, entity killee) logfrag (QUAKEWORLD)
5084NULL, // #80 string(entity e, string keyname) infokey (QUAKEWORLD)
5085VM_stof, // #81 float(string s) stof (FRIK_FILE)
5086NULL, // #82 void(vector where, float set) multicast (QUAKEWORLD)
5087NULL, // #83 (QUAKE)
5088NULL, // #84 (QUAKE)
5089NULL, // #85 (QUAKE)
5090NULL, // #86 (QUAKE)
5091NULL, // #87 (QUAKE)
5092NULL, // #88 (QUAKE)
5093NULL, // #89 (QUAKE)
5094VM_CL_tracebox, // #90 void(vector v1, vector min, vector max, vector v2, float nomonsters, entity forent) tracebox (DP_QC_TRACEBOX)
5095VM_randomvec, // #91 vector() randomvec (DP_QC_RANDOMVEC)
5096VM_CL_getlight, // #92 vector(vector org) getlight (DP_QC_GETLIGHT)
5097VM_registercvar, // #93 float(string name, string value) registercvar (DP_REGISTERCVAR)
5098VM_min, // #94 float(float a, floats) min (DP_QC_MINMAXBOUND)
5099VM_max, // #95 float(float a, floats) max (DP_QC_MINMAXBOUND)
5100VM_bound, // #96 float(float minimum, float val, float maximum) bound (DP_QC_MINMAXBOUND)
5101VM_pow, // #97 float(float f, float f) pow (DP_QC_SINCOSSQRTPOW)
5102VM_findfloat, // #98 entity(entity start, .float fld, float match) findfloat (DP_QC_FINDFLOAT)
5103VM_checkextension, // #99 float(string s) checkextension (the basis of the extension system)
5104// FrikaC and Telejano range #100-#199
5105NULL, // #100
5106NULL, // #101
5107NULL, // #102
5108NULL, // #103
5109NULL, // #104
5110NULL, // #105
5111NULL, // #106
5112NULL, // #107
5113NULL, // #108
5114NULL, // #109
5115VM_fopen, // #110 float(string filename, float mode) fopen (FRIK_FILE)
5116VM_fclose, // #111 void(float fhandle) fclose (FRIK_FILE)
5117VM_fgets, // #112 string(float fhandle) fgets (FRIK_FILE)
5118VM_fputs, // #113 void(float fhandle, string s) fputs (FRIK_FILE)
5119VM_strlen, // #114 float(string s) strlen (FRIK_FILE)
5120VM_strcat, // #115 string(string s, string...) strcat (FRIK_FILE)
5121VM_substring, // #116 string(string s, float start, float length) substring (FRIK_FILE)
5122VM_stov, // #117 vector(string) stov (FRIK_FILE)
5123VM_strzone, // #118 string(string s) strzone (FRIK_FILE)
5124VM_strunzone, // #119 void(string s) strunzone (FRIK_FILE)
5125NULL, // #120
5126NULL, // #121
5127NULL, // #122
5128NULL, // #123
5129NULL, // #124
5130NULL, // #125
5131NULL, // #126
5132NULL, // #127
5133NULL, // #128
5134NULL, // #129
5135NULL, // #130
5136NULL, // #131
5137NULL, // #132
5138NULL, // #133
5139NULL, // #134
5140NULL, // #135
5141NULL, // #136
5142NULL, // #137
5143NULL, // #138
5144NULL, // #139
5145NULL, // #140
5146NULL, // #141
5147NULL, // #142
5148NULL, // #143
5149NULL, // #144
5150NULL, // #145
5151NULL, // #146
5152NULL, // #147
5153NULL, // #148
5154NULL, // #149
5155NULL, // #150
5156NULL, // #151
5157NULL, // #152
5158NULL, // #153
5159NULL, // #154
5160NULL, // #155
5161NULL, // #156
5162NULL, // #157
5163NULL, // #158
5164NULL, // #159
5165NULL, // #160
5166NULL, // #161
5167NULL, // #162
5168NULL, // #163
5169NULL, // #164
5170NULL, // #165
5171NULL, // #166
5172NULL, // #167
5173NULL, // #168
5174NULL, // #169
5175NULL, // #170
5176NULL, // #171
5177NULL, // #172
5178NULL, // #173
5179NULL, // #174
5180NULL, // #175
5181NULL, // #176
5182VM_localsound, // #177
5183NULL, // #178
5184NULL, // #179
5185NULL, // #180
5186NULL, // #181
5187NULL, // #182
5188NULL, // #183
5189NULL, // #184
5190NULL, // #185
5191NULL, // #186
5192NULL, // #187
5193NULL, // #188
5194NULL, // #189
5195NULL, // #190
5196NULL, // #191
5197NULL, // #192
5198NULL, // #193
5199NULL, // #194
5200NULL, // #195
5201NULL, // #196
5202NULL, // #197
5203NULL, // #198
5204NULL, // #199
5205// FTEQW range #200-#299
5206NULL, // #200
5207NULL, // #201
5208NULL, // #202
5209NULL, // #203
5210NULL, // #204
5211NULL, // #205
5212NULL, // #206
5213NULL, // #207
5214NULL, // #208
5215NULL, // #209
5216NULL, // #210
5217NULL, // #211
5218NULL, // #212
5219NULL, // #213
5220NULL, // #214
5221NULL, // #215
5222NULL, // #216
5223NULL, // #217
5224VM_bitshift, // #218 float(float number, float quantity) bitshift (EXT_BITSHIFT)
5225NULL, // #219
5226NULL, // #220
5227VM_strstrofs, // #221 float(string str, string sub[, float startpos]) strstrofs (FTE_STRINGS)
5228VM_str2chr, // #222 float(string str, float ofs) str2chr (FTE_STRINGS)
5229VM_chr2str, // #223 string(float c, ...) chr2str (FTE_STRINGS)
5230VM_strconv, // #224 string(float ccase, float calpha, float cnum, string s, ...) strconv (FTE_STRINGS)
5231VM_strpad, // #225 string(float chars, string s, ...) strpad (FTE_STRINGS)
5232VM_infoadd, // #226 string(string info, string key, string value, ...) infoadd (FTE_STRINGS)
5233VM_infoget, // #227 string(string info, string key) infoget (FTE_STRINGS)
5234VM_strncmp, // #228 float(string s1, string s2, float len) strncmp (FTE_STRINGS)
5235VM_strncasecmp, // #229 float(string s1, string s2) strcasecmp (FTE_STRINGS)
5236VM_strncasecmp, // #230 float(string s1, string s2, float len) strncasecmp (FTE_STRINGS)
5237NULL, // #231
5238NULL, // #232 void(float index, float type, .void field) SV_AddStat (EXT_CSQC)
5239NULL, // #233
5240NULL, // #234
5241NULL, // #235
5242NULL, // #236
5243NULL, // #237
5244NULL, // #238
5245NULL, // #239
5246VM_CL_checkpvs, // #240
5247NULL, // #241
5248NULL, // #242
5249NULL, // #243
5250NULL, // #244
5251VM_modulo, // #245
5252NULL, // #246
5253NULL, // #247
5254NULL, // #248
5255NULL, // #249
5256NULL, // #250
5257NULL, // #251
5258NULL, // #252
5259NULL, // #253
5260NULL, // #254
5261NULL, // #255
5262NULL, // #256
5263NULL, // #257
5264NULL, // #258
5265NULL, // #259
5266NULL, // #260
5267NULL, // #261
5268NULL, // #262
5269VM_CL_skel_create, // #263 float(float modlindex) skel_create = #263; // (FTE_CSQC_SKELETONOBJECTS) create a skeleton (be sure to assign this value into .skeletonindex for use), returns skeleton index (1 or higher) on success, returns 0 on failure (for example if the modelindex is not skeletal), it is recommended that you create a new skeleton if you change modelindex.
5270VM_CL_skel_build, // #264 float(float skel, entity ent, float modlindex, float retainfrac, float firstbone, float lastbone) skel_build = #264; // (FTE_CSQC_SKELETONOBJECTS) blend in a percentage of standard animation, 0 replaces entirely, 1 does nothing, 0.5 blends half, etc, and this only alters the bones in the specified range for which out of bounds values like 0,100000 are safe (uses .frame, .frame2, .frame3, .frame4, .lerpfrac, .lerpfrac3, .lerpfrac4, .frame1time, .frame2time, .frame3time, .frame4time), returns skel on success, 0 on failure
5271VM_CL_skel_get_numbones, // #265 float(float skel) skel_get_numbones = #265; // (FTE_CSQC_SKELETONOBJECTS) returns how many bones exist in the created skeleton
5272VM_CL_skel_get_bonename, // #266 string(float skel, float bonenum) skel_get_bonename = #266; // (FTE_CSQC_SKELETONOBJECTS) returns name of bone (as a tempstring)
5273VM_CL_skel_get_boneparent, // #267 float(float skel, float bonenum) skel_get_boneparent = #267; // (FTE_CSQC_SKELETONOBJECTS) returns parent num for supplied bonenum, -1 if bonenum has no parent or bone does not exist (returned value is always less than bonenum, you can loop on this)
5274VM_CL_skel_find_bone, // #268 float(float skel, string tagname) skel_find_bone = #268; // (FTE_CSQC_SKELETONOBJECTS) get number of bone with specified name, 0 on failure, tagindex (bonenum+1) on success, same as using gettagindex on the modelindex
5275VM_CL_skel_get_bonerel, // #269 vector(float skel, float bonenum) skel_get_bonerel = #269; // (FTE_CSQC_SKELETONOBJECTS) get matrix of bone in skeleton relative to its parent - sets v_forward, v_right, v_up, returns origin (relative to parent bone)
5276VM_CL_skel_get_boneabs, // #270 vector(float skel, float bonenum) skel_get_boneabs = #270; // (FTE_CSQC_SKELETONOBJECTS) get matrix of bone in skeleton in model space - sets v_forward, v_right, v_up, returns origin (relative to entity)
5277VM_CL_skel_set_bone, // #271 void(float skel, float bonenum, vector org) skel_set_bone = #271; // (FTE_CSQC_SKELETONOBJECTS) set matrix of bone relative to its parent, reads v_forward, v_right, v_up, takes origin as parameter (relative to parent bone)
5278VM_CL_skel_mul_bone, // #272 void(float skel, float bonenum, vector org) skel_mul_bone = #272; // (FTE_CSQC_SKELETONOBJECTS) transform bone matrix (relative to its parent) by the supplied matrix in v_forward, v_right, v_up, takes origin as parameter (relative to parent bone)
5279VM_CL_skel_mul_bones, // #273 void(float skel, float startbone, float endbone, vector org) skel_mul_bones = #273; // (FTE_CSQC_SKELETONOBJECTS) transform bone matrices (relative to their parents) by the supplied matrix in v_forward, v_right, v_up, takes origin as parameter (relative to parent bones)
5280VM_CL_skel_copybones, // #274 void(float skeldst, float skelsrc, float startbone, float endbone) skel_copybones = #274; // (FTE_CSQC_SKELETONOBJECTS) copy bone matrices (relative to their parents) from one skeleton to another, useful for copying a skeleton to a corpse
5281VM_CL_skel_delete, // #275 void(float skel) skel_delete = #275; // (FTE_CSQC_SKELETONOBJECTS) deletes skeleton at the beginning of the next frame (you can add the entity, delete the skeleton, renderscene, and it will still work)
5282VM_CL_frameforname, // #276 float(float modlindex, string framename) frameforname = #276; // (FTE_CSQC_SKELETONOBJECTS) finds number of a specified frame in the animation, returns -1 if no match found
5283VM_CL_frameduration, // #277 float(float modlindex, float framenum) frameduration = #277; // (FTE_CSQC_SKELETONOBJECTS) returns the intended play time (in seconds) of the specified framegroup, if it does not exist the result is 0, if it is a single frame it may be a small value around 0.1 or 0.
5284NULL, // #278
5285NULL, // #279
5286NULL, // #280
5287NULL, // #281
5288NULL, // #282
5289NULL, // #283
5290NULL, // #284
5291NULL, // #285
5292NULL, // #286
5293NULL, // #287
5294NULL, // #288
5295NULL, // #289
5296NULL, // #290
5297NULL, // #291
5298NULL, // #292
5299NULL, // #293
5300NULL, // #294
5301NULL, // #295
5302NULL, // #296
5303NULL, // #297
5304NULL, // #298
5305NULL, // #299
5306// CSQC range #300-#399
5307VM_CL_R_ClearScene, // #300 void() clearscene (EXT_CSQC)
5308VM_CL_R_AddEntities, // #301 void(float mask) addentities (EXT_CSQC)
5309VM_CL_R_AddEntity, // #302 void(entity ent) addentity (EXT_CSQC)
5310VM_CL_R_SetView, // #303 float(float property, ...) setproperty (EXT_CSQC)
5311VM_CL_R_RenderScene, // #304 void() renderscene (EXT_CSQC)
5312VM_CL_R_AddDynamicLight, // #305 void(vector org, float radius, vector lightcolours) adddynamiclight (EXT_CSQC)
5313VM_CL_R_PolygonBegin, // #306 void(string texturename, float flag, float is2d[NYI: , float lines]) R_BeginPolygon
5314VM_CL_R_PolygonVertex, // #307 void(vector org, vector texcoords, vector rgb, float alpha) R_PolygonVertex
5315VM_CL_R_PolygonEnd, // #308 void() R_EndPolygon
5316VM_CL_R_SetView, // #309 float(float property) getproperty (EXT_CSQC)
5317VM_CL_unproject, // #310 vector (vector v) cs_unproject (EXT_CSQC)
5318VM_CL_project, // #311 vector (vector v) cs_project (EXT_CSQC)
5319NULL, // #312
5320NULL, // #313
5321NULL, // #314
5322VM_drawline, // #315 void(float width, vector pos1, vector pos2, float flag) drawline (EXT_CSQC)
5323VM_iscachedpic, // #316 float(string name) iscachedpic (EXT_CSQC)
5324VM_precache_pic, // #317 string(string name, float trywad) precache_pic (EXT_CSQC)
5325VM_getimagesize, // #318 vector(string picname) draw_getimagesize (EXT_CSQC)
5326VM_freepic, // #319 void(string name) freepic (EXT_CSQC)
5327VM_drawcharacter, // #320 float(vector position, float character, vector scale, vector rgb, float alpha, float flag) drawcharacter (EXT_CSQC)
5328VM_drawstring, // #321 float(vector position, string text, vector scale, vector rgb, float alpha[, float flag]) drawstring (EXT_CSQC, DP_CSQC)
5329VM_drawpic, // #322 float(vector position, string pic, vector size, vector rgb, float alpha[, float flag]) drawpic (EXT_CSQC)
5330VM_drawfill, // #323 float(vector position, vector size, vector rgb, float alpha, float flag) drawfill (EXT_CSQC)
5331VM_drawsetcliparea, // #324 void(float x, float y, float width, float height) drawsetcliparea
5332VM_drawresetcliparea, // #325 void(void) drawresetcliparea
5333VM_drawcolorcodedstring, // #326 float drawcolorcodedstring(vector position, string text, vector scale, vector rgb, float alpha, float flag) (EXT_CSQC)
5334VM_stringwidth, // #327 // FIXME is this okay?
5335VM_drawsubpic, // #328 // FIXME is this okay?
5336VM_drawrotpic, // #329 // FIXME is this okay?
5337VM_CL_getstatf, // #330 float(float stnum) getstatf (EXT_CSQC)
5338VM_CL_getstati, // #331 float(float stnum) getstati (EXT_CSQC)
5339VM_CL_getstats, // #332 string(float firststnum) getstats (EXT_CSQC)
5340VM_CL_setmodelindex, // #333 void(entity e, float mdlindex) setmodelindex (EXT_CSQC)
5341VM_CL_modelnameforindex, // #334 string(float mdlindex) modelnameforindex (EXT_CSQC)
5342VM_CL_particleeffectnum, // #335 float(string effectname) particleeffectnum (EXT_CSQC)
5343VM_CL_trailparticles, // #336 void(entity ent, float effectnum, vector start, vector end) trailparticles (EXT_CSQC)
5344VM_CL_pointparticles, // #337 void(float effectnum, vector origin [, vector dir, float count]) pointparticles (EXT_CSQC)
5345VM_centerprint, // #338 void(string s, ...) centerprint (EXT_CSQC)
5346VM_print, // #339 void(string s, ...) print (EXT_CSQC, DP_SV_PRINT)
5347VM_keynumtostring, // #340 string(float keynum) keynumtostring (EXT_CSQC)
5348VM_stringtokeynum, // #341 float(string keyname) stringtokeynum (EXT_CSQC)
5349VM_getkeybind, // #342 string(float keynum[, float bindmap]) getkeybind (EXT_CSQC)
5350VM_CL_setcursormode, // #343 void(float usecursor) setcursormode (DP_CSQC)
5351VM_CL_getmousepos, // #344 vector() getmousepos (DP_CSQC)
5352VM_CL_getinputstate, // #345 float(float framenum) getinputstate (EXT_CSQC)
5353VM_CL_setsensitivityscale, // #346 void(float sens) setsensitivityscale (EXT_CSQC)
5354VM_CL_runplayerphysics, // #347 void() runstandardplayerphysics (EXT_CSQC)
5355VM_CL_getplayerkey, // #348 string(float playernum, string keyname) getplayerkeyvalue (EXT_CSQC)
5356VM_CL_isdemo, // #349 float() isdemo (EXT_CSQC)
5357VM_isserver, // #350 float() isserver (EXT_CSQC)
5358VM_CL_setlistener, // #351 void(vector origin, vector forward, vector right, vector up) SetListener (EXT_CSQC)
5359VM_CL_registercmd, // #352 void(string cmdname) registercommand (EXT_CSQC)
5360VM_wasfreed, // #353 float(entity ent) wasfreed (EXT_CSQC) (should be availabe on server too)
5361VM_CL_serverkey, // #354 string(string key) serverkey (EXT_CSQC)
5362VM_CL_videoplaying, // #355
5363VM_findfont, // #356 float(string fontname) loadfont (DP_GFX_FONTS)
5364VM_loadfont, // #357 float(string fontname, string fontmaps, string sizes, float slot) loadfont (DP_GFX_FONTS)
5365VM_CL_loadcubemap, // #358 void(string cubemapname) loadcubemap (DP_GFX_)
5366NULL, // #359
5367VM_CL_ReadByte, // #360 float() ReadByte (EXT_CSQC)
5368VM_CL_ReadChar, // #361 float() ReadChar (EXT_CSQC)
5369VM_CL_ReadShort, // #362 float() ReadShort (EXT_CSQC)
5370VM_CL_ReadLong, // #363 float() ReadLong (EXT_CSQC)
5371VM_CL_ReadCoord, // #364 float() ReadCoord (EXT_CSQC)
5372VM_CL_ReadAngle, // #365 float() ReadAngle (EXT_CSQC)
5373VM_CL_ReadString, // #366 string() ReadString (EXT_CSQC)
5374VM_CL_ReadFloat, // #367 float() ReadFloat (EXT_CSQC)
5375NULL, // #368
5376NULL, // #369
5377NULL, // #370
5378NULL, // #371
5379NULL, // #372
5380NULL, // #373
5381NULL, // #374
5382NULL, // #375
5383NULL, // #376
5384NULL, // #377
5385NULL, // #378
5386NULL, // #379
5387NULL, // #380
5388NULL, // #381
5389NULL, // #382
5390NULL, // #383
5391NULL, // #384
5392NULL, // #385
5393NULL, // #386
5394NULL, // #387
5395NULL, // #388
5396NULL, // #389
5397NULL, // #390
5398NULL, // #391
5399NULL, // #392
5400NULL, // #393
5401NULL, // #394
5402NULL, // #395
5403NULL, // #396
5404NULL, // #397
5405NULL, // #398
5406NULL, // #399
5407// LadyHavoc's range #400-#499
5408VM_CL_copyentity, // #400 void(entity from, entity to) copyentity (DP_QC_COPYENTITY)
5409NULL, // #401 void(entity ent, float colors) setcolor (DP_QC_SETCOLOR)
5410VM_findchain, // #402 entity(.string fld, string match) findchain (DP_QC_FINDCHAIN)
5411VM_findchainfloat, // #403 entity(.float fld, float match) findchainfloat (DP_QC_FINDCHAINFLOAT)
5412VM_CL_effect, // #404 void(vector org, string modelname, float startframe, float endframe, float framerate) effect (DP_SV_EFFECT)
5413VM_CL_te_blood, // #405 void(vector org, vector velocity, float howmany) te_blood (DP_TE_BLOOD)
5414VM_CL_te_bloodshower, // #406 void(vector mincorner, vector maxcorner, float explosionspeed, float howmany) te_bloodshower (DP_TE_BLOODSHOWER)
5415VM_CL_te_explosionrgb, // #407 void(vector org, vector color) te_explosionrgb (DP_TE_EXPLOSIONRGB)
5416VM_CL_te_particlecube, // #408 void(vector mincorner, vector maxcorner, vector vel, float howmany, float color, float gravityflag, float randomveljitter) te_particlecube (DP_TE_PARTICLECUBE)
5417VM_CL_te_particlerain, // #409 void(vector mincorner, vector maxcorner, vector vel, float howmany, float color) te_particlerain (DP_TE_PARTICLERAIN)
5418VM_CL_te_particlesnow, // #410 void(vector mincorner, vector maxcorner, vector vel, float howmany, float color) te_particlesnow (DP_TE_PARTICLESNOW)
5419VM_CL_te_spark, // #411 void(vector org, vector vel, float howmany) te_spark (DP_TE_SPARK)
5420VM_CL_te_gunshotquad, // #412 void(vector org) te_gunshotquad (DP_QUADEFFECTS1)
5421VM_CL_te_spikequad, // #413 void(vector org) te_spikequad (DP_QUADEFFECTS1)
5422VM_CL_te_superspikequad, // #414 void(vector org) te_superspikequad (DP_QUADEFFECTS1)
5423VM_CL_te_explosionquad, // #415 void(vector org) te_explosionquad (DP_QUADEFFECTS1)
5424VM_CL_te_smallflash, // #416 void(vector org) te_smallflash (DP_TE_SMALLFLASH)
5425VM_CL_te_customflash, // #417 void(vector org, float radius, float lifetime, vector color) te_customflash (DP_TE_CUSTOMFLASH)
5426VM_CL_te_gunshot, // #418 void(vector org) te_gunshot (DP_TE_STANDARDEFFECTBUILTINS)
5427VM_CL_te_spike, // #419 void(vector org) te_spike (DP_TE_STANDARDEFFECTBUILTINS)
5428VM_CL_te_superspike, // #420 void(vector org) te_superspike (DP_TE_STANDARDEFFECTBUILTINS)
5429VM_CL_te_explosion, // #421 void(vector org) te_explosion (DP_TE_STANDARDEFFECTBUILTINS)
5430VM_CL_te_tarexplosion, // #422 void(vector org) te_tarexplosion (DP_TE_STANDARDEFFECTBUILTINS)
5431VM_CL_te_wizspike, // #423 void(vector org) te_wizspike (DP_TE_STANDARDEFFECTBUILTINS)
5432VM_CL_te_knightspike, // #424 void(vector org) te_knightspike (DP_TE_STANDARDEFFECTBUILTINS)
5433VM_CL_te_lavasplash, // #425 void(vector org) te_lavasplash (DP_TE_STANDARDEFFECTBUILTINS)
5434VM_CL_te_teleport, // #426 void(vector org) te_teleport (DP_TE_STANDARDEFFECTBUILTINS)
5435VM_CL_te_explosion2, // #427 void(vector org, float colorstart, float colorlength) te_explosion2 (DP_TE_STANDARDEFFECTBUILTINS)
5436VM_CL_te_lightning1, // #428 void(entity own, vector start, vector end) te_lightning1 (DP_TE_STANDARDEFFECTBUILTINS)
5437VM_CL_te_lightning2, // #429 void(entity own, vector start, vector end) te_lightning2 (DP_TE_STANDARDEFFECTBUILTINS)
5438VM_CL_te_lightning3, // #430 void(entity own, vector start, vector end) te_lightning3 (DP_TE_STANDARDEFFECTBUILTINS)
5439VM_CL_te_beam, // #431 void(entity own, vector start, vector end) te_beam (DP_TE_STANDARDEFFECTBUILTINS)
5440VM_vectorvectors, // #432 void(vector dir) vectorvectors (DP_QC_VECTORVECTORS)
5441VM_CL_te_plasmaburn, // #433 void(vector org) te_plasmaburn (DP_TE_PLASMABURN)
5442VM_getsurfacenumpoints, // #434 float(entity e, float s) getsurfacenumpoints (DP_QC_GETSURFACE)
5443VM_getsurfacepoint, // #435 vector(entity e, float s, float n) getsurfacepoint (DP_QC_GETSURFACE)
5444VM_getsurfacenormal, // #436 vector(entity e, float s) getsurfacenormal (DP_QC_GETSURFACE)
5445VM_getsurfacetexture, // #437 string(entity e, float s) getsurfacetexture (DP_QC_GETSURFACE)
5446VM_getsurfacenearpoint, // #438 float(entity e, vector p) getsurfacenearpoint (DP_QC_GETSURFACE)
5447VM_getsurfaceclippedpoint, // #439 vector(entity e, float s, vector p) getsurfaceclippedpoint (DP_QC_GETSURFACE)
5448NULL, // #440 void(entity e, string s) clientcommand (KRIMZON_SV_PARSECLIENTCOMMAND)
5449VM_tokenize, // #441 float(string s) tokenize (KRIMZON_SV_PARSECLIENTCOMMAND)
5450VM_argv, // #442 string(float n) argv (KRIMZON_SV_PARSECLIENTCOMMAND)
5451VM_CL_setattachment, // #443 void(entity e, entity tagentity, string tagname) setattachment (DP_GFX_QUAKE3MODELTAGS)
5452VM_search_begin, // #444 float(string pattern, float caseinsensitive, float quiet) search_begin (DP_QC_FS_SEARCH)
5453VM_search_end, // #445 void(float handle) search_end (DP_QC_FS_SEARCH)
5454VM_search_getsize, // #446 float(float handle) search_getsize (DP_QC_FS_SEARCH)
5455VM_search_getfilename, // #447 string(float handle, float num) search_getfilename (DP_QC_FS_SEARCH)
5456VM_cvar_string, // #448 string(string s) cvar_string (DP_QC_CVAR_STRING)
5457VM_findflags, // #449 entity(entity start, .float fld, float match) findflags (DP_QC_FINDFLAGS)
5458VM_findchainflags, // #450 entity(.float fld, float match) findchainflags (DP_QC_FINDCHAINFLAGS)
5459VM_CL_gettagindex, // #451 float(entity ent, string tagname) gettagindex (DP_QC_GETTAGINFO)
5460VM_CL_gettaginfo, // #452 vector(entity ent, float tagindex) gettaginfo (DP_QC_GETTAGINFO)
5461NULL, // #453 void(entity clent) dropclient (DP_SV_DROPCLIENT)
5462NULL, // #454 entity() spawnclient (DP_SV_BOTCLIENT)
5463NULL, // #455 float(entity clent) clienttype (DP_SV_BOTCLIENT)
5464NULL, // #456 void(float to, string s) WriteUnterminatedString (DP_SV_WRITEUNTERMINATEDSTRING)
5465VM_CL_te_flamejet, // #457 void(vector org, vector vel, float howmany) te_flamejet (DP_TE_FLAMEJET)
5466NULL, // #458
5467VM_ftoe, // #459 entity(float num) entitybyindex (DP_QC_EDICT_NUM)
5468VM_buf_create, // #460 float() buf_create (DP_QC_STRINGBUFFERS)
5469VM_buf_del, // #461 void(float bufhandle) buf_del (DP_QC_STRINGBUFFERS)
5470VM_buf_getsize, // #462 float(float bufhandle) buf_getsize (DP_QC_STRINGBUFFERS)
5471VM_buf_copy, // #463 void(float bufhandle_from, float bufhandle_to) buf_copy (DP_QC_STRINGBUFFERS)
5472VM_buf_sort, // #464 void(float bufhandle, float sortpower, float backward) buf_sort (DP_QC_STRINGBUFFERS)
5473VM_buf_implode, // #465 string(float bufhandle, string glue) buf_implode (DP_QC_STRINGBUFFERS)
5474VM_bufstr_get, // #466 string(float bufhandle, float string_index) bufstr_get (DP_QC_STRINGBUFFERS)
5475VM_bufstr_set, // #467 void(float bufhandle, float string_index, string str) bufstr_set (DP_QC_STRINGBUFFERS)
5476VM_bufstr_add, // #468 float(float bufhandle, string str, float order) bufstr_add (DP_QC_STRINGBUFFERS)
5477VM_bufstr_free, // #469 void(float bufhandle, float string_index) bufstr_free (DP_QC_STRINGBUFFERS)
5478NULL, // #470 void(float index, float type, .void field) SV_AddStat (EXT_CSQC)
5479VM_asin, // #471 float(float s) VM_asin (DP_QC_ASINACOSATANATAN2TAN)
5480VM_acos, // #472 float(float c) VM_acos (DP_QC_ASINACOSATANATAN2TAN)
5481VM_atan, // #473 float(float t) VM_atan (DP_QC_ASINACOSATANATAN2TAN)
5482VM_atan2, // #474 float(float c, float s) VM_atan2 (DP_QC_ASINACOSATANATAN2TAN)
5483VM_tan, // #475 float(float a) VM_tan (DP_QC_ASINACOSATANATAN2TAN)
5484VM_strlennocol, // #476 float(string s) : DRESK - String Length (not counting color codes) (DP_QC_STRINGCOLORFUNCTIONS)
5485VM_strdecolorize, // #477 string(string s) : DRESK - Decolorized String (DP_QC_STRINGCOLORFUNCTIONS)
5486VM_strftime, // #478 string(float uselocaltime, string format, ...) (DP_QC_STRFTIME)
5487VM_tokenizebyseparator, // #479 float(string s) tokenizebyseparator (DP_QC_TOKENIZEBYSEPARATOR)
5488VM_strtolower, // #480 string(string s) VM_strtolower (DP_QC_STRING_CASE_FUNCTIONS)
5489VM_strtoupper, // #481 string(string s) VM_strtoupper (DP_QC_STRING_CASE_FUNCTIONS)
5490VM_cvar_defstring, // #482 string(string s) cvar_defstring (DP_QC_CVAR_DEFSTRING)
5491VM_CL_pointsound, // #483 void(vector origin, string sample, float volume, float attenuation) pointsound (DP_SV_POINTSOUND)
5492VM_strreplace, // #484 string(string search, string replace, string subject) strreplace (DP_QC_STRREPLACE)
5493VM_strireplace, // #485 string(string search, string replace, string subject) strireplace (DP_QC_STRREPLACE)
5494VM_getsurfacepointattribute,// #486 vector(entity e, float s, float n, float a) getsurfacepointattribute
5495VM_gecko_create, // #487 float gecko_create( string name )
5496VM_gecko_destroy, // #488 void gecko_destroy( string name )
5497VM_gecko_navigate, // #489 void gecko_navigate( string name, string URI )
5498VM_gecko_keyevent, // #490 float gecko_keyevent( string name, float key, float eventtype )
5499VM_gecko_movemouse, // #491 void gecko_mousemove( string name, float x, float y )
5500VM_gecko_resize, // #492 void gecko_resize( string name, float w, float h )
5501VM_gecko_get_texture_extent, // #493 vector gecko_get_texture_extent( string name )
5502VM_crc16, // #494 float(float caseinsensitive, string s, ...) crc16 = #494 (DP_QC_CRC16)
5503VM_cvar_type, // #495 float(string name) cvar_type = #495; (DP_QC_CVAR_TYPE)
5504VM_numentityfields, // #496 float() numentityfields = #496; (QP_QC_ENTITYDATA)
5505VM_entityfieldname, // #497 string(float fieldnum) entityfieldname = #497; (DP_QC_ENTITYDATA)
5506VM_entityfieldtype, // #498 float(float fieldnum) entityfieldtype = #498; (DP_QC_ENTITYDATA)
5507VM_getentityfieldstring, // #499 string(float fieldnum, entity ent) getentityfieldstring = #499; (DP_QC_ENTITYDATA)
5508VM_putentityfieldstring, // #500 float(float fieldnum, entity ent, string s) putentityfieldstring = #500; (DP_QC_ENTITYDATA)
5509VM_CL_ReadPicture, // #501 string() ReadPicture = #501;
5510VM_CL_boxparticles, // #502 void(float effectnum, entity own, vector origin_from, vector origin_to, vector dir_from, vector dir_to, float count) boxparticles (DP_CSQC_BOXPARTICLES)
5511VM_whichpack, // #503 string(string) whichpack = #503;
5512VM_CL_GetEntity, // #504 float(float entitynum, float fldnum) getentity = #504; vector(float entitynum, float fldnum) getentityvec = #504;
5513NULL, // #505
5514NULL, // #506
5515NULL, // #507
5516NULL, // #508
5517NULL, // #509
5518VM_uri_escape, // #510 string(string in) uri_escape = #510;
5519VM_uri_unescape, // #511 string(string in) uri_unescape = #511;
5520VM_etof, // #512 float(entity ent) num_for_edict = #512 (DP_QC_NUM_FOR_EDICT)
5521VM_uri_get, // #513 float(string uri, float id, [string post_contenttype, string post_delim, [float buf]]) uri_get = #513; (DP_QC_URI_GET, DP_QC_URI_POST)
5522VM_tokenize_console, // #514 float(string str) tokenize_console = #514; (DP_QC_TOKENIZE_CONSOLE)
5523VM_argv_start_index, // #515 float(float idx) argv_start_index = #515; (DP_QC_TOKENIZE_CONSOLE)
5524VM_argv_end_index, // #516 float(float idx) argv_end_index = #516; (DP_QC_TOKENIZE_CONSOLE)
5525VM_buf_cvarlist, // #517 void(float buf, string prefix, string antiprefix) buf_cvarlist = #517; (DP_QC_STRINGBUFFERS_CVARLIST)
5526VM_cvar_description, // #518 float(string name) cvar_description = #518; (DP_QC_CVAR_DESCRIPTION)
5527VM_gettime, // #519 float(float timer) gettime = #519; (DP_QC_GETTIME)
5528VM_keynumtostring, // #520 string keynumtostring(float keynum)
5529VM_findkeysforcommand, // #521 string findkeysforcommand(string command[, float bindmap])
5530VM_CL_InitParticleSpawner, // #522 void(float max_themes) initparticlespawner (DP_CSQC_SPAWNPARTICLE)
5531VM_CL_ResetParticle, // #523 void() resetparticle (DP_CSQC_SPAWNPARTICLE)
5532VM_CL_ParticleTheme, // #524 void(float theme) particletheme (DP_CSQC_SPAWNPARTICLE)
5533VM_CL_ParticleThemeSave, // #525 void() particlethemesave, void(float theme) particlethemeupdate (DP_CSQC_SPAWNPARTICLE)
5534VM_CL_ParticleThemeFree, // #526 void() particlethemefree (DP_CSQC_SPAWNPARTICLE)
5535VM_CL_SpawnParticle, // #527 float(vector org, vector vel, [float theme]) particle (DP_CSQC_SPAWNPARTICLE)
5536VM_CL_SpawnParticleDelayed, // #528 float(vector org, vector vel, float delay, float collisiondelay, [float theme]) delayedparticle (DP_CSQC_SPAWNPARTICLE)
5537VM_loadfromdata, // #529
5538VM_loadfromfile, // #530
5539VM_CL_setpause, // #531 float(float ispaused) setpause = #531 (DP_CSQC_SETPAUSE)
5540VM_log, // #532
5541VM_getsoundtime, // #533 float(entity e, float channel) getsoundtime = #533; (DP_SND_GETSOUNDTIME)
5542VM_soundlength, // #534 float(string sample) soundlength = #534; (DP_SND_GETSOUNDTIME)
5543VM_buf_loadfile, // #535 float(string filename, float bufhandle) buf_loadfile (DP_QC_STRINGBUFFERS_EXT_WIP)
5544VM_buf_writefile, // #536 float(float filehandle, float bufhandle, float startpos, float numstrings) buf_writefile (DP_QC_STRINGBUFFERS_EXT_WIP)
5545VM_bufstr_find, // #537 float(float bufhandle, string match, float matchrule, float startpos) bufstr_find (DP_QC_STRINGBUFFERS_EXT_WIP)
5546VM_matchpattern, // #538 float(string s, string pattern, float matchrule) matchpattern (DP_QC_STRINGBUFFERS_EXT_WIP)
5547NULL, // #539
5548VM_physics_enable, // #540 void(entity e, float physics_enabled) physics_enable = #540; (DP_PHYSICS_ODE)
5549VM_physics_addforce, // #541 void(entity e, vector force, vector relative_ofs) physics_addforce = #541; (DP_PHYSICS_ODE)
5550VM_physics_addtorque, // #542 void(entity e, vector torque) physics_addtorque = #542; (DP_PHYSICS_ODE)
5551NULL, // #543
5552NULL, // #544
5553NULL, // #545
5554NULL, // #546
5555NULL, // #547
5556NULL, // #548
5557NULL, // #549
5558NULL, // #550
5559NULL, // #551
5560NULL, // #552
5561NULL, // #553
5562NULL, // #554
5563NULL, // #555
5564NULL, // #556
5565NULL, // #557
5566NULL, // #558
5567NULL, // #559
5568NULL, // #560
5569NULL, // #561
5570NULL, // #562
5571NULL, // #563
5572NULL, // #564
5573NULL, // #565
5574VM_CL_findbox, // #566 entity(vector mins, vector maxs) findbox = #566; (DP_QC_FINDBOX)
5575VM_nudgeoutofsolid, // #567 float(entity ent) nudgeoutofsolid = #567; (DP_QC_NUDGEOUTOFSOLID)
5576NULL, // #568
5577NULL, // #569
5578NULL, // #570
5579NULL, // #571
5580NULL, // #572
5581NULL, // #573
5582NULL, // #574
5583NULL, // #575
5584NULL, // #576
5585NULL, // #577
5586NULL, // #578
5587NULL, // #579
5588NULL, // #580
5589NULL, // #581
5590NULL, // #582
5591NULL, // #583
5592NULL, // #584
5593NULL, // #585
5594NULL, // #586
5595NULL, // #587
5596NULL, // #588
5597NULL, // #589
5598NULL, // #590
5599NULL, // #591
5600NULL, // #592
5601NULL, // #593
5602NULL, // #594
5603NULL, // #595
5604NULL, // #596
5605NULL, // #597
5606NULL, // #598
5607NULL, // #599
5608NULL, // #600
5609NULL, // #601
5610NULL, // #602
5611NULL, // #603
5612NULL, // #604
5613VM_callfunction, // #605
5614VM_writetofile, // #606
5615VM_isfunction, // #607
5616NULL, // #608
5617NULL, // #609
5618VM_findkeysforcommand, // #610 string findkeysforcommand(string command[, float bindmap])
5619NULL, // #611
5620NULL, // #612
5621VM_parseentitydata, // #613
5622NULL, // #614
5623NULL, // #615
5624NULL, // #616
5625NULL, // #617
5626NULL, // #618
5627NULL, // #619
5628NULL, // #620
5629NULL, // #621
5630NULL, // #622
5631NULL, // #623
5632VM_CL_getextresponse, // #624 string getextresponse(void)
5633NULL, // #625
5634NULL, // #626
5635VM_sprintf, // #627 string sprintf(string format, ...)
5636VM_getsurfacenumtriangles, // #628 float(entity e, float s) getsurfacenumpoints (DP_QC_GETSURFACETRIANGLE)
5637VM_getsurfacetriangle, // #629 vector(entity e, float s, float n) getsurfacepoint (DP_QC_GETSURFACETRIANGLE)
5638VM_setkeybind, // #630 float(float key, string bind[, float bindmap]) setkeybind
5639VM_getbindmaps, // #631 vector(void) getbindmap
5640VM_setbindmaps, // #632 float(vector bm) setbindmap
5641NULL, // #633
5642NULL, // #634
5643NULL, // #635
5644NULL, // #636
5645NULL, // #637
5646VM_CL_RotateMoves, // #638
5647VM_digest_hex, // #639
5648VM_CL_V_CalcRefdef, // #640 void(entity e) V_CalcRefdef (DP_CSQC_V_CALCREFDEF)
5649NULL, // #641
5650VM_coverage, // #642
5651NULL
5652};
static void VM_CL_spawn(prvm_prog_t *prog)
Definition clvm_cmds.c:264
static void VM_CL_skel_get_bonename(prvm_prog_t *prog)
Definition clvm_cmds.c:4677
static void VM_CL_frameduration(prvm_prog_t *prog)
Definition clvm_cmds.c:4893
static void VM_CL_skel_mul_bones(prvm_prog_t *prog)
Definition clvm_cmds.c:4814
static void VM_CL_skel_find_bone(prvm_prog_t *prog)
Definition clvm_cmds.c:4705
static void VM_CL_skel_get_boneparent(prvm_prog_t *prog)
Definition clvm_cmds.c:4691
static void VM_CL_skel_get_boneabs(prvm_prog_t *prog)
Definition clvm_cmds.c:4741
static void VM_CL_skel_copybones(prvm_prog_t *prog)
Definition clvm_cmds.c:4841
static void VM_CL_skel_get_bonerel(prvm_prog_t *prog)
Definition clvm_cmds.c:4717
static void VM_CL_frameforname(prvm_prog_t *prog)
Definition clvm_cmds.c:4873
static void VM_CL_skel_delete(prvm_prog_t *prog)
Definition clvm_cmds.c:4862
static void VM_CL_skel_get_numbones(prvm_prog_t *prog)
Definition clvm_cmds.c:4666
static void VM_CL_skel_mul_bone(prvm_prog_t *prog)
Definition clvm_cmds.c:4792
static void VM_CL_skel_build(prvm_prog_t *prog)
Definition clvm_cmds.c:4624
static void VM_CL_skel_create(prvm_prog_t *prog)
Definition clvm_cmds.c:4600
static void VM_CL_skel_set_bone(prvm_prog_t *prog)
Definition clvm_cmds.c:4772
void VM_strunzone(prvm_prog_t *prog)
Definition prvm_cmds.c:2642
void VM_vectorvectors(prvm_prog_t *prog)
Definition prvm_cmds.c:3582
void VM_substring(prvm_prog_t *prog)
Definition prvm_cmds.c:2397
void VM_entityfieldname(prvm_prog_t *prog)
Definition prvm_cmds.c:2129
void VM_buf_writefile(prvm_prog_t *prog)
Definition prvm_cmds.c:4401
void VM_getsoundtime(prvm_prog_t *prog)
Definition prvm_cmds.c:2994
void VM_objerror(prvm_prog_t *prog)
Definition prvm_cmds.c:403
void VM_fabs(prvm_prog_t *prog)
Definition prvm_cmds.c:899
void VM_isserver(prvm_prog_t *prog)
Definition prvm_cmds.c:2864
void VM_nudgeoutofsolid(prvm_prog_t *prog)
Definition prvm_cmds.c:5644
void VM_dprint(prvm_prog_t *prog)
Definition prvm_cmds.c:854
void VM_uri_get(prvm_prog_t *prog)
Definition prvm_cmds.c:5427
void VM_chr2str(prvm_prog_t *prog)
Definition prvm_cmds.c:4918
void VM_digest_hex(prvm_prog_t *prog)
Definition prvm_cmds.c:5175
void VM_soundlength(prvm_prog_t *prog)
Definition prvm_cmds.c:3023
void VM_strncmp(prvm_prog_t *prog)
Definition prvm_cmds.c:5127
void VM_strtolower(prvm_prog_t *prog)
Definition prvm_cmds.c:2329
void VM_fgets(prvm_prog_t *prog)
Definition prvm_cmds.c:1996
void VM_physics_addtorque(prvm_prog_t *prog)
Definition prvm_cmds.c:6613
void VM_search_getsize(prvm_prog_t *prog)
Definition prvm_cmds.c:3238
void VM_findkeysforcommand(prvm_prog_t *prog)
Definition prvm_cmds.c:3352
void VM_tan(prvm_prog_t *prog)
Definition prvm_cmds.c:1704
void VM_modulo(prvm_prog_t *prog)
Definition prvm_cmds.c:3116
void VM_sqrt(prvm_prog_t *prog)
Definition prvm_cmds.c:1643
void VM_stov(prvm_prog_t *prog)
Definition prvm_cmds.c:2603
void VM_random(prvm_prog_t *prog)
Definition prvm_cmds.c:611
void VM_gecko_navigate(prvm_prog_t *prog)
Definition prvm_cmds.c:3500
void VM_eprint(prvm_prog_t *prog)
Definition prvm_cmds.c:1494
void VM_bitshift(prvm_prog_t *prog)
Definition prvm_cmds.c:3594
void VM_precache_sound(prvm_prog_t *prog)
Definition prvm_cmds.c:1381
void VM_CL_getextresponse(prvm_prog_t *prog)
Definition prvm_cmds.c:5612
void VM_buf_getsize(prvm_prog_t *prog)
Definition prvm_cmds.c:4016
void VM_getsurfacetexture(prvm_prog_t *prog)
Definition prvm_cmds.c:6416
void VM_search_end(prvm_prog_t *prog)
Definition prvm_cmds.c:3207
void VM_getentityfieldstring(prvm_prog_t *prog)
Definition prvm_cmds.c:2177
void VM_bufstr_get(prvm_prog_t *prog)
Definition prvm_cmds.c:4172
void VM_gecko_movemouse(prvm_prog_t *prog)
Definition prvm_cmds.c:3523
void VM_cvar_type(prvm_prog_t *prog)
Definition prvm_cmds.c:722
void VM_vlen(prvm_prog_t *prog)
Definition prvm_cmds.c:544
void VM_gecko_destroy(prvm_prog_t *prog)
Definition prvm_cmds.c:3489
void VM_physics_addforce(prvm_prog_t *prog)
Definition prvm_cmds.c:6584
void VM_gecko_get_texture_extent(prvm_prog_t *prog)
Definition prvm_cmds.c:3547
void VM_search_getfilename(prvm_prog_t *prog)
Definition prvm_cmds.c:3266
void VM_centerprint(prvm_prog_t *prog)
Definition prvm_cmds.c:499
void VM_coverage(prvm_prog_t *prog)
Definition prvm_cmds.c:6641
void VM_break(prvm_prog_t *prog)
Definition prvm_cmds.c:661
void VM_strlennocol(prvm_prog_t *prog)
Definition prvm_cmds.c:2305
void VM_tokenize(prvm_prog_t *prog)
Definition prvm_cmds.c:2663
void VM_numentityfields(prvm_prog_t *prog)
Definition prvm_cmds.c:2115
void VM_vtos(prvm_prog_t *prog)
Definition prvm_cmds.c:917
void VM_getsurfacenumpoints(prvm_prog_t *prog)
Definition prvm_cmds.c:6282
void VM_argv_start_index(prvm_prog_t *prog)
Definition prvm_cmds.c:2822
void VM_getsurfacepointattribute(prvm_prog_t *prog)
Definition prvm_cmds.c:6326
void VM_setbindmaps(prvm_prog_t *prog)
Definition prvm_cmds.c:3461
void VM_CL_videoplaying(prvm_prog_t *prog)
Definition prvm_cmds.c:5691
void VM_registercvar(prvm_prog_t *prog)
Definition prvm_cmds.c:1736
void VM_uri_unescape(prvm_prog_t *prog)
Definition prvm_cmds.c:5317
void VM_infoget(prvm_prog_t *prog)
Definition prvm_cmds.c:5110
void VM_randomvec(prvm_prog_t *prog)
Definition prvm_cmds.c:1719
void VM_matchpattern(prvm_prog_t *prog)
Definition prvm_cmds.c:4619
void VM_setkeybind(prvm_prog_t *prog)
Definition prvm_cmds.c:3423
void VM_atan2(prvm_prog_t *prog)
Definition prvm_cmds.c:1692
void VM_etos(prvm_prog_t *prog)
Definition prvm_cmds.c:936
void VM_cvar_defstring(prvm_prog_t *prog)
Definition prvm_cmds.c:786
void VM_asin(prvm_prog_t *prog)
Definition prvm_cmds.c:1656
void VM_vectoyaw(prvm_prog_t *prog)
Definition prvm_cmds.c:557
void VM_strlen(prvm_prog_t *prog)
Definition prvm_cmds.c:2265
void VM_strconv(prvm_prog_t *prog)
Definition prvm_cmds.c:5022
void VM_rint(prvm_prog_t *prog)
Definition prvm_cmds.c:1508
void VM_bound(prvm_prog_t *prog)
Definition prvm_cmds.c:1829
void VM_argv_end_index(prvm_prog_t *prog)
Definition prvm_cmds.c:2840
void VM_buf_implode(prvm_prog_t *prog)
Definition prvm_cmds.c:4128
void VM_precache_file(prvm_prog_t *prog)
Definition prvm_cmds.c:1407
void VM_tokenize_console(prvm_prog_t *prog)
Definition prvm_cmds.c:2694
void VM_sprintf(prvm_prog_t *prog)
Definition prvm_cmds.c:5772
void VM_localsound(prvm_prog_t *prog)
Definition prvm_cmds.c:625
void VM_buf_cvarlist(prvm_prog_t *prog)
Definition prvm_cmds.c:4659
void VM_find(prvm_prog_t *prog)
Definition prvm_cmds.c:1110
void VM_stof(prvm_prog_t *prog)
Definition prvm_cmds.c:954
void VM_getsurfacetriangle(prvm_prog_t *prog)
Definition prvm_cmds.c:6512
void VM_fputs(prvm_prog_t *prog)
Definition prvm_cmds.c:2049
void VM_bufstr_add(prvm_prog_t *prog)
Definition prvm_cmds.c:4235
void VM_strdecolorize(prvm_prog_t *prog)
Definition prvm_cmds.c:2282
void VM_uri_escape(prvm_prog_t *prog)
Definition prvm_cmds.c:5284
void VM_findchainflags(prvm_prog_t *prog)
Definition prvm_cmds.c:1334
void VM_writetofile(prvm_prog_t *prog)
Definition prvm_cmds.c:2082
void VM_physics_enable(prvm_prog_t *prog)
Definition prvm_cmds.c:6557
void VM_putentityfieldstring(prvm_prog_t *prog)
Definition prvm_cmds.c:2229
void VM_etof(prvm_prog_t *prog)
Definition prvm_cmds.c:1001
void VM_nextent(prvm_prog_t *prog)
Definition prvm_cmds.c:1556
void VM_parseentitydata(prvm_prog_t *prog)
Definition prvm_cmds.c:3054
void VM_gecko_resize(prvm_prog_t *prog)
Definition prvm_cmds.c:3535
void VM_fclose(prvm_prog_t *prog)
Definition prvm_cmds.c:1963
void VM_ftoe(prvm_prog_t *prog)
Definition prvm_cmds.c:982
void VM_findfloat(prvm_prog_t *prog)
Definition prvm_cmds.c:1155
void VM_strcat(prvm_prog_t *prog)
Definition prvm_cmds.c:2377
void VM_atan(prvm_prog_t *prog)
Definition prvm_cmds.c:1680
void VM_ceil(prvm_prog_t *prog)
Definition prvm_cmds.c:1541
void VM_buf_del(prvm_prog_t *prog)
Definition prvm_cmds.c:3995
void VM_strpad(prvm_prog_t *prog)
Definition prvm_cmds.c:5070
void VM_strtoupper(prvm_prog_t *prog)
Definition prvm_cmds.c:2352
void VM_normalize(prvm_prog_t *prog)
Definition prvm_cmds.c:515
void VM_changeyaw(prvm_prog_t *prog)
Definition prvm_cmds.c:4747
void VM_tokenizebyseparator(prvm_prog_t *prog)
Definition prvm_cmds.c:2738
void VM_getkeybind(prvm_prog_t *prog)
Definition prvm_cmds.c:3402
void VM_getbindmaps(prvm_prog_t *prog)
Definition prvm_cmds.c:3444
void VM_strftime(prvm_prog_t *prog)
Definition prvm_cmds.c:1014
void VM_floor(prvm_prog_t *prog)
Definition prvm_cmds.c:1527
void VM_cos(prvm_prog_t *prog)
Definition prvm_cmds.c:1630
void VM_whichpack(prvm_prog_t *prog)
Definition prvm_cmds.c:5364
void VM_CL_isdemo(prvm_prog_t *prog)
Definition prvm_cmds.c:5684
void VM_buf_sort(prvm_prog_t *prog)
Definition prvm_cmds.c:4093
void VM_bufstr_find(prvm_prog_t *prog)
Definition prvm_cmds.c:4564
void VM_strzone(prvm_prog_t *prog)
Definition prvm_cmds.c:2621
void VM_cvar_set(prvm_prog_t *prog)
Definition prvm_cmds.c:823
void VM_isfunction(prvm_prog_t *prog)
Definition prvm_cmds.c:5745
void VM_argv(prvm_prog_t *prog)
Definition prvm_cmds.c:2804
void VM_strreplace(prvm_prog_t *prog)
Definition prvm_cmds.c:2469
void VM_min(prvm_prog_t *prog)
Definition prvm_cmds.c:1777
void VM_changepitch(prvm_prog_t *prog)
Definition prvm_cmds.c:4805
void VM_checkextension(prvm_prog_t *prog)
Definition prvm_cmds.c:363
void VM_ftos(prvm_prog_t *prog)
Definition prvm_cmds.c:874
void VM_bufstr_set(prvm_prog_t *prog)
Definition prvm_cmds.c:4202
void VM_findflags(prvm_prog_t *prog)
Definition prvm_cmds.c:1294
void VM_getsurfacenumtriangles(prvm_prog_t *prog)
Definition prvm_cmds.c:6497
void VM_acos(prvm_prog_t *prog)
Definition prvm_cmds.c:1668
void VM_loadfromfile(prvm_prog_t *prog)
Definition prvm_cmds.c:3082
void VM_gecko_create(prvm_prog_t *prog)
Definition prvm_cmds.c:3477
void VM_gettime(prvm_prog_t *prog)
Definition prvm_cmds.c:2948
void VM_findchainfloat(prvm_prog_t *prog)
Definition prvm_cmds.c:1248
void VM_findchain(prvm_prog_t *prog)
Definition prvm_cmds.c:1193
void VM_getsurfaceclippedpoint(prvm_prog_t *prog)
Definition prvm_cmds.c:6478
void VM_traceon(prvm_prog_t *prog)
Definition prvm_cmds.c:1466
void VM_strstrofs(prvm_prog_t *prog)
Definition prvm_cmds.c:4872
void VM_fopen(prvm_prog_t *prog)
Definition prvm_cmds.c:1899
void VM_max(prvm_prog_t *prog)
Definition prvm_cmds.c:1803
void VM_bufstr_free(prvm_prog_t *prog)
Definition prvm_cmds.c:4282
void VM_getsurfacepoint(prvm_prog_t *prog)
Definition prvm_cmds.c:6298
void VM_getsurfacenearpoint(prvm_prog_t *prog)
Definition prvm_cmds.c:6428
void VM_buf_copy(prvm_prog_t *prog)
Definition prvm_cmds.c:4039
void VM_cvar_description(prvm_prog_t *prog)
Definition prvm_cmds.c:805
void VM_search_begin(prvm_prog_t *prog)
Definition prvm_cmds.c:3161
void VM_crc16(prvm_prog_t *prog)
Definition prvm_cmds.c:5162
void VM_stringtokeynum(prvm_prog_t *prog)
Definition prvm_cmds.c:3388
void VM_remove(prvm_prog_t *prog)
Definition prvm_cmds.c:1080
void VM_error(prvm_prog_t *prog)
Definition prvm_cmds.c:380
void VM_buf_create(prvm_prog_t *prog)
Definition prvm_cmds.c:3964
void VM_str2chr(prvm_prog_t *prog)
Definition prvm_cmds.c:4896
void VM_print(prvm_prog_t *prog)
Definition prvm_cmds.c:425
void VM_cvar(prvm_prog_t *prog)
Definition prvm_cmds.c:700
void VM_cvar_string(prvm_prog_t *prog)
Definition prvm_cmds.c:762
void VM_gecko_keyevent(prvm_prog_t *prog)
Definition prvm_cmds.c:3511
void VM_traceoff(prvm_prog_t *prog)
Definition prvm_cmds.c:1480
void VM_callfunction(prvm_prog_t *prog)
Definition prvm_cmds.c:5705
void VM_infoadd(prvm_prog_t *prog)
Definition prvm_cmds.c:5090
void VM_wasfreed(prvm_prog_t *prog)
Definition prvm_cmds.c:5222
void VM_buf_loadfile(prvm_prog_t *prog)
Definition prvm_cmds.c:4318
void VM_localcmd(prvm_prog_t *prog)
Definition prvm_cmds.c:678
void VM_sin(prvm_prog_t *prog)
Definition prvm_cmds.c:1618
void VM_getsurfacenormal(prvm_prog_t *prog)
Definition prvm_cmds.c:6397
void VM_pow(prvm_prog_t *prog)
Definition prvm_cmds.c:1844
void VM_log(prvm_prog_t *prog)
Definition prvm_cmds.c:1850
void VM_coredump(prvm_prog_t *prog)
Definition prvm_cmds.c:1421
void VM_strireplace(prvm_prog_t *prog)
Definition prvm_cmds.c:2536
void VM_keynumtostring(prvm_prog_t *prog)
Definition prvm_cmds.c:3331
void VM_strncasecmp(prvm_prog_t *prog)
Definition prvm_cmds.c:5145
void VM_loadfromdata(prvm_prog_t *prog)
Definition prvm_cmds.c:3040
void VM_vectoangles(prvm_prog_t *prog)
Definition prvm_cmds.c:586
void VM_entityfieldtype(prvm_prog_t *prog)
Definition prvm_cmds.c:2153

Referenced by CL_VM_Init().

◆ vm_cl_numbuiltins

const int vm_cl_numbuiltins = sizeof(vm_cl_builtins) / sizeof(prvm_builtin_t)

Definition at line 5654 of file clvm_cmds.c.

Referenced by CL_VM_Init().

◆ vmpartspawner