From a66ee864e7edfabd02b553e7b52f585b7feae3fb Mon Sep 17 00:00:00 2001 From: skyjake Date: Fri, 15 Apr 2011 16:16:10 +0300 Subject: [PATCH] Client: MobjThinker ignores partial/unpredictable clmobjs --- doomsday/engine/api/doomsday.def | 2 +- doomsday/engine/api/doomsday.h | 1 + doomsday/engine/portable/src/cl_mobj.c | 2 +- doomsday/plugins/jdoom/src/p_mobj.c | 9 ++------- 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/doomsday/engine/api/doomsday.def b/doomsday/engine/api/doomsday.def index 8024b2a7e0..4a71706762 100644 --- a/doomsday/engine/api/doomsday.def +++ b/doomsday/engine/api/doomsday.def @@ -3,7 +3,6 @@ NAME "DOOMSDAY" ; Highest ordinal is currently ; --> 448 <-- ; Other free ordinals: -; 43 formerly P_RegisterPlayerControl ; 44 formerly B_FormEventString ; 45 formerly B_BindingsForCommand ; 65 formerly P_GetBlockRootIdx @@ -298,6 +297,7 @@ EXPORTS P_MobjUnlink @67 NONAME P_MobjLinesIterator @71 NONAME P_MobjSectorsIterator @72 NONAME + ClMobj_IsValid @43 NONAME ; Play: Polyobjs. P_PolyobjMove @79 NONAME diff --git a/doomsday/engine/api/doomsday.h b/doomsday/engine/api/doomsday.h index 4a5e6a087b..7cda89bc10 100644 --- a/doomsday/engine/api/doomsday.h +++ b/doomsday/engine/api/doomsday.h @@ -278,6 +278,7 @@ extern "C" { void P_MobjSetState(struct mobj_s* mo, int statenum); void P_MobjLink(struct mobj_s* mo, byte flags); int P_MobjUnlink(struct mobj_s* mo); + boolean ClMobj_IsValid(struct mobj_s* mo); // Mobj linked object iterators. boolean P_MobjLinesIterator(struct mobj_s* mo, diff --git a/doomsday/engine/portable/src/cl_mobj.c b/doomsday/engine/portable/src/cl_mobj.c index f9c8f2f208..984147cc25 100644 --- a/doomsday/engine/portable/src/cl_mobj.c +++ b/doomsday/engine/portable/src/cl_mobj.c @@ -736,7 +736,7 @@ boolean ClMobj_IsValid(mobj_t* mo) { clmoinfo_t* info = ClMobj_GetInfo(mo); - if(!Cl_IsClientMobj(mo)) return false; + if(!Cl_IsClientMobj(mo)) return true; if(info->flags & (CLMF_HIDDEN | CLMF_UNPREDICTABLE)) { // Should not use this for playsim. diff --git a/doomsday/plugins/jdoom/src/p_mobj.c b/doomsday/plugins/jdoom/src/p_mobj.c index 562851a4e9..0db5d6f2ec 100644 --- a/doomsday/plugins/jdoom/src/p_mobj.c +++ b/doomsday/plugins/jdoom/src/p_mobj.c @@ -655,13 +655,8 @@ void P_MobjThinker(mobj_t* mo) if(!mo) return; // Wha? - /* - if(mo->ddFlags & DDMF_REMOTE) - { - Con_Message("P_MobjThinker: mo %i is remote, ignored for now\n", mo->thinker.id); - return; // Remote mobjs are handled separately. - } - */ + if(IS_CLIENT && !ClMobj_IsValid(mo)) + return; // We should not touch this right now. // Spectres get selector = 1. if(mo->type == MT_SHADOWS)