mirror of
https://github.com/nzp-team/fteqw.git
synced 2025-02-17 01:11:18 +00:00
A small consistancy fix
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1578 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
9e89e2273a
commit
ae6390c7a0
1 changed files with 71 additions and 63 deletions
|
@ -270,28 +270,28 @@ areanode_t *CS_CreateAreaNode (int depth, vec3_t mins, vec3_t maxs)
|
||||||
|
|
||||||
ClearLink (&anode->trigger_edicts);
|
ClearLink (&anode->trigger_edicts);
|
||||||
ClearLink (&anode->solid_edicts);
|
ClearLink (&anode->solid_edicts);
|
||||||
|
|
||||||
if (depth == AREA_DEPTH)
|
if (depth == AREA_DEPTH)
|
||||||
{
|
{
|
||||||
anode->axis = -1;
|
anode->axis = -1;
|
||||||
anode->children[0] = anode->children[1] = NULL;
|
anode->children[0] = anode->children[1] = NULL;
|
||||||
return anode;
|
return anode;
|
||||||
}
|
}
|
||||||
|
|
||||||
VectorSubtract (maxs, mins, size);
|
VectorSubtract (maxs, mins, size);
|
||||||
if (size[0] > size[1])
|
if (size[0] > size[1])
|
||||||
anode->axis = 0;
|
anode->axis = 0;
|
||||||
else
|
else
|
||||||
anode->axis = 1;
|
anode->axis = 1;
|
||||||
|
|
||||||
anode->dist = 0.5 * (maxs[anode->axis] + mins[anode->axis]);
|
anode->dist = 0.5 * (maxs[anode->axis] + mins[anode->axis]);
|
||||||
VectorCopy (mins, mins1);
|
VectorCopy (mins, mins1);
|
||||||
VectorCopy (mins, mins2);
|
VectorCopy (mins, mins2);
|
||||||
VectorCopy (maxs, maxs1);
|
VectorCopy (maxs, maxs1);
|
||||||
VectorCopy (maxs, maxs2);
|
VectorCopy (maxs, maxs2);
|
||||||
|
|
||||||
maxs1[anode->axis] = mins2[anode->axis] = anode->dist;
|
maxs1[anode->axis] = mins2[anode->axis] = anode->dist;
|
||||||
|
|
||||||
anode->children[0] = CS_CreateAreaNode (depth+1, mins2, maxs2);
|
anode->children[0] = CS_CreateAreaNode (depth+1, mins2, maxs2);
|
||||||
anode->children[1] = CS_CreateAreaNode (depth+1, mins1, maxs1);
|
anode->children[1] = CS_CreateAreaNode (depth+1, mins1, maxs1);
|
||||||
|
|
||||||
|
@ -378,8 +378,8 @@ static void CS_LinkEdict(csqcedict_t *ent, qboolean touchtriggers)
|
||||||
else
|
else
|
||||||
break; // crosses the node
|
break; // crosses the node
|
||||||
}
|
}
|
||||||
|
|
||||||
// link it in
|
// link it in
|
||||||
|
|
||||||
if (ent->v->solid == SOLID_TRIGGER)
|
if (ent->v->solid == SOLID_TRIGGER)
|
||||||
InsertLinkBefore (&ent->area, &node->trigger_edicts);
|
InsertLinkBefore (&ent->area, &node->trigger_edicts);
|
||||||
|
@ -515,7 +515,7 @@ void CS_CheckVelocity(csqcedict_t *ent)
|
||||||
static void PF_cs_remove (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
static void PF_cs_remove (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
{
|
{
|
||||||
csqcedict_t *ed;
|
csqcedict_t *ed;
|
||||||
|
|
||||||
ed = (csqcedict_t*)G_EDICT(prinst, OFS_PARM0);
|
ed = (csqcedict_t*)G_EDICT(prinst, OFS_PARM0);
|
||||||
|
|
||||||
if (ed->isfree)
|
if (ed->isfree)
|
||||||
|
@ -686,7 +686,7 @@ static qboolean CopyCSQCEdictToEntity(csqcedict_t *in, entity_t *out)
|
||||||
if (i & CSQCRF_NOSHADOW)
|
if (i & CSQCRF_NOSHADOW)
|
||||||
out->flags |= RF_NOSHADOW;
|
out->flags |= RF_NOSHADOW;
|
||||||
}
|
}
|
||||||
|
|
||||||
out->frame = in->v->frame;
|
out->frame = in->v->frame;
|
||||||
out->oldframe = in->v->frame2;
|
out->oldframe = in->v->frame2;
|
||||||
out->lerpfrac = in->v->lerpfrac;
|
out->lerpfrac = in->v->lerpfrac;
|
||||||
|
@ -868,7 +868,7 @@ static void PF_cs_project (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
v[2] = in[2];
|
v[2] = in[2];
|
||||||
v[3] = 1;
|
v[3] = 1;
|
||||||
|
|
||||||
Matrix4_Transform4(mvp, v, tempv);
|
Matrix4_Transform4(mvp, v, tempv);
|
||||||
|
|
||||||
tempv[0] /= tempv[3];
|
tempv[0] /= tempv[3];
|
||||||
tempv[1] /= tempv[3];
|
tempv[1] /= tempv[3];
|
||||||
|
@ -891,7 +891,7 @@ static void PF_cs_unproject (progfuncs_t *prinst, struct globalvars_s *pr_global
|
||||||
{
|
{
|
||||||
float *in = G_VECTOR(OFS_PARM0);
|
float *in = G_VECTOR(OFS_PARM0);
|
||||||
float *out = G_VECTOR(OFS_RETURN);
|
float *out = G_VECTOR(OFS_RETURN);
|
||||||
|
|
||||||
float v[4], tempv[4];
|
float v[4], tempv[4];
|
||||||
|
|
||||||
out[0] = (out[0]-r_refdef.vrect.x)/r_refdef.vrect.width;
|
out[0] = (out[0]-r_refdef.vrect.x)/r_refdef.vrect.width;
|
||||||
|
@ -902,7 +902,7 @@ static void PF_cs_unproject (progfuncs_t *prinst, struct globalvars_s *pr_global
|
||||||
v[2] = in[2]*2-1;
|
v[2] = in[2]*2-1;
|
||||||
v[3] = 1;
|
v[3] = 1;
|
||||||
|
|
||||||
Matrix4_Transform4(mvpi, v, tempv);
|
Matrix4_Transform4(mvpi, v, tempv);
|
||||||
|
|
||||||
out[0] = tempv[0];
|
out[0] = tempv[0];
|
||||||
out[1] = tempv[1];
|
out[1] = tempv[1];
|
||||||
|
@ -959,7 +959,7 @@ static void PF_R_ClearScene (progfuncs_t *prinst, struct globalvars_s *pr_global
|
||||||
csqc_drawsbar = false;
|
csqc_drawsbar = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
VF_MIN = 1,
|
VF_MIN = 1,
|
||||||
VF_MIN_X = 2,
|
VF_MIN_X = 2,
|
||||||
|
@ -982,6 +982,7 @@ typedef enum
|
||||||
VF_DRAWWORLD = 19,
|
VF_DRAWWORLD = 19,
|
||||||
VF_ENGINESBAR = 20,
|
VF_ENGINESBAR = 20,
|
||||||
VF_DRAWCROSSHAIR = 21,
|
VF_DRAWCROSSHAIR = 21,
|
||||||
|
VF_CARTESIAN_ANGLES = 22,
|
||||||
VF_PERSPECTIVE = 200
|
VF_PERSPECTIVE = 200
|
||||||
} viewflags;
|
} viewflags;
|
||||||
|
|
||||||
|
@ -1003,7 +1004,7 @@ static void PF_R_SetViewFlag(progfuncs_t *prinst, struct globalvars_s *pr_global
|
||||||
case VF_FOVX:
|
case VF_FOVX:
|
||||||
r_refdef.fov_x = *p;
|
r_refdef.fov_x = *p;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VF_FOVY:
|
case VF_FOVY:
|
||||||
r_refdef.fov_y = *p;
|
r_refdef.fov_y = *p;
|
||||||
break;
|
break;
|
||||||
|
@ -1026,7 +1027,11 @@ static void PF_R_SetViewFlag(progfuncs_t *prinst, struct globalvars_s *pr_global
|
||||||
case VF_ANGLES_Z:
|
case VF_ANGLES_Z:
|
||||||
r_refdef.viewangles[parametertype-VF_ANGLES_X] = *p;
|
r_refdef.viewangles[parametertype-VF_ANGLES_X] = *p;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case VF_CARTESIAN_ANGLES:
|
||||||
|
Con_Printf("^1WARNING: CARTESIAN ANGLES ARE NOT YET SUPPORTED!\n");
|
||||||
|
break;
|
||||||
|
|
||||||
case VF_VIEWPORT:
|
case VF_VIEWPORT:
|
||||||
r_refdef.vrect.x = p[0];
|
r_refdef.vrect.x = p[0];
|
||||||
r_refdef.vrect.y = p[1];
|
r_refdef.vrect.y = p[1];
|
||||||
|
@ -1198,7 +1203,7 @@ static void cs_settracevars(trace_t *tr)
|
||||||
*csqcg.trace_inopen = tr->inopen;
|
*csqcg.trace_inopen = tr->inopen;
|
||||||
VectorCopy (tr->endpos, csqcg.trace_endpos);
|
VectorCopy (tr->endpos, csqcg.trace_endpos);
|
||||||
VectorCopy (tr->plane.normal, csqcg.trace_plane_normal);
|
VectorCopy (tr->plane.normal, csqcg.trace_plane_normal);
|
||||||
*csqcg.trace_plane_dist = tr->plane.dist;
|
*csqcg.trace_plane_dist = tr->plane.dist;
|
||||||
if (tr->ent)
|
if (tr->ent)
|
||||||
*csqcg.trace_ent = EDICT_TO_PROG(csqcprogs, (void*)tr->ent);
|
*csqcg.trace_ent = EDICT_TO_PROG(csqcprogs, (void*)tr->ent);
|
||||||
else
|
else
|
||||||
|
@ -1255,7 +1260,7 @@ static void PF_cs_tracebox(progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
ent->v->hull = 0;
|
ent->v->hull = 0;
|
||||||
trace = CS_Move (v1, mins, maxs, v2, nomonsters, ent);
|
trace = CS_Move (v1, mins, maxs, v2, nomonsters, ent);
|
||||||
ent->v->hull = savedhull;
|
ent->v->hull = savedhull;
|
||||||
|
|
||||||
*csqcg.trace_allsolid = trace.allsolid;
|
*csqcg.trace_allsolid = trace.allsolid;
|
||||||
*csqcg.trace_startsolid = trace.startsolid;
|
*csqcg.trace_startsolid = trace.startsolid;
|
||||||
*csqcg.trace_fraction = trace.fraction;
|
*csqcg.trace_fraction = trace.fraction;
|
||||||
|
@ -1263,7 +1268,7 @@ static void PF_cs_tracebox(progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
*csqcg.trace_inopen = trace.inopen;
|
*csqcg.trace_inopen = trace.inopen;
|
||||||
VectorCopy (trace.endpos, csqcg.trace_endpos);
|
VectorCopy (trace.endpos, csqcg.trace_endpos);
|
||||||
VectorCopy (trace.plane.normal, csqcg.trace_plane_normal);
|
VectorCopy (trace.plane.normal, csqcg.trace_plane_normal);
|
||||||
*csqcg.trace_plane_dist = trace.plane.dist;
|
*csqcg.trace_plane_dist = trace.plane.dist;
|
||||||
if (trace.ent)
|
if (trace.ent)
|
||||||
*csqcg.trace_ent = EDICT_TO_PROG(prinst, (void*)trace.ent);
|
*csqcg.trace_ent = EDICT_TO_PROG(prinst, (void*)trace.ent);
|
||||||
else
|
else
|
||||||
|
@ -1349,7 +1354,7 @@ static void PF_cs_pointcontents(progfuncs_t *prinst, struct globalvars_s *pr_glo
|
||||||
{
|
{
|
||||||
float *v;
|
float *v;
|
||||||
int cont;
|
int cont;
|
||||||
|
|
||||||
v = G_VECTOR(OFS_PARM0);
|
v = G_VECTOR(OFS_PARM0);
|
||||||
|
|
||||||
cont = CS_PointContents(v);
|
cont = CS_PointContents(v);
|
||||||
|
@ -1543,7 +1548,7 @@ static void PF_objerror (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
{
|
{
|
||||||
char *s;
|
char *s;
|
||||||
edict_t *ed;
|
edict_t *ed;
|
||||||
|
|
||||||
s = PF_VarString(prinst, 0, pr_globals);
|
s = PF_VarString(prinst, 0, pr_globals);
|
||||||
/* Con_Printf ("======OBJECT ERROR in %s:\n%s\n", PR_GetString(pr_xfunction->s_name),s);
|
/* Con_Printf ("======OBJECT ERROR in %s:\n%s\n", PR_GetString(pr_xfunction->s_name),s);
|
||||||
*/ ed = PROG_TO_EDICT(prinst, pr_global_struct->self);
|
*/ ed = PROG_TO_EDICT(prinst, pr_global_struct->self);
|
||||||
|
@ -1559,7 +1564,7 @@ static void PF_objerror (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
ED_Free (prinst, ed);
|
ED_Free (prinst, ed);
|
||||||
|
|
||||||
prinst->AbortStack(prinst);
|
prinst->AbortStack(prinst);
|
||||||
|
|
||||||
PR_BIError (prinst, "Program error: %s", s);
|
PR_BIError (prinst, "Program error: %s", s);
|
||||||
|
|
||||||
if (sv.time > 10)
|
if (sv.time > 10)
|
||||||
|
@ -1623,7 +1628,7 @@ static void PF_cs_getinputstate (progfuncs_t *prinst, struct globalvars_s *pr_gl
|
||||||
G_FLOAT(OFS_RETURN) = false;
|
G_FLOAT(OFS_RETURN) = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// save this command off for prediction
|
// save this command off for prediction
|
||||||
cmd = &cl.frames[f&UPDATE_MASK].cmd[plnum];
|
cmd = &cl.frames[f&UPDATE_MASK].cmd[plnum];
|
||||||
|
|
||||||
|
@ -1845,7 +1850,7 @@ static void PF_cs_getplayerkey (progfuncs_t *prinst, struct globalvars_s *pr_glo
|
||||||
csqc_resortfrags = false;
|
csqc_resortfrags = false;
|
||||||
}
|
}
|
||||||
if (pnum >= -scoreboardlines)
|
if (pnum >= -scoreboardlines)
|
||||||
{//sort by
|
{//sort by
|
||||||
pnum = fragsort[-(pnum+1)];
|
pnum = fragsort[-(pnum+1)];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1907,7 +1912,7 @@ void PF_cs_sound(progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
float attenuation;
|
float attenuation;
|
||||||
|
|
||||||
sfx_t *sfx;
|
sfx_t *sfx;
|
||||||
|
|
||||||
entity = (csqcedict_t*)G_EDICT(prinst, OFS_PARM0);
|
entity = (csqcedict_t*)G_EDICT(prinst, OFS_PARM0);
|
||||||
channel = G_FLOAT(OFS_PARM1);
|
channel = G_FLOAT(OFS_PARM1);
|
||||||
sample = PR_GetStringOfs(prinst, OFS_PARM2);
|
sample = PR_GetStringOfs(prinst, OFS_PARM2);
|
||||||
|
@ -2002,7 +2007,7 @@ void PF_cl_ambientsound(progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
float *pos;
|
float *pos;
|
||||||
float vol, attenuation;
|
float vol, attenuation;
|
||||||
|
|
||||||
pos = G_VECTOR (OFS_PARM0);
|
pos = G_VECTOR (OFS_PARM0);
|
||||||
samp = PR_GetStringOfs(prinst, OFS_PARM1);
|
samp = PR_GetStringOfs(prinst, OFS_PARM1);
|
||||||
vol = G_FLOAT(OFS_PARM2);
|
vol = G_FLOAT(OFS_PARM2);
|
||||||
attenuation = G_FLOAT(OFS_PARM3);
|
attenuation = G_FLOAT(OFS_PARM3);
|
||||||
|
@ -2042,7 +2047,7 @@ void PF_cs_changeyaw (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
current = anglemod( ent->v->angles[1] );
|
current = anglemod( ent->v->angles[1] );
|
||||||
ideal = ent->v->ideal_yaw;
|
ideal = ent->v->ideal_yaw;
|
||||||
speed = ent->v->yaw_speed;
|
speed = ent->v->yaw_speed;
|
||||||
|
|
||||||
if (current == ideal)
|
if (current == ideal)
|
||||||
return;
|
return;
|
||||||
move = ideal - current;
|
move = ideal - current;
|
||||||
|
@ -2066,7 +2071,7 @@ void PF_cs_changeyaw (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
if (move < -speed)
|
if (move < -speed)
|
||||||
move = -speed;
|
move = -speed;
|
||||||
}
|
}
|
||||||
|
|
||||||
ent->v->angles[1] = anglemod (current + move);
|
ent->v->angles[1] = anglemod (current + move);
|
||||||
}
|
}
|
||||||
void PF_cs_changepitch (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
void PF_cs_changepitch (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
|
@ -2078,7 +2083,7 @@ void PF_cs_changepitch (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
current = anglemod( ent->v->angles[0] );
|
current = anglemod( ent->v->angles[0] );
|
||||||
ideal = ent->v->ideal_pitch;
|
ideal = ent->v->ideal_pitch;
|
||||||
speed = ent->v->pitch_speed;
|
speed = ent->v->pitch_speed;
|
||||||
|
|
||||||
if (current == ideal)
|
if (current == ideal)
|
||||||
return;
|
return;
|
||||||
move = ideal - current;
|
move = ideal - current;
|
||||||
|
@ -2102,7 +2107,7 @@ void PF_cs_changepitch (progfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
if (move < -speed)
|
if (move < -speed)
|
||||||
move = -speed;
|
move = -speed;
|
||||||
}
|
}
|
||||||
|
|
||||||
ent->v->angles[0] = anglemod (current + move);
|
ent->v->angles[0] = anglemod (current + move);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2127,10 +2132,10 @@ static void PF_cs_findradius (progfuncs_t *prinst, struct globalvars_s *pr_globa
|
||||||
if (ent->v->solid == SOLID_NOT)
|
if (ent->v->solid == SOLID_NOT)
|
||||||
continue;
|
continue;
|
||||||
for (j=0 ; j<3 ; j++)
|
for (j=0 ; j<3 ; j++)
|
||||||
eorg[j] = org[j] - (ent->v->origin[j] + (ent->v->mins[j] + ent->v->maxs[j])*0.5);
|
eorg[j] = org[j] - (ent->v->origin[j] + (ent->v->mins[j] + ent->v->maxs[j])*0.5);
|
||||||
if (Length(eorg) > rad)
|
if (Length(eorg) > rad)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ent->v->chain = EDICT_TO_PROG(prinst, (void*)chain);
|
ent->v->chain = EDICT_TO_PROG(prinst, (void*)chain);
|
||||||
chain = ent;
|
chain = ent;
|
||||||
}
|
}
|
||||||
|
@ -2206,7 +2211,7 @@ static void PF_cl_te_explosion (progfuncs_t *prinst, struct globalvars_s *pr_glo
|
||||||
dl->radius = 150 + bound(0, r_explosionlight.value, 1)*200;
|
dl->radius = 150 + bound(0, r_explosionlight.value, 1)*200;
|
||||||
dl->die = cl.time + 1;
|
dl->die = cl.time + 1;
|
||||||
dl->decay = 300;
|
dl->decay = 300;
|
||||||
|
|
||||||
dl->color[0] = 0.2;
|
dl->color[0] = 0.2;
|
||||||
dl->color[1] = 0.155;
|
dl->color[1] = 0.155;
|
||||||
dl->color[2] = 0.05;
|
dl->color[2] = 0.05;
|
||||||
|
@ -2218,7 +2223,7 @@ static void PF_cl_te_explosion (progfuncs_t *prinst, struct globalvars_s *pr_glo
|
||||||
if (P_RunParticleEffectType(pos, NULL, 1, pt_explosion))
|
if (P_RunParticleEffectType(pos, NULL, 1, pt_explosion))
|
||||||
P_RunParticleEffect(pos, NULL, 107, 1024); // should be 97-111
|
P_RunParticleEffect(pos, NULL, 107, 1024); // should be 97-111
|
||||||
|
|
||||||
R_AddStain(pos, -1, -1, -1, 100);
|
R_AddStain(pos, -1, -1, -1, 100);
|
||||||
|
|
||||||
S_StartSound (-2, 0, cl_sfx_r_exp3, pos, 1, 1);
|
S_StartSound (-2, 0, cl_sfx_r_exp3, pos, 1, 1);
|
||||||
}
|
}
|
||||||
|
@ -2286,7 +2291,7 @@ static void PF_cl_te_explosionquad (progfuncs_t *prinst, struct globalvars_s *pr
|
||||||
if (P_RunParticleEffectType(pos, NULL, 1, pt_explosion))
|
if (P_RunParticleEffectType(pos, NULL, 1, pt_explosion))
|
||||||
P_RunParticleEffect(pos, NULL, 107, 1024); // should be 97-111
|
P_RunParticleEffect(pos, NULL, 107, 1024); // should be 97-111
|
||||||
|
|
||||||
R_AddStain(pos, -1, -1, -1, 100);
|
R_AddStain(pos, -1, -1, -1, 100);
|
||||||
|
|
||||||
// light
|
// light
|
||||||
if (r_explosionlight.value) {
|
if (r_explosionlight.value) {
|
||||||
|
@ -2297,7 +2302,7 @@ static void PF_cl_te_explosionquad (progfuncs_t *prinst, struct globalvars_s *pr
|
||||||
dl->radius = 150 + bound(0, r_explosionlight.value, 1)*200;
|
dl->radius = 150 + bound(0, r_explosionlight.value, 1)*200;
|
||||||
dl->die = cl.time + 1;
|
dl->die = cl.time + 1;
|
||||||
dl->decay = 300;
|
dl->decay = 300;
|
||||||
|
|
||||||
dl->color[0] = 0.2;
|
dl->color[0] = 0.2;
|
||||||
dl->color[1] = 0.155;
|
dl->color[1] = 0.155;
|
||||||
dl->color[2] = 0.05;
|
dl->color[2] = 0.05;
|
||||||
|
@ -2392,14 +2397,14 @@ static void PF_cl_te_explosionrgb (progfuncs_t *prinst, struct globalvars_s *pr_
|
||||||
{
|
{
|
||||||
float *org = G_VECTOR(OFS_PARM0);
|
float *org = G_VECTOR(OFS_PARM0);
|
||||||
float *colour = G_VECTOR(OFS_PARM1);
|
float *colour = G_VECTOR(OFS_PARM1);
|
||||||
|
|
||||||
dlight_t *dl;
|
dlight_t *dl;
|
||||||
|
|
||||||
if (P_RunParticleEffectType(org, NULL, 1, pt_explosion))
|
if (P_RunParticleEffectType(org, NULL, 1, pt_explosion))
|
||||||
P_RunParticleEffect(org, NULL, 107, 1024); // should be 97-111
|
P_RunParticleEffect(org, NULL, 107, 1024); // should be 97-111
|
||||||
|
|
||||||
R_AddStain(org, -1, -1, -1, 100);
|
R_AddStain(org, -1, -1, -1, 100);
|
||||||
|
|
||||||
// light
|
// light
|
||||||
if (r_explosionlight.value)
|
if (r_explosionlight.value)
|
||||||
{
|
{
|
||||||
|
@ -2408,7 +2413,7 @@ static void PF_cl_te_explosionrgb (progfuncs_t *prinst, struct globalvars_s *pr_
|
||||||
dl->radius = 150 + bound(0, r_explosionlight.value, 1)*200;
|
dl->radius = 150 + bound(0, r_explosionlight.value, 1)*200;
|
||||||
dl->die = cl.time + 0.5;
|
dl->die = cl.time + 0.5;
|
||||||
dl->decay = 300;
|
dl->decay = 300;
|
||||||
|
|
||||||
dl->color[0] = 0.4f*colour[0];
|
dl->color[0] = 0.4f*colour[0];
|
||||||
dl->color[1] = 0.4f*colour[1];
|
dl->color[1] = 0.4f*colour[1];
|
||||||
dl->color[2] = 0.4f*colour[2];
|
dl->color[2] = 0.4f*colour[2];
|
||||||
|
@ -2456,7 +2461,7 @@ void CSQC_RunThreads(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ //call it and forget it ever happened. The Sleep biltin will recreate if needed.
|
{ //call it and forget it ever happened. The Sleep biltin will recreate if needed.
|
||||||
|
|
||||||
|
|
||||||
*csqcg.self = EDICT_TO_PROG(csqcprogs, EDICT_NUM(csqcprogs, state->self));
|
*csqcg.self = EDICT_TO_PROG(csqcprogs, EDICT_NUM(csqcprogs, state->self));
|
||||||
*csqcg.other = EDICT_TO_PROG(csqcprogs, EDICT_NUM(csqcprogs, state->other));
|
*csqcg.other = EDICT_TO_PROG(csqcprogs, EDICT_NUM(csqcprogs, state->other));
|
||||||
|
@ -2569,6 +2574,9 @@ void PF_rotatevectorsbytag (progfuncs_t *prinst, struct globalvars_s *pr_globals
|
||||||
float dest[12];
|
float dest[12];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (lerp < 0) lerp = 0;
|
||||||
|
if (lerp > 1) lerp = 1;
|
||||||
|
|
||||||
if (Mod_GetTag)
|
if (Mod_GetTag)
|
||||||
if (Mod_GetTag(mod, tagnum, frame1, frame2, lerp, frame1time, frame2time, transforms))
|
if (Mod_GetTag(mod, tagnum, frame1, frame2, lerp, frame1time, frame2time, transforms))
|
||||||
{
|
{
|
||||||
|
@ -2688,7 +2696,7 @@ qboolean CS_CheckBottom (csqcedict_t *ent)
|
||||||
|
|
||||||
if (!cl.worldmodel)
|
if (!cl.worldmodel)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
VectorAdd (ent->v->origin, ent->v->mins, mins);
|
VectorAdd (ent->v->origin, ent->v->mins, mins);
|
||||||
VectorAdd (ent->v->origin, ent->v->maxs, maxs);
|
VectorAdd (ent->v->origin, ent->v->maxs, maxs);
|
||||||
|
|
||||||
|
@ -2714,7 +2722,7 @@ realcheck:
|
||||||
// check it for real...
|
// check it for real...
|
||||||
//
|
//
|
||||||
start[2] = mins[2];
|
start[2] = mins[2];
|
||||||
|
|
||||||
// the midpoint must be within 16 of the bottom
|
// the midpoint must be within 16 of the bottom
|
||||||
start[0] = stop[0] = (mins[0] + maxs[0])*0.5;
|
start[0] = stop[0] = (mins[0] + maxs[0])*0.5;
|
||||||
start[1] = stop[1] = (mins[1] + maxs[1])*0.5;
|
start[1] = stop[1] = (mins[1] + maxs[1])*0.5;
|
||||||
|
@ -2724,19 +2732,19 @@ realcheck:
|
||||||
if (trace.fraction == 1.0)
|
if (trace.fraction == 1.0)
|
||||||
return false;
|
return false;
|
||||||
mid = bottom = trace.endpos[2];
|
mid = bottom = trace.endpos[2];
|
||||||
|
|
||||||
// the corners must be within 16 of the midpoint
|
// the corners must be within 16 of the midpoint
|
||||||
for (x=0 ; x<=1 ; x++)
|
for (x=0 ; x<=1 ; x++)
|
||||||
for (y=0 ; y<=1 ; y++)
|
for (y=0 ; y<=1 ; y++)
|
||||||
{
|
{
|
||||||
start[0] = stop[0] = x ? maxs[0] : mins[0];
|
start[0] = stop[0] = x ? maxs[0] : mins[0];
|
||||||
start[1] = stop[1] = y ? maxs[1] : mins[1];
|
start[1] = stop[1] = y ? maxs[1] : mins[1];
|
||||||
|
|
||||||
savedhull = ent->v->hull;
|
savedhull = ent->v->hull;
|
||||||
ent->v->hull = 0;
|
ent->v->hull = 0;
|
||||||
trace = CS_Move (start, vec3_origin, vec3_origin, stop, true, ent);
|
trace = CS_Move (start, vec3_origin, vec3_origin, stop, true, ent);
|
||||||
ent->v->hull = savedhull;
|
ent->v->hull = savedhull;
|
||||||
|
|
||||||
if (trace.fraction != 1.0 && trace.endpos[2] > bottom)
|
if (trace.fraction != 1.0 && trace.endpos[2] > bottom)
|
||||||
bottom = trace.endpos[2];
|
bottom = trace.endpos[2];
|
||||||
if (trace.fraction == 1.0 || mid - trace.endpos[2] > pm_stepheight)
|
if (trace.fraction == 1.0 || mid - trace.endpos[2] > pm_stepheight)
|
||||||
|
@ -2771,7 +2779,7 @@ qboolean CS_movestep (csqcedict_t *ent, vec3_t move, qboolean relink, qboolean n
|
||||||
int i;
|
int i;
|
||||||
csqcedict_t *enemy = csqc_edicts;
|
csqcedict_t *enemy = csqc_edicts;
|
||||||
|
|
||||||
// try the move
|
// try the move
|
||||||
VectorCopy (ent->v->origin, oldorg);
|
VectorCopy (ent->v->origin, oldorg);
|
||||||
VectorAdd (ent->v->origin, move, neworg);
|
VectorAdd (ent->v->origin, move, neworg);
|
||||||
|
|
||||||
|
@ -2797,22 +2805,22 @@ qboolean CS_movestep (csqcedict_t *ent, vec3_t move, qboolean relink, qboolean n
|
||||||
trace = CS_Move (ent->v->origin, ent->v->mins, ent->v->maxs, neworg, false, ent);
|
trace = CS_Move (ent->v->origin, ent->v->mins, ent->v->maxs, neworg, false, ent);
|
||||||
if (set_trace)
|
if (set_trace)
|
||||||
cs_settracevars(&trace);
|
cs_settracevars(&trace);
|
||||||
|
|
||||||
if (trace.fraction == 1)
|
if (trace.fraction == 1)
|
||||||
{
|
{
|
||||||
if ( ((int)ent->v->flags & FL_SWIM) && !(CS_PointContents(trace.endpos) & FTECONTENTS_FLUID))
|
if ( ((int)ent->v->flags & FL_SWIM) && !(CS_PointContents(trace.endpos) & FTECONTENTS_FLUID))
|
||||||
return false; // swim monster left water
|
return false; // swim monster left water
|
||||||
|
|
||||||
VectorCopy (trace.endpos, ent->v->origin);
|
VectorCopy (trace.endpos, ent->v->origin);
|
||||||
if (relink)
|
if (relink)
|
||||||
CS_LinkEdict (ent, true);
|
CS_LinkEdict (ent, true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (noenemy || enemy == csqc_edicts)
|
if (noenemy || enemy == csqc_edicts)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2846,16 +2854,16 @@ qboolean CS_movestep (csqcedict_t *ent, vec3_t move, qboolean relink, qboolean n
|
||||||
if (relink)
|
if (relink)
|
||||||
CS_LinkEdict (ent, true);
|
CS_LinkEdict (ent, true);
|
||||||
ent->v->flags = (int)ent->v->flags & ~FL_ONGROUND;
|
ent->v->flags = (int)ent->v->flags & ~FL_ONGROUND;
|
||||||
// Con_Printf ("fall down\n");
|
// Con_Printf ("fall down\n");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false; // walked off an edge
|
return false; // walked off an edge
|
||||||
}
|
}
|
||||||
|
|
||||||
// check point traces down for dangling corners
|
// check point traces down for dangling corners
|
||||||
VectorCopy (trace.endpos, ent->v->origin);
|
VectorCopy (trace.endpos, ent->v->origin);
|
||||||
|
|
||||||
if (!CS_CheckBottom (ent))
|
if (!CS_CheckBottom (ent))
|
||||||
{
|
{
|
||||||
if ( (int)ent->v->flags & FL_PARTIALGROUND )
|
if ( (int)ent->v->flags & FL_PARTIALGROUND )
|
||||||
|
@ -2871,7 +2879,7 @@ qboolean CS_movestep (csqcedict_t *ent, vec3_t move, qboolean relink, qboolean n
|
||||||
|
|
||||||
if ( (int)ent->v->flags & FL_PARTIALGROUND )
|
if ( (int)ent->v->flags & FL_PARTIALGROUND )
|
||||||
{
|
{
|
||||||
// Con_Printf ("back on ground\n");
|
// Con_Printf ("back on ground\n");
|
||||||
ent->v->flags = (int)ent->v->flags & ~FL_PARTIALGROUND;
|
ent->v->flags = (int)ent->v->flags & ~FL_PARTIALGROUND;
|
||||||
}
|
}
|
||||||
ent->v->groundentity = EDICT_TO_PROG(csqcprogs, trace.ent);
|
ent->v->groundentity = EDICT_TO_PROG(csqcprogs, trace.ent);
|
||||||
|
@ -3603,9 +3611,9 @@ qboolean CSQC_Init (unsigned int checksum)
|
||||||
in_sensitivityscale = 1;
|
in_sensitivityscale = 1;
|
||||||
csqcprogs = InitProgs(&csqcprogparms);
|
csqcprogs = InitProgs(&csqcprogparms);
|
||||||
PR_Configure(csqcprogs, -1, 16);
|
PR_Configure(csqcprogs, -1, 16);
|
||||||
|
|
||||||
CSQC_InitFields(); //let the qclib know the field order that the engine needs.
|
CSQC_InitFields(); //let the qclib know the field order that the engine needs.
|
||||||
|
|
||||||
if (PR_LoadProgs(csqcprogs, "csprogs.dat", 0, NULL, 0) < 0) //no per-progs builtins.
|
if (PR_LoadProgs(csqcprogs, "csprogs.dat", 0, NULL, 0) < 0) //no per-progs builtins.
|
||||||
{
|
{
|
||||||
CSQC_Shutdown();
|
CSQC_Shutdown();
|
||||||
|
@ -3624,9 +3632,9 @@ qboolean CSQC_Init (unsigned int checksum)
|
||||||
PF_InitTempStrings(csqcprogs);
|
PF_InitTempStrings(csqcprogs);
|
||||||
|
|
||||||
memset(csqcent, 0, sizeof(*csqcent)*maxcsqcentities); //clear the server->csqc entity translations.
|
memset(csqcent, 0, sizeof(*csqcent)*maxcsqcentities); //clear the server->csqc entity translations.
|
||||||
|
|
||||||
csqcentsize = PR_InitEnts(csqcprogs, pr_csmaxedicts.value);
|
csqcentsize = PR_InitEnts(csqcprogs, pr_csmaxedicts.value);
|
||||||
|
|
||||||
CSQC_FindGlobals();
|
CSQC_FindGlobals();
|
||||||
|
|
||||||
ED_Alloc(csqcprogs); //we need a word entity.
|
ED_Alloc(csqcprogs); //we need a word entity.
|
||||||
|
|
Loading…
Reference in a new issue