Re initiate spatial partitions in the main region after a long teleport jump.

Also kill objects in the regions we left behind.
Restore max octree range to 1024 * 1024
This commit is contained in:
Latif Khalifa
2013-09-12 09:42:55 +02:00
parent 5b73586b95
commit c14d46074c
4 changed files with 28 additions and 1 deletions

View File

@@ -1014,7 +1014,7 @@ public:
} }
LLVector4a MAX_MAG; LLVector4a MAX_MAG;
MAX_MAG.splat(2048.f * 2048.f); // Singu note: SVC-2941 FIRE-11593 (original range was 1024 * 1024) MAX_MAG.splat(1024.f * 1024.f);
const LLVector4a& v = data->getPositionGroup(); const LLVector4a& v = data->getPositionGroup();

View File

@@ -4563,6 +4563,21 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
gAgent.getRegion()->getOriginGlobal()); gAgent.getRegion()->getOriginGlobal());
gAgent.setRegion(regionp); gAgent.setRegion(regionp);
gObjectList.shiftObjects(shift_vector); gObjectList.shiftObjects(shift_vector);
// Is this a really long jump?
if (shift_vector.length() > 2048.f * 256.f)
{
regionp->reInitPartitions();
gAgent.setRegion(regionp);
// Kill objects in the regions we left behind
for (LLWorld::region_list_t::const_iterator r = LLWorld::getInstance()->getRegionList().begin();
r != LLWorld::getInstance()->getRegionList().end(); ++r)
{
if (*r != regionp)
{
gObjectList.killObjects(*r);
}
}
}
gAssetStorage->setUpstream(msg->getSender()); gAssetStorage->setUpstream(msg->getSender());
gCacheName->setUpstream(msg->getSender()); gCacheName->setUpstream(msg->getSender());
gViewerThrottle.sendToSim(); gViewerThrottle.sendToSim();

View File

@@ -338,7 +338,11 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,
// Create the object lists // Create the object lists
initStats(); initStats();
initPartitions();
}
void LLViewerRegion::initPartitions()
{
//create object partitions //create object partitions
//MUST MATCH declaration of eObjectPartitions //MUST MATCH declaration of eObjectPartitions
mImpl->mObjectPartition.push_back(new LLHUDPartition()); //PARTITION_HUD mImpl->mObjectPartition.push_back(new LLHUDPartition()); //PARTITION_HUD
@@ -357,6 +361,12 @@ LLViewerRegion::LLViewerRegion(const U64 &handle,
mImpl->mObjectPartition.push_back(NULL); //PARTITION_NONE mImpl->mObjectPartition.push_back(NULL); //PARTITION_NONE
} }
void LLViewerRegion::reInitPartitions()
{
std::for_each(mImpl->mObjectPartition.begin(), mImpl->mObjectPartition.end(), DeletePointer());
mImpl->mObjectPartition.clear();
initPartitions();
}
void LLViewerRegion::initStats() void LLViewerRegion::initStats()
{ {

View File

@@ -369,10 +369,12 @@ public:
}; };
void showReleaseNotes(); void showReleaseNotes();
void reInitPartitions();
protected: protected:
void disconnectAllNeighbors(); void disconnectAllNeighbors();
void initStats(); void initStats();
void initPartitions();
public: public:
LLWind mWind; LLWind mWind;