From ccc8ffaaec915f0561d9aded6cc4b32b911f473c Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Tue, 18 Dec 2007 12:08:34 +0000 Subject: * Added Incomplete Handling of the RegionInfoRequest packet * Added Incomplete Handling of the EstateCovenantRequest packet * Added Incomplete Handling of the EstateOwnerMessageRequest.ChangeEstateCovenantid method * Fixed a race condition with avatar animations --- OpenSim/Region/Environment/EstateManager.cs | 52 ++++++++++++++++++++++ .../Region/Environment/Scenes/AvatarAnimations.cs | 9 ++-- OpenSim/Region/Environment/Scenes/Scene.cs | 2 + 3 files changed, 60 insertions(+), 3 deletions(-) (limited to 'OpenSim/Region/Environment') diff --git a/OpenSim/Region/Environment/EstateManager.cs b/OpenSim/Region/Environment/EstateManager.cs index e1bb4d8..081a8cd 100644 --- a/OpenSim/Region/Environment/EstateManager.cs +++ b/OpenSim/Region/Environment/EstateManager.cs @@ -177,6 +177,12 @@ namespace OpenSim.Region.Environment estateRestartSim(packet); } break; + case "estatechangecovenantid": + if (m_scene.PermissionsMngr.CanEditEstateTerrain(remote_client.AgentId)) + { + EstateChangeCovenant(packet); + } + break; default: MainLog.Instance.Error("EstateOwnerMessage: Unknown method requested\n" + packet.ToString()); break; @@ -340,8 +346,54 @@ namespace OpenSim.Region.Environment } } + private void EstateChangeCovenant(EstateOwnerMessagePacket packet) + { + foreach (EstateOwnerMessagePacket.ParamListBlock block in packet.ParamList) + { + LLUUID newCovenantID = new LLUUID(Helpers.FieldToUTF8String(block.Parameter)); + m_regInfo.CovenantID = newCovenantID; + } + + } + public void HandleRegionInfoRequest(IClientAPI client, LLUUID sessionID) + { + RegionInfoPacket rinfopack = new RegionInfoPacket(); + RegionInfoPacket.RegionInfoBlock rinfoblk = new RegionInfoPacket.RegionInfoBlock(); + + rinfoblk.BillableFactor = 0; + rinfoblk.EstateID = 02; + rinfoblk.MaxAgents = 100; + rinfoblk.ObjectBonusFactor = 1.0f; + rinfoblk.ParentEstateID = 0; + rinfoblk.PricePerMeter = 0; + rinfoblk.RedirectGridX = 0; + rinfoblk.RedirectGridY = 0; + rinfoblk.RegionFlags = (uint)m_regInfo.EstateSettings.regionFlags; + rinfoblk.SimAccess = (byte)m_regInfo.EstateSettings.simAccess; + rinfoblk.SunHour = m_regInfo.EstateSettings.sunHour; + rinfoblk.TerrainLowerLimit = 20; + rinfoblk.TerrainRaiseLimit = 20; + rinfoblk.UseEstateSun = true; + rinfoblk.WaterHeight = m_regInfo.EstateSettings.waterHeight; + rinfoblk.SimName = Helpers.StringToField(m_regInfo.RegionName); + + rinfopack.RegionInfo = rinfoblk; + + client.OutPacket(rinfopack, ThrottleOutPacketType.Task); + } + public void HandleEstateCovenantRequest(IClientAPI client, LLUUID sessionID) + { + EstateCovenantReplyPacket einfopack = new EstateCovenantReplyPacket(); + EstateCovenantReplyPacket.DataBlock edata = new EstateCovenantReplyPacket.DataBlock(); + edata.CovenantID = m_regInfo.CovenantID; + edata.CovenantTimestamp = 0; + edata.EstateOwnerID = m_regInfo.MasterAvatarAssignedUUID; + edata.EstateName = Helpers.StringToField(m_regInfo.MasterAvatarFirstName + " " + m_regInfo.MasterAvatarLastName); + einfopack.Data = edata; + client.OutPacket(einfopack, ThrottleOutPacketType.Task); + } #endregion #region Outgoing Packets diff --git a/OpenSim/Region/Environment/Scenes/AvatarAnimations.cs b/OpenSim/Region/Environment/Scenes/AvatarAnimations.cs index d508c9e..82ecda8 100644 --- a/OpenSim/Region/Environment/Scenes/AvatarAnimations.cs +++ b/OpenSim/Region/Environment/Scenes/AvatarAnimations.cs @@ -59,10 +59,13 @@ namespace OpenSim.Region.Environment.Scenes } // MainLog.Instance.Verbose("CLIENT", "Loaded " + AnimsLLUUID.Count.ToString() + " animation(s)"); - - foreach (KeyValuePair kp in ScenePresence.Animations.AnimsLLUUID) + + lock (ScenePresence.Animations.AnimsLLUUID) { - AnimsNames.Add(kp.Value, kp.Key); + foreach (KeyValuePair kp in ScenePresence.Animations.AnimsLLUUID) + { + AnimsNames.Add(kp.Value, kp.Key); + } } } } diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 9ca23d5..eec07fc 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -1122,6 +1122,8 @@ namespace OpenSim.Region.Environment.Scenes client.OnParcelAccessListUpdateRequest += new ParcelAccessListUpdateRequest(m_LandManager.handleParcelAccessUpdateRequest); client.OnEstateOwnerMessage += new EstateOwnerMessageRequest(m_estateManager.handleEstateOwnerMessage); + client.OnRegionInfoRequest += m_estateManager.HandleRegionInfoRequest; + client.OnEstateCovenantRequest += m_estateManager.HandleEstateCovenantRequest; client.OnRequestGodlikePowers += handleRequestGodlikePowers; client.OnGodKickUser += handleGodlikeKickUser; client.OnObjectPermissions += HandleObjectPermissionsUpdate; -- cgit v1.1