From 4b31f5d1be5737f8c058f6ca4dd77f4f6a762820 Mon Sep 17 00:00:00 2001 From: havoc Date: Thu, 23 Nov 2006 00:06:38 +0000 Subject: [PATCH] added DP_ASINACOSATANATAN2TAN extension which adds common trig functions missing from standard QuakeC git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6622 d7cf8633-e32d-0410-b094-e92efae38249 --- clvm_cmds.c | 13 +++++++++++- mvm_cmds.c | 10 +++++++-- prvm_cmds.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++ prvm_cmds.h | 5 +++++ svvm_cmds.c | 11 +++++----- 5 files changed, 92 insertions(+), 8 deletions(-) diff --git a/clvm_cmds.c b/clvm_cmds.c index 0e5a9e27..4e284d21 100644 --- a/clvm_cmds.c +++ b/clvm_cmds.c @@ -49,6 +49,7 @@ char *vm_cl_extensions = "DP_MONSTERWALK " "DP_MOVETYPEBOUNCEMISSILE " "DP_MOVETYPEFOLLOW " +"DP_QC_ASINACOSATANATAN2TAN " "DP_QC_CHANGEPITCH " "DP_QC_COPYENTITY " "DP_QC_CVAR_STRING " @@ -2722,7 +2723,17 @@ VM_bufstr_get, // #466 string(float bufhandle, float string_index) bufstr_get VM_bufstr_set, // #467 void(float bufhandle, float string_index, string str) bufstr_set (DP_QC_STRINGBUFFERS) VM_bufstr_add, // #468 float(float bufhandle, string str, float order) bufstr_add (DP_QC_STRINGBUFFERS) VM_bufstr_free, // #469 void(float bufhandle, float string_index) bufstr_free (DP_QC_STRINGBUFFERS) -e10, e10, e10 // #470-499 (LordHavoc) +NULL, // #470 +VM_asin, // #471 float(float s) VM_asin (DP_QC_ASINACOSATANATAN2TAN) +VM_acos, // #472 float(float c) VM_acos (DP_QC_ASINACOSATANATAN2TAN) +VM_atan, // #473 float(float t) VM_atan (DP_QC_ASINACOSATANATAN2TAN) +VM_atan2, // #474 float(float c, float s) VM_atan2 (DP_QC_ASINACOSATANATAN2TAN) +VM_tan, // #475 float(float a) VM_tan (DP_QC_ASINACOSATANATAN2TAN) +NULL, // #476 +NULL, // #477 +NULL, // #478 +NULL, // #479 +e10, e10 // #480-499 (LordHavoc) }; const int vm_cl_numbuiltins = sizeof(vm_cl_builtins) / sizeof(prvm_builtin_t); diff --git a/mvm_cmds.c b/mvm_cmds.c index 504760a4..43919655 100644 --- a/mvm_cmds.c +++ b/mvm_cmds.c @@ -4,7 +4,8 @@ // Menu char *vm_m_extensions = -"DP_CINEMATIC_DPV"; +"DP_CINEMATIC_DPV " +"DP_QC_ASINACOSATANATAN2TAN"; /* ========= @@ -910,7 +911,12 @@ prvm_builtin_t vm_m_builtins[] = { VM_cin_restart, // 465 VM_drawline, // 466 0,0,0,0, // 470 - e10, // 480 + VM_asin, // #471 float(float s) VM_asin (DP_QC_ASINACOSATANATAN2TAN) + VM_acos, // #472 float(float c) VM_acos (DP_QC_ASINACOSATANATAN2TAN) + VM_atan, // #473 float(float t) VM_atan (DP_QC_ASINACOSATANATAN2TAN) + VM_atan2, // #474 float(float c, float s) VM_atan2 (DP_QC_ASINACOSATANATAN2TAN) + VM_tan, // #475 float(float a) VM_tan (DP_QC_ASINACOSATANATAN2TAN) + 0,0,0,0,0, // 480 e10, // 490 e10, // 500 e100, // 600 diff --git a/prvm_cmds.c b/prvm_cmds.c index 1f4baee3..bca25737 100644 --- a/prvm_cmds.c +++ b/prvm_cmds.c @@ -1278,6 +1278,67 @@ void VM_sqrt (void) PRVM_G_FLOAT(OFS_RETURN) = sqrt(PRVM_G_FLOAT(OFS_PARM0)); } +/* +========= +VM_asin + +float asin(float) +========= +*/ +void VM_asin (void) +{ + VM_SAFEPARMCOUNT(1,VM_asin); + PRVM_G_FLOAT(OFS_RETURN) = asin(PRVM_G_FLOAT(OFS_PARM0)); +} + +/* +========= +VM_acos +float acos(float) +========= +*/ +void VM_acos (void) +{ + VM_SAFEPARMCOUNT(1,VM_acos); + PRVM_G_FLOAT(OFS_RETURN) = acos(PRVM_G_FLOAT(OFS_PARM0)); +} + +/* +========= +VM_atan +float atan(float) +========= +*/ +void VM_atan (void) +{ + VM_SAFEPARMCOUNT(1,VM_atan); + PRVM_G_FLOAT(OFS_RETURN) = atan(PRVM_G_FLOAT(OFS_PARM0)); +} + +/* +========= +VM_atan2 +float atan2(float,float) +========= +*/ +void VM_atan2 (void) +{ + VM_SAFEPARMCOUNT(2,VM_atan2); + PRVM_G_FLOAT(OFS_RETURN) = atan2(PRVM_G_FLOAT(OFS_PARM0), PRVM_G_FLOAT(OFS_PARM1)); +} + +/* +========= +VM_tan +float tan(float) +========= +*/ +void VM_tan (void) +{ + VM_SAFEPARMCOUNT(1,VM_tan); + PRVM_G_FLOAT(OFS_RETURN) = tan(PRVM_G_FLOAT(OFS_PARM0)); +} + /* ================= VM_randomvec diff --git a/prvm_cmds.h b/prvm_cmds.h index 0404e760..2cc2a890 100644 --- a/prvm_cmds.h +++ b/prvm_cmds.h @@ -270,6 +270,11 @@ void VM_max (void); void VM_bound (void); void VM_pow (void); void VM_copyentity (void); +void VM_asin (void); +void VM_acos (void); +void VM_atan (void); +void VM_atan2 (void); +void VM_tan (void); void VM_Files_Init(void); void VM_Files_CloseAll(void); diff --git a/svvm_cmds.c b/svvm_cmds.c index f8bc0d8a..1bf84cb5 100644 --- a/svvm_cmds.c +++ b/svvm_cmds.c @@ -48,6 +48,7 @@ char *vm_sv_extensions = "DP_MONSTERWALK " "DP_MOVETYPEBOUNCEMISSILE " "DP_MOVETYPEFOLLOW " +"DP_QC_ASINACOSATANATAN2TAN " "DP_QC_CHANGEPITCH " "DP_QC_COPYENTITY " "DP_QC_CVAR_STRING " @@ -2850,11 +2851,11 @@ VM_bufstr_set, // #467 void(float bufhandle, float string_index, string str) VM_bufstr_add, // #468 float(float bufhandle, string str, float order) bufstr_add (DP_QC_STRINGBUFFERS) VM_bufstr_free, // #469 void(float bufhandle, float string_index) bufstr_free (DP_QC_STRINGBUFFERS) PF_SV_AddStat, // #470 void(float index, float type, .void field) SV_AddStat (EXT_CSQC) -NULL, // #471 -NULL, // #472 -NULL, // #473 -NULL, // #474 -NULL, // #475 +VM_asin, // #471 float(float s) VM_asin (DP_QC_ASINACOSATANATAN2TAN) +VM_acos, // #472 float(float c) VM_acos (DP_QC_ASINACOSATANATAN2TAN) +VM_atan, // #473 float(float t) VM_atan (DP_QC_ASINACOSATANATAN2TAN) +VM_atan2, // #474 float(float c, float s) VM_atan2 (DP_QC_ASINACOSATANATAN2TAN) +VM_tan, // #475 float(float a) VM_tan (DP_QC_ASINACOSATANATAN2TAN) NULL, // #476 NULL, // #477 NULL, // #478 -- 2.39.2