diff options
Diffstat (limited to 'OpenSim/Region/CoreModules')
3 files changed, 54 insertions, 37 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 2057c65..1a7da61 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs | |||
@@ -381,12 +381,27 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
381 | if ((nextPerms & (uint)PermissionMask.Modify) == 0) | 381 | if ((nextPerms & (uint)PermissionMask.Modify) == 0) |
382 | perms &= ~(uint)PermissionMask.Modify; | 382 | perms &= ~(uint)PermissionMask.Modify; |
383 | 383 | ||
384 | // Make sure all bits but the ones we want are clear | ||
385 | // on take. | ||
386 | // This will be applied to the current perms, so | ||
387 | // it will do what we want. | ||
388 | objectGroup.RootPart.NextOwnerMask &= | ||
389 | ((uint)PermissionMask.Copy | | ||
390 | (uint)PermissionMask.Transfer | | ||
391 | (uint)PermissionMask.Modify); | ||
392 | objectGroup.RootPart.NextOwnerMask |= | ||
393 | (uint)PermissionMask.Move; | ||
394 | |||
384 | item.BasePermissions = perms & objectGroup.RootPart.NextOwnerMask; | 395 | item.BasePermissions = perms & objectGroup.RootPart.NextOwnerMask; |
385 | item.CurrentPermissions = item.BasePermissions; | 396 | item.CurrentPermissions = item.BasePermissions; |
386 | item.NextPermissions = objectGroup.RootPart.NextOwnerMask; | 397 | item.NextPermissions = objectGroup.RootPart.NextOwnerMask; |
387 | item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask & objectGroup.RootPart.NextOwnerMask; | 398 | item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask & objectGroup.RootPart.NextOwnerMask; |
388 | item.GroupPermissions = objectGroup.RootPart.GroupMask & objectGroup.RootPart.NextOwnerMask; | 399 | item.GroupPermissions = objectGroup.RootPart.GroupMask & objectGroup.RootPart.NextOwnerMask; |
389 | item.CurrentPermissions |= 8; // Slam! | 400 | |
401 | // Magic number badness. Maybe this deserves an enum. | ||
402 | // bit 4 (16) is the "Slam" bit, it means treat as passed | ||
403 | // and apply next owner perms on rez | ||
404 | item.CurrentPermissions |= 16; // Slam! | ||
390 | } | 405 | } |
391 | else | 406 | else |
392 | { | 407 | { |
@@ -396,7 +411,12 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
396 | item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask; | 411 | item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask; |
397 | item.GroupPermissions = objectGroup.RootPart.GroupMask; | 412 | item.GroupPermissions = objectGroup.RootPart.GroupMask; |
398 | 413 | ||
399 | item.CurrentPermissions |= 8; // Slam! | 414 | item.CurrentPermissions &= |
415 | ((uint)PermissionMask.Copy | | ||
416 | (uint)PermissionMask.Transfer | | ||
417 | (uint)PermissionMask.Modify | | ||
418 | (uint)PermissionMask.Move | | ||
419 | 7); // Preserve folded permissions | ||
400 | } | 420 | } |
401 | 421 | ||
402 | // TODO: add the new fields (Flags, Sale info, etc) | 422 | // TODO: add the new fields (Flags, Sale info, etc) |
@@ -499,6 +519,12 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
499 | 519 | ||
500 | group.RootPart.FromFolderID = item.Folder; | 520 | group.RootPart.FromFolderID = item.Folder; |
501 | 521 | ||
522 | // If it's rezzed in world, select it. Much easier to | ||
523 | // find small items. | ||
524 | // | ||
525 | if (!attachment) | ||
526 | group.RootPart.CreateSelected = true; | ||
527 | |||
502 | if (!m_Scene.Permissions.CanRezObject( | 528 | if (!m_Scene.Permissions.CanRezObject( |
503 | group.Children.Count, remoteClient.AgentId, pos) | 529 | group.Children.Count, remoteClient.AgentId, pos) |
504 | && !attachment) | 530 | && !attachment) |
@@ -571,7 +597,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
571 | List<SceneObjectPart> partList = new List<SceneObjectPart>(group.Children.Values); | 597 | List<SceneObjectPart> partList = new List<SceneObjectPart>(group.Children.Values); |
572 | 598 | ||
573 | group.SetGroup(remoteClient.ActiveGroupId, remoteClient); | 599 | group.SetGroup(remoteClient.ActiveGroupId, remoteClient); |
574 | if (rootPart.OwnerID != item.Owner) | 600 | if ((rootPart.OwnerID != item.Owner) || (item.CurrentPermissions & 16) != 0) |
575 | { | 601 | { |
576 | //Need to kill the for sale here | 602 | //Need to kill the for sale here |
577 | rootPart.ObjectSaleType = 0; | 603 | rootPart.ObjectSaleType = 0; |
@@ -579,14 +605,11 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
579 | 605 | ||
580 | if (m_Scene.Permissions.PropagatePermissions()) | 606 | if (m_Scene.Permissions.PropagatePermissions()) |
581 | { | 607 | { |
582 | if ((item.CurrentPermissions & 8) != 0) | 608 | foreach (SceneObjectPart part in partList) |
583 | { | 609 | { |
584 | foreach (SceneObjectPart part in partList) | 610 | part.EveryoneMask = item.EveryOnePermissions; |
585 | { | 611 | part.NextOwnerMask = item.NextPermissions; |
586 | part.EveryoneMask = item.EveryOnePermissions; | 612 | part.GroupMask = 0; // DO NOT propagate here |
587 | part.NextOwnerMask = item.NextPermissions; | ||
588 | part.GroupMask = 0; // DO NOT propagate here | ||
589 | } | ||
590 | } | 613 | } |
591 | 614 | ||
592 | group.ApplyNextOwnerPermissions(); | 615 | group.ApplyNextOwnerPermissions(); |
@@ -595,19 +618,15 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
595 | 618 | ||
596 | foreach (SceneObjectPart part in partList) | 619 | foreach (SceneObjectPart part in partList) |
597 | { | 620 | { |
598 | if (part.OwnerID != item.Owner) | 621 | if ((part.OwnerID != item.Owner) || (item.CurrentPermissions & 16) != 0) |
599 | { | 622 | { |
600 | part.LastOwnerID = part.OwnerID; | 623 | part.LastOwnerID = part.OwnerID; |
601 | part.OwnerID = item.Owner; | 624 | part.OwnerID = item.Owner; |
602 | part.Inventory.ChangeInventoryOwner(item.Owner); | 625 | part.Inventory.ChangeInventoryOwner(item.Owner); |
603 | } | ||
604 | else if (((item.CurrentPermissions & 8) != 0) && (!attachment)) // Slam! | ||
605 | { | ||
606 | part.EveryoneMask = item.EveryOnePermissions; | ||
607 | part.NextOwnerMask = item.NextPermissions; | ||
608 | |||
609 | part.GroupMask = 0; // DO NOT propagate here | 626 | part.GroupMask = 0; // DO NOT propagate here |
610 | } | 627 | } |
628 | part.EveryoneMask = item.EveryOnePermissions; | ||
629 | part.NextOwnerMask = item.NextPermissions; | ||
611 | } | 630 | } |
612 | 631 | ||
613 | rootPart.TrimPermissions(); | 632 | rootPart.TrimPermissions(); |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs index 4ec5253..97161fc 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs | |||
@@ -253,7 +253,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
253 | 253 | ||
254 | public InventoryFolderBase GetRootFolder(UUID userID) | 254 | public InventoryFolderBase GetRootFolder(UUID userID) |
255 | { | 255 | { |
256 | m_log.DebugFormat("[HG INVENTORY CONNECTOR]: GetRootFolder for {0}", userID); | 256 | //m_log.DebugFormat("[HG INVENTORY CONNECTOR]: GetRootFolder for {0}", userID); |
257 | 257 | ||
258 | string invURL = GetInventoryServiceURL(userID); | 258 | string invURL = GetInventoryServiceURL(userID); |
259 | 259 | ||
@@ -267,7 +267,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
267 | 267 | ||
268 | public InventoryFolderBase GetFolderForType(UUID userID, AssetType type) | 268 | public InventoryFolderBase GetFolderForType(UUID userID, AssetType type) |
269 | { | 269 | { |
270 | m_log.DebugFormat("[HG INVENTORY CONNECTOR]: GetFolderForType {0} type {1}", userID, type); | 270 | //m_log.DebugFormat("[HG INVENTORY CONNECTOR]: GetFolderForType {0} type {1}", userID, type); |
271 | 271 | ||
272 | string invURL = GetInventoryServiceURL(userID); | 272 | string invURL = GetInventoryServiceURL(userID); |
273 | 273 | ||
@@ -281,7 +281,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
281 | 281 | ||
282 | public InventoryCollection GetFolderContent(UUID userID, UUID folderID) | 282 | public InventoryCollection GetFolderContent(UUID userID, UUID folderID) |
283 | { | 283 | { |
284 | m_log.Debug("[HG INVENTORY CONNECTOR]: GetFolderContent " + folderID); | 284 | //m_log.Debug("[HG INVENTORY CONNECTOR]: GetFolderContent " + folderID); |
285 | 285 | ||
286 | string invURL = GetInventoryServiceURL(userID); | 286 | string invURL = GetInventoryServiceURL(userID); |
287 | 287 | ||
@@ -296,7 +296,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
296 | 296 | ||
297 | public List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID) | 297 | public List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID) |
298 | { | 298 | { |
299 | m_log.Debug("[HG INVENTORY CONNECTOR]: GetFolderItems " + folderID); | 299 | //m_log.Debug("[HG INVENTORY CONNECTOR]: GetFolderItems " + folderID); |
300 | 300 | ||
301 | string invURL = GetInventoryServiceURL(userID); | 301 | string invURL = GetInventoryServiceURL(userID); |
302 | 302 | ||
@@ -314,7 +314,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
314 | if (folder == null) | 314 | if (folder == null) |
315 | return false; | 315 | return false; |
316 | 316 | ||
317 | m_log.Debug("[HG INVENTORY CONNECTOR]: AddFolder " + folder.ID); | 317 | //m_log.Debug("[HG INVENTORY CONNECTOR]: AddFolder " + folder.ID); |
318 | 318 | ||
319 | string invURL = GetInventoryServiceURL(folder.Owner); | 319 | string invURL = GetInventoryServiceURL(folder.Owner); |
320 | 320 | ||
@@ -331,7 +331,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
331 | if (folder == null) | 331 | if (folder == null) |
332 | return false; | 332 | return false; |
333 | 333 | ||
334 | m_log.Debug("[HG INVENTORY CONNECTOR]: UpdateFolder " + folder.ID); | 334 | //m_log.Debug("[HG INVENTORY CONNECTOR]: UpdateFolder " + folder.ID); |
335 | 335 | ||
336 | string invURL = GetInventoryServiceURL(folder.Owner); | 336 | string invURL = GetInventoryServiceURL(folder.Owner); |
337 | 337 | ||
@@ -350,7 +350,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
350 | if (folderIDs.Count == 0) | 350 | if (folderIDs.Count == 0) |
351 | return false; | 351 | return false; |
352 | 352 | ||
353 | m_log.Debug("[HG INVENTORY CONNECTOR]: DeleteFolders for " + ownerID); | 353 | //m_log.Debug("[HG INVENTORY CONNECTOR]: DeleteFolders for " + ownerID); |
354 | 354 | ||
355 | string invURL = GetInventoryServiceURL(ownerID); | 355 | string invURL = GetInventoryServiceURL(ownerID); |
356 | 356 | ||
@@ -367,7 +367,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
367 | if (folder == null) | 367 | if (folder == null) |
368 | return false; | 368 | return false; |
369 | 369 | ||
370 | m_log.Debug("[HG INVENTORY CONNECTOR]: MoveFolder for " + folder.Owner); | 370 | //m_log.Debug("[HG INVENTORY CONNECTOR]: MoveFolder for " + folder.Owner); |
371 | 371 | ||
372 | string invURL = GetInventoryServiceURL(folder.Owner); | 372 | string invURL = GetInventoryServiceURL(folder.Owner); |
373 | 373 | ||
@@ -384,7 +384,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
384 | if (folder == null) | 384 | if (folder == null) |
385 | return false; | 385 | return false; |
386 | 386 | ||
387 | m_log.Debug("[HG INVENTORY CONNECTOR]: PurgeFolder for " + folder.Owner); | 387 | //m_log.Debug("[HG INVENTORY CONNECTOR]: PurgeFolder for " + folder.Owner); |
388 | 388 | ||
389 | string invURL = GetInventoryServiceURL(folder.Owner); | 389 | string invURL = GetInventoryServiceURL(folder.Owner); |
390 | 390 | ||
@@ -401,7 +401,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
401 | if (item == null) | 401 | if (item == null) |
402 | return false; | 402 | return false; |
403 | 403 | ||
404 | m_log.Debug("[HG INVENTORY CONNECTOR]: AddItem " + item.ID); | 404 | //m_log.Debug("[HG INVENTORY CONNECTOR]: AddItem " + item.ID); |
405 | 405 | ||
406 | string invURL = GetInventoryServiceURL(item.Owner); | 406 | string invURL = GetInventoryServiceURL(item.Owner); |
407 | 407 | ||
@@ -418,7 +418,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
418 | if (item == null) | 418 | if (item == null) |
419 | return false; | 419 | return false; |
420 | 420 | ||
421 | m_log.Debug("[HG INVENTORY CONNECTOR]: UpdateItem " + item.ID); | 421 | //m_log.Debug("[HG INVENTORY CONNECTOR]: UpdateItem " + item.ID); |
422 | 422 | ||
423 | string invURL = GetInventoryServiceURL(item.Owner); | 423 | string invURL = GetInventoryServiceURL(item.Owner); |
424 | 424 | ||
@@ -437,7 +437,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
437 | if (items.Count == 0) | 437 | if (items.Count == 0) |
438 | return true; | 438 | return true; |
439 | 439 | ||
440 | m_log.Debug("[HG INVENTORY CONNECTOR]: MoveItems for " + ownerID); | 440 | //m_log.Debug("[HG INVENTORY CONNECTOR]: MoveItems for " + ownerID); |
441 | 441 | ||
442 | string invURL = GetInventoryServiceURL(ownerID); | 442 | string invURL = GetInventoryServiceURL(ownerID); |
443 | 443 | ||
@@ -451,15 +451,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
451 | 451 | ||
452 | public bool DeleteItems(UUID ownerID, List<UUID> itemIDs) | 452 | public bool DeleteItems(UUID ownerID, List<UUID> itemIDs) |
453 | { | 453 | { |
454 | m_log.DebugFormat("[HG INVENTORY CONNECTOR]: Delete {0} items for user {1}", itemIDs.Count, ownerID); | 454 | //m_log.DebugFormat("[HG INVENTORY CONNECTOR]: Delete {0} items for user {1}", itemIDs.Count, ownerID); |
455 | 455 | ||
456 | if (itemIDs == null) | 456 | if (itemIDs == null) |
457 | return false; | 457 | return false; |
458 | if (itemIDs.Count == 0) | 458 | if (itemIDs.Count == 0) |
459 | return true; | 459 | return true; |
460 | 460 | ||
461 | m_log.Debug("[HG INVENTORY CONNECTOR]: DeleteItems for " + ownerID); | ||
462 | |||
463 | string invURL = GetInventoryServiceURL(ownerID); | 461 | string invURL = GetInventoryServiceURL(ownerID); |
464 | 462 | ||
465 | if (invURL == null) // not there, forward to local inventory connector to resolve | 463 | if (invURL == null) // not there, forward to local inventory connector to resolve |
@@ -474,7 +472,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
474 | { | 472 | { |
475 | if (item == null) | 473 | if (item == null) |
476 | return null; | 474 | return null; |
477 | m_log.Debug("[HG INVENTORY CONNECTOR]: GetItem " + item.ID); | 475 | //m_log.Debug("[HG INVENTORY CONNECTOR]: GetItem " + item.ID); |
478 | 476 | ||
479 | string invURL = GetInventoryServiceURL(item.Owner); | 477 | string invURL = GetInventoryServiceURL(item.Owner); |
480 | 478 | ||
@@ -491,7 +489,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
491 | if (folder == null) | 489 | if (folder == null) |
492 | return null; | 490 | return null; |
493 | 491 | ||
494 | m_log.Debug("[HG INVENTORY CONNECTOR]: GetFolder " + folder.ID); | 492 | //m_log.Debug("[HG INVENTORY CONNECTOR]: GetFolder " + folder.ID); |
495 | 493 | ||
496 | string invURL = GetInventoryServiceURL(folder.Owner); | 494 | string invURL = GetInventoryServiceURL(folder.Owner); |
497 | 495 | ||
@@ -515,7 +513,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory | |||
515 | 513 | ||
516 | public int GetAssetPermissions(UUID userID, UUID assetID) | 514 | public int GetAssetPermissions(UUID userID, UUID assetID) |
517 | { | 515 | { |
518 | m_log.Debug("[HG INVENTORY CONNECTOR]: GetAssetPermissions " + assetID); | 516 | //m_log.Debug("[HG INVENTORY CONNECTOR]: GetAssetPermissions " + assetID); |
519 | 517 | ||
520 | string invURL = GetInventoryServiceURL(userID); | 518 | string invURL = GetInventoryServiceURL(userID); |
521 | 519 | ||
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index 3945142..2a87da2 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs | |||
@@ -146,7 +146,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
146 | else | 146 | else |
147 | { | 147 | { |
148 | // Normal Calculations | 148 | // Normal Calculations |
149 | return (int)Math.Round(((float)LandData.Area / 65536.0f) * (float)m_scene.objectCapacity * (float)m_scene.RegionInfo.RegionSettings.ObjectBonus); | 149 | return (int)Math.Round(((float)LandData.Area / 65536.0f) * (float)m_scene.RegionInfo.ObjectCapacity * (float)m_scene.RegionInfo.RegionSettings.ObjectBonus); |
150 | } | 150 | } |
151 | } | 151 | } |
152 | public int GetSimulatorMaxPrimCount(ILandObject thisObject) | 152 | public int GetSimulatorMaxPrimCount(ILandObject thisObject) |
@@ -158,7 +158,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
158 | else | 158 | else |
159 | { | 159 | { |
160 | //Normal Calculations | 160 | //Normal Calculations |
161 | return m_scene.objectCapacity; | 161 | return m_scene.RegionInfo.ObjectCapacity; |
162 | } | 162 | } |
163 | } | 163 | } |
164 | #endregion | 164 | #endregion |