Skip to content

Commit

Permalink
Bugfix: Prevent to pre-cache same local models twice and more (Affects
Browse files Browse the repository at this point in the history
  • Loading branch information
s1lentq committed May 22, 2018
1 parent 87a2d17 commit 65c6ce5
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 16 deletions.
2 changes: 0 additions & 2 deletions rehlds/engine/pr_cmds.cpp
Expand Up @@ -1345,7 +1345,6 @@ void EXT_FUNC EV_SV_Playback(int flags, int clientindex, unsigned short eventind
EV_Playback(flags,pEdict, eventindex, delay, origin, angles, fparam1, fparam2, iparam1, iparam2, bparam1, bparam2);
}

#ifdef REHLDS_FIXES
int SV_LookupModelIndex(const char *name)
{
if (!name || !name[0])
Expand All @@ -1369,7 +1368,6 @@ int SV_LookupModelIndex(const char *name)

return 0;
}
#endif // REHLDS_FIXES

int EXT_FUNC PF_precache_model_I(const char *s)
{
Expand Down
1 change: 1 addition & 0 deletions rehlds/engine/pr_cmds.h
Expand Up @@ -79,6 +79,7 @@ void PF_setsize_I(edict_t *e, const float *rgflMin, const float *rgflMax);
void PF_setmodel_I(edict_t *e, const char *m);
int PF_modelindex(const char *pstr);
int ModelFrames(int modelIndex);
int SV_LookupModelIndex(const char *name);
void PF_bprint(char *s);
void PF_sprint(char *s, int entnum);
void ServerPrint(const char *szMsg);
Expand Down
32 changes: 18 additions & 14 deletions rehlds/engine/pr_edict.cpp
Expand Up @@ -271,26 +271,30 @@ char *ED_ParseEdict(char *data, edict_t *ent)
// local model?
if (com_token[0] == '*')
{
// find empty slot
int i;
for (i = 0; i < MAX_MODELS; i++)
// make sure that local model not pre-cached yet
if (!SV_LookupModelIndex(com_token))
{
if (!g_psv.model_precache[i])
break;
}
// find empty slot
int i;
for (i = 0; i < MAX_MODELS; i++)
{
if (!g_psv.model_precache[i])
break;
}

int index = Q_atoi(com_token + 1);
int index = Q_atoi(com_token + 1);

g_psv.model_precache[i] = localmodels[index];
g_psv.models[i] = Mod_ForName(localmodels[index], FALSE, FALSE);
g_psv.model_precache_flags[i] |= RES_FATALIFMISSING;
g_psv.model_precache[i] = localmodels[index];
g_psv.models[i] = Mod_ForName(localmodels[index], FALSE, FALSE);
g_psv.model_precache_flags[i] |= RES_FATALIFMISSING;

#ifdef REHLDS_OPT_PEDANTIC
{
int __itmp = i;
g_rehlds_sv.modelsMap.put(g_psv.model_precache[i], __itmp);
}
{
int __itmp = i;
g_rehlds_sv.modelsMap.put(g_psv.model_precache[i], __itmp);
}
#endif
}
}
}
#endif
Expand Down

0 comments on commit 65c6ce5

Please sign in to comment.