Merge branch 'ubitwork' of ssh://3dhosting.de/var/git/careminster into ubitwork

avinationmerge
Melanie 2012-03-12 11:45:38 +01:00
commit bfd38ecad4
4 changed files with 68 additions and 16 deletions

View File

@ -268,6 +268,39 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
else if (im.dialog == (byte) InstantMessageDialog.InventoryAccepted ||
im.dialog == (byte) InstantMessageDialog.TaskInventoryAccepted)
{
UUID inventoryID = new UUID(im.imSessionID); // The inventory item/folder, back from it's trip
IInventoryService invService = scene.InventoryService;
// Special case: folder redirect.
// RLV uses this
if (im.dialog == (byte) InstantMessageDialog.TaskInventoryAccepted)
{
InventoryFolderBase folder = new InventoryFolderBase(inventoryID, client.AgentId);
folder = invService.GetFolder(folder);
if (folder != null)
{
if (im.binaryBucket.Length >= 16)
{
UUID destFolderID = new UUID(im.binaryBucket, 0);
if (destFolderID != UUID.Zero)
{
InventoryFolderBase destFolder = new InventoryFolderBase(destFolderID, client.AgentId);
destFolder = invService.GetFolder(destFolder);
if (destFolder != null)
{
if (folder.ParentID != destFolder.ID)
{
folder.ParentID = destFolder.ID;
invService.MoveFolder(folder);
client.SendBulkUpdateInventory(folder);
}
}
}
}
}
}
ScenePresence user = scene.GetScenePresence(new UUID(im.toAgentID));
if (user != null) // Local

View File

@ -263,7 +263,7 @@ namespace OpenSim.Region.Framework.Scenes
private bool m_occupied; // KF if any av is sitting on this prim
private string m_text = String.Empty;
private string m_touchName = String.Empty;
private UndoRedoState m_UndoRedo = new UndoRedoState(5);
private UndoRedoState m_UndoRedo = null;
private bool m_passTouches;
@ -1706,7 +1706,7 @@ namespace OpenSim.Region.Framework.Scenes
dupe.Category = Category;
dupe.m_rezzed = m_rezzed;
dupe.m_UndoRedo = new UndoRedoState(5);
dupe.m_UndoRedo = null;
dupe.IgnoreUndoUpdate = false;
dupe.Undoing = false;
@ -3646,6 +3646,9 @@ namespace OpenSim.Region.Framework.Scenes
public void StoreUndoState(ObjectChangeWhat what)
{
if (m_UndoRedo == null)
m_UndoRedo = new UndoRedoState(5);
lock (m_UndoRedo)
{
if (!Undoing && !IgnoreUndoUpdate && ParentGroup != null) // just to read better - undo is in progress, or suspended
@ -3662,18 +3665,19 @@ namespace OpenSim.Region.Framework.Scenes
{
get
{
lock (m_UndoRedo)
return m_UndoRedo.Count;
if (m_UndoRedo == null)
return 0;
return m_UndoRedo.Count;
}
}
public void Undo()
{
if (m_UndoRedo == null || Undoing || ParentGroup == null)
return;
lock (m_UndoRedo)
{
if (Undoing || ParentGroup == null)
return;
Undoing = true;
m_UndoRedo.Undo(this);
Undoing = false;
@ -3682,11 +3686,11 @@ namespace OpenSim.Region.Framework.Scenes
public void Redo()
{
if (m_UndoRedo == null || Undoing || ParentGroup == null)
return;
lock (m_UndoRedo)
{
if (Undoing || ParentGroup == null)
return;
Undoing = true;
m_UndoRedo.Redo(this);
Undoing = false;
@ -3695,6 +3699,9 @@ namespace OpenSim.Region.Framework.Scenes
public void ClearUndoState()
{
if (m_UndoRedo == null || Undoing)
return;
lock (m_UndoRedo)
{
m_UndoRedo.Clear();

View File

@ -2487,14 +2487,25 @@ namespace OpenSim.Region.Physics.OdePlugin
if (!childPrim && Body != IntPtr.Zero && !m_disabled)
d.BodyEnable(Body);
m_collisionCategories = CollisionCategories.Geom;
if (m_isphysical)
m_collisionCategories |= CollisionCategories.Body;
if (m_isphantom && !m_isVolumeDetect)
{
m_collisionCategories = 0;
if(m_isphysical)
m_collisionFlags = CollisionCategories.Land;
else
m_collisionFlags = 0;
}
else
{
m_collisionCategories = CollisionCategories.Geom;
if (m_isphysical)
m_collisionCategories |= CollisionCategories.Body;
m_collisionFlags = m_default_collisionFlags | CollisionCategories.Land;
m_collisionFlags = m_default_collisionFlags | CollisionCategories.Land;
if (m_collidesWater)
m_collisionFlags |= CollisionCategories.Water;
if (m_collidesWater)
m_collisionFlags |= CollisionCategories.Water;
}
if (!childPrim)
{

View File

@ -128,6 +128,7 @@ namespace OpenSim.Region.Physics.OdePlugin
VolumeDtc,
Physical,
Phantom,
Selected,
disabled,
building,