All pastes #1828773 Raw Edit

clueless

public text v1 · immutable
#1828773 ·published 2010-03-08 17:48 UTC
rendered paste body
Index: 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;