"DP_TE_SMALLFLASH "
"DP_TE_SPARK "
"DP_TE_STANDARDEFFECTBUILTINS "
+"DP_TRACE_HITCONTENTSMASK_SURFACEINFO "
"DP_VIEWZOOM "
"EXT_BITSHIFT "
//"EXT_CSQC " // not ready yet
trace_t trace;
int move;
prvm_edict_t *ent;
+ prvm_eval_t *val;
prog->xfunction->builtinsprofile += 30;
prog->globals.server->trace_ent = PRVM_EDICT_TO_PROG(trace.ent);
else
prog->globals.server->trace_ent = PRVM_EDICT_TO_PROG(prog->edicts);
- // FIXME: add trace_endcontents
+ if ((val = PRVM_GETGLOBALFIELDVALUE(gval_trace_dpstartcontents)))
+ val->_float = trace.startsupercontents;
+ if ((val = PRVM_GETGLOBALFIELDVALUE(gval_trace_dphitcontents)))
+ val->_float = trace.hitsupercontents;
+ if ((val = PRVM_GETGLOBALFIELDVALUE(gval_trace_dphitq3surfaceflags)))
+ val->_float = trace.hitq3surfaceflags;
+ if ((val = PRVM_GETGLOBALFIELDVALUE(gval_trace_dphittexturename)))
+ {
+ if (trace.hittexture)
+ {
+ char *s = VM_GetTempString();
+ strlcpy(s, trace.hittexture->name, VM_STRINGTEMP_LENGTH);
+ val->string = PRVM_SetEngineString(s);
+ }
+ else
+ val->string = 0;
+ }
}
trace_t trace;
int move;
prvm_edict_t *ent;
+ prvm_eval_t *val;
prog->xfunction->builtinsprofile += 30;
prog->globals.server->trace_ent = PRVM_EDICT_TO_PROG(trace.ent);
else
prog->globals.server->trace_ent = PRVM_EDICT_TO_PROG(prog->edicts);
+ if ((val = PRVM_GETGLOBALFIELDVALUE(gval_trace_dpstartcontents)))
+ val->_float = trace.startsupercontents;
+ if ((val = PRVM_GETGLOBALFIELDVALUE(gval_trace_dphitcontents)))
+ val->_float = trace.hitsupercontents;
+ if ((val = PRVM_GETGLOBALFIELDVALUE(gval_trace_dphitq3surfaceflags)))
+ val->_float = trace.hitq3surfaceflags;
+ if ((val = PRVM_GETGLOBALFIELDVALUE(gval_trace_dphittexturename)))
+ {
+ if (trace.hittexture)
+ {
+ char *s = VM_GetTempString();
+ strlcpy(s, trace.hittexture->name, VM_STRINGTEMP_LENGTH);
+ val->string = PRVM_SetEngineString(s);
+ }
+ else
+ val->string = 0;
+ }
}
extern trace_t SV_Trace_Toss (prvm_edict_t *ent, prvm_edict_t *ignore);
trace_t trace;
prvm_edict_t *ent;
prvm_edict_t *ignore;
+ prvm_eval_t *val;
prog->xfunction->builtinsprofile += 600;
prog->globals.server->trace_ent = PRVM_EDICT_TO_PROG(trace.ent);
else
prog->globals.server->trace_ent = PRVM_EDICT_TO_PROG(prog->edicts);
+ if ((val = PRVM_GETGLOBALFIELDVALUE(gval_trace_dpstartcontents)))
+ val->_float = trace.startsupercontents;
+ if ((val = PRVM_GETGLOBALFIELDVALUE(gval_trace_dphitcontents)))
+ val->_float = trace.hitsupercontents;
+ if ((val = PRVM_GETGLOBALFIELDVALUE(gval_trace_dphitq3surfaceflags)))
+ val->_float = trace.hitq3surfaceflags;
+ if ((val = PRVM_GETGLOBALFIELDVALUE(gval_trace_dphittexturename)))
+ {
+ if (trace.hittexture)
+ {
+ char *s = VM_GetTempString();
+ strlcpy(s, trace.hittexture->name, VM_STRINGTEMP_LENGTH);
+ val->string = PRVM_SetEngineString(s);
+ }
+ else
+ val->string = 0;
+ }
}
frame = 0;
return Mod_Alias_GetTagMatrix(model, model->animscenes[frame].firstframe, tagindex, out);
}
- Matrix4x4_CreateIdentity(out);
+ *out = identitymatrix;
return 0;
}
matrix4x4_t entitymatrix, tagmatrix, attachmatrix;
model_t *model;
- Matrix4x4_CreateIdentity(out); // warnings and errors return identical matrix
+ *out = identitymatrix; // warnings and errors return identical matrix
if (ent == prog->edicts)
return 1;
model = sv.models[modelindex];
- Matrix4x4_CreateIdentity(&tagmatrix);
+ tagmatrix = identitymatrix;
// DP_GFX_QUAKE3MODELTAGS, scan all chain and stop on unattached entity
attachloop = 0;
for (;;)
{
prog->xfunction->builtinsprofile += 100;
SV_ConnectClient (i, NULL);
+ // this has to be set or else ClientDisconnect won't be called
+ // we assume the qc will call ClientConnect...
+ svs.clients[i].clientconnectcalled = true;
ed = PRVM_EDICT_NUM(i + 1);
break;
}