void CL_FindNonSolidLocation(const vec3_t in, vec3_t out, vec_t radius);
void CSQC_RelinkAllEntities (int drawmask);
void CSQC_RelinkCSQCEntities (void);
-const char *Key_GetBind (int key);
// #1 void(vector ang) makevectors
static void VM_CL_makevectors (void)
}
//#303 float(float property, ...) setproperty (EXT_CSQC)
+//#303 float(float property) getproperty
+//#303 vector(float property) getpropertyvec
+// VorteX: make this function be able to return previously set property if new value is not given
void VM_CL_R_SetView (void)
{
int c;
float *f;
float k;
- VM_SAFEPARMCOUNTRANGE(2, 3, VM_CL_R_SetView);
+ VM_SAFEPARMCOUNTRANGE(1, 3, VM_CL_R_SetView);
c = (int)PRVM_G_FLOAT(OFS_PARM0);
+
+ // return value?
+ if (prog->argc < 2)
+ {
+ switch(c)
+ {
+ case VF_MIN:
+ VectorSet(PRVM_G_VECTOR(OFS_RETURN), r_refdef.view.x, r_refdef.view.y, 0);
+ break;
+ case VF_MIN_X:
+ PRVM_G_FLOAT(OFS_RETURN) = r_refdef.view.x;
+ break;
+ case VF_MIN_Y:
+ PRVM_G_FLOAT(OFS_RETURN) = r_refdef.view.y;
+ break;
+ case VF_SIZE:
+ VectorSet(PRVM_G_VECTOR(OFS_RETURN), r_refdef.view.width, r_refdef.view.height, 0);
+ break;
+ case VF_SIZE_X:
+ PRVM_G_FLOAT(OFS_RETURN) = r_refdef.view.width;
+ break;
+ case VF_SIZE_Y:
+ PRVM_G_FLOAT(OFS_RETURN) = r_refdef.view.height;
+ break;
+ case VF_VIEWPORT:
+ VM_Warning("VM_CL_R_GetView : VF_VIEWPORT can't be retrieved, use VF_MIN/VF_SIZE instead\n");
+ break;
+ case VF_FOV:
+ VectorSet(PRVM_G_VECTOR(OFS_RETURN), r_refdef.view.ortho_x, r_refdef.view.ortho_y, 0);
+ break;
+ case VF_FOVX:
+ PRVM_G_FLOAT(OFS_RETURN) = r_refdef.view.ortho_x;
+ break;
+ case VF_FOVY:
+ PRVM_G_FLOAT(OFS_RETURN) = r_refdef.view.ortho_y;
+ break;
+ case VF_ORIGIN:
+ VectorCopy(cl.csqc_origin, PRVM_G_VECTOR(OFS_RETURN));
+ break;
+ case VF_ORIGIN_X:
+ PRVM_G_FLOAT(OFS_RETURN) = cl.csqc_origin[0];
+ break;
+ case VF_ORIGIN_Y:
+ PRVM_G_FLOAT(OFS_RETURN) = cl.csqc_origin[1];
+ break;
+ case VF_ORIGIN_Z:
+ PRVM_G_FLOAT(OFS_RETURN) = cl.csqc_origin[2];
+ break;
+ case VF_ANGLES:
+ VectorCopy(cl.csqc_angles, PRVM_G_VECTOR(OFS_RETURN));
+ break;
+ case VF_ANGLES_X:
+ PRVM_G_FLOAT(OFS_RETURN) = cl.csqc_angles[0];
+ break;
+ case VF_ANGLES_Y:
+ PRVM_G_FLOAT(OFS_RETURN) = cl.csqc_angles[1];
+ break;
+ case VF_ANGLES_Z:
+ PRVM_G_FLOAT(OFS_RETURN) = cl.csqc_angles[2];
+ break;
+ case VF_DRAWWORLD:
+ PRVM_G_FLOAT(OFS_RETURN) = cl.csqc_vidvars.drawworld;
+ break;
+ case VF_DRAWENGINESBAR:
+ PRVM_G_FLOAT(OFS_RETURN) = cl.csqc_vidvars.drawenginesbar;
+ break;
+ case VF_DRAWCROSSHAIR:
+ PRVM_G_FLOAT(OFS_RETURN) = cl.csqc_vidvars.drawcrosshair;
+ break;
+ case VF_CL_VIEWANGLES:
+ VectorCopy(cl.viewangles, PRVM_G_VECTOR(OFS_RETURN));;
+ break;
+ case VF_CL_VIEWANGLES_X:
+ PRVM_G_FLOAT(OFS_RETURN) = cl.viewangles[0];
+ break;
+ case VF_CL_VIEWANGLES_Y:
+ PRVM_G_FLOAT(OFS_RETURN) = cl.viewangles[1];
+ break;
+ case VF_CL_VIEWANGLES_Z:
+ PRVM_G_FLOAT(OFS_RETURN) = cl.viewangles[2];
+ break;
+ case VF_PERSPECTIVE:
+ PRVM_G_FLOAT(OFS_RETURN) = r_refdef.view.useperspective;
+ break;
+ case VF_CLEARSCREEN:
+ PRVM_G_FLOAT(OFS_RETURN) = r_refdef.view.isoverlay;
+ break;
+ default:
+ PRVM_G_FLOAT(OFS_RETURN) = 0;
+ VM_Warning("VM_CL_R_GetView : unknown parm %i\n", c);
+ return;
+ }
+ return;
+ }
+
f = PRVM_G_VECTOR(OFS_PARM1);
k = PRVM_G_FLOAT(OFS_PARM1);
-
switch(c)
{
case VF_MIN:
cl.csqc_paused = false;
}
-//#342 string(float keynum) getkeybind (EXT_CSQC)
-static void VM_CL_getkeybind (void)
-{
- VM_SAFEPARMCOUNT(1, VM_CL_getkeybind);
- PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(Key_GetBind((int)PRVM_G_FLOAT(OFS_PARM0)));
-}
-
//#343 void(float usecursor) setcursormode (EXT_CSQC)
static void VM_CL_setcursormode (void)
{
// use the attached jpeg as texture
buf = (unsigned char *) Mem_Alloc(tempmempool, size);
MSG_ReadBytes(size, buf);
- data = JPEG_LoadImage_BGRA(buf, size);
+ data = JPEG_LoadImage_BGRA(buf, size, NULL);
Mem_Free(buf);
Draw_NewPic(name, image_width, image_height, false, data);
Mem_Free(data);
PRVM_G_FLOAT(OFS_RETURN) = 0;
if (skeletonindex < 0 || skeletonindex >= MAX_EDICTS || !(skeleton = prog->skeletons[skeletonindex]))
return;
- PRVM_G_FLOAT(OFS_RETURN) = Mod_Alias_GetTagIndexForName(skeleton->model, 0, tagname) + 1;
+ PRVM_G_FLOAT(OFS_RETURN) = Mod_Alias_GetTagIndexForName(skeleton->model, 0, tagname);
}
// #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)
VM_print, // #339 void(string s, ...) print (EXT_CSQC, DP_SV_PRINT)
VM_keynumtostring, // #340 string(float keynum) keynumtostring (EXT_CSQC)
VM_stringtokeynum, // #341 float(string keyname) stringtokeynum (EXT_CSQC)
-VM_CL_getkeybind, // #342 string(float keynum) getkeybind (EXT_CSQC)
+VM_getkeybind, // #342 string(float keynum) getkeybind (EXT_CSQC)
VM_CL_setcursormode, // #343 void(float usecursor) setcursormode (EXT_CSQC)
VM_CL_getmousepos, // #344 vector() getmousepos (EXT_CSQC)
VM_CL_getinputstate, // #345 float(float framenum) getinputstate (EXT_CSQC)
VM_wasfreed, // #353 float(entity ent) wasfreed (EXT_CSQC) (should be availabe on server too)
VM_CL_serverkey, // #354 string(string key) serverkey (EXT_CSQC)
VM_CL_videoplaying, // #355
-NULL, // #356
-NULL, // #357
+VM_findfont, // #356 float(string fontname) loadfont (DP_GFX_FONTS)
+VM_loadfont, // #357 float(string fontname, string fontmaps, string sizes, float slot) loadfont (DP_GFX_FONTS)
NULL, // #358
NULL, // #359
VM_CL_ReadByte, // #360 float() readbyte (EXT_CSQC)