From d8e02d9e5c6776099f9b5a1904a678fa2cf34841 Mon Sep 17 00:00:00 2001 From: mingchen Date: Tue, 6 May 2008 18:29:58 +0000 Subject: [PATCH] *LLClientView is now pushed the EstateSettings instead of pulling it from the scene...more to standards *LandChannel no longer requires libsecondlife.Packets (it should have never needed it in the first place) --- OpenSim/Framework/IClientAPI.cs | 57 ++++++++- .../ClientStack/LindenUDP/LLClientView.cs | 118 +++++++++--------- .../World/Estate/EstateManagementModule.cs | 72 +++++++++-- .../Modules/World/Land/LandChannel.cs | 9 +- .../Modules/World/Land/LandObject.cs | 2 +- .../Examples/SimpleModule/MyNpcCharacter.cs | 13 +- 6 files changed, 184 insertions(+), 87 deletions(-) diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index c0ba6368a1..0f45d9d49f 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -255,6 +255,52 @@ namespace OpenSim.Framework public LLVector3 UserLocation; public LLVector3 UserLookAt; } + public class RegionHandshakeArgs : EventArgs + { + public bool isEstateManager; + public float billableFactor; + public float terrainHeightRange0; + public float terrainHeightRange1; + public float terrainHeightRange2; + public float terrainHeightRange3; + public float terrainStartHeight0; + public float terrainStartHeight1; + public float terrainStartHeight2; + public float terrainStartHeight3; + public byte simAccess; + public float waterHeight; + public uint regionFlags; + public string regionName; + public LLUUID SimOwner; + public LLUUID terrainBase0; + public LLUUID terrainBase1; + public LLUUID terrainBase2; + public LLUUID terrainBase3; + public LLUUID terrainDetail0; + public LLUUID terrainDetail1; + public LLUUID terrainDetail2; + public LLUUID terrainDetail3; + } + + public class RegionInfoForEstateMenuArgs : EventArgs + { + public float billableFactor; + public uint estateID; + public byte maxAgents; + public float objectBonusFactor; + public uint parentEstateID; + public int pricePerMeter; + public int redirectGridX; + public int redirectGridY; + public uint regionFlags; + public byte simAccess; + public float sunHour; + public float terrainLowerLimit; + public float terrainRaiseLimit; + public bool useEstateSun; + public float waterHeight; + public string simName; + } public delegate void TextureRequest(Object sender, TextureRequestArgs e); public delegate void AvatarNowWearing(Object sender, AvatarWearingArgs e); @@ -680,7 +726,7 @@ namespace OpenSim.Framework void SendStartPingCheck(byte seq); void SendKillObject(ulong regionHandle, uint localID); void SendAnimations(LLUUID[] animID, int[] seqs, LLUUID sourceAgentId); - void SendRegionHandshake(RegionInfo regionInfo); + void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args); void SendChatMessage(string message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID, byte source, byte audible); void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID, byte source, byte audible); @@ -796,15 +842,16 @@ namespace OpenSim.Framework void SendHealth(float health); - void sendEstateManagersList(LLUUID invoice); - void sendRegionInfoToEstateMenu(); + void sendEstateManagersList(LLUUID invoice, LLUUID[] EstateManagers, uint estateID); + void sendRegionInfoToEstateMenu(RegionInfoForEstateMenuArgs args); void sendEstateCovenantInformation(); - void sendDetailedEstateData(LLUUID invoice); + void sendDetailedEstateData(LLUUID invoice,string estateName, uint estateID); - void sendLandProperties(IClientAPI remote_client, int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int simObjectCapacity); + void sendLandProperties(IClientAPI remote_client, int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int simObjectCapacity, uint regionFlags); void sendLandAccessListData(List avatars, uint accessFlag, int localLandID); void sendForceClientSelectObjects(List objectIDs); void sendLandObjectOwners(Dictionary ownersAndCount); + void sendLandParcelOverlay(byte[] data, int sequence_id); byte[] GetThrottlesPacked(float multiplier); diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 58d9e901ae..85992b2f18 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -822,42 +822,34 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// /// /// - public void SendRegionHandshake(RegionInfo regionInfo) + public void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args) { RegionHandshakePacket handshake = (RegionHandshakePacket)PacketPool.Instance.GetPacket(PacketType.RegionHandshake); - bool estatemanager = false; - LLUUID[] EstateManagers = regionInfo.EstateSettings.estateManagers; - for (int i = 0; i < EstateManagers.Length; i++) - { - if (EstateManagers[i] == AgentId) - estatemanager = true; - } + handshake.RegionInfo.BillableFactor = args.billableFactor; + handshake.RegionInfo.IsEstateManager = args.isEstateManager; + handshake.RegionInfo.TerrainHeightRange00 = args.terrainHeightRange0; + handshake.RegionInfo.TerrainHeightRange01 = args.terrainHeightRange1; + handshake.RegionInfo.TerrainHeightRange10 = args.terrainHeightRange2; + handshake.RegionInfo.TerrainHeightRange11 = args.terrainHeightRange3; + handshake.RegionInfo.TerrainStartHeight00 = args.terrainStartHeight0; + handshake.RegionInfo.TerrainStartHeight01 = args.terrainStartHeight1; + handshake.RegionInfo.TerrainStartHeight10 = args.terrainStartHeight2; + handshake.RegionInfo.TerrainStartHeight11 = args.terrainStartHeight3; + handshake.RegionInfo.SimAccess = args.simAccess; + handshake.RegionInfo.WaterHeight = args.waterHeight; - handshake.RegionInfo.BillableFactor = regionInfo.EstateSettings.billableFactor; - handshake.RegionInfo.IsEstateManager = estatemanager; - handshake.RegionInfo.TerrainHeightRange00 = regionInfo.EstateSettings.terrainHeightRange0; - handshake.RegionInfo.TerrainHeightRange01 = regionInfo.EstateSettings.terrainHeightRange1; - handshake.RegionInfo.TerrainHeightRange10 = regionInfo.EstateSettings.terrainHeightRange2; - handshake.RegionInfo.TerrainHeightRange11 = regionInfo.EstateSettings.terrainHeightRange3; - handshake.RegionInfo.TerrainStartHeight00 = regionInfo.EstateSettings.terrainStartHeight0; - handshake.RegionInfo.TerrainStartHeight01 = regionInfo.EstateSettings.terrainStartHeight1; - handshake.RegionInfo.TerrainStartHeight10 = regionInfo.EstateSettings.terrainStartHeight2; - handshake.RegionInfo.TerrainStartHeight11 = regionInfo.EstateSettings.terrainStartHeight3; - handshake.RegionInfo.SimAccess = (byte)regionInfo.EstateSettings.simAccess; - handshake.RegionInfo.WaterHeight = regionInfo.EstateSettings.waterHeight; - - handshake.RegionInfo.RegionFlags = (uint)regionInfo.EstateSettings.regionFlags; - handshake.RegionInfo.SimName = Helpers.StringToField(regionInfo.RegionName); - handshake.RegionInfo.SimOwner = regionInfo.MasterAvatarAssignedUUID; - handshake.RegionInfo.TerrainBase0 = regionInfo.EstateSettings.terrainBase0; - handshake.RegionInfo.TerrainBase1 = regionInfo.EstateSettings.terrainBase1; - handshake.RegionInfo.TerrainBase2 = regionInfo.EstateSettings.terrainBase2; - handshake.RegionInfo.TerrainBase3 = regionInfo.EstateSettings.terrainBase3; - handshake.RegionInfo.TerrainDetail0 = regionInfo.EstateSettings.terrainDetail0; - handshake.RegionInfo.TerrainDetail1 = regionInfo.EstateSettings.terrainDetail1; - handshake.RegionInfo.TerrainDetail2 = regionInfo.EstateSettings.terrainDetail2; - handshake.RegionInfo.TerrainDetail3 = regionInfo.EstateSettings.terrainDetail3; + handshake.RegionInfo.RegionFlags = args.regionFlags; + handshake.RegionInfo.SimName = Helpers.StringToField(args.regionName); + handshake.RegionInfo.SimOwner = args.SimOwner; + handshake.RegionInfo.TerrainBase0 = args.terrainBase0; + handshake.RegionInfo.TerrainBase1 = args.terrainBase1; + handshake.RegionInfo.TerrainBase2 = args.terrainBase2; + handshake.RegionInfo.TerrainBase3 = args.terrainBase3; + handshake.RegionInfo.TerrainDetail0 = args.terrainDetail0; + handshake.RegionInfo.TerrainDetail1 = args.terrainDetail1; + handshake.RegionInfo.TerrainDetail2 = args.terrainDetail2; + handshake.RegionInfo.TerrainDetail3 = args.terrainDetail3; handshake.RegionInfo.CacheID = LLUUID.Random(); //I guess this is for the client to remember an old setting? OutPacket(handshake, ThrottleOutPacketType.Task); @@ -2179,7 +2171,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP return false; } - public void sendEstateManagersList(LLUUID invoice) + public void sendEstateManagersList(LLUUID invoice, LLUUID[] EstateManagers, uint estateID) { EstateOwnerMessagePacket packet = new EstateOwnerMessagePacket(); packet.AgentData.TransactionID = LLUUID.Random(); @@ -2188,8 +2180,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP packet.MethodData.Invoice = invoice; packet.MethodData.Method = Helpers.StringToField("setaccess"); - LLUUID[] EstateManagers = m_scene.RegionInfo.EstateSettings.estateManagers; - EstateOwnerMessagePacket.ParamListBlock[] returnblock = new EstateOwnerMessagePacket.ParamListBlock[6 + EstateManagers.Length]; for (int i = 0; i < (6 + EstateManagers.Length); i++) @@ -2198,7 +2188,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } int j = 0; - returnblock[j].Parameter = Helpers.StringToField(m_scene.RegionInfo.EstateSettings.estateID.ToString()); j++; + returnblock[j].Parameter = Helpers.StringToField(estateID.ToString()); j++; returnblock[j].Parameter = Helpers.StringToField(((int)Constants.EstateAccessCodex.EstateManagers).ToString()); j++; returnblock[j].Parameter = Helpers.StringToField("0"); j++; returnblock[j].Parameter = Helpers.StringToField("0"); j++; @@ -2213,29 +2203,30 @@ namespace OpenSim.Region.ClientStack.LindenUDP this.OutPacket(packet, ThrottleOutPacketType.Task); } - public void sendRegionInfoToEstateMenu() + public void sendRegionInfoToEstateMenu(RegionInfoForEstateMenuArgs args) { RegionInfoPacket rinfopack = new RegionInfoPacket(); RegionInfoPacket.RegionInfoBlock rinfoblk = new RegionInfoPacket.RegionInfoBlock(); rinfopack.AgentData.AgentID = this.AgentId; rinfopack.AgentData.SessionID = this.SessionId; - rinfoblk.BillableFactor = m_scene.RegionInfo.EstateSettings.billableFactor; - rinfoblk.EstateID = m_scene.RegionInfo.EstateSettings.estateID; - rinfoblk.MaxAgents = m_scene.RegionInfo.EstateSettings.maxAgents; - rinfoblk.ObjectBonusFactor = m_scene.RegionInfo.EstateSettings.objectBonusFactor; - rinfoblk.ParentEstateID = m_scene.RegionInfo.EstateSettings.parentEstateID; - rinfoblk.PricePerMeter = m_scene.RegionInfo.EstateSettings.pricePerMeter; - rinfoblk.RedirectGridX = m_scene.RegionInfo.EstateSettings.redirectGridX; - rinfoblk.RedirectGridY = m_scene.RegionInfo.EstateSettings.redirectGridY; - rinfoblk.RegionFlags = (uint)(m_scene.RegionInfo.EstateSettings.regionFlags); - rinfoblk.SimAccess = (byte)m_scene.RegionInfo.EstateSettings.simAccess; - rinfoblk.SunHour = m_scene.RegionInfo.EstateSettings.sunHour; - rinfoblk.TerrainLowerLimit = m_scene.RegionInfo.EstateSettings.terrainLowerLimit; - rinfoblk.TerrainRaiseLimit = m_scene.RegionInfo.EstateSettings.terrainRaiseLimit; - rinfoblk.UseEstateSun = !m_scene.RegionInfo.EstateSettings.useFixedSun; - rinfoblk.WaterHeight = m_scene.RegionInfo.EstateSettings.waterHeight; - rinfoblk.SimName = Helpers.StringToField(m_scene.RegionInfo.RegionName); + rinfoblk.BillableFactor =args.billableFactor; + rinfoblk.EstateID = args.estateID; + rinfoblk.MaxAgents = args.maxAgents; + rinfoblk.ObjectBonusFactor =args.objectBonusFactor; + rinfoblk.ParentEstateID = args.parentEstateID; + rinfoblk.PricePerMeter = args.pricePerMeter; + rinfoblk.RedirectGridX = args.redirectGridX; + rinfoblk.RedirectGridY = args.redirectGridY; + rinfoblk.RegionFlags = args.regionFlags; + rinfoblk.SimAccess = args.simAccess; + rinfoblk.SunHour = args.sunHour; + rinfoblk.TerrainLowerLimit = args.terrainLowerLimit; + rinfoblk.TerrainRaiseLimit = args.terrainRaiseLimit; + rinfoblk.UseEstateSun = args.useEstateSun; + rinfoblk.WaterHeight = args.waterHeight; + rinfoblk.SimName = Helpers.StringToField(args.simName); + rinfopack.RegionInfo = rinfoblk; this.OutPacket(rinfopack, ThrottleOutPacketType.Task); @@ -2254,7 +2245,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP this.OutPacket(einfopack, ThrottleOutPacketType.Task); } - public void sendDetailedEstateData(LLUUID invoice) + public void sendDetailedEstateData(LLUUID invoice, string estateName, uint estateID) { EstateOwnerMessagePacket packet = new EstateOwnerMessagePacket(); packet.MethodData.Invoice = invoice; @@ -2268,9 +2259,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP } //Sending Estate Settings - returnblock[0].Parameter = Helpers.StringToField(m_scene.RegionInfo.EstateSettings.estateName); + returnblock[0].Parameter = Helpers.StringToField(estateName); returnblock[1].Parameter = Helpers.StringToField(m_scene.RegionInfo.MasterAvatarAssignedUUID.ToString()); - returnblock[2].Parameter = Helpers.StringToField(m_scene.RegionInfo.EstateSettings.estateID.ToString()); + returnblock[2].Parameter = Helpers.StringToField(estateID.ToString()); // TODO: Resolve Magic numbers here returnblock[3].Parameter = Helpers.StringToField("269516800"); @@ -2289,8 +2280,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP #endregion #region Land Data Sending Methods - - public void sendLandProperties(IClientAPI remote_client,int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int simObjectCapacity) + public void sendLandParcelOverlay(byte[] data, int sequence_id) + { + + ParcelOverlayPacket packet; + packet = (ParcelOverlayPacket)PacketPool.Instance.GetPacket(PacketType.ParcelOverlay); + packet.ParcelData.Data = data; + packet.ParcelData.SequenceID = sequence_id; + this.OutPacket(packet, ThrottleOutPacketType.Task); + } + public void sendLandProperties(IClientAPI remote_client,int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int simObjectCapacity, uint regionFlags) { ParcelPropertiesPacket updatePacket = (ParcelPropertiesPacket) PacketPool.Instance.GetPacket(PacketType.ParcelProperties); // TODO: don't create new blocks if recycling an old packet @@ -2334,12 +2333,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP updatePacket.ParcelData.OwnerID = landData.ownerID; updatePacket.ParcelData.OwnerPrims = landData.ownerPrims; updatePacket.ParcelData.ParcelFlags = landData.landFlags; - updatePacket.ParcelData.ParcelPrimBonus = m_scene.RegionInfo.EstateSettings.objectBonusFactor; + updatePacket.ParcelData.ParcelPrimBonus = simObjectBonusFactor; updatePacket.ParcelData.PassHours = landData.passHours; updatePacket.ParcelData.PassPrice = landData.passPrice; updatePacket.ParcelData.PublicCount = 0; //unemplemented - uint regionFlags = (uint) m_scene.RegionInfo.EstateSettings.regionFlags; updatePacket.ParcelData.RegionDenyAnonymous = ((regionFlags & (uint) Simulator.RegionFlags.DenyAnonymous) > 0); updatePacket.ParcelData.RegionDenyIdentified = ((regionFlags & (uint) Simulator.RegionFlags.DenyIdentified) > diff --git a/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs index ebe0357991..098175beb9 100644 --- a/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/Environment/Modules/World/Estate/EstateManagementModule.cs @@ -44,10 +44,10 @@ namespace OpenSim.Region.Environment.Modules.World.Estate #region Packet Data Responders - private static void sendDetailedEstateData(IClientAPI remote_client, LLUUID invoice) + private void sendDetailedEstateData(IClientAPI remote_client, LLUUID invoice) { - remote_client.sendDetailedEstateData(invoice); - remote_client.sendEstateManagersList(invoice); + remote_client.sendDetailedEstateData(invoice,m_scene.RegionInfo.EstateSettings.estateName,m_scene.RegionInfo.EstateSettings.estateID); + remote_client.sendEstateManagersList(invoice,m_scene.RegionInfo.EstateSettings.estateManagers,m_scene.RegionInfo.EstateSettings.estateID); } private void estateSetRegionInfoHandler(bool blockTerraform, bool noFly, bool allowDamage, bool blockLandResell, int maxAgents, float objectBonusFactor, @@ -208,7 +208,7 @@ namespace OpenSim.Region.Environment.Modules.World.Estate if (remote_client.AgentId == m_scene.RegionInfo.MasterAvatarAssignedUUID || m_scene.Permissions.BypassPermissions) { m_scene.RegionInfo.EstateSettings.AddEstateManager(user); - remote_client.sendEstateManagersList(invoice); + remote_client.sendEstateManagersList(invoice, m_scene.RegionInfo.EstateSettings.estateManagers, m_scene.RegionInfo.EstateSettings.estateID); } else { @@ -222,7 +222,7 @@ namespace OpenSim.Region.Environment.Modules.World.Estate if (remote_client.AgentId == m_scene.RegionInfo.MasterAvatarAssignedUUID || m_scene.Permissions.BypassPermissions) { m_scene.RegionInfo.EstateSettings.RemoveEstateManager(user); - remote_client.sendEstateManagersList(invoice); + remote_client.sendEstateManagersList(invoice, m_scene.RegionInfo.EstateSettings.estateManagers, m_scene.RegionInfo.EstateSettings.estateID); } else { @@ -283,9 +283,28 @@ namespace OpenSim.Region.Environment.Modules.World.Estate } } - private static void HandleRegionInfoRequest(IClientAPI remote_client) + private void HandleRegionInfoRequest(IClientAPI remote_client) { - remote_client.sendRegionInfoToEstateMenu(); + + RegionInfoForEstateMenuArgs args = new RegionInfoForEstateMenuArgs(); + args.billableFactor = m_scene.RegionInfo.EstateSettings.billableFactor; + args.estateID = m_scene.RegionInfo.EstateSettings.estateID; + args.maxAgents = m_scene.RegionInfo.EstateSettings.maxAgents; + args.objectBonusFactor = m_scene.RegionInfo.EstateSettings.objectBonusFactor; + args.parentEstateID = m_scene.RegionInfo.EstateSettings.parentEstateID; + args.pricePerMeter = m_scene.RegionInfo.EstateSettings.pricePerMeter; + args.redirectGridX = m_scene.RegionInfo.EstateSettings.redirectGridX; + args.redirectGridY = m_scene.RegionInfo.EstateSettings.redirectGridY; + args.regionFlags = (uint)(m_scene.RegionInfo.EstateSettings.regionFlags); + args.simAccess = (byte)m_scene.RegionInfo.EstateSettings.simAccess; + args.sunHour = m_scene.RegionInfo.EstateSettings.sunHour; + args.terrainLowerLimit = m_scene.RegionInfo.EstateSettings.terrainLowerLimit; + args.terrainRaiseLimit = m_scene.RegionInfo.EstateSettings.terrainRaiseLimit; + args.useEstateSun = !m_scene.RegionInfo.EstateSettings.useFixedSun; + args.waterHeight = m_scene.RegionInfo.EstateSettings.waterHeight; + args.simName = m_scene.RegionInfo.RegionName; + + remote_client.sendRegionInfoToEstateMenu(args); } private static void HandleEstateCovenantRequest(IClientAPI remote_client) @@ -303,13 +322,48 @@ namespace OpenSim.Region.Environment.Modules.World.Estate for (int i = 0; i < avatars.Count; i++) { - avatars[i].ControllingClient.sendRegionInfoToEstateMenu(); + HandleRegionInfoRequest(avatars[i].ControllingClient); ; } } public void sendRegionHandshake(IClientAPI remoteClient) { - remoteClient.SendRegionHandshake(m_scene.RegionInfo); + RegionHandshakeArgs args = new RegionHandshakeArgs(); + bool estatemanager = false; + LLUUID[] EstateManagers = m_scene.RegionInfo.EstateSettings.estateManagers; + for (int i = 0; i < EstateManagers.Length; i++) + { + if (EstateManagers[i] == remoteClient.AgentId) + estatemanager = true; + } + + args.isEstateManager = estatemanager; + + args.billableFactor = m_scene.RegionInfo.EstateSettings.billableFactor; + args.terrainHeightRange0 = m_scene.RegionInfo.EstateSettings.terrainHeightRange0; + args.terrainHeightRange1 = m_scene.RegionInfo.EstateSettings.terrainHeightRange1; + args.terrainHeightRange2 = m_scene.RegionInfo.EstateSettings.terrainHeightRange2; + args.terrainHeightRange3 = m_scene.RegionInfo.EstateSettings.terrainHeightRange3; + args.terrainStartHeight0 = m_scene.RegionInfo.EstateSettings.terrainStartHeight0; + args.terrainStartHeight1 = m_scene.RegionInfo.EstateSettings.terrainStartHeight1; + args.terrainStartHeight2 = m_scene.RegionInfo.EstateSettings.terrainStartHeight2; + args.terrainStartHeight3 = m_scene.RegionInfo.EstateSettings.terrainStartHeight3; + args.simAccess = (byte)m_scene.RegionInfo.EstateSettings.simAccess; + args.waterHeight = m_scene.RegionInfo.EstateSettings.waterHeight; + + args.regionFlags = (uint)m_scene.RegionInfo.EstateSettings.regionFlags; + args.regionName = m_scene.RegionInfo.RegionName; + args.SimOwner = m_scene.RegionInfo.MasterAvatarAssignedUUID; + args.terrainBase0 = m_scene.RegionInfo.EstateSettings.terrainBase0; + args.terrainBase1 = m_scene.RegionInfo.EstateSettings.terrainBase1; + args.terrainBase2 = m_scene.RegionInfo.EstateSettings.terrainBase2; + args.terrainBase3 = m_scene.RegionInfo.EstateSettings.terrainBase3; + args.terrainDetail0 = m_scene.RegionInfo.EstateSettings.terrainDetail0; + args.terrainDetail1 = m_scene.RegionInfo.EstateSettings.terrainDetail1; + args.terrainDetail2 = m_scene.RegionInfo.EstateSettings.terrainDetail2; + args.terrainDetail3 = m_scene.RegionInfo.EstateSettings.terrainDetail3; + + remoteClient.SendRegionHandshake(m_scene.RegionInfo,args); } public void sendRegionHandshakeToAll() diff --git a/OpenSim/Region/Environment/Modules/World/Land/LandChannel.cs b/OpenSim/Region/Environment/Modules/World/Land/LandChannel.cs index 02558a97f0..341412ae77 100644 --- a/OpenSim/Region/Environment/Modules/World/Land/LandChannel.cs +++ b/OpenSim/Region/Environment/Modules/World/Land/LandChannel.cs @@ -29,7 +29,6 @@ using System; using System.Collections.Generic; using Axiom.Math; using libsecondlife; -using libsecondlife.Packets; using OpenSim.Framework; using OpenSim.Region.Environment.Interfaces; using OpenSim.Region.Environment.Scenes; @@ -521,7 +520,6 @@ namespace OpenSim.Region.Environment.Modules.World.Land byte[] byteArray = new byte[LAND_BLOCKS_PER_PACKET]; int byteArrayCount = 0; int sequenceID = 0; - ParcelOverlayPacket packet; int y; for (y = 0; y < 64; y++) @@ -595,11 +593,8 @@ namespace OpenSim.Region.Environment.Modules.World.Land byteArrayCount++; if (byteArrayCount >= LAND_BLOCKS_PER_PACKET) { - byteArrayCount = 0; - packet = (ParcelOverlayPacket) PacketPool.Instance.GetPacket(PacketType.ParcelOverlay); - packet.ParcelData.Data = byteArray; - packet.ParcelData.SequenceID = sequenceID; - remote_client.OutPacket(packet, ThrottleOutPacketType.Task); + remote_client.sendLandParcelOverlay(byteArray, sequenceID); + byteArrayCount = 0; sequenceID++; byteArray = new byte[LAND_BLOCKS_PER_PACKET]; } diff --git a/OpenSim/Region/Environment/Modules/World/Land/LandObject.cs b/OpenSim/Region/Environment/Modules/World/Land/LandObject.cs index 88bc4e662b..2d3359c2f0 100644 --- a/OpenSim/Region/Environment/Modules/World/Land/LandObject.cs +++ b/OpenSim/Region/Environment/Modules/World/Land/LandObject.cs @@ -122,7 +122,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land public void sendLandProperties(int sequence_id, bool snap_selection, int request_result, IClientAPI remote_client) { - remote_client.sendLandProperties(remote_client, sequence_id, snap_selection, request_result, landData, m_scene.RegionInfo.EstateSettings.objectBonusFactor, m_scene.objectCapacity); + remote_client.sendLandProperties(remote_client, sequence_id, snap_selection, request_result, landData, m_scene.RegionInfo.EstateSettings.objectBonusFactor, m_scene.objectCapacity,(uint) m_scene.RegionInfo.EstateSettings.regionFlags); } public void updateLandProperties(LandUpdateArgs args, IClientAPI remote_client) diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs index 4929675783..25622d2b18 100644 --- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs @@ -502,7 +502,7 @@ namespace OpenSim.Region.Examples.SimpleModule { } - public virtual void SendRegionHandshake(RegionInfo regionInfo) + public virtual void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args) { if (OnRegionHandShakeReply != null) { @@ -637,20 +637,20 @@ namespace OpenSim.Region.Examples.SimpleModule { } - public void sendEstateManagersList(LLUUID invoice) + public void sendEstateManagersList(LLUUID invoice, LLUUID[] EstateManagers, uint estateID) { } - public void sendRegionInfoToEstateMenu() + public void sendRegionInfoToEstateMenu(RegionInfoForEstateMenuArgs args) { } public void sendEstateCovenantInformation() { } - public void sendDetailedEstateData(LLUUID invoice) + public void sendDetailedEstateData(LLUUID invoice, string estateName, uint estateID) { } - public void sendLandProperties(IClientAPI remote_client, int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int simObjectCapacity) + public void sendLandProperties(IClientAPI remote_client, int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int simObjectCapacity, uint regionFlags) { } public void sendLandAccessListData(List avatars, uint accessFlag, int localLandID) @@ -662,5 +662,8 @@ namespace OpenSim.Region.Examples.SimpleModule public void sendLandObjectOwners(Dictionary ownersAndCount) { } + public void sendLandParcelOverlay(byte[] data, int sequence_id) + { + } } }