aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorMelanie2012-03-12 11:45:38 +0100
committerMelanie2012-03-12 11:45:38 +0100
commitbfd38ecad49dc9976e816b484bb9e2a1c729b1cb (patch)
treeef3ca09b6ba1880f3ed3d5f914a5a5e0030f8dca /OpenSim
parentAdd AVATAR_MALE flag to return values of llGetAgentInfo (diff)
parentallocate UndoRedoStore only on demand (diff)
downloadopensim-SC_OLD-bfd38ecad49dc9976e816b484bb9e2a1c729b1cb.zip
opensim-SC_OLD-bfd38ecad49dc9976e816b484bb9e2a1c729b1cb.tar.gz
opensim-SC_OLD-bfd38ecad49dc9976e816b484bb9e2a1c729b1cb.tar.bz2
opensim-SC_OLD-bfd38ecad49dc9976e816b484bb9e2a1c729b1cb.tar.xz
Merge branch 'ubitwork' of ssh://3dhosting.de/var/git/careminster into ubitwork
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs33
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs27
-rw-r--r--OpenSim/Region/Physics/UbitOdePlugin/ODEPrim.cs23
-rw-r--r--OpenSim/Region/Physics/UbitOdePlugin/OdeScene.cs1
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,