diff options
author | Melanie | 2012-03-12 11:45:38 +0100 |
---|---|---|
committer | Melanie | 2012-03-12 11:45:38 +0100 |
commit | bfd38ecad49dc9976e816b484bb9e2a1c729b1cb (patch) | |
tree | ef3ca09b6ba1880f3ed3d5f914a5a5e0030f8dca /OpenSim | |
parent | Add AVATAR_MALE flag to return values of llGetAgentInfo (diff) | |
parent | allocate UndoRedoStore only on demand (diff) | |
download | opensim-SC-bfd38ecad49dc9976e816b484bb9e2a1c729b1cb.zip opensim-SC-bfd38ecad49dc9976e816b484bb9e2a1c729b1cb.tar.gz opensim-SC-bfd38ecad49dc9976e816b484bb9e2a1c729b1cb.tar.bz2 opensim-SC-bfd38ecad49dc9976e816b484bb9e2a1c729b1cb.tar.xz |
Merge branch 'ubitwork' of ssh://3dhosting.de/var/git/careminster into ubitwork
Diffstat (limited to 'OpenSim')
4 files changed, 68 insertions, 16 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs index da708d2..80554fb 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs | |||
@@ -268,6 +268,39 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer | |||
268 | else if (im.dialog == (byte) InstantMessageDialog.InventoryAccepted || | 268 | else if (im.dialog == (byte) InstantMessageDialog.InventoryAccepted || |
269 | im.dialog == (byte) InstantMessageDialog.TaskInventoryAccepted) | 269 | im.dialog == (byte) InstantMessageDialog.TaskInventoryAccepted) |
270 | { | 270 | { |
271 | UUID inventoryID = new UUID(im.imSessionID); // The inventory item/folder, back from it's trip | ||
272 | IInventoryService invService = scene.InventoryService; | ||
273 | |||
274 | // Special case: folder redirect. | ||
275 | // RLV uses this | ||
276 | if (im.dialog == (byte) InstantMessageDialog.TaskInventoryAccepted) | ||
277 | { | ||
278 | InventoryFolderBase folder = new InventoryFolderBase(inventoryID, client.AgentId); | ||
279 | folder = invService.GetFolder(folder); | ||
280 | |||
281 | if (folder != null) | ||
282 | { | ||
283 | if (im.binaryBucket.Length >= 16) | ||
284 | { | ||
285 | UUID destFolderID = new UUID(im.binaryBucket, 0); | ||
286 | if (destFolderID != UUID.Zero) | ||
287 | { | ||
288 | InventoryFolderBase destFolder = new InventoryFolderBase(destFolderID, client.AgentId); | ||
289 | destFolder = invService.GetFolder(destFolder); | ||
290 | if (destFolder != null) | ||
291 | { | ||
292 | if (folder.ParentID != destFolder.ID) | ||
293 | { | ||
294 | folder.ParentID = destFolder.ID; | ||
295 | invService.MoveFolder(folder); | ||
296 | client.SendBulkUpdateInventory(folder); | ||
297 | } | ||
298 | } | ||
299 | } | ||
300 | } | ||
301 | } | ||
302 | } | ||
303 | |||
271 | ScenePresence user = scene.GetScenePresence(new UUID(im.toAgentID)); | 304 | ScenePresence user = scene.GetScenePresence(new UUID(im.toAgentID)); |
272 | 305 | ||
273 | if (user != null) // Local | 306 | if (user != null) // Local |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index a17862e..94e4560 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -263,7 +263,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
263 | private bool m_occupied; // KF if any av is sitting on this prim | 263 | private bool m_occupied; // KF if any av is sitting on this prim |
264 | private string m_text = String.Empty; | 264 | private string m_text = String.Empty; |
265 | private string m_touchName = String.Empty; | 265 | private string m_touchName = String.Empty; |
266 | private UndoRedoState m_UndoRedo = new UndoRedoState(5); | 266 | private UndoRedoState m_UndoRedo = null; |
267 | 267 | ||
268 | private bool m_passTouches; | 268 | private bool m_passTouches; |
269 | 269 | ||
@@ -1706,7 +1706,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1706 | dupe.Category = Category; | 1706 | dupe.Category = Category; |
1707 | dupe.m_rezzed = m_rezzed; | 1707 | dupe.m_rezzed = m_rezzed; |
1708 | 1708 | ||
1709 | dupe.m_UndoRedo = new UndoRedoState(5); | 1709 | dupe.m_UndoRedo = null; |
1710 | 1710 | ||
1711 | dupe.IgnoreUndoUpdate = false; | 1711 | dupe.IgnoreUndoUpdate = false; |
1712 | dupe.Undoing = false; | 1712 | dupe.Undoing = false; |
@@ -3646,6 +3646,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
3646 | 3646 | ||
3647 | public void StoreUndoState(ObjectChangeWhat what) | 3647 | public void StoreUndoState(ObjectChangeWhat what) |
3648 | { | 3648 | { |
3649 | if (m_UndoRedo == null) | ||
3650 | m_UndoRedo = new UndoRedoState(5); | ||
3651 | |||
3649 | lock (m_UndoRedo) | 3652 | lock (m_UndoRedo) |
3650 | { | 3653 | { |
3651 | if (!Undoing && !IgnoreUndoUpdate && ParentGroup != null) // just to read better - undo is in progress, or suspended | 3654 | if (!Undoing && !IgnoreUndoUpdate && ParentGroup != null) // just to read better - undo is in progress, or suspended |
@@ -3662,18 +3665,19 @@ namespace OpenSim.Region.Framework.Scenes | |||
3662 | { | 3665 | { |
3663 | get | 3666 | get |
3664 | { | 3667 | { |
3665 | lock (m_UndoRedo) | 3668 | if (m_UndoRedo == null) |
3666 | return m_UndoRedo.Count; | 3669 | return 0; |
3670 | return m_UndoRedo.Count; | ||
3667 | } | 3671 | } |
3668 | } | 3672 | } |
3669 | 3673 | ||
3670 | public void Undo() | 3674 | public void Undo() |
3671 | { | 3675 | { |
3676 | if (m_UndoRedo == null || Undoing || ParentGroup == null) | ||
3677 | return; | ||
3678 | |||
3672 | lock (m_UndoRedo) | 3679 | lock (m_UndoRedo) |
3673 | { | 3680 | { |
3674 | if (Undoing || ParentGroup == null) | ||
3675 | return; | ||
3676 | |||
3677 | Undoing = true; | 3681 | Undoing = true; |
3678 | m_UndoRedo.Undo(this); | 3682 | m_UndoRedo.Undo(this); |
3679 | Undoing = false; | 3683 | Undoing = false; |
@@ -3682,11 +3686,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
3682 | 3686 | ||
3683 | public void Redo() | 3687 | public void Redo() |
3684 | { | 3688 | { |
3689 | if (m_UndoRedo == null || Undoing || ParentGroup == null) | ||
3690 | return; | ||
3691 | |||
3685 | lock (m_UndoRedo) | 3692 | lock (m_UndoRedo) |
3686 | { | 3693 | { |
3687 | if (Undoing || ParentGroup == null) | ||
3688 | return; | ||
3689 | |||
3690 | Undoing = true; | 3694 | Undoing = true; |
3691 | m_UndoRedo.Redo(this); | 3695 | m_UndoRedo.Redo(this); |
3692 | Undoing = false; | 3696 | Undoing = false; |
@@ -3695,6 +3699,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
3695 | 3699 | ||
3696 | public void ClearUndoState() | 3700 | public void ClearUndoState() |
3697 | { | 3701 | { |
3702 | if (m_UndoRedo == null || Undoing) | ||
3703 | return; | ||
3704 | |||
3698 | lock (m_UndoRedo) | 3705 | lock (m_UndoRedo) |
3699 | { | 3706 | { |
3700 | m_UndoRedo.Clear(); | 3707 | m_UndoRedo.Clear(); |
diff --git a/OpenSim/Region/Physics/UbitOdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/UbitOdePlugin/ODEPrim.cs index 5d8f03c..39b89d3 100644 --- a/OpenSim/Region/Physics/UbitOdePlugin/ODEPrim.cs +++ b/OpenSim/Region/Physics/UbitOdePlugin/ODEPrim.cs | |||
@@ -2487,14 +2487,25 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
2487 | if (!childPrim && Body != IntPtr.Zero && !m_disabled) | 2487 | if (!childPrim && Body != IntPtr.Zero && !m_disabled) |
2488 | d.BodyEnable(Body); | 2488 | d.BodyEnable(Body); |
2489 | 2489 | ||
2490 | m_collisionCategories = CollisionCategories.Geom; | 2490 | if (m_isphantom && !m_isVolumeDetect) |
2491 | if (m_isphysical) | 2491 | { |
2492 | m_collisionCategories |= CollisionCategories.Body; | 2492 | m_collisionCategories = 0; |
2493 | if(m_isphysical) | ||
2494 | m_collisionFlags = CollisionCategories.Land; | ||
2495 | else | ||
2496 | m_collisionFlags = 0; | ||
2497 | } | ||
2498 | else | ||
2499 | { | ||
2500 | m_collisionCategories = CollisionCategories.Geom; | ||
2501 | if (m_isphysical) | ||
2502 | m_collisionCategories |= CollisionCategories.Body; | ||
2493 | 2503 | ||
2494 | m_collisionFlags = m_default_collisionFlags | CollisionCategories.Land; | 2504 | m_collisionFlags = m_default_collisionFlags | CollisionCategories.Land; |
2495 | 2505 | ||
2496 | if (m_collidesWater) | 2506 | if (m_collidesWater) |
2497 | m_collisionFlags |= CollisionCategories.Water; | 2507 | m_collisionFlags |= CollisionCategories.Water; |
2508 | } | ||
2498 | 2509 | ||
2499 | if (!childPrim) | 2510 | if (!childPrim) |
2500 | { | 2511 | { |
diff --git a/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs b/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs index b111172..612eafd 100644 --- a/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs +++ b/OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs | |||
@@ -128,6 +128,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
128 | VolumeDtc, | 128 | VolumeDtc, |
129 | 129 | ||
130 | Physical, | 130 | Physical, |
131 | Phantom, | ||
131 | Selected, | 132 | Selected, |
132 | disabled, | 133 | disabled, |
133 | building, | 134 | building, |