refactor: make RezObject() more readable

prebuild-update
Justin Clark-Casey (justincc) 2010-08-24 20:53:25 +01:00
parent 46d06b6c4c
commit 07d5a0779a
1 changed files with 78 additions and 79 deletions

View File

@ -1966,22 +1966,21 @@ namespace OpenSim.Region.Framework.Scenes
SceneObjectPart sourcePart, TaskInventoryItem item, SceneObjectPart sourcePart, TaskInventoryItem item,
Vector3 pos, Quaternion rot, Vector3 vel, int param) Vector3 pos, Quaternion rot, Vector3 vel, int param)
{ {
// Rez object if (null == item)
if (item != null) return null;
{
UUID ownerID = item.OwnerID;
UUID ownerID = item.OwnerID;
AssetBase rezAsset = AssetService.Get(item.AssetID.ToString()); AssetBase rezAsset = AssetService.Get(item.AssetID.ToString());
if (rezAsset != null) if (null == rezAsset)
{ return null;
string xmlData = Utils.BytesToString(rezAsset.Data); string xmlData = Utils.BytesToString(rezAsset.Data);
SceneObjectGroup group = SceneObjectSerializer.FromOriginalXmlFormat(xmlData); SceneObjectGroup group = SceneObjectSerializer.FromOriginalXmlFormat(xmlData);
if (!Permissions.CanRezObject(group.Children.Count, ownerID, pos)) if (!Permissions.CanRezObject(group.Children.Count, ownerID, pos))
{
return null; return null;
}
group.ResetIDs(); group.ResetIDs();
AddNewSceneObject(group, true); AddNewSceneObject(group, true);
@ -2010,6 +2009,7 @@ namespace OpenSim.Region.Framework.Scenes
part.EveryoneMask = item.EveryonePermissions; part.EveryoneMask = item.EveryonePermissions;
part.NextOwnerMask = item.NextPermissions; part.NextOwnerMask = item.NextPermissions;
} }
group.ApplyNextOwnerPermissions(); group.ApplyNextOwnerPermissions();
} }
} }
@ -2022,6 +2022,7 @@ namespace OpenSim.Region.Framework.Scenes
part.OwnerID = item.OwnerID; part.OwnerID = item.OwnerID;
part.Inventory.ChangeInventoryOwner(item.OwnerID); part.Inventory.ChangeInventoryOwner(item.OwnerID);
} }
part.EveryoneMask = item.EveryonePermissions; part.EveryoneMask = item.EveryonePermissions;
part.NextOwnerMask = item.NextPermissions; part.NextOwnerMask = item.NextPermissions;
} }
@ -2042,6 +2043,7 @@ namespace OpenSim.Region.Framework.Scenes
group.Velocity = vel; group.Velocity = vel;
rootPart.ScheduleFullUpdate(); rootPart.ScheduleFullUpdate();
} }
group.CreateScriptInstances(param, true, DefaultScriptEngine, 2); group.CreateScriptInstances(param, true, DefaultScriptEngine, 2);
rootPart.ScheduleFullUpdate(); rootPart.ScheduleFullUpdate();
@ -2050,11 +2052,8 @@ namespace OpenSim.Region.Framework.Scenes
if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0)
sourcePart.Inventory.RemoveInventoryItem(item.ItemID); sourcePart.Inventory.RemoveInventoryItem(item.ItemID);
} }
return rootPart.ParentGroup;
}
}
return null; return rootPart.ParentGroup;
} }
public virtual bool returnObjects(SceneObjectGroup[] returnobjects, UUID AgentId) public virtual bool returnObjects(SceneObjectGroup[] returnobjects, UUID AgentId)