aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs320
1 files changed, 225 insertions, 95 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index f3ea89a..40de870 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -346,7 +346,7 @@ namespace OpenSim.Region.Environment.Scenes
346 346
347 ForEachScenePresence(delegate(ScenePresence agent) 347 ForEachScenePresence(delegate(ScenePresence agent)
348 { 348 {
349 if (!(agent.IsChildAgent)) 349 if (!agent.IsChildAgent)
350 { 350 {
351 //agent.ControllingClient.new 351 //agent.ControllingClient.new
352 //this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo()); 352 //this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo());
@@ -368,24 +368,21 @@ namespace OpenSim.Region.Environment.Scenes
368 public override void Close() 368 public override void Close()
369 { 369 {
370 ForEachScenePresence(delegate(ScenePresence avatar) 370 ForEachScenePresence(delegate(ScenePresence avatar)
371 { 371 {
372 if (avatar.KnownChildRegions.Contains(RegionInfo.RegionHandle)) 372 if (avatar.KnownChildRegions.Contains(RegionInfo.RegionHandle))
373 avatar.KnownChildRegions.Remove(RegionInfo.RegionHandle); 373 avatar.KnownChildRegions.Remove(RegionInfo.RegionHandle);
374 374
375 if (!avatar.IsChildAgent) 375 if (!avatar.IsChildAgent)
376 avatar.ControllingClient.Kick("The simulator is going down."); 376 avatar.ControllingClient.Kick("The simulator is going down.");
377 377
378 avatar.ControllingClient.OutPacket(new libsecondlife.Packets.DisableSimulatorPacket(), ThrottleOutPacketType.Task); 378 avatar.ControllingClient.OutPacket(new libsecondlife.Packets.DisableSimulatorPacket(), ThrottleOutPacketType.Task);
379
380 }); 379 });
381 380
382 Thread.Sleep(500); 381 Thread.Sleep(500);
383 382
384 ForEachScenePresence(delegate(ScenePresence avatar) 383 ForEachScenePresence(delegate(ScenePresence avatar)
385 { 384 {
386
387 avatar.ControllingClient.Stop(); 385 avatar.ControllingClient.Stop();
388
389 }); 386 });
390 387
391 m_heartbeatTimer.Close(); 388 m_heartbeatTimer.Close();
@@ -837,7 +834,6 @@ namespace OpenSim.Region.Environment.Scenes
837 bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0) && m_physicalPrim); 834 bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0) && m_physicalPrim);
838 if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0) 835 if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0)
839 { 836 {
840
841 rootPart.PhysActor = 837 rootPart.PhysActor =
842 PhysicsScene.AddPrimShape( 838 PhysicsScene.AddPrimShape(
843 rootPart.Name, 839 rootPart.Name,
@@ -912,8 +908,7 @@ namespace OpenSim.Region.Environment.Scenes
912 /// <summary> 908 /// <summary>
913 /// 909 ///
914 /// </summary> 910 /// </summary>
915 /// <param name="remoteClient"></param 911 /// <param name="client"></param
916 /// <param name="agentID"></param>
917 /// <param name="child"></param> 912 /// <param name="child"></param>
918 public override void AddNewClient(IClientAPI client, bool child) 913 public override void AddNewClient(IClientAPI client, bool child)
919 { 914 {
@@ -1029,17 +1024,17 @@ namespace OpenSim.Region.Environment.Scenes
1029 1024
1030 ScenePresence avatar = GetScenePresence(agentID); 1025 ScenePresence avatar = GetScenePresence(agentID);
1031 1026
1032 Broadcast(delegate(IClientAPI client) { 1027 Broadcast(delegate(IClientAPI client)
1033 try 1028 {
1034 { 1029 try
1035 client.SendKillObject(avatar.RegionHandle, avatar.LocalId); 1030 {
1036 } 1031 client.SendKillObject(avatar.RegionHandle, avatar.LocalId);
1037 catch (System.NullReferenceException) 1032 }
1038 { 1033 catch (System.NullReferenceException)
1039 //We can safely ignore null reference exceptions. It means the avatar are dead and cleaned up anyway. 1034 {
1040 1035 //We can safely ignore null reference exceptions. It means the avatar are dead and cleaned up anyway.
1041 } 1036 }
1042 }); 1037 });
1043 1038
1044 ForEachScenePresence( 1039 ForEachScenePresence(
1045 delegate(ScenePresence presence) { presence.CoarseLocationChange(); }); 1040 delegate(ScenePresence presence) { presence.CoarseLocationChange(); });
@@ -1061,7 +1056,6 @@ namespace OpenSim.Region.Environment.Scenes
1061 catch (System.NullReferenceException) 1056 catch (System.NullReferenceException)
1062 { 1057 {
1063 //We can safely ignore null reference exceptions. It means the avatar are dead and cleaned up anyway. 1058 //We can safely ignore null reference exceptions. It means the avatar are dead and cleaned up anyway.
1064
1065 } 1059 }
1066 catch (Exception e) 1060 catch (Exception e)
1067 { 1061 {
@@ -1117,7 +1111,9 @@ namespace OpenSim.Region.Environment.Scenes
1117 m_sceneGridService.KillObject = SendKillObject; 1111 m_sceneGridService.KillObject = SendKillObject;
1118 } 1112 }
1119 1113
1120 1114 /// <summary>
1115 ///
1116 /// </summary>
1121 public void UnRegisterReginWithComms() 1117 public void UnRegisterReginWithComms()
1122 { 1118 {
1123 m_sceneGridService.OnRegionUp -= OtherRegionUp; 1119 m_sceneGridService.OnRegionUp -= OtherRegionUp;
@@ -1163,6 +1159,13 @@ namespace OpenSim.Region.Environment.Scenes
1163 } 1159 }
1164 } 1160 }
1165 1161
1162 /// <summary>
1163 ///
1164 /// </summary>
1165 /// <param name="regionHandle"></param>
1166 /// <param name="agentID"></param>
1167 /// <param name="position"></param>
1168 /// <param name="isFlying"></param>
1166 public virtual void AgentCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying) 1169 public virtual void AgentCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying)
1167 { 1170 {
1168 if (regionHandle == m_regInfo.RegionHandle) 1171 if (regionHandle == m_regInfo.RegionHandle)
@@ -1174,6 +1177,11 @@ namespace OpenSim.Region.Environment.Scenes
1174 } 1177 }
1175 } 1178 }
1176 1179
1180 /// <summary>
1181 ///
1182 /// </summary>
1183 /// <param name="regionHandle"></param>
1184 /// <param name="agentID"></param>
1177 public void CloseConnection(ulong regionHandle, LLUUID agentID) 1185 public void CloseConnection(ulong regionHandle, LLUUID agentID)
1178 { 1186 {
1179 if (regionHandle == m_regionHandle) 1187 if (regionHandle == m_regionHandle)
@@ -1187,15 +1195,20 @@ namespace OpenSim.Region.Environment.Scenes
1187 } 1195 }
1188 } 1196 }
1189 1197
1190
1191 /// <summary> 1198 /// <summary>
1192 /// 1199 ///
1193 /// </summary> 1200 /// </summary>
1201 /// <param name="presence"></param>
1194 public void InformClientOfNeighbours(ScenePresence presence) 1202 public void InformClientOfNeighbours(ScenePresence presence)
1195 { 1203 {
1196 m_sceneGridService.EnableNeighbourChildAgents(presence); 1204 m_sceneGridService.EnableNeighbourChildAgents(presence);
1197 } 1205 }
1198 1206
1207 /// <summary>
1208 ///
1209 /// </summary>
1210 /// <param name="presence"></param>
1211 /// <param name="region"></param>
1199 public void InformClientOfNeighbor(ScenePresence presence, RegionInfo region) 1212 public void InformClientOfNeighbor(ScenePresence presence, RegionInfo region)
1200 { 1213 {
1201 m_sceneGridService.InformNeighborChildAgent(presence, region); 1214 m_sceneGridService.InformNeighborChildAgent(presence, region);
@@ -1214,6 +1227,7 @@ namespace OpenSim.Region.Environment.Scenes
1214 /// <summary> 1227 /// <summary>
1215 /// 1228 ///
1216 /// </summary> 1229 /// </summary>
1230 /// <param name="remoteClient"></param>
1217 /// <param name="minX"></param> 1231 /// <param name="minX"></param>
1218 /// <param name="minY"></param> 1232 /// <param name="minY"></param>
1219 /// <param name="maxX"></param> 1233 /// <param name="maxX"></param>
@@ -1227,7 +1241,7 @@ namespace OpenSim.Region.Environment.Scenes
1227 /// 1241 ///
1228 /// </summary> 1242 /// </summary>
1229 /// <param name="remoteClient"></param> 1243 /// <param name="remoteClient"></param>
1230 /// <param name="RegionHandle"></param> 1244 /// <param name="regionHandle"></param>
1231 /// <param name="position"></param> 1245 /// <param name="position"></param>
1232 /// <param name="lookAt"></param> 1246 /// <param name="lookAt"></param>
1233 /// <param name="flags"></param> 1247 /// <param name="flags"></param>
@@ -1243,18 +1257,25 @@ namespace OpenSim.Region.Environment.Scenes
1243 /// <summary> 1257 /// <summary>
1244 /// 1258 ///
1245 /// </summary> 1259 /// </summary>
1246 /// <param name="regionhandle"></param> 1260 /// <param name="regionHandle"></param>
1247 /// <param name="agentID"></param> 1261 /// <param name="agentID"></param>
1248 /// <param name="position"></param> 1262 /// <param name="position"></param>
1249 public bool InformNeighbourOfCrossing(ulong regionhandle, LLUUID agentID, LLVector3 position, bool isFlying) 1263 /// <param name="isFlying"></param>
1264 /// <returns></returns>
1265 public bool InformNeighbourOfCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying)
1250 { 1266 {
1251 return m_sceneGridService.CrossToNeighbouringRegion(regionhandle, agentID, position, isFlying); 1267 return m_sceneGridService.CrossToNeighbouringRegion(regionHandle, agentID, position, isFlying);
1252 } 1268 }
1253 1269
1254 #endregion 1270 #endregion
1255 1271
1256 #region Module Methods 1272 #region Module Methods
1257 1273
1274 /// <summary>
1275 ///
1276 /// </summary>
1277 /// <param name="name"></param>
1278 /// <param name="module"></param>
1258 public void AddModule(string name, IRegionModule module) 1279 public void AddModule(string name, IRegionModule module)
1259 { 1280 {
1260 if (!Modules.ContainsKey(name)) 1281 if (!Modules.ContainsKey(name))
@@ -1263,6 +1284,10 @@ namespace OpenSim.Region.Environment.Scenes
1263 } 1284 }
1264 } 1285 }
1265 1286
1287 /// <summary>
1288 ///
1289 /// </summary>
1290 /// <param name="mod"></param>
1266 public void RegisterModuleInterface<M>(M mod) 1291 public void RegisterModuleInterface<M>(M mod)
1267 { 1292 {
1268 if (!ModuleInterfaces.ContainsKey(typeof(M))) 1293 if (!ModuleInterfaces.ContainsKey(typeof(M)))
@@ -1271,6 +1296,10 @@ namespace OpenSim.Region.Environment.Scenes
1271 } 1296 }
1272 } 1297 }
1273 1298
1299 /// <summary>
1300 ///
1301 /// </summary>
1302 /// <returns></returns>
1274 public T RequestModuleInterface<T>() 1303 public T RequestModuleInterface<T>()
1275 { 1304 {
1276 if (ModuleInterfaces.ContainsKey(typeof(T))) 1305 if (ModuleInterfaces.ContainsKey(typeof(T)))
@@ -1287,21 +1316,42 @@ namespace OpenSim.Region.Environment.Scenes
1287 1316
1288 #region Other Methods 1317 #region Other Methods
1289 1318
1319 /// <summary>
1320 ///
1321 /// </summary>
1322 /// <param name="phase"></param>
1290 public void SetTimePhase(int phase) 1323 public void SetTimePhase(int phase)
1291 { 1324 {
1292 m_timePhase = phase; 1325 m_timePhase = phase;
1293 } 1326 }
1294 1327
1295 public void SendUrlToUser(LLUUID avatarID, string objectname, LLUUID objectID, LLUUID ownerID, bool groupOwned, 1328 /// <summary>
1329 ///
1330 /// </summary>
1331 /// <param name="avatarID"></param>
1332 /// <param name="objectName"></param>
1333 /// <param name="objectID"></param>
1334 /// <param name="ownerID"></param>
1335 /// <param name="groupOwned"></param>
1336 /// <param name="message"></param>
1337 /// <param name="url"></param>
1338 public void SendUrlToUser(LLUUID avatarID, string objectName, LLUUID objectID, LLUUID ownerID, bool groupOwned,
1296 string message, string url) 1339 string message, string url)
1297 { 1340 {
1298 if (m_scenePresences.ContainsKey(avatarID)) 1341 if (m_scenePresences.ContainsKey(avatarID))
1299 { 1342 {
1300 m_scenePresences[avatarID].ControllingClient.SendLoadURL(objectname, objectID, ownerID, groupOwned, 1343 m_scenePresences[avatarID].ControllingClient.SendLoadURL(objectName, objectID, ownerID, groupOwned,
1301 message, url); 1344 message, url);
1302 } 1345 }
1303 } 1346 }
1304 1347
1348 /// <summary>
1349 ///
1350 /// </summary>
1351 /// <param name="url"></param>
1352 /// <param name="type"></param>
1353 /// <param name="body"></param>
1354 /// <returns></returns>
1305 public LLUUID MakeHttpRequest(string url, string type, string body) 1355 public LLUUID MakeHttpRequest(string url, string type, string body)
1306 { 1356 {
1307 if (m_httpRequestModule != null) 1357 if (m_httpRequestModule != null)
@@ -1311,6 +1361,9 @@ namespace OpenSim.Region.Environment.Scenes
1311 return LLUUID.Zero; 1361 return LLUUID.Zero;
1312 } 1362 }
1313 1363
1364 /// <summary>
1365 ///
1366 /// </summary>
1314 public void performParcelPrimCountUpdate() 1367 public void performParcelPrimCountUpdate()
1315 { 1368 {
1316 m_LandManager.resetAllLandPrimCounts(); 1369 m_LandManager.resetAllLandPrimCounts();
@@ -1319,6 +1372,9 @@ namespace OpenSim.Region.Environment.Scenes
1319 m_LandManager.landPrimCountTainted = false; 1372 m_LandManager.landPrimCountTainted = false;
1320 } 1373 }
1321 1374
1375 /// <summary>
1376 ///
1377 /// </summary>
1322 public void addPrimsToParcelCounts() 1378 public void addPrimsToParcelCounts()
1323 { 1379 {
1324 foreach (EntityBase obj in Entities.Values) 1380 foreach (EntityBase obj in Entities.Values)
@@ -1340,6 +1396,10 @@ namespace OpenSim.Region.Environment.Scenes
1340 SendAlertToUser(user, reason, false); 1396 SendAlertToUser(user, reason, false);
1341 } 1397 }
1342 1398
1399 /// <summary>
1400 ///
1401 /// </summary>
1402 /// <param name="message"></param>
1343 public void SendGeneralAlert(string message) 1403 public void SendGeneralAlert(string message)
1344 { 1404 {
1345 foreach (ScenePresence presence in m_scenePresences.Values) 1405 foreach (ScenePresence presence in m_scenePresences.Values)
@@ -1348,6 +1408,12 @@ namespace OpenSim.Region.Environment.Scenes
1348 } 1408 }
1349 } 1409 }
1350 1410
1411 /// <summary>
1412 ///
1413 /// </summary>
1414 /// <param name="agentID"></param>
1415 /// <param name="message"></param>
1416 /// <param name="modal"></param>
1351 public void SendAlertToUser(LLUUID agentID, string message, bool modal) 1417 public void SendAlertToUser(LLUUID agentID, string message, bool modal)
1352 { 1418 {
1353 if (m_scenePresences.ContainsKey(agentID)) 1419 if (m_scenePresences.ContainsKey(agentID))
@@ -1356,13 +1422,18 @@ namespace OpenSim.Region.Environment.Scenes
1356 } 1422 }
1357 } 1423 }
1358 1424
1359 public void handleRequestGodlikePowers(LLUUID agentID, LLUUID sessionID, LLUUID token, IClientAPI controllingclient) 1425 /// <summary>
1426 ///
1427 /// </summary>
1428 /// <param name="agentID"></param>
1429 /// <param name="sessionID"></param>
1430 /// <param name="token"></param>
1431 /// <param name="controllingClient"></param>
1432 public void handleRequestGodlikePowers(LLUUID agentID, LLUUID sessionID, LLUUID token, IClientAPI controllingClient)
1360 { 1433 {
1361 // First check that this is the sim owner 1434 // First check that this is the sim owner
1362
1363 if (agentID == RegionInfo.MasterAvatarAssignedUUID) 1435 if (agentID == RegionInfo.MasterAvatarAssignedUUID)
1364 { 1436 {
1365
1366 // User needs to be logged into this sim 1437 // User needs to be logged into this sim
1367 if (m_scenePresences.ContainsKey(agentID)) 1438 if (m_scenePresences.ContainsKey(agentID))
1368 { 1439 {
@@ -1370,14 +1441,11 @@ namespace OpenSim.Region.Environment.Scenes
1370 LLUUID testSessionID = m_scenePresences[agentID].ControllingClient.SessionId; 1441 LLUUID testSessionID = m_scenePresences[agentID].ControllingClient.SessionId;
1371 if (sessionID == testSessionID) 1442 if (sessionID == testSessionID)
1372 { 1443 {
1373 if (sessionID == controllingclient.SessionId) 1444 if (sessionID == controllingClient.SessionId)
1374 { 1445 {
1375 m_scenePresences[agentID].GrantGodlikePowers(agentID, testSessionID, token); 1446 m_scenePresences[agentID].GrantGodlikePowers(agentID, testSessionID, token);
1376
1377 } 1447 }
1378
1379 } 1448 }
1380
1381 } 1449 }
1382 } 1450 }
1383 else 1451 else
@@ -1386,82 +1454,94 @@ namespace OpenSim.Region.Environment.Scenes
1386 } 1454 }
1387 } 1455 }
1388 1456
1389 public void handleGodlikeKickUser(LLUUID godid, LLUUID sessionid, LLUUID agentid, uint kickflags, byte[] reason) 1457 /// <summary>
1458 ///
1459 /// </summary>
1460 /// <param name="godID"></param>
1461 /// <param name="sessionID"></param>
1462 /// <param name="agentID"></param>
1463 /// <param name="kickflags"></param>
1464 /// <param name="reason"></param>
1465 public void handleGodlikeKickUser(LLUUID godID, LLUUID sessionID, LLUUID agentID, uint kickflags, byte[] reason)
1390 { 1466 {
1391 // For some reason the client sends the seemingly hard coded, 44e87126e7944ded05b37c42da3d5cdb 1467 // For some reason the client sends this seemingly hard coded UUID for kicking everyone. Dun-know.
1392 // for kicking everyone. Dun-know. 1468 LLUUID kickUserID = new LLUUID("44e87126e7944ded05b37c42da3d5cdb");
1393 if (m_scenePresences.ContainsKey(agentid) || agentid == new LLUUID("44e87126e7944ded05b37c42da3d5cdb")) 1469 if (m_scenePresences.ContainsKey(agentID) || agentID == kickUserID)
1394 { 1470 {
1395 if (godid == RegionInfo.MasterAvatarAssignedUUID) 1471 if (godID == RegionInfo.MasterAvatarAssignedUUID)
1396 { 1472 {
1397 if (agentid == new LLUUID("44e87126e7944ded05b37c42da3d5cdb")) 1473 if (agentID == kickUserID)
1398 { 1474 {
1399
1400 ClientManager.ForEachClient(delegate(IClientAPI controller) 1475 ClientManager.ForEachClient(delegate(IClientAPI controller)
1401 { 1476 {
1402 ScenePresence p = GetScenePresence(controller.AgentId); 1477 ScenePresence p = GetScenePresence(controller.AgentId);
1403 bool childagent = false; 1478 bool childagent = !p.Equals(null) && p.IsChildAgent;
1404 if (!p.Equals(null)) 1479 if (controller.AgentId != godID && !childagent) // Do we really want to kick the initiator of this madness?
1405 if (p.IsChildAgent) 1480 {
1406 childagent = true; 1481 controller.Kick(Helpers.FieldToUTF8String(reason));
1407 if (controller.AgentId != godid && !childagent) // Do we really want to kick the initiator of this madness? 1482 }
1408 { 1483 }
1409 controller.Kick(Helpers.FieldToUTF8String(reason)); 1484 );
1410
1411 }
1412 }
1413 );
1414 // This is a bit crude. It seems the client will be null before it actually stops the thread 1485 // This is a bit crude. It seems the client will be null before it actually stops the thread
1415 // The thread will kill itself eventually :/ 1486 // The thread will kill itself eventually :/
1416 // Is there another way to make sure *all* clients get this 'inter region' message? 1487 // Is there another way to make sure *all* clients get this 'inter region' message?
1417 ClientManager.ForEachClient(delegate(IClientAPI controller) 1488 ClientManager.ForEachClient(delegate(IClientAPI controller)
1418 { 1489 {
1419 ScenePresence p = GetScenePresence(controller.AgentId); 1490 ScenePresence p = GetScenePresence(controller.AgentId);
1420 bool childagent = false; 1491 bool childagent = !p.Equals(null) && p.IsChildAgent;
1421 if (!p.Equals(null)) 1492 if (controller.AgentId != godID && !childagent) // Do we really want to kick the initiator of this madness?
1422 if (p.IsChildAgent) 1493 {
1423 childagent = true; 1494 controller.Close();
1424 1495 }
1425 if (controller.AgentId != godid && !childagent) // Do we really want to kick the initiator of this madness? 1496 }
1426 { 1497 );
1427 controller.Close();
1428 }
1429 }
1430 );
1431 } 1498 }
1432 else 1499 else
1433 { 1500 {
1434 m_scenePresences[agentid].ControllingClient.Kick(Helpers.FieldToUTF8String(reason)); 1501 m_scenePresences[agentID].ControllingClient.Kick(Helpers.FieldToUTF8String(reason));
1435 m_scenePresences[agentid].ControllingClient.Close(); 1502 m_scenePresences[agentID].ControllingClient.Close();
1436 } 1503 }
1437 } 1504 }
1438 else 1505 else
1439 { 1506 {
1440 if (m_scenePresences.ContainsKey(godid)) 1507 if (m_scenePresences.ContainsKey(godID))
1441 m_scenePresences[godid].ControllingClient.SendAgentAlertMessage("Kick request denied", false); 1508 m_scenePresences[godID].ControllingClient.SendAgentAlertMessage("Kick request denied", false);
1442 } 1509 }
1443 } 1510 }
1444 } 1511 }
1445 public void HandleObjectPermissionsUpdate (IClientAPI controller, LLUUID AgentID, LLUUID SessionID, List<libsecondlife.Packets.ObjectPermissionsPacket.ObjectDataBlock> permChanges) 1512
1513 /// <summary>
1514 ///
1515 /// </summary>
1516 /// <param name="controller"></param>
1517 /// <param name="agentID"></param>
1518 /// <param name="sessionID"></param>
1519 /// <param name="permChanges"></param>
1520 public void HandleObjectPermissionsUpdate (IClientAPI controller, LLUUID agentID, LLUUID sessionID, List<libsecondlife.Packets.ObjectPermissionsPacket.ObjectDataBlock> permChanges)
1446 { 1521 {
1447 // Check for spoofing.. since this is permissions we're talking about here! 1522 // Check for spoofing.. since this is permissions we're talking about here!
1448 if ((controller.SessionId == SessionID) && (controller.AgentId == AgentID)) 1523 if ((controller.SessionId == sessionID) && (controller.AgentId == agentID))
1449 { 1524 {
1450 for (int i = 0; i < permChanges.Count; i++) 1525 for (int i = 0; i < permChanges.Count; i++)
1451 { 1526 {
1452
1453 // Tell the object to do permission update 1527 // Tell the object to do permission update
1454 byte field = permChanges[i].Field; 1528 byte field = permChanges[i].Field;
1455 uint localID = permChanges[i].ObjectLocalID; 1529 uint localID = permChanges[i].ObjectLocalID;
1456 uint mask = permChanges[i].Mask; 1530 uint mask = permChanges[i].Mask;
1457 byte addRemTF = permChanges[i].Set; 1531 byte addRemTF = permChanges[i].Set;
1458 SceneObjectGroup chObjectGroup = GetGroupByPrim(localID); 1532 SceneObjectGroup chObjectGroup = GetGroupByPrim(localID);
1459 chObjectGroup.UpdatePermissions(AgentID, field, localID, mask, addRemTF); 1533 chObjectGroup.UpdatePermissions(agentID, field, localID, mask, addRemTF);
1460
1461 } 1534 }
1462 } 1535 }
1463
1464 } 1536 }
1537
1538 /// <summary>
1539 ///
1540 /// </summary>
1541 /// <param name="firstName"></param>
1542 /// <param name="lastName"></param>
1543 /// <param name="message"></param>
1544 /// <param name="modal"></param>
1465 public void SendAlertToUser(string firstName, string lastName, string message, bool modal) 1545 public void SendAlertToUser(string firstName, string lastName, string message, bool modal)
1466 { 1546 {
1467 foreach (ScenePresence presence in m_scenePresences.Values) 1547 foreach (ScenePresence presence in m_scenePresences.Values)
@@ -1474,6 +1554,10 @@ namespace OpenSim.Region.Environment.Scenes
1474 } 1554 }
1475 } 1555 }
1476 1556
1557 /// <summary>
1558 ///
1559 /// </summary>
1560 /// <param name="commandParams"></param>
1477 public void HandleAlertCommand(string[] commandParams) 1561 public void HandleAlertCommand(string[] commandParams)
1478 { 1562 {
1479 if (commandParams[0] == "general") 1563 if (commandParams[0] == "general")
@@ -1500,6 +1584,9 @@ namespace OpenSim.Region.Environment.Scenes
1500 1584
1501 #endregion 1585 #endregion
1502 1586
1587 /// <summary>
1588 ///
1589 /// </summary>
1503 public void ForceClientUpdate() 1590 public void ForceClientUpdate()
1504 { 1591 {
1505 foreach (EntityBase ent in Entities.Values) 1592 foreach (EntityBase ent in Entities.Values)
@@ -1511,9 +1598,13 @@ namespace OpenSim.Region.Environment.Scenes
1511 } 1598 }
1512 } 1599 }
1513 1600
1514 public void HandleEditCommand(string[] cmmdparams) 1601 /// <summary>
1602 ///
1603 /// </summary>
1604 /// <param name="cmdparams"></param>
1605 public void HandleEditCommand(string[] cmdparams)
1515 { 1606 {
1516 Console.WriteLine("Searching for Primitive: '" + cmmdparams[0] + "'"); 1607 Console.WriteLine("Searching for Primitive: '" + cmdparams[0] + "'");
1517 foreach (EntityBase ent in Entities.Values) 1608 foreach (EntityBase ent in Entities.Values)
1518 { 1609 {
1519 if (ent is SceneObjectGroup) 1610 if (ent is SceneObjectGroup)
@@ -1521,11 +1612,11 @@ namespace OpenSim.Region.Environment.Scenes
1521 SceneObjectPart part = ((SceneObjectGroup)ent).GetChildPart(((SceneObjectGroup)ent).UUID); 1612 SceneObjectPart part = ((SceneObjectGroup)ent).GetChildPart(((SceneObjectGroup)ent).UUID);
1522 if (part != null) 1613 if (part != null)
1523 { 1614 {
1524 if (part.Name == cmmdparams[0]) 1615 if (part.Name == cmdparams[0])
1525 { 1616 {
1526 part.Resize( 1617 part.Resize(
1527 new LLVector3(Convert.ToSingle(cmmdparams[1]), Convert.ToSingle(cmmdparams[2]), 1618 new LLVector3(Convert.ToSingle(cmdparams[1]), Convert.ToSingle(cmdparams[2]),
1528 Convert.ToSingle(cmmdparams[3]))); 1619 Convert.ToSingle(cmdparams[3])));
1529 1620
1530 Console.WriteLine("Edited scale of Primitive: " + part.Name); 1621 Console.WriteLine("Edited scale of Primitive: " + part.Name);
1531 } 1622 }
@@ -1534,9 +1625,13 @@ namespace OpenSim.Region.Environment.Scenes
1534 } 1625 }
1535 } 1626 }
1536 1627
1537 public void Show(string ShowWhat) 1628 /// <summary>
1629 ///
1630 /// </summary>
1631 /// <param name="showWhat"></param>
1632 public void Show(string showWhat)
1538 { 1633 {
1539 switch (ShowWhat) 1634 switch (showWhat)
1540 { 1635 {
1541 case "users": 1636 case "users":
1542 MainLog.Instance.Error("Current Region: " + RegionInfo.RegionName); 1637 MainLog.Instance.Error("Current Region: " + RegionInfo.RegionName);
@@ -1574,6 +1669,10 @@ namespace OpenSim.Region.Environment.Scenes
1574 1669
1575 #region Script Handling Methods 1670 #region Script Handling Methods
1576 1671
1672 /// <summary>
1673 ///
1674 /// </summary>
1675 /// <param name="args"></param>
1577 public void SendCommandToPlugins(string[] args) 1676 public void SendCommandToPlugins(string[] args)
1578 { 1677 {
1579 m_eventManager.TriggerOnPluginConsole(args); 1678 m_eventManager.TriggerOnPluginConsole(args);
@@ -1586,22 +1685,35 @@ namespace OpenSim.Region.Environment.Scenes
1586 private List<ScriptEngineInterface> ScriptEngines = new List<ScriptEngineInterface>(); 1685 private List<ScriptEngineInterface> ScriptEngines = new List<ScriptEngineInterface>();
1587 private bool m_dumpAssetsToFile; 1686 private bool m_dumpAssetsToFile;
1588 1687
1589 public void AddScriptEngine(ScriptEngineInterface ScriptEngine, LogBase m_logger) 1688 /// <summary>
1689 ///
1690 /// </summary>
1691 /// <param name="scriptEngine"></param>
1692 /// <param name="logger"></param>
1693 public void AddScriptEngine(ScriptEngineInterface scriptEngine, LogBase logger)
1590 { 1694 {
1591 ScriptEngines.Add(ScriptEngine); 1695 ScriptEngines.Add(scriptEngine);
1592 1696 scriptEngine.InitializeEngine(this, logger);
1593 ScriptEngine.InitializeEngine(this, m_logger);
1594 } 1697 }
1595 1698
1596 #endregion 1699 #endregion
1597 1700
1598 #region InnerScene wrapper methods 1701 #region InnerScene wrapper methods
1599 1702
1703 /// <summary>
1704 ///
1705 /// </summary>
1706 /// <param name="localID"></param>
1707 /// <returns></returns>
1600 public LLUUID ConvertLocalIDToFullID(uint localID) 1708 public LLUUID ConvertLocalIDToFullID(uint localID)
1601 { 1709 {
1602 return m_innerScene.ConvertLocalIDToFullID(localID); 1710 return m_innerScene.ConvertLocalIDToFullID(localID);
1603 } 1711 }
1604 1712
1713 /// <summary>
1714 ///
1715 /// </summary>
1716 /// <param name="presence"></param>
1605 public void SendAllSceneObjectsToClient(ScenePresence presence) 1717 public void SendAllSceneObjectsToClient(ScenePresence presence)
1606 { 1718 {
1607 m_innerScene.SendAllSceneObjectsToClient(presence); 1719 m_innerScene.SendAllSceneObjectsToClient(presence);
@@ -1610,6 +1722,10 @@ namespace OpenSim.Region.Environment.Scenes
1610 //The idea is to have a group of method that return a list of avatars meeting some requirement 1722 //The idea is to have a group of method that return a list of avatars meeting some requirement
1611 // ie it could be all m_scenePresences within a certain range of the calling prim/avatar. 1723 // ie it could be all m_scenePresences within a certain range of the calling prim/avatar.
1612 1724
1725 /// <summary>
1726 ///
1727 /// </summary>
1728 /// <returns></returns>
1613 public List<ScenePresence> GetAvatars() 1729 public List<ScenePresence> GetAvatars()
1614 { 1730 {
1615 return m_innerScene.GetAvatars(); 1731 return m_innerScene.GetAvatars();
@@ -1627,6 +1743,7 @@ namespace OpenSim.Region.Environment.Scenes
1627 /// <summary> 1743 /// <summary>
1628 /// Request a filtered list of m_scenePresences in this World 1744 /// Request a filtered list of m_scenePresences in this World
1629 /// </summary> 1745 /// </summary>
1746 /// <param name="filter"></param>
1630 /// <returns></returns> 1747 /// <returns></returns>
1631 public List<ScenePresence> GetScenePresences(FilterAvatarList filter) 1748 public List<ScenePresence> GetScenePresences(FilterAvatarList filter)
1632 { 1749 {
@@ -1659,6 +1776,10 @@ namespace OpenSim.Region.Environment.Scenes
1659 } 1776 }
1660 } 1777 }
1661 1778
1779 /// <summary>
1780 ///
1781 /// </summary>
1782 /// <param name="action"></param>
1662 public void ForEachObject(Action<SceneObjectGroup> action) 1783 public void ForEachObject(Action<SceneObjectGroup> action)
1663 { 1784 {
1664 foreach (SceneObjectGroup presence in m_sceneObjects.Values) 1785 foreach (SceneObjectGroup presence in m_sceneObjects.Values)
@@ -1667,11 +1788,21 @@ namespace OpenSim.Region.Environment.Scenes
1667 } 1788 }
1668 } 1789 }
1669 1790
1791 /// <summary>
1792 ///
1793 /// </summary>
1794 /// <param name="localID"></param>
1795 /// <returns></returns>
1670 public SceneObjectPart GetSceneObjectPart(uint localID) 1796 public SceneObjectPart GetSceneObjectPart(uint localID)
1671 { 1797 {
1672 return m_innerScene.GetSceneObjectPart(localID); 1798 return m_innerScene.GetSceneObjectPart(localID);
1673 } 1799 }
1674 1800
1801 /// <summary>
1802 ///
1803 /// </summary>
1804 /// <param name="fullID"></param>
1805 /// <returns></returns>
1675 public SceneObjectPart GetSceneObjectPart(LLUUID fullID) 1806 public SceneObjectPart GetSceneObjectPart(LLUUID fullID)
1676 { 1807 {
1677 return m_innerScene.GetSceneObjectPart(fullID); 1808 return m_innerScene.GetSceneObjectPart(fullID);
@@ -1682,7 +1813,6 @@ namespace OpenSim.Region.Environment.Scenes
1682 return m_innerScene.TryGetAvatar(avatarId, out avatar); 1813 return m_innerScene.TryGetAvatar(avatarId, out avatar);
1683 } 1814 }
1684 1815
1685
1686 internal bool TryGetAvatarByName(string avatarName, out ScenePresence avatar) 1816 internal bool TryGetAvatarByName(string avatarName, out ScenePresence avatar)
1687 { 1817 {
1688 return m_innerScene.TryGetAvatarByName(avatarName, out avatar); 1818 return m_innerScene.TryGetAvatarByName(avatarName, out avatar);