From e9624b8cd2d72bb370445a8ee782949575b8b4af Mon Sep 17 00:00:00 2001 From: Daniel Scharrer Date: Mon, 17 Apr 2017 19:14:44 +0200 Subject: [PATCH] ChangeLevel: Resolve linked objects immediately See: issue #375 --- src/scene/ChangeLevel.cpp | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/src/scene/ChangeLevel.cpp b/src/scene/ChangeLevel.cpp index 75dd96d53c..b1ee7c1cfb 100644 --- a/src/scene/ChangeLevel.cpp +++ b/src/scene/ChangeLevel.cpp @@ -2365,9 +2365,9 @@ static Entity * ARX_CHANGELEVEL_Pop_IO(const std::string & idString, EntityInsta io->obj->linked[n].lgroup = ObjVertGroup(ais->linked_data[n].lgroup); io->obj->linked[n].lidx = ActionPoint(ais->linked_data[n].lidx); io->obj->linked[n].lidx2 = ActionPoint(ais->linked_data[n].lidx2); - memcpy(Gaids[Gaids_Number.handleData()]->linked_id[n], ais->linked_data[n].linked_id, SIZE_ID); - io->obj->linked[n].io = NULL; - io->obj->linked[n].obj = NULL; + Entity * iooo = ConvertToValidIO(ais->linked_data[n].linked_id); + io->obj->linked[n].io = iooo; + io->obj->linked[n].obj = iooo ? iooo->obj : NULL; } } } @@ -2471,16 +2471,6 @@ static void ARX_CHANGELEVEL_PopAllIO_FINISH(bool reloadflag, bool firstTime) { } } - if(io->obj && io->obj->linked.size()) { - for(size_t n = 0; n < io->obj->linked.size(); n++) { - Entity * iooo = ConvertToValidIO(aids->linked_id[n]); - if(iooo) { - io->obj->linked[n].io = iooo; - io->obj->linked[n].obj = iooo->obj; - } - } - } - } }