rendered paste bodyIndex: src/common/engine/psworld.h===================================================================--- src/common/engine/psworld.h (revision 5651)+++ src/common/engine/psworld.h (working copy)@@ -113,6 +113,9 @@ /// Changes pos according to the warp portal between adjacent sectors from and to. bool WarpSpace(const iSector* from, const iSector* to, csVector3& pos);+ + /// Checks whether 2 sectors are connected via a warp portal.+ bool Connected(const iSector* from, const iSector* to); /// Calculate the distance between two to points either in same or different sectors. float Distance(const csVector3& from_pos, const iSector* from_sector, csVector3 to_pos, const iSector* to_sector);Index: src/common/engine/psworld.cpp===================================================================--- src/common/engine/psworld.cpp (revision 5651)+++ src/common/engine/psworld.cpp (working copy)@@ -166,6 +166,22 @@ return false; // Didn't find transformation, pos not ok. } +bool psWorld::Connected(const iSector* from, const iSector* to)+{+ if (from == to)+ return true;++ int i = engine->GetSectors()->Find((iSector*)from);+ if (i == -1)+ return false;++ csReversibleTransform* transform = transarray[i].Get((iSector*)to);+ if (transform)+ return true;++ return false;+}+ float psWorld::Distance(const csVector3& from_pos, const iSector* from_sector, csVector3 to_pos, const iSector* to_sector) { if (from_sector == to_sector)Index: src/client/zonehandler.cpp===================================================================--- src/client/zonehandler.cpp (revision 5651)+++ src/client/zonehandler.cpp (working copy)@@ -177,7 +177,16 @@ newPos = pos; sectorToLoad = sector;+ + bool connected = false;+ iSector * newsector = psengine->GetEngine()->FindSector(sector);+ iSector * oldsector = NULL;+ if (celclient->GetMainPlayer())+ oldsector = celclient->GetMainPlayer()->GetSector(); + if (oldsector && newsector)+ connected = celclient->GetWorld()->Connected(newsector, oldsector);+ ZoneLoadInfo* zone = FindZone(sectorToLoad); if (zone == NULL) {@@ -204,7 +213,7 @@ // Set load screen if required. if(FindLoadWindow() && psengine->GetLoader()->GetLoadingCount() != 0 &&- (!psengine->BackgroundWorldLoading() || !psengine->HasLoadedMap()))+ (!psengine->BackgroundWorldLoading() || !psengine->HasLoadedMap() || !connected)) { loading = true;