aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework
diff options
context:
space:
mode:
authorMic Bowman2011-02-22 13:23:54 -0800
committerMic Bowman2011-02-22 13:23:54 -0800
commit5a16fa882c0f1a6200bc3fdb63b0f4564acf0e6d (patch)
tree0021a13a22e089fd373619f3f636199fb636ce95 /OpenSim/Framework
parentGetRegion(s)ByName with SQLite behaves like it does with other databases. (diff)
downloadopensim-SC-5a16fa882c0f1a6200bc3fdb63b0f4564acf0e6d.zip
opensim-SC-5a16fa882c0f1a6200bc3fdb63b0f4564acf0e6d.tar.gz
opensim-SC-5a16fa882c0f1a6200bc3fdb63b0f4564acf0e6d.tar.bz2
opensim-SC-5a16fa882c0f1a6200bc3fdb63b0f4564acf0e6d.tar.xz
Parameterizes the view distance used to compute and manage
child agents in neighbor regions. This means you can extend the view on a simulator beyond the default 3x3 regions. This uses a region default draw distance and should be replaced at some point by the avatar specified draw distance. That will require more careful, dynamic recomputation of child agents every time the draw distance changes. WARNING: this is experimental and has known instabilities. specifically all regions "within site" should be running the same default draw distance or agents will not be closed correctly.
Diffstat (limited to 'OpenSim/Framework')
-rw-r--r--OpenSim/Framework/Util.cs13
1 files changed, 10 insertions, 3 deletions
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs
index 533e53a..5a5046e 100644
--- a/OpenSim/Framework/Util.cs
+++ b/OpenSim/Framework/Util.cs
@@ -459,10 +459,17 @@ namespace OpenSim.Framework
459 /// <param name="oldy">Old region y-coord</param> 459 /// <param name="oldy">Old region y-coord</param>
460 /// <param name="newy">New region y-coord</param> 460 /// <param name="newy">New region y-coord</param>
461 /// <returns></returns> 461 /// <returns></returns>
462 public static bool IsOutsideView(uint oldx, uint newx, uint oldy, uint newy) 462 public static bool IsOutsideView(float drawdist, uint oldx, uint newx, uint oldy, uint newy)
463 { 463 {
464 // Eventually this will be a function of the draw distance / camera position too. 464 int dd = (int)((drawdist + Constants.RegionSize - 1) / Constants.RegionSize);
465 return (((int)Math.Abs((int)(oldx - newx)) > 1) || ((int)Math.Abs((int)(oldy - newy)) > 1)); 465
466 int startX = (int)oldx - dd;
467 int startY = (int)oldy - dd;
468
469 int endX = (int)oldx + dd;
470 int endY = (int)oldy + dd;
471
472 return (newx < startX || endX < newx || newy < startY || endY < newy);
466 } 473 }
467 474
468 public static string FieldToString(byte[] bytes) 475 public static string FieldToString(byte[] bytes)