From b341bc090833695184276c48dd36cd946791a00c Mon Sep 17 00:00:00 2001
From: BlueWall
Date: Thu, 13 Jan 2011 11:39:50 -0500
Subject: Make FireAndForgetWrapper a singleton class
Made FireAndForgetWrapper a singleton class to allow us to drop
dependancy on the BclExtras35 library. BclExtras is broken in
Mono 2.8.2 and we used the library in only one function.
---
OpenSim/Framework/Util.cs | 27 ++++++++++++++++++++++++---
bin/BclExtras35.dll | Bin 153600 -> 0 bytes
prebuild.xml | 2 --
3 files changed, 24 insertions(+), 5 deletions(-)
delete mode 100644 bin/BclExtras35.dll
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs
index 8d1671a..d1d8736 100644
--- a/OpenSim/Framework/Util.cs
+++ b/OpenSim/Framework/Util.cs
@@ -46,7 +46,7 @@ using System.Threading;
using log4net;
using Nini.Config;
using Nwc.XmlRpc;
-using BclExtras;
+// using BclExtras;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using Amib.Threading;
@@ -1375,8 +1375,29 @@ namespace OpenSim.Framework
///
/// Created to work around a limitation in Mono with nested delegates
///
- private class FireAndForgetWrapper
+ private sealed class FireAndForgetWrapper
{
+ private static volatile FireAndForgetWrapper instance;
+ private static object syncRoot = new Object();
+
+ public static FireAndForgetWrapper Instance {
+ get {
+
+ if (instance == null)
+ {
+ lock (syncRoot)
+ {
+ if (instance == null)
+ {
+ instance = new FireAndForgetWrapper();
+ }
+ }
+ }
+
+ return instance;
+ }
+ }
+
public void FireAndForget(System.Threading.WaitCallback callback)
{
callback.BeginInvoke(null, EndFireAndForget, callback);
@@ -1445,7 +1466,7 @@ namespace OpenSim.Framework
ThreadPool.QueueUserWorkItem(callback, obj);
break;
case FireAndForgetMethod.BeginInvoke:
- FireAndForgetWrapper wrapper = Singleton.GetInstance();
+ FireAndForgetWrapper wrapper = FireAndForgetWrapper.Instance;
wrapper.FireAndForget(callback, obj);
break;
case FireAndForgetMethod.SmartThreadPool:
diff --git a/bin/BclExtras35.dll b/bin/BclExtras35.dll
deleted file mode 100644
index 7a7480a..0000000
Binary files a/bin/BclExtras35.dll and /dev/null differ
diff --git a/prebuild.xml b/prebuild.xml
index 48bb2d3..854149b 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -158,7 +158,6 @@
-
@@ -1597,7 +1596,6 @@
-
--
cgit v1.1
From b492f1ce99d27bcf29eb5805564c8778aa4df748 Mon Sep 17 00:00:00 2001
From: BlueWall
Date: Sat, 12 Feb 2011 20:50:24 -0500
Subject: Fix unsitting of avatar on linked sets
---
OpenSim/Region/Framework/Scenes/ScenePresence.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index cd70de8..cb2543f 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -472,7 +472,7 @@ namespace OpenSim.Region.Framework.Scenes
SceneObjectPart part = m_scene.GetSceneObjectPart(m_parentID);
if (part != null)
{
- return m_parentPosition + (m_pos * part.GetWorldRotation());
+ return m_parentPosition + (m_pos * part.RotationOffset);
}
else
{
--
cgit v1.1
From 0d495ced4c4077ab456119650693c979eeb9d1ea Mon Sep 17 00:00:00 2001
From: BlueWall
Date: Sun, 13 Feb 2011 00:29:06 -0500
Subject: Revert "Fix unsitting of avatar on linked sets"
This reverts commit b492f1ce99d27bcf29eb5805564c8778aa4df748.
---
OpenSim/Region/Framework/Scenes/ScenePresence.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index cb2543f..cd70de8 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -472,7 +472,7 @@ namespace OpenSim.Region.Framework.Scenes
SceneObjectPart part = m_scene.GetSceneObjectPart(m_parentID);
if (part != null)
{
- return m_parentPosition + (m_pos * part.RotationOffset);
+ return m_parentPosition + (m_pos * part.GetWorldRotation());
}
else
{
--
cgit v1.1
From 6601771f812a360e6bc949da242878980ac0dd72 Mon Sep 17 00:00:00 2001
From: BlueWall
Date: Sun, 13 Feb 2011 00:30:43 -0500
Subject: Set filter to send proper rotations for root part
This allows the root prim, alone or in a set, to send it's
rotation. This fixes unsitting the avatar on sit-offsest
type teleports where the sit target is in the root prim of
a linkset.
---
OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 6a92378..4d5eedf 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -2099,7 +2099,7 @@ namespace OpenSim.Region.Framework.Scenes
{
Quaternion newRot;
- if (this.LinkNum == 0)
+ if (this.LinkNum == 0 || this.LinkNum == 1)
{
newRot = RotationOffset;
}
--
cgit v1.1
From dec9c2283b548818409c91a93307334d1c0d9774 Mon Sep 17 00:00:00 2001
From: BlueWall
Date: Wed, 13 Apr 2011 16:10:18 -0400
Subject: Add ColladaMesh switch
---
OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs | 13 +++++++++++--
.../Assets/NewFileAgentInventoryVariablePriceModule.cs | 11 ++++++++++-
bin/OpenSimDefaults.ini | 6 +++++-
3 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs
index 878242a..d2278bc 100644
--- a/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs
@@ -54,6 +54,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets
private Scene m_scene;
private IAssetService m_assetService;
+ private bool m_enabled = true;
#region IRegionModuleBase Members
@@ -65,7 +66,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets
public void Initialise(IConfigSource source)
{
-
+ IConfig startupConfig = source.Configs["Startup"];
+ if (startupConfig == null)
+ return;
+
+ if (!startupConfig.GetBoolean("ColladaMesh",true))
+ m_enabled = false;
}
public void AddRegion(Scene pScene)
@@ -101,16 +107,19 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets
public void RegisterCaps(UUID agentID, Caps caps)
{
+ if(!m_enabled)
+ return;
+
UUID capID = UUID.Random();
// m_log.Info("[GETMESH]: /CAPS/" + capID);
+
caps.RegisterHandler("GetMesh",
new RestHTTPHandler("GET", "/CAPS/" + capID,
delegate(Hashtable m_dhttpMethod)
{
return ProcessGetMesh(m_dhttpMethod, agentID, caps);
}));
-
}
#endregion
diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs
index 4a42c93..fb07cc9 100644
--- a/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs
@@ -56,6 +56,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets
private Scene m_scene;
// private IAssetService m_assetService;
private bool m_dumpAssetsToFile = false;
+ private bool m_enabled = true;
#region IRegionModuleBase Members
@@ -67,7 +68,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets
public void Initialise(IConfigSource source)
{
-
+ IConfig startupConfig = source.Configs["Startup"];
+ if (startupConfig == null)
+ return;
+
+ if (!startupConfig.GetBoolean("ColladaMesh",true))
+ m_enabled = false;
}
public void AddRegion(Scene pScene)
@@ -103,6 +109,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets
public void RegisterCaps(UUID agentID, Caps caps)
{
+ if(!m_enabled)
+ return;
+
UUID capID = UUID.Random();
// m_log.Debug("[NEW FILE AGENT INVENTORY VARIABLE PRICE]: /CAPS/" + capID);
diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini
index f857b8d..107e859 100644
--- a/bin/OpenSimDefaults.ini
+++ b/bin/OpenSimDefaults.ini
@@ -154,7 +154,11 @@
; mesh, and use it for collisions. This is currently experimental code and enabling
; it may cause unexpected physics problems.
;UseMeshiesPhysicsMesh = false
-
+
+ ; enable / disable Collada mesh support
+ ; default is true
+ ; ColladaMesh = true
+
; Choose one of the physics engines below
; OpenDynamicsEngine is by some distance the most developed physics engine
; basicphysics effectively does not model physics at all, making all objects phantom
--
cgit v1.1
From fc365f2a31d46b9c6517159330c7f6953eb60e9f Mon Sep 17 00:00:00 2001
From: BlueWall
Date: Fri, 15 Apr 2011 18:23:37 -0400
Subject: Thanks Snoopy for a patch that allows setting of perms on items given
to new avatars
---
.../RemoteController/RemoteAdminPlugin.cs | 35 +++++++++++++++++++++-
1 file changed, 34 insertions(+), 1 deletion(-)
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
index 1b4d1ea..c6b34f9 100644
--- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
+++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
@@ -1587,6 +1587,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{
InventoryItemBase destinationItem = new InventoryItemBase(UUID.Random(), destination);
destinationItem.Name = item.Name;
+ destinationItem.Owner = destination;
destinationItem.Description = item.Description;
destinationItem.InvType = item.InvType;
destinationItem.CreatorId = item.CreatorId;
@@ -1606,6 +1607,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
destinationItem.Flags = item.Flags;
destinationItem.CreationDate = item.CreationDate;
destinationItem.Folder = destinationFolder.ID;
+ ApplyNextOwnerPermissions(destinationItem);
m_application.SceneManager.CurrentOrFirstScene.AddInventoryItem(destinationItem);
m_log.DebugFormat("[RADMIN]: Added item {0} to folder {1}", destinationItem.ID, destinationFolder.ID);
@@ -1640,6 +1642,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{
InventoryItemBase destinationItem = new InventoryItemBase(UUID.Random(), destination);
destinationItem.Name = item.Name;
+ destinationItem.Owner = destination;
destinationItem.Description = item.Description;
destinationItem.InvType = item.InvType;
destinationItem.CreatorId = item.CreatorId;
@@ -1659,6 +1662,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
destinationItem.Flags = item.Flags;
destinationItem.CreationDate = item.CreationDate;
destinationItem.Folder = destinationFolder.ID;
+ ApplyNextOwnerPermissions(destinationItem);
m_application.SceneManager.CurrentOrFirstScene.AddInventoryItem(destinationItem);
m_log.DebugFormat("[RADMIN]: Added item {0} to folder {1}", destinationItem.ID, destinationFolder.ID);
@@ -1716,7 +1720,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{
destinationFolder = new InventoryFolderBase();
destinationFolder.ID = UUID.Random();
- destinationFolder.Name = assetType.ToString();
+ if (assetType == AssetType.Clothing) {
+ destinationFolder.Name = "Clothing";
+ } else {
+ destinationFolder.Name = "Body Parts";
+ }
destinationFolder.Owner = destination;
destinationFolder.Type = (short)assetType;
destinationFolder.ParentID = inventoryService.GetRootFolder(destination).ID;
@@ -1748,6 +1756,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
{
InventoryItemBase destinationItem = new InventoryItemBase(UUID.Random(), destination);
destinationItem.Name = item.Name;
+ destinationItem.Owner = destination;
destinationItem.Description = item.Description;
destinationItem.InvType = item.InvType;
destinationItem.CreatorId = item.CreatorId;
@@ -1767,6 +1776,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
destinationItem.Flags = item.Flags;
destinationItem.CreationDate = item.CreationDate;
destinationItem.Folder = extraFolder.ID;
+ ApplyNextOwnerPermissions(destinationItem);
m_application.SceneManager.CurrentOrFirstScene.AddInventoryItem(destinationItem);
inventoryMap.Add(item.ID, destinationItem.ID);
@@ -1784,6 +1794,29 @@ namespace OpenSim.ApplicationPlugins.RemoteController
}
///
+ /// Apply next owner permissions.
+ ///
+
+ private void ApplyNextOwnerPermissions(InventoryItemBase item)
+ {
+ if (item.InvType == (int)InventoryType.Object && (item.CurrentPermissions & 7) != 0)
+ {
+ if ((item.CurrentPermissions & ((uint)PermissionMask.Copy >> 13)) == 0)
+ item.CurrentPermissions &= ~(uint)PermissionMask.Copy;
+ if ((item.CurrentPermissions & ((uint)PermissionMask.Transfer >> 13)) == 0)
+ item.CurrentPermissions &= ~(uint)PermissionMask.Transfer;
+ if ((item.CurrentPermissions & ((uint)PermissionMask.Modify >> 13)) == 0)
+ item.CurrentPermissions &= ~(uint)PermissionMask.Modify;
+ }
+ item.CurrentPermissions &= item.NextPermissions;
+ item.BasePermissions &= item.NextPermissions;
+ item.EveryOnePermissions &= item.NextPermissions;
+ // item.OwnerChanged = true;
+ // item.PermsMask = 0;
+ // item.PermsGranter = UUID.Zero;
+ }
+
+ ///
/// This method is called if a given model avatar name can not be found. If the external
/// file has already been loaded once, then control returns immediately. If not, then it
/// looks for a default appearance file. This file contains XML definitions of zero or more named
--
cgit v1.1