mirror of
https://github.com/opensim/opensim.git
synced 2026-08-09 18:55:58 +08:00
Merge branch 'careminster-presence-refactor' of ssh://3dhosting.de/var/git/careminster into careminster-presence-refactor
This commit is contained in:
@@ -243,7 +243,11 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
// to the same scene (when this is possible).
|
||||
sceneObject.ResetIDs();
|
||||
|
||||
foreach (SceneObjectPart part in sceneObject.Children.Values)
|
||||
List<SceneObjectPart> partList = null;
|
||||
lock (sceneObject.Children)
|
||||
partList = new List<SceneObjectPart>(sceneObject.Children.Values);
|
||||
|
||||
foreach (SceneObjectPart part in partList)
|
||||
{
|
||||
if (!ResolveUserUuid(part.CreatorID))
|
||||
part.CreatorID = m_scene.RegionInfo.EstateSettings.EstateOwner;
|
||||
@@ -261,11 +265,27 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
// Fix ownership/creator of inventory items
|
||||
// Not doing so results in inventory items
|
||||
// being no copy/no mod for everyone
|
||||
part.TaskInventory.LockItemsForRead(true);
|
||||
TaskInventoryDictionary inv = part.TaskInventory;
|
||||
foreach (KeyValuePair<UUID, TaskInventoryItem> kvp in inv)
|
||||
lock (part.TaskInventory)
|
||||
{
|
||||
if (!ResolveUserUuid(kvp.Value.OwnerID))
|
||||
if (!ResolveUserUuid(part.CreatorID))
|
||||
part.CreatorID = m_scene.RegionInfo.EstateSettings.EstateOwner;
|
||||
|
||||
if (!ResolveUserUuid(part.OwnerID))
|
||||
part.OwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
|
||||
|
||||
if (!ResolveUserUuid(part.LastOwnerID))
|
||||
part.LastOwnerID = m_scene.RegionInfo.EstateSettings.EstateOwner;
|
||||
|
||||
// And zap any troublesome sit target information
|
||||
part.SitTargetOrientation = new Quaternion(0, 0, 0, 1);
|
||||
part.SitTargetPosition = new Vector3(0, 0, 0);
|
||||
|
||||
// Fix ownership/creator of inventory items
|
||||
// Not doing so results in inventory items
|
||||
// being no copy/no mod for everyone
|
||||
part.TaskInventory.LockItemsForRead(true);
|
||||
TaskInventoryDictionary inv = part.TaskInventory;
|
||||
foreach (KeyValuePair<UUID, TaskInventoryItem> kvp in inv)
|
||||
{
|
||||
if (!ResolveUserUuid(kvp.Value.OwnerID))
|
||||
{
|
||||
@@ -276,8 +296,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
kvp.Value.CreatorID = m_scene.RegionInfo.EstateSettings.EstateOwner;
|
||||
}
|
||||
}
|
||||
part.TaskInventory.LockItemsForRead(false);
|
||||
}
|
||||
part.TaskInventory.LockItemsForRead(false);
|
||||
}
|
||||
|
||||
if (m_scene.AddRestoredSceneObject(sceneObject, true, false))
|
||||
|
||||
@@ -684,6 +684,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||
args.useEstateSun = m_scene.RegionInfo.RegionSettings.UseEstateSun;
|
||||
args.waterHeight = (float)m_scene.RegionInfo.RegionSettings.WaterHeight;
|
||||
args.simName = m_scene.RegionInfo.RegionName;
|
||||
args.regionType = m_scene.RegionInfo.RegionType;
|
||||
|
||||
remote_client.SendRegionInfoToEstateMenu(args);
|
||||
}
|
||||
|
||||
@@ -33,6 +33,8 @@ using System.Reflection;
|
||||
using log4net;
|
||||
using Nini.Config;
|
||||
using OpenMetaverse;
|
||||
using OpenMetaverse.StructuredData;
|
||||
using OpenMetaverse.Messages.Linden;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Capabilities;
|
||||
using OpenSim.Framework.Servers;
|
||||
@@ -1078,7 +1080,6 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
{
|
||||
for (int y = 0; y < inc_y; y++)
|
||||
{
|
||||
|
||||
ILandObject currentParcel = GetLandObject(start_x + x, start_y + y);
|
||||
|
||||
if (currentParcel != null)
|
||||
@@ -1378,8 +1379,68 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
{
|
||||
return RemoteParcelRequest(request, path, param, agentID, caps);
|
||||
}));
|
||||
UUID parcelCapID = UUID.Random();
|
||||
caps.RegisterHandler("ParcelPropertiesUpdate",
|
||||
new RestStreamHandler("POST", "/CAPS/" + parcelCapID,
|
||||
delegate(string request, string path, string param,
|
||||
OSHttpRequest httpRequest, OSHttpResponse httpResponse)
|
||||
{
|
||||
return ProcessPropertiesUpdate(request, path, param, agentID, caps);
|
||||
}));
|
||||
}
|
||||
private string ProcessPropertiesUpdate(string request, string path, string param, UUID agentID, Caps caps)
|
||||
{
|
||||
IClientAPI client;
|
||||
if ( ! m_scene.TryGetClient(agentID, out client) ) {
|
||||
m_log.WarnFormat("[LAND] unable to retrieve IClientAPI for {0}", agentID.ToString() );
|
||||
return LLSDHelpers.SerialiseLLSDReply(new LLSDEmpty());
|
||||
}
|
||||
|
||||
ParcelPropertiesUpdateMessage properties = new ParcelPropertiesUpdateMessage();
|
||||
OpenMetaverse.StructuredData.OSDMap args = (OpenMetaverse.StructuredData.OSDMap) OSDParser.DeserializeLLSDXml(request);
|
||||
|
||||
properties.Deserialize(args);
|
||||
|
||||
LandUpdateArgs land_update = new LandUpdateArgs();
|
||||
int parcelID = properties.LocalID;
|
||||
land_update.AuthBuyerID = properties.AuthBuyerID;
|
||||
land_update.Category = properties.Category;
|
||||
land_update.Desc = properties.Desc;
|
||||
land_update.GroupID = properties.GroupID;
|
||||
land_update.LandingType = (byte) properties.Landing;
|
||||
land_update.MediaAutoScale = (byte) Convert.ToInt32(properties.MediaAutoScale);
|
||||
land_update.MediaID = properties.MediaID;
|
||||
land_update.MediaURL = properties.MediaURL;
|
||||
land_update.MusicURL = properties.MusicURL;
|
||||
land_update.Name = properties.Name;
|
||||
land_update.ParcelFlags = (uint) properties.ParcelFlags;
|
||||
land_update.PassHours = (int) properties.PassHours;
|
||||
land_update.PassPrice = (int) properties.PassPrice;
|
||||
land_update.SalePrice = (int) properties.SalePrice;
|
||||
land_update.SnapshotID = properties.SnapshotID;
|
||||
land_update.UserLocation = properties.UserLocation;
|
||||
land_update.UserLookAt = properties.UserLookAt;
|
||||
land_update.MediaDescription = properties.MediaDesc;
|
||||
land_update.MediaType = properties.MediaType;
|
||||
land_update.MediaWidth = properties.MediaWidth;
|
||||
land_update.MediaHeight = properties.MediaHeight;
|
||||
land_update.MediaLoop = properties.MediaLoop;
|
||||
land_update.ObscureMusic = properties.ObscureMusic;
|
||||
land_update.ObscureMedia = properties.ObscureMedia;
|
||||
|
||||
ILandObject land;
|
||||
lock (m_landList)
|
||||
{
|
||||
m_landList.TryGetValue(parcelID, out land);
|
||||
}
|
||||
|
||||
if (land != null) {
|
||||
land.UpdateLandProperties(land_update, client);
|
||||
} else {
|
||||
m_log.WarnFormat("[LAND] unable to find parcelID {0}", parcelID);
|
||||
}
|
||||
return LLSDHelpers.SerialiseLLSDReply(new LLSDEmpty());
|
||||
}
|
||||
// we cheat here: As we don't have (and want) a grid-global parcel-store, we can't return the
|
||||
// "real" parcelID, because we wouldn't be able to map that to the region the parcel belongs to.
|
||||
// So, we create a "fake" parcelID by using the regionHandle (64 bit), and the local (integer) x
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -128,7 +128,10 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell
|
||||
group.SetOwnerId(remoteClient.AgentId);
|
||||
group.SetRootPartOwner(part, remoteClient.AgentId, remoteClient.ActiveGroupId);
|
||||
|
||||
List<SceneObjectPart> partList = new List<SceneObjectPart>(group.Children.Values);
|
||||
List<SceneObjectPart> partList = null;
|
||||
|
||||
lock (group.Children)
|
||||
partList = new List<SceneObjectPart>(group.Children.Values);
|
||||
|
||||
if (m_scene.Permissions.PropagatePermissions())
|
||||
{
|
||||
|
||||
@@ -227,8 +227,13 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||
{
|
||||
SceneObjectGroup mapdot = (SceneObjectGroup)obj;
|
||||
Color mapdotspot = Color.Gray; // Default color when prim color is white
|
||||
// Loop over prim in group
|
||||
foreach (SceneObjectPart part in mapdot.Children.Values)
|
||||
|
||||
// Loop over prim in group
|
||||
List<SceneObjectPart> partList = null;
|
||||
lock (mapdot.Children)
|
||||
partList = new List<SceneObjectPart>(mapdot.Children.Values);
|
||||
|
||||
foreach (SceneObjectPart part in partList)
|
||||
{
|
||||
if (part == null)
|
||||
continue;
|
||||
|
||||
Reference in New Issue
Block a user