aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorMelanie2010-06-09 03:52:24 +0100
committerMelanie2010-06-09 03:52:24 +0100
commit796e9b5cb48f1077f5c6ef85a6b2b0bfe3b907e7 (patch)
tree068bd7280922296c764cccfe05e12dcaadc7bd45 /OpenSim
parentIf a script is deleted before it gets compiled, don't even bother to try (diff)
parentRefactor SendCoarseLocations for better performance. Instead of computing lis... (diff)
downloadopensim-SC-796e9b5cb48f1077f5c6ef85a6b2b0bfe3b907e7.zip
opensim-SC-796e9b5cb48f1077f5c6ef85a6b2b0bfe3b907e7.tar.gz
opensim-SC-796e9b5cb48f1077f5c6ef85a6b2b0bfe3b907e7.tar.bz2
opensim-SC-796e9b5cb48f1077f5c6ef85a6b2b0bfe3b907e7.tar.xz
Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim
Diffstat (limited to '')
-rw-r--r--OpenSim/Data/IXInventoryData.cs2
-rw-r--r--OpenSim/Data/MySQL/Resources/AssetStore.migrations2
-rw-r--r--OpenSim/Data/MySQL/Resources/InventoryStore.migrations8
-rw-r--r--OpenSim/Data/SQLite/Resources/001_XInventoryStore.sql38
-rw-r--r--OpenSim/Data/SQLite/Resources/002_XInventoryStore.sql8
-rw-r--r--OpenSim/Data/SQLite/Resources/005_AssetStore.sql5
-rw-r--r--OpenSim/Data/SQLite/Resources/AssetStore.migrations3
-rw-r--r--OpenSim/Data/SQLite/Resources/XInventoryStore.migrations51
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs2
-rw-r--r--OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs3
-rw-r--r--OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs4
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs24
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs37
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs56
-rw-r--r--OpenSim/Region/RegionCombinerModule/RegionCombinerModule.cs4
-rw-r--r--OpenSim/Services/InventoryService/XInventoryService.cs4
16 files changed, 128 insertions, 123 deletions
diff --git a/OpenSim/Data/IXInventoryData.cs b/OpenSim/Data/IXInventoryData.cs
index 6909136..d85a7ef 100644
--- a/OpenSim/Data/IXInventoryData.cs
+++ b/OpenSim/Data/IXInventoryData.cs
@@ -51,7 +51,7 @@ namespace OpenSim.Data
51 public int inventoryNextPermissions; 51 public int inventoryNextPermissions;
52 public int inventoryCurrentPermissions; 52 public int inventoryCurrentPermissions;
53 public int invType; 53 public int invType;
54 public UUID creatorID; 54 public string creatorID;
55 public int inventoryBasePermissions; 55 public int inventoryBasePermissions;
56 public int inventoryEveryOnePermissions; 56 public int inventoryEveryOnePermissions;
57 public int salePrice; 57 public int salePrice;
diff --git a/OpenSim/Data/MySQL/Resources/AssetStore.migrations b/OpenSim/Data/MySQL/Resources/AssetStore.migrations
index 9c55630..e0526fe 100644
--- a/OpenSim/Data/MySQL/Resources/AssetStore.migrations
+++ b/OpenSim/Data/MySQL/Resources/AssetStore.migrations
@@ -73,5 +73,5 @@ ALTER TABLE assets ADD COLUMN asset_flags INTEGER NOT NULL DEFAULT 0;
73 73
74:VERSION 8 74:VERSION 8
75 75
76ALTER TABLE assets ADD COLUMN CreatorID varchar(36) NOT NULL DEFAULT ''; 76ALTER TABLE assets ADD COLUMN CreatorID varchar(128) NOT NULL DEFAULT '';
77 77
diff --git a/OpenSim/Data/MySQL/Resources/InventoryStore.migrations b/OpenSim/Data/MySQL/Resources/InventoryStore.migrations
index 8c5864e..3e9bad5 100644
--- a/OpenSim/Data/MySQL/Resources/InventoryStore.migrations
+++ b/OpenSim/Data/MySQL/Resources/InventoryStore.migrations
@@ -91,3 +91,11 @@ update inventoryitems set creatorID = '00000000-0000-0000-0000-000000000000' whe
91alter table inventoryitems modify column creatorID varchar(36) not NULL default '00000000-0000-0000-0000-000000000000'; 91alter table inventoryitems modify column creatorID varchar(36) not NULL default '00000000-0000-0000-0000-000000000000';
92 92
93COMMIT; 93COMMIT;
94
95:VERSION 5 # ------------
96
97BEGIN;
98
99alter table inventoryitems modify column creatorID varchar(128) not NULL default '00000000-0000-0000-0000-000000000000';
100
101COMMIT;
diff --git a/OpenSim/Data/SQLite/Resources/001_XInventoryStore.sql b/OpenSim/Data/SQLite/Resources/001_XInventoryStore.sql
deleted file mode 100644
index 7e21996..0000000
--- a/OpenSim/Data/SQLite/Resources/001_XInventoryStore.sql
+++ /dev/null
@@ -1,38 +0,0 @@
1BEGIN TRANSACTION;
2
3CREATE TABLE inventoryfolders(
4 folderName varchar(255),
5 type integer,
6 version integer,
7 folderID varchar(255) primary key,
8 agentID varchar(255) not null default '00000000-0000-0000-0000-000000000000',
9 parentFolderID varchar(255) not null default '00000000-0000-0000-0000-000000000000');
10
11CREATE TABLE inventoryitems(
12 assetID varchar(255),
13 assetType integer,
14 inventoryName varchar(255),
15 inventoryDescription varchar(255),
16 inventoryNextPermissions integer,
17 inventoryCurrentPermissions integer,
18 invType integer,
19 creatorID varchar(255),
20 inventoryBasePermissions integer,
21 inventoryEveryOnePermissions integer,
22 salePrice integer default 99,
23 saleType integer default 0,
24 creationDate integer default 2000,
25 groupID varchar(255) default '00000000-0000-0000-0000-000000000000',
26 groupOwned integer default 0,
27 flags integer default 0,
28 inventoryID varchar(255) primary key,
29 parentFolderID varchar(255) not null default '00000000-0000-0000-0000-000000000000',
30 avatarID varchar(255) not null default '00000000-0000-0000-0000-000000000000',
31 inventoryGroupPermissions integer not null default 0);
32
33create index inventoryfolders_agentid on inventoryfolders(agentID);
34create index inventoryfolders_parentid on inventoryfolders(parentFolderID);
35create index inventoryitems_parentfolderid on inventoryitems(parentFolderID);
36create index inventoryitems_avatarid on inventoryitems(avatarID);
37
38COMMIT;
diff --git a/OpenSim/Data/SQLite/Resources/002_XInventoryStore.sql b/OpenSim/Data/SQLite/Resources/002_XInventoryStore.sql
deleted file mode 100644
index d38e2b7..0000000
--- a/OpenSim/Data/SQLite/Resources/002_XInventoryStore.sql
+++ /dev/null
@@ -1,8 +0,0 @@
1ATTACH 'inventoryStore.db' AS old;
2
3BEGIN TRANSACTION;
4
5INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) SELECT `name` AS folderName, `type` AS type, `version` AS version, `UUID` AS folderID, `agentID` AS agentID, `parentID` AS parentFolderID from old.inventoryfolders;
6INSERT INTO inventoryitems (assetID, assetType, inventoryName, inventoryDescription, inventoryNextPermissions, inventoryCurrentPermissions, invType, creatorID, inventoryBasePermissions, inventoryEveryOnePermissions, salePrice, saleType, creationDate, groupID, groupOwned, flags, inventoryID, parentFolderID, avatarID, inventoryGroupPermissions) SELECT `assetID`, `assetType` AS assetType, `inventoryName` AS inventoryName, `inventoryDescription` AS inventoryDescription, `inventoryNextPermissions` AS inventoryNextPermissions, `inventoryCurrentPermissions` AS inventoryCurrentPermissions, `invType` AS invType, `creatorsID` AS creatorID, `inventoryBasePermissions` AS inventoryBasePermissions, `inventoryEveryOnePermissions` AS inventoryEveryOnePermissions, `salePrice` AS salePrice, `saleType` AS saleType, `creationDate` AS creationDate, `groupID` AS groupID, `groupOwned` AS groupOwned, `flags` AS flags, `UUID` AS inventoryID, `parentFolderID` AS parentFolderID, `avatarID` AS avatarID, `inventoryGroupPermissions` AS inventoryGroupPermissions FROM old.inventoryitems;
7
8COMMIT;
diff --git a/OpenSim/Data/SQLite/Resources/005_AssetStore.sql b/OpenSim/Data/SQLite/Resources/005_AssetStore.sql
deleted file mode 100644
index f06121a..0000000
--- a/OpenSim/Data/SQLite/Resources/005_AssetStore.sql
+++ /dev/null
@@ -1,5 +0,0 @@
1BEGIN;
2
3ALTER TABLE assets ADD COLUMN asset_flags INTEGER NOT NULL DEFAULT 0;
4
5COMMIT;
diff --git a/OpenSim/Data/SQLite/Resources/AssetStore.migrations b/OpenSim/Data/SQLite/Resources/AssetStore.migrations
index bc11e13..f20631c 100644
--- a/OpenSim/Data/SQLite/Resources/AssetStore.migrations
+++ b/OpenSim/Data/SQLite/Resources/AssetStore.migrations
@@ -55,7 +55,7 @@ CREATE TABLE assets(
55 Local, 55 Local,
56 Temporary, 56 Temporary,
57 asset_flags INTEGER NOT NULL DEFAULT 0, 57 asset_flags INTEGER NOT NULL DEFAULT 0,
58 CreatorID varchar(36) default '', 58 CreatorID varchar(128) default '',
59 Data); 59 Data);
60 60
61INSERT INTO assets(UUID,Name,Description,Type,Local,Temporary,Data) 61INSERT INTO assets(UUID,Name,Description,Type,Local,Temporary,Data)
@@ -64,3 +64,4 @@ DROP TABLE assets_backup;
64 64
65COMMIT; 65COMMIT;
66 66
67
diff --git a/OpenSim/Data/SQLite/Resources/XInventoryStore.migrations b/OpenSim/Data/SQLite/Resources/XInventoryStore.migrations
new file mode 100644
index 0000000..d5b3019
--- /dev/null
+++ b/OpenSim/Data/SQLite/Resources/XInventoryStore.migrations
@@ -0,0 +1,51 @@
1:VERSION 1
2
3BEGIN TRANSACTION;
4
5CREATE TABLE inventoryfolders(
6 folderName varchar(64),
7 type integer,
8 version integer,
9 folderID varchar(36) primary key,
10 agentID varchar(36) not null default '00000000-0000-0000-0000-000000000000',
11 parentFolderID varchar(36) not null default '00000000-0000-0000-0000-000000000000');
12
13CREATE TABLE inventoryitems(
14 assetID varchar(36),
15 assetType integer,
16 inventoryName varchar(64),
17 inventoryDescription varchar(128),
18 inventoryNextPermissions integer,
19 inventoryCurrentPermissions integer,
20 invType integer,
21 creatorID varchar(128),
22 inventoryBasePermissions integer,
23 inventoryEveryOnePermissions integer,
24 salePrice integer default 99,
25 saleType integer default 0,
26 creationDate integer default 2000,
27 groupID varchar(36) default '00000000-0000-0000-0000-000000000000',
28 groupOwned integer default 0,
29 flags integer default 0,
30 inventoryID varchar(36) primary key,
31 parentFolderID varchar(36) not null default '00000000-0000-0000-0000-000000000000',
32 avatarID varchar(36) not null default '00000000-0000-0000-0000-000000000000',
33 inventoryGroupPermissions integer not null default 0);
34
35create index inventoryfolders_agentid on inventoryfolders(agentID);
36create index inventoryfolders_parentid on inventoryfolders(parentFolderID);
37create index inventoryitems_parentfolderid on inventoryitems(parentFolderID);
38create index inventoryitems_avatarid on inventoryitems(avatarID);
39
40COMMIT;
41
42:VERSION 2
43
44ATTACH 'inventoryStore.db' AS old;
45
46BEGIN TRANSACTION;
47
48INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) SELECT `name` AS folderName, `type` AS type, `version` AS version, `UUID` AS folderID, `agentID` AS agentID, `parentID` AS parentFolderID from old.inventoryfolders;
49INSERT INTO inventoryitems (assetID, assetType, inventoryName, inventoryDescription, inventoryNextPermissions, inventoryCurrentPermissions, invType, creatorID, inventoryBasePermissions, inventoryEveryOnePermissions, salePrice, saleType, creationDate, groupID, groupOwned, flags, inventoryID, parentFolderID, avatarID, inventoryGroupPermissions) SELECT `assetID`, `assetType` AS assetType, `inventoryName` AS inventoryName, `inventoryDescription` AS inventoryDescription, `inventoryNextPermissions` AS inventoryNextPermissions, `inventoryCurrentPermissions` AS inventoryCurrentPermissions, `invType` AS invType, `creatorsID` AS creatorID, `inventoryBasePermissions` AS inventoryBasePermissions, `inventoryEveryOnePermissions` AS inventoryEveryOnePermissions, `salePrice` AS salePrice, `saleType` AS saleType, `creationDate` AS creationDate, `groupID` AS groupID, `groupOwned` AS groupOwned, `flags` AS flags, `UUID` AS inventoryID, `parentFolderID` AS parentFolderID, `avatarID` AS avatarID, `inventoryGroupPermissions` AS inventoryGroupPermissions FROM old.inventoryitems;
50
51COMMIT; \ No newline at end of file
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 66631b5..fc5bb28 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -3426,7 +3426,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3426 CoarseLocationUpdatePacket loc = (CoarseLocationUpdatePacket)PacketPool.Instance.GetPacket(PacketType.CoarseLocationUpdate); 3426 CoarseLocationUpdatePacket loc = (CoarseLocationUpdatePacket)PacketPool.Instance.GetPacket(PacketType.CoarseLocationUpdate);
3427 loc.Header.Reliable = false; 3427 loc.Header.Reliable = false;
3428 3428
3429 // Each packet can only hold around 62 avatar positions and the client clears the mini-map each time 3429 // Each packet can only hold around 60 avatar positions and the client clears the mini-map each time
3430 // a CoarseLocationUpdate packet is received. Oh well. 3430 // a CoarseLocationUpdate packet is received. Oh well.
3431 int total = Math.Min(CoarseLocations.Count, 60); 3431 int total = Math.Min(CoarseLocations.Count, 60);
3432 3432
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index 1e3e0c9..0707119 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -865,9 +865,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
865 865
866 CrossAttachmentsIntoNewRegion(neighbourRegion, agent, true); 866 CrossAttachmentsIntoNewRegion(neighbourRegion, agent, true);
867 867
868 // m_scene.SendKillObject(m_localId);
869
870 agent.Scene.NotifyMyCoarseLocationChange();
871 // the user may change their profile information in other region, 868 // the user may change their profile information in other region,
872 // so the userinfo in UserProfileCache is not reliable any more, delete it 869 // so the userinfo in UserProfileCache is not reliable any more, delete it
873 // REFACTORING PROBLEM. Well, not a problem, but this method is HORRIBLE! 870 // REFACTORING PROBLEM. Well, not a problem, but this method is HORRIBLE!
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs
index 58ce550..c1e92f5 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGAssetMapper.cs
@@ -95,6 +95,10 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
95 try 95 try
96 { 96 {
97 asset1.ID = url + "/" + asset.ID; 97 asset1.ID = url + "/" + asset.ID;
98 UUID temp = UUID.Zero;
99 // TODO: if the creator is local, stick this grid's URL in front
100 //if (UUID.TryParse(asset.Metadata.CreatorID, out temp))
101 // asset1.Metadata.CreatorID = ??? + "/" + asset.Metadata.CreatorID;
98 } 102 }
99 catch 103 catch
100 { 104 {
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 4e90d09..9a3b0c9 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -348,6 +348,7 @@ namespace OpenSim.Region.Framework.Scenes
348 private int m_update_backup = 200; 348 private int m_update_backup = 200;
349 private int m_update_terrain = 50; 349 private int m_update_terrain = 50;
350 private int m_update_land = 1; 350 private int m_update_land = 1;
351 private int m_update_coarse_locations = 50;
351 352
352 private int frameMS; 353 private int frameMS;
353 private int physicsMS2; 354 private int physicsMS2;
@@ -1417,6 +1418,18 @@ namespace OpenSim.Region.Framework.Scenes
1417 if (m_frame % m_update_presences == 0) 1418 if (m_frame % m_update_presences == 0)
1418 m_sceneGraph.UpdatePresences(); 1419 m_sceneGraph.UpdatePresences();
1419 1420
1421 if (m_frame % m_update_coarse_locations == 0)
1422 {
1423 List<Vector3> coarseLocations;
1424 List<UUID> avatarUUIDs;
1425 SceneGraph.GetCoarseLocations(out coarseLocations, out avatarUUIDs, 60);
1426 // Send coarse locations to clients
1427 ForEachScenePresence(delegate(ScenePresence presence)
1428 {
1429 presence.SendCoarseLocations(coarseLocations, avatarUUIDs);
1430 });
1431 }
1432
1420 int tmpPhysicsMS2 = Util.EnvironmentTickCount(); 1433 int tmpPhysicsMS2 = Util.EnvironmentTickCount();
1421 if ((m_frame % m_update_physics == 0) && m_physics_enabled) 1434 if ((m_frame % m_update_physics == 0) && m_physics_enabled)
1422 m_sceneGraph.UpdatePreparePhysics(); 1435 m_sceneGraph.UpdatePreparePhysics();
@@ -3301,9 +3314,6 @@ namespace OpenSim.Region.Framework.Scenes
3301 catch (NullReferenceException) { } 3314 catch (NullReferenceException) { }
3302 }); 3315 });
3303 3316
3304 ForEachScenePresence(
3305 delegate(ScenePresence presence) { presence.CoarseLocationChange(); });
3306
3307 IAgentAssetTransactions agentTransactions = this.RequestModuleInterface<IAgentAssetTransactions>(); 3317 IAgentAssetTransactions agentTransactions = this.RequestModuleInterface<IAgentAssetTransactions>();
3308 if (agentTransactions != null) 3318 if (agentTransactions != null)
3309 { 3319 {
@@ -3355,14 +3365,6 @@ namespace OpenSim.Region.Framework.Scenes
3355 } 3365 }
3356 } 3366 }
3357 3367
3358 /// <summary>
3359 /// Inform all other ScenePresences on this Scene that someone else has changed position on the minimap.
3360 /// </summary>
3361 public void NotifyMyCoarseLocationChange()
3362 {
3363 ForEachScenePresence(delegate(ScenePresence presence) { presence.CoarseLocationChange(); });
3364 }
3365
3366 #endregion 3368 #endregion
3367 3369
3368 #region Entities 3370 #region Entities
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 5902080..673674d 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -206,6 +206,43 @@ namespace OpenSim.Region.Framework.Scenes
206 }); 206 });
207 } 207 }
208 208
209 public void GetCoarseLocations(out List<Vector3> coarseLocations, out List<UUID> avatarUUIDs, uint maxLocations)
210 {
211 coarseLocations = new List<Vector3>();
212 avatarUUIDs = new List<UUID>();
213
214 List<ScenePresence> presences = GetScenePresences();
215 for (int i = 0; i < Math.Min(presences.Count, maxLocations); ++i)
216 {
217 ScenePresence sp = presences[i];
218 // If this presence is a child agent, we don't want its coarse locations
219 if (sp.IsChildAgent)
220 return;
221
222 if (sp.ParentID != 0)
223 {
224 // sitting avatar
225 SceneObjectPart sop = m_parentScene.GetSceneObjectPart(sp.ParentID);
226 if (sop != null)
227 {
228 coarseLocations.Add(sop.AbsolutePosition + sp.AbsolutePosition);
229 avatarUUIDs.Add(sp.UUID);
230 }
231 else
232 {
233 // we can't find the parent.. ! arg!
234 coarseLocations.Add(sp.AbsolutePosition);
235 avatarUUIDs.Add(sp.UUID);
236 }
237 }
238 else
239 {
240 coarseLocations.Add(sp.AbsolutePosition);
241 avatarUUIDs.Add(sp.UUID);
242 }
243 }
244 }
245
209 #endregion 246 #endregion
210 247
211 #region Entity Methods 248 #region Entity Methods
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 45375b0..15b9446 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -65,7 +65,7 @@ namespace OpenSim.Region.Framework.Scenes
65 public ScriptControlled eventControls; 65 public ScriptControlled eventControls;
66 } 66 }
67 67
68 public delegate void SendCourseLocationsMethod(UUID scene, ScenePresence presence); 68 public delegate void SendCourseLocationsMethod(UUID scene, ScenePresence presence, List<Vector3> coarseLocations, List<UUID> avatarUUIDs);
69 69
70 public class ScenePresence : EntityBase, ISceneEntity 70 public class ScenePresence : EntityBase, ISceneEntity
71 { 71 {
@@ -173,8 +173,6 @@ namespace OpenSim.Region.Framework.Scenes
173 173
174 public string JID = String.Empty; 174 public string JID = String.Empty;
175 175
176 // Agent moves with a PID controller causing a force to be exerted.
177 private bool m_newCoarseLocations = true;
178 private float m_health = 100f; 176 private float m_health = 100f;
179 177
180 // Default AV Height 178 // Default AV Height
@@ -2296,12 +2294,6 @@ namespace OpenSim.Region.Framework.Scenes
2296 2294
2297 SendPrimUpdates(); 2295 SendPrimUpdates();
2298 2296
2299 if (m_newCoarseLocations)
2300 {
2301 SendCoarseLocations();
2302 m_newCoarseLocations = false;
2303 }
2304
2305 if (m_isChildAgent == false) 2297 if (m_isChildAgent == false)
2306 { 2298 {
2307// PhysicsActor actor = m_physicsActor; 2299// PhysicsActor actor = m_physicsActor;
@@ -2375,12 +2367,12 @@ namespace OpenSim.Region.Framework.Scenes
2375 m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); 2367 m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS));
2376 } 2368 }
2377 2369
2378 public void SendCoarseLocations() 2370 public void SendCoarseLocations(List<Vector3> coarseLocations, List<UUID> avatarUUIDs)
2379 { 2371 {
2380 SendCourseLocationsMethod d = m_sendCourseLocationsMethod; 2372 SendCourseLocationsMethod d = m_sendCourseLocationsMethod;
2381 if (d != null) 2373 if (d != null)
2382 { 2374 {
2383 d.Invoke(m_scene.RegionInfo.originRegionID, this); 2375 d.Invoke(m_scene.RegionInfo.originRegionID, this, coarseLocations, avatarUUIDs);
2384 } 2376 }
2385 } 2377 }
2386 2378
@@ -2390,50 +2382,13 @@ namespace OpenSim.Region.Framework.Scenes
2390 m_sendCourseLocationsMethod = d; 2382 m_sendCourseLocationsMethod = d;
2391 } 2383 }
2392 2384
2393 public void SendCoarseLocationsDefault(UUID sceneId, ScenePresence p) 2385 public void SendCoarseLocationsDefault(UUID sceneId, ScenePresence p, List<Vector3> coarseLocations, List<UUID> avatarUUIDs)
2394 { 2386 {
2395 m_perfMonMS = Util.EnvironmentTickCount(); 2387 m_perfMonMS = Util.EnvironmentTickCount();
2396 2388 m_controllingClient.SendCoarseLocationUpdate(avatarUUIDs, coarseLocations);
2397 List<Vector3> CoarseLocations = new List<Vector3>();
2398 List<UUID> AvatarUUIDs = new List<UUID>();
2399 m_scene.ForEachScenePresence(delegate(ScenePresence sp)
2400 {
2401 if (sp.IsChildAgent)
2402 return;
2403
2404 if (sp.ParentID != 0)
2405 {
2406 // sitting avatar
2407 SceneObjectPart sop = m_scene.GetSceneObjectPart(sp.ParentID);
2408 if (sop != null)
2409 {
2410 CoarseLocations.Add(sop.AbsolutePosition + sp.m_pos);
2411 AvatarUUIDs.Add(sp.UUID);
2412 }
2413 else
2414 {
2415 // we can't find the parent.. ! arg!
2416 CoarseLocations.Add(sp.m_pos);
2417 AvatarUUIDs.Add(sp.UUID);
2418 }
2419 }
2420 else
2421 {
2422 CoarseLocations.Add(sp.m_pos);
2423 AvatarUUIDs.Add(sp.UUID);
2424 }
2425 });
2426
2427 m_controllingClient.SendCoarseLocationUpdate(AvatarUUIDs, CoarseLocations);
2428
2429 m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); 2389 m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS));
2430 } 2390 }
2431 2391
2432 public void CoarseLocationChange()
2433 {
2434 m_newCoarseLocations = true;
2435 }
2436
2437 /// <summary> 2392 /// <summary>
2438 /// Tell other client about this avatar (The client previously didn't know or had outdated details about this avatar) 2393 /// Tell other client about this avatar (The client previously didn't know or had outdated details about this avatar)
2439 /// </summary> 2394 /// </summary>
@@ -2668,7 +2623,6 @@ namespace OpenSim.Region.Framework.Scenes
2668 { 2623 {
2669 posLastSignificantMove = AbsolutePosition; 2624 posLastSignificantMove = AbsolutePosition;
2670 m_scene.EventManager.TriggerSignificantClientMovement(m_controllingClient); 2625 m_scene.EventManager.TriggerSignificantClientMovement(m_controllingClient);
2671 m_scene.NotifyMyCoarseLocationChange();
2672 } 2626 }
2673 2627
2674 // Minimum Draw distance is 64 meters, the Radius of the draw distance sphere is 32m 2628 // Minimum Draw distance is 64 meters, the Radius of the draw distance sphere is 32m
diff --git a/OpenSim/Region/RegionCombinerModule/RegionCombinerModule.cs b/OpenSim/Region/RegionCombinerModule/RegionCombinerModule.cs
index 9cb349a..ff0e743 100644
--- a/OpenSim/Region/RegionCombinerModule/RegionCombinerModule.cs
+++ b/OpenSim/Region/RegionCombinerModule/RegionCombinerModule.cs
@@ -696,7 +696,9 @@ namespace OpenSim.Region.RegionCombinerModule
696 presence.SetSendCourseLocationMethod(SendCourseLocationUpdates); 696 presence.SetSendCourseLocationMethod(SendCourseLocationUpdates);
697 } 697 }
698 698
699 private void SendCourseLocationUpdates(UUID sceneId, ScenePresence presence) 699 // This delegate was refactored for non-combined regions.
700 // This combined region version will not use the pre-compiled lists of locations and ids
701 private void SendCourseLocationUpdates(UUID sceneId, ScenePresence presence, List<Vector3> coarseLocations, List<UUID> avatarUUIDs)
700 { 702 {
701 RegionConnections connectiondata = null; 703 RegionConnections connectiondata = null;
702 lock (m_regions) 704 lock (m_regions)
diff --git a/OpenSim/Services/InventoryService/XInventoryService.cs b/OpenSim/Services/InventoryService/XInventoryService.cs
index 974caf0..af831fd 100644
--- a/OpenSim/Services/InventoryService/XInventoryService.cs
+++ b/OpenSim/Services/InventoryService/XInventoryService.cs
@@ -460,7 +460,7 @@ namespace OpenSim.Services.InventoryService
460 newItem.ID = item.inventoryID; 460 newItem.ID = item.inventoryID;
461 newItem.InvType = item.invType; 461 newItem.InvType = item.invType;
462 newItem.Folder = item.parentFolderID; 462 newItem.Folder = item.parentFolderID;
463 newItem.CreatorId = item.creatorID.ToString(); 463 newItem.CreatorId = item.creatorID;
464 newItem.Description = item.inventoryDescription; 464 newItem.Description = item.inventoryDescription;
465 newItem.NextPermissions = (uint)item.inventoryNextPermissions; 465 newItem.NextPermissions = (uint)item.inventoryNextPermissions;
466 newItem.CurrentPermissions = (uint)item.inventoryCurrentPermissions; 466 newItem.CurrentPermissions = (uint)item.inventoryCurrentPermissions;
@@ -491,7 +491,7 @@ namespace OpenSim.Services.InventoryService
491 newItem.inventoryID = item.ID; 491 newItem.inventoryID = item.ID;
492 newItem.invType = item.InvType; 492 newItem.invType = item.InvType;
493 newItem.parentFolderID = item.Folder; 493 newItem.parentFolderID = item.Folder;
494 newItem.creatorID = item.CreatorIdAsUuid; 494 newItem.creatorID = item.CreatorId;
495 newItem.inventoryDescription = item.Description; 495 newItem.inventoryDescription = item.Description;
496 newItem.inventoryNextPermissions = (int)item.NextPermissions; 496 newItem.inventoryNextPermissions = (int)item.NextPermissions;
497 newItem.inventoryCurrentPermissions = (int)item.CurrentPermissions; 497 newItem.inventoryCurrentPermissions = (int)item.CurrentPermissions;