Misc bugfixes, including q3bsp-rtlights and bloom. Matrix use clarifications. Working towards skeletal glsl code.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@3890 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2011-07-30 14:14:56 +00:00
parent 4dba0e3f28
commit 729d6181c2
70 changed files with 2062 additions and 1311 deletions

View file

@ -36,46 +36,47 @@ void ED_Print (struct progfuncs_s *progfuncs, struct edict_s *ed);
int PR_EnableEBFSBuiltin(char *name, int binum);
/*cvars for the gamecode only*/
cvar_t nomonsters = SCVAR("nomonsters", "0");
cvar_t gamecfg = SCVAR("gamecfg", "0");
cvar_t scratch1 = SCVAR("scratch1", "0");
cvar_t scratch2 = SCVAR("scratch2", "0");
cvar_t scratch3 = SCVAR("scratch3", "0");
cvar_t scratch4 = SCVAR("scratch4", "0");
cvar_t savedgamecfg = SCVARF("savedgamecfg", "0", CVAR_ARCHIVE);
cvar_t saved1 = SCVARF("saved1", "0", CVAR_ARCHIVE);
cvar_t saved2 = SCVARF("saved2", "0", CVAR_ARCHIVE);
cvar_t saved3 = SCVARF("saved3", "0", CVAR_ARCHIVE);
cvar_t saved4 = SCVARF("saved4", "0", CVAR_ARCHIVE);
cvar_t temp1 = SCVARF("temp1", "0", CVAR_ARCHIVE);
cvar_t noexit = SCVAR("noexit", "0");
cvar_t nomonsters = CVAR("nomonsters", "0");
cvar_t gamecfg = CVAR("gamecfg", "0");
cvar_t scratch1 = CVAR("scratch1", "0");
cvar_t scratch2 = CVAR("scratch2", "0");
cvar_t scratch3 = CVAR("scratch3", "0");
cvar_t scratch4 = CVAR("scratch4", "0");
cvar_t savedgamecfg = CVARF("savedgamecfg", "0", CVAR_ARCHIVE);
cvar_t saved1 = CVARF("saved1", "0", CVAR_ARCHIVE);
cvar_t saved2 = CVARF("saved2", "0", CVAR_ARCHIVE);
cvar_t saved3 = CVARF("saved3", "0", CVAR_ARCHIVE);
cvar_t saved4 = CVARF("saved4", "0", CVAR_ARCHIVE);
cvar_t temp1 = CVARF("temp1", "0", CVAR_ARCHIVE);
cvar_t noexit = CVAR("noexit", "0");
cvar_t pr_ssqc_memsize = CVAR("pr_ssqc_memsize", "-1");
/*cvars purely for compat with others*/
cvar_t dpcompat_trailparticles = SCVAR("dpcompat_trailparticles", "0");
cvar_t pr_imitatemvdsv = SCVARF("pr_imitatemvdsv", "0", CVAR_LATCH);
cvar_t dpcompat_trailparticles = CVAR("dpcompat_trailparticles", "0");
cvar_t pr_imitatemvdsv = CVARF("pr_imitatemvdsv", "0", CVAR_LATCH);
/*compat with frikqcc's arrays (ensures that unknown fields are at the same offsets*/
cvar_t pr_fixbrokenqccarrays = SCVARF("pr_fixbrokenqccarrays", "1", CVAR_LATCH);
cvar_t pr_fixbrokenqccarrays = CVARF("pr_fixbrokenqccarrays", "1", CVAR_LATCH);
/*other stuff*/
cvar_t pr_maxedicts = SCVARF("pr_maxedicts", "2048", CVAR_LATCH);
cvar_t pr_maxedicts = CVARF("pr_maxedicts", "2048", CVAR_LATCH);
cvar_t pr_no_playerphysics = SCVARF("pr_no_playerphysics", "0", CVAR_LATCH);
cvar_t pr_no_parsecommand = SCVARF("pr_no_parsecommand", "0", 0);
cvar_t pr_no_playerphysics = CVARF("pr_no_playerphysics", "0", CVAR_LATCH);
cvar_t pr_no_parsecommand = CVARF("pr_no_parsecommand", "0", 0);
cvar_t progs = CVARAF("progs", "", "sv_progs", CVAR_ARCHIVE | CVAR_SERVERINFO | CVAR_NOTFROMSERVER);
cvar_t qc_nonetaccess = SCVAR("qc_nonetaccess", "0"); //prevent write_... builtins from doing anything. This means we can run any mod, specific to any engine, on the condition that it also has a qw or nq crc.
cvar_t qc_nonetaccess = CVAR("qc_nonetaccess", "0"); //prevent write_... builtins from doing anything. This means we can run any mod, specific to any engine, on the condition that it also has a qw or nq crc.
cvar_t pr_overridebuiltins = SCVAR("pr_overridebuiltins", "1");
cvar_t pr_overridebuiltins = CVAR("pr_overridebuiltins", "1");
cvar_t pr_compatabilitytest = SCVARF("pr_compatabilitytest", "0", CVAR_LATCH);
cvar_t pr_compatabilitytest = CVARF("pr_compatabilitytest", "0", CVAR_LATCH);
cvar_t pr_ssqc_coreonerror = SCVAR("pr_coreonerror", "1");
cvar_t pr_ssqc_coreonerror = CVAR("pr_coreonerror", "1");
cvar_t pr_droptofloorunits = SCVAR("pr_droptofloorunits", "");
cvar_t pr_droptofloorunits = CVAR("pr_droptofloorunits", "");
cvar_t sv_gameplayfix_honest_tracelines = SCVAR("sv_gameplayfix_honest_tracelines", "1");
cvar_t sv_gameplayfix_blowupfallenzombies = SCVAR("sv_gameplayfix_blowupfallenzombies", "0");
cvar_t sv_gameplayfix_honest_tracelines = CVAR("sv_gameplayfix_honest_tracelines", "1");
cvar_t sv_gameplayfix_blowupfallenzombies = CVAR("sv_gameplayfix_blowupfallenzombies", "0");
extern cvar_t sv_gameplayfix_noairborncorpse;
cvar_t sv_addon[MAXADDONS];
@ -525,6 +526,10 @@ void PR_LoadGlabalStruct(void)
static float dimension_send_default;
static float zero_default;
//static vec3_t vecwriteonly; // 523:16: warning: unused variable vecwriteonly
static float input_buttons_default;
static float input_timelength_default;
static vec3_t input_angles_default;
static vec3_t input_movevalues_default;
int i;
int *v;
nqglobalvars_t *pr_globals = pr_nqglobal_struct;
@ -593,12 +598,17 @@ void PR_LoadGlabalStruct(void)
for (i = 0; i < NUM_SPAWN_PARMS; i++)
spawnparamglobals[i] = (float *)PR_FindGlobal(svprogfuncs, va("parm%i", i+1), 0, NULL);
#define ensurefloat(name,var) if (!((nqglobalvars_t*)pr_globals)->name) ((nqglobalvars_t*)pr_globals)->name = &var;
#define ensureglobal(name,var) if (!((nqglobalvars_t*)pr_globals)->name) ((nqglobalvars_t*)pr_globals)->name = &var;
// make sure these entries are always valid pointers
ensurefloat(dimension_send, dimension_send_default);
ensurefloat(trace_endcontents, writeonly);
ensurefloat(trace_surfaceflags, writeonly);
ensureglobal(dimension_send, dimension_send_default);
ensureglobal(trace_endcontents, writeonly);
ensureglobal(trace_surfaceflags, writeonly);
ensureglobal(input_timelength, input_timelength_default);
ensureglobal(input_angles, input_angles_default);
ensureglobal(input_movevalues, input_movevalues_default);
ensureglobal(input_buttons, input_buttons_default);
// qtest renames and missing variables
if (!((nqglobalvars_t*)pr_globals)->V_trace_plane_normal)
@ -619,16 +629,16 @@ void PR_LoadGlabalStruct(void)
if (!((nqglobalvars_t*)pr_globals)->trace_fraction)
SV_Error("Could not find export trace_fraction in progs\n");
}
ensurefloat(serverflags, zero_default);
ensurefloat(total_secrets, zero_default);
ensurefloat(total_monsters, zero_default);
ensurefloat(found_secrets, zero_default);
ensurefloat(killed_monsters, zero_default);
ensurefloat(trace_allsolid, writeonly);
ensurefloat(trace_startsolid, writeonly);
ensurefloat(trace_plane_dist, writeonly);
ensurefloat(trace_inopen, writeonly);
ensurefloat(trace_inwater, writeonly);
ensureglobal(serverflags, zero_default);
ensureglobal(total_secrets, zero_default);
ensureglobal(total_monsters, zero_default);
ensureglobal(found_secrets, zero_default);
ensureglobal(killed_monsters, zero_default);
ensureglobal(trace_allsolid, writeonly);
ensureglobal(trace_startsolid, writeonly);
ensureglobal(trace_plane_dist, writeonly);
ensureglobal(trace_inopen, writeonly);
ensureglobal(trace_inwater, writeonly);
pr_global_struct->dimension_send = 255;
pr_global_struct->serverflags = 0;
@ -871,7 +881,7 @@ void PR_Decompile_f(void)
if (!svprogfuncs)
{
Q_SetProgsParms(false);
PR_Configure(svprogfuncs, -1, MAX_PROGS);
PR_Configure(svprogfuncs, pr_ssqc_memsize.ival, MAX_PROGS);
}
@ -884,7 +894,7 @@ void PR_Compile_f(void)
{
int argc=3;
double time = Sys_DoubleTime();
char *argv[64] = {"", "-src", "src", "-srcfile", "qwprogs.src"};
char *argv[64] = {"", "-src", "src", "-srcfile", "progs.src"};
if (Cmd_Argc()>2)
{
@ -943,7 +953,7 @@ void PR_ApplyCompilation_f (void)
s = PR_SaveEnts(svprogfuncs, NULL, &len, 1);
PR_Configure(svprogfuncs, -1, MAX_PROGS);
PR_Configure(svprogfuncs, pr_ssqc_memsize.ival, MAX_PROGS);
PR_RegisterFields();
PR_InitEnts(svprogfuncs, sv.world.max_edicts);
@ -1093,6 +1103,7 @@ void PR_Init(void)
Cvar_Register (&pr_overridebuiltins, cvargroup_progs);
Cvar_Register (&pr_ssqc_coreonerror, cvargroup_progs);
Cvar_Register (&pr_ssqc_memsize, cvargroup_progs);
Cvar_Register (&pr_droptofloorunits, cvargroup_progs);
@ -1131,7 +1142,7 @@ void Q_InitProgs(void)
// load progs to get entity field count
PR_Configure(svprogfuncs, -1, MAX_PROGS);
PR_Configure(svprogfuncs, pr_ssqc_memsize.ival, MAX_PROGS);
PR_RegisterFields();
@ -3683,6 +3694,12 @@ static void QCBUILTIN PF_walkmove (progfuncs_t *prinst, struct globalvars_s *pr_
pr_global_struct->self = oldself;
}
void PF_sv_touchtriggers(progfuncs_t *prinst, struct globalvars_s *pr_globals)
{
wedict_t *ent = (wedict_t*)PROG_TO_EDICT(prinst, pr_global_struct->self);
World_LinkEdict (&sv.world, ent, true);
}
/*
===============
PF_droptofloor
@ -4953,6 +4970,8 @@ char *PF_infokey_Internal (int entnum, char *key)
sprintf(ov, "%d", SV_CalcPing (&svs.clients[entnum-1], false));
else if (!strcmp(key, "svping"))
sprintf(ov, "%d", SV_CalcPing (&svs.clients[entnum-1], true));
else if (!strcmp(key, "guid"))
sprintf(ov, "%s", svs.clients[entnum-1].guid);
else if (!strcmp(key, "*userid"))
sprintf(ov, "%d", svs.clients[entnum-1].userid);
else if (!strcmp(key, "download"))
@ -8424,9 +8443,9 @@ qboolean SV_RunFullQCMovement(client_t *client, usercmd_t *ucmd)
if (host_client->state && host_client->protocol != SCP_BAD)
{
sv_player->xv->movement[0] = ucmd->forwardmove * host_frametime;
sv_player->xv->movement[1] = ucmd->sidemove * host_frametime;
sv_player->xv->movement[2] = ucmd->upmove * host_frametime;
sv_player->xv->movement[0] = ucmd->forwardmove;
sv_player->xv->movement[1] = ucmd->sidemove;
sv_player->xv->movement[2] = ucmd->upmove;
}
SV_CheckVelocity(sv_player);
@ -9106,6 +9125,7 @@ BuiltinList_t BuiltinList[] = { //nq qw h2 ebfs
{"frameduration", PF_frameduration, 0, 0, 0, 277},//float(float modidx, float framenum) frameduration = #277 (FTE_CSQC_SKELETONOBJECTS)
{"terrain_edit", PF_sv_terrain_edit, 0, 0, 0, 278},//void(float action, vector pos, float radius, float quant) terrain_edit = #278 (??FTE_TERRAIN_EDIT??
{"touchtriggers", PF_sv_touchtriggers,0, 0, 0, 279},//void() touchtriggers = #279;
//EXT_CSQC
// {"setmodelindex", PF_sv_SetModelIndex,0, 0, 0, 333}, // #333 void(entity e, float mdlindex) setmodelindex (EXT_CSQC)
@ -9470,7 +9490,8 @@ void PR_ResetBuiltins(progstype_t type) //fix all nulls to PF_FIXME and add any
if (type == PROG_QW && pr_imitatemvdsv.value>0) //pretend to be mvdsv for a bit.
{
if (PR_EnableEBFSBuiltin("executecommand", 83) != 83 ||
if (
PR_EnableEBFSBuiltin("executecommand", 83) != 83 ||
PR_EnableEBFSBuiltin("mvdtokenize", 84) != 84 ||
PR_EnableEBFSBuiltin("mvdargc", 85) != 85 ||
PR_EnableEBFSBuiltin("mvdargv", 86) != 86 ||