From 2bd03b7c8c3b14ea5e7b709aa9e1a3d63ed67e09 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Sun, 18 May 2008 03:21:22 +0000 Subject: * Group type stuff. Nothing spectacular. two packets, sorta almost semi half tiny amount implemented. --- OpenSim/Region/Environment/Scenes/InnerScene.cs | 23 ++++++++++++++++++++++ OpenSim/Region/Environment/Scenes/Scene.cs | 1 + .../Region/Environment/Scenes/SceneObjectGroup.cs | 11 +++++++++++ .../Region/Environment/Scenes/SceneObjectPart.cs | 8 +++++++- 4 files changed, 42 insertions(+), 1 deletion(-) (limited to 'OpenSim/Region/Environment/Scenes') diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs index 352fdf9..7a460a2 100644 --- a/OpenSim/Region/Environment/Scenes/InnerScene.cs +++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs @@ -330,7 +330,30 @@ namespace OpenSim.Region.Environment.Scenes } + public void HandleObjectGroupUpdate( + IClientAPI remoteClient, LLUUID GroupID, uint objectLocalID, LLUUID Garbage) + { + List EntityList = GetEntities(); + foreach (EntityBase obj in EntityList) + { + if (obj is SceneObjectGroup) + { + if (((SceneObjectGroup)obj).LocalId == objectLocalID) + { + SceneObjectGroup group = (SceneObjectGroup)obj; + + if (m_parentScene.ExternalChecks.ExternalChecksCanEditObject(group.UUID, remoteClient.AgentId)) + group.SetGroup(GroupID, remoteClient); + else + remoteClient.SendAgentAlertMessage("You don't have permission to set the group", false); + + } + } + } + + + } /// /// Event Handling routine for Attach Object /// diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index a798f40..d4b85c2 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -1651,6 +1651,7 @@ namespace OpenSim.Region.Environment.Scenes client.OnSetStartLocationRequest += SetHomeRezPoint; client.OnUndo += m_innerScene.HandleUndo; + client.OnObjectGroupRequest += m_innerScene.HandleObjectGroupUpdate; EventManager.TriggerOnNewClient(client); } diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 635a989..44e4c81 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs @@ -2510,5 +2510,16 @@ namespace OpenSim.Region.Environment.Scenes } } } + public void SetGroup(LLUUID GroupID, IClientAPI client) + { + lock (m_parts) + { + foreach (SceneObjectPart part in m_parts.Values) + { + part.SetGroup(GroupID, client); + } + } + ScheduleGroupForFullUpdate(); + } } } diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index a7b7692..a23083c 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs @@ -2760,13 +2760,19 @@ namespace OpenSim.Region.Environment.Scenes public void GetProperties(IClientAPI client) { - client.SendObjectPropertiesReply(LLUUID.Zero, (ulong)CreationDate, CreatorID, LLUUID.Zero, LLUUID.Zero, + client.SendObjectPropertiesReply(LLUUID.Zero, (ulong)CreationDate, CreatorID, LLUUID.Zero, GroupID, LLUUID.Zero, (short)InventorySerial, LastOwnerID, UUID, OwnerID, ParentGroup.RootPart.TouchName, new byte[0], ParentGroup.RootPart.SitName, Name, Description, ParentGroup.RootPart.OwnerMask, ParentGroup.RootPart.NextOwnerMask, ParentGroup.RootPart.GroupMask, ParentGroup.RootPart.EveryoneMask, ParentGroup.RootPart.BaseMask); } + public void SetGroup(LLUUID groupID, IClientAPI client) + { + GroupID = groupID; + GetProperties(client); + m_updateFlag = 2; + } } } -- cgit v1.1