VectorCopy(cl.punchvector, PRVM_clientglobalvector(view_punchvector));
PRVM_clientglobalfloat(maxclients) = cl.maxclients;
+ PRVM_clientglobalfloat(player_localentnum) = cl.viewentity;
+
CSQC_R_RecalcView();
CSQC_END
}
entrender->entitynumber = edictnum + MAX_EDICTS;
//entrender->shadertime = 0; // shadertime was set by spawn()
entrender->flags = 0;
+ entrender->effects = 0;
entrender->alpha = 1;
entrender->scale = 1;
VectorSet(entrender->colormod, 1, 1, 1);
// model light
if (renderflags & RF_MODELLIGHT)
{
- if(PRVM_clientedictvector(ed, modellight_ambient)) VectorCopy(PRVM_clientedictvector(ed, modellight_ambient), entrender->modellight_ambient);
- if(PRVM_clientedictvector(ed, modellight_diffuse)) VectorCopy(PRVM_clientedictvector(ed, modellight_diffuse), entrender->modellight_diffuse);
- if(PRVM_clientedictvector(ed, modellight_dir)) VectorCopy(PRVM_clientedictvector(ed, modellight_dir), entrender->modellight_lightdir);
+ if (PRVM_clientedictvector(ed, modellight_ambient)) VectorCopy(PRVM_clientedictvector(ed, modellight_ambient), entrender->modellight_ambient); else VectorClear(entrender->modellight_ambient);
+ if (PRVM_clientedictvector(ed, modellight_diffuse)) VectorCopy(PRVM_clientedictvector(ed, modellight_diffuse), entrender->modellight_diffuse); else VectorClear(entrender->modellight_diffuse);
+ if (PRVM_clientedictvector(ed, modellight_dir)) VectorCopy(PRVM_clientedictvector(ed, modellight_dir), entrender->modellight_lightdir); else VectorClear(entrender->modellight_lightdir);
entrender->flags |= RENDER_CUSTOMIZEDMODELLIGHT;
}
if(renderflags & RF_WORLDOBJECT) entrender->flags |= RENDER_WORLDOBJECT;
if(renderflags & RF_DEPTHHACK) entrender->flags |= RENDER_NODEPTHTEST;
if(renderflags & RF_ADDITIVE) entrender->flags |= RENDER_ADDITIVE;
+ if(renderflags & RF_DYNAMICMODELLIGHT) entrender->flags |= RENDER_DYNAMICMODELLIGHT;
}
c = (int)PRVM_clientedictfloat(ed, colormap);
entrender->flags |= RENDER_ADDITIVE;
if (entrender->effects & EF_DOUBLESIDED)
entrender->flags |= RENDER_DOUBLESIDED;
+ if (entrender->effects & EF_DYNAMICMODELLIGHT)
+ entrender->flags |= RENDER_DYNAMICMODELLIGHT;
// make the other useful stuff
memcpy(entrender->framegroupblend, ed->priv.server->framegroupblend, sizeof(ed->priv.server->framegroupblend));
CL_UpdateRenderEntity(entrender);
+
// override animation data with full control
memcpy(entrender->frameblend, ed->priv.server->frameblend, sizeof(ed->priv.server->frameblend));
if (ed->priv.server->skeleton.relativetransforms)
PRVM_clientglobaledict(self) = 0;
PRVM_clientglobalstring(mapname) = PRVM_SetEngineString(prog, cl.worldname);
- PRVM_clientglobalfloat(player_localentnum) = cl.playerentity;
+ PRVM_clientglobalfloat(player_localnum) = cl.realplayerentity - 1;
+ PRVM_clientglobalfloat(player_localentnum) = cl.viewentity;
// set map description (use world entity 0)
PRVM_clientedictstring(prog->edicts, message) = PRVM_SetEngineString(prog, cl.worldmessage);
return ret;
}
+
+int CL_VM_GetViewEntity(void)
+{
+ if(cl.csqc_server2csqcentitynumber[cl.viewentity])
+ return cl.csqc_server2csqcentitynumber[cl.viewentity] + MAX_EDICTS;
+ return cl.viewentity;
+}