From 3658015de8f614b99f116b2971957307f0960c55 Mon Sep 17 00:00:00 2001 From: MW Date: Sat, 9 Jun 2007 11:13:02 +0000 Subject: [PATCH] Number of small changes. --- .../Interfaces/IClientAPI.cs | 1 + OpenSim.sln | 2 +- OpenSim.suo | Bin 374784 -> 0 bytes .../OpenSim.RegionServer/ClientView.API.cs | 40 ++++++++++++++ .../ClientView.ProcessPackets.cs | 18 +++++-- OpenSim/OpenSim.World/Avatar.cs | 31 ----------- OpenSim/OpenSim.World/Estate/EstateManager.cs | 23 +++++--- OpenSim/OpenSim.World/ParcelManager.cs | 51 +++++++++--------- OpenSim/OpenSim.World/World.cs | 21 ++++---- bin/XMLRPC.dll | Bin 40960 -> 0 bytes 10 files changed, 111 insertions(+), 76 deletions(-) delete mode 100644 OpenSim.suo delete mode 100644 bin/XMLRPC.dll diff --git a/Common/OpenSim.Framework/Interfaces/IClientAPI.cs b/Common/OpenSim.Framework/Interfaces/IClientAPI.cs index ac336497a9..d5b2ae453d 100644 --- a/Common/OpenSim.Framework/Interfaces/IClientAPI.cs +++ b/Common/OpenSim.Framework/Interfaces/IClientAPI.cs @@ -93,6 +93,7 @@ namespace OpenSim.Framework.Interfaces void OutPacket(Packet newPack); void SendWearables(AvatarWearable[] wearables); + void SendRegionHandshake(RegionInfo regionInfo); void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID); void SendLayerData(float[] map); void MoveAgentIntoRegion(RegionInfo regInfo); diff --git a/OpenSim.sln b/OpenSim.sln index 5b54b056c3..d2036f0103 100644 --- a/OpenSim.sln +++ b/OpenSim.sln @@ -1,5 +1,5 @@ Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 +# Visual C# Express 2005 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Framework.Console", "Common\OpenSim.Framework.Console\OpenSim.Framework.Console.csproj", "{A7CD0630-0000-0000-0000-000000000000}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Terrain.BasicTerrain", "OpenSim\OpenSim.Terrain.BasicTerrain\OpenSim.Terrain.BasicTerrain.csproj", "{2270B8FE-0000-0000-0000-000000000000}" diff --git a/OpenSim.suo b/OpenSim.suo deleted file mode 100644 index 4ac0030d39e8a60d6d3fe31d1a60187a056fa501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374784 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 + /// + /// + /// + public void SendRegionHandshake(RegionInfo regionInfo) + { + System.Text.Encoding _enc = System.Text.Encoding.ASCII; + RegionHandshakePacket handshake = new RegionHandshakePacket(); + + handshake.RegionInfo.BillableFactor = regionInfo.estateSettings.billableFactor; + handshake.RegionInfo.IsEstateManager = false; + 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 = _enc.GetBytes(regionInfo.estateSettings.waterHeight + "\0"); + 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.CacheID = LLUUID.Random(); //I guess this is for the client to remember an old setting? + + this.OutPacket(handshake); + } + /// /// /// diff --git a/OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs b/OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs index 8b94a82b08..d36e579370 100644 --- a/OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs +++ b/OpenSim/OpenSim.RegionServer/ClientView.ProcessPackets.cs @@ -457,19 +457,31 @@ namespace OpenSim #region Parcel related packets case PacketType.ParcelPropertiesRequest: ParcelPropertiesRequestPacket propertiesRequest = (ParcelPropertiesRequestPacket)Pack; + if(OnParcelPropertiesRequest != null) + { OnParcelPropertiesRequest((int)Math.Round(propertiesRequest.ParcelData.West), (int)Math.Round(propertiesRequest.ParcelData.South), (int)Math.Round(propertiesRequest.ParcelData.East), (int)Math.Round(propertiesRequest.ParcelData.North), propertiesRequest.ParcelData.SequenceID, propertiesRequest.ParcelData.SnapSelection, this); + } break; case PacketType.ParcelDivide: ParcelDividePacket parcelDivide = (ParcelDividePacket)Pack; - OnParcelDivideRequest((int)Math.Round(parcelDivide.ParcelData.West), (int)Math.Round(parcelDivide.ParcelData.South), (int)Math.Round(parcelDivide.ParcelData.East), (int)Math.Round(parcelDivide.ParcelData.North), this); + if (OnParcelDivideRequest != null) + { + OnParcelDivideRequest((int)Math.Round(parcelDivide.ParcelData.West), (int)Math.Round(parcelDivide.ParcelData.South), (int)Math.Round(parcelDivide.ParcelData.East), (int)Math.Round(parcelDivide.ParcelData.North), this); + } break; case PacketType.ParcelJoin: ParcelJoinPacket parcelJoin = (ParcelJoinPacket)Pack; - OnParcelJoinRequest((int)Math.Round(parcelJoin.ParcelData.West), (int)Math.Round(parcelJoin.ParcelData.South), (int)Math.Round(parcelJoin.ParcelData.East), (int)Math.Round(parcelJoin.ParcelData.North), this); + if (OnParcelJoinRequest != null) + { + OnParcelJoinRequest((int)Math.Round(parcelJoin.ParcelData.West), (int)Math.Round(parcelJoin.ParcelData.South), (int)Math.Round(parcelJoin.ParcelData.East), (int)Math.Round(parcelJoin.ParcelData.North), this); + } break; case PacketType.ParcelPropertiesUpdate: ParcelPropertiesUpdatePacket updatePacket = (ParcelPropertiesUpdatePacket)Pack; - OnParcelPropertiesUpdateRequest(updatePacket, this); + if (OnParcelPropertiesUpdateRequest != null) + { + OnParcelPropertiesUpdateRequest(updatePacket, this); + } break; #endregion diff --git a/OpenSim/OpenSim.World/Avatar.cs b/OpenSim/OpenSim.World/Avatar.cs index 6a4c0f81eb..c251d57d83 100644 --- a/OpenSim/OpenSim.World/Avatar.cs +++ b/OpenSim/OpenSim.World/Avatar.cs @@ -175,38 +175,7 @@ namespace OpenSim.world /// public void SendRegionHandshake() { - System.Text.Encoding _enc = System.Text.Encoding.ASCII; - RegionHandshakePacket handshake = new RegionHandshakePacket(); - handshake.RegionInfo.BillableFactor = m_regInfo.estateSettings.billableFactor; - handshake.RegionInfo.IsEstateManager = false; - handshake.RegionInfo.TerrainHeightRange00 = m_regInfo.estateSettings.terrainHeightRange0; - handshake.RegionInfo.TerrainHeightRange01 = m_regInfo.estateSettings.terrainHeightRange1; - handshake.RegionInfo.TerrainHeightRange10 = m_regInfo.estateSettings.terrainHeightRange2; - handshake.RegionInfo.TerrainHeightRange11 = m_regInfo.estateSettings.terrainHeightRange3; - handshake.RegionInfo.TerrainStartHeight00 = m_regInfo.estateSettings.terrainStartHeight0; - handshake.RegionInfo.TerrainStartHeight01 = m_regInfo.estateSettings.terrainStartHeight1; - handshake.RegionInfo.TerrainStartHeight10 = m_regInfo.estateSettings.terrainStartHeight2; - handshake.RegionInfo.TerrainStartHeight11 = m_regInfo.estateSettings.terrainStartHeight3; - handshake.RegionInfo.SimAccess = (byte)m_regInfo.estateSettings.simAccess; - handshake.RegionInfo.WaterHeight = m_regInfo.estateSettings.waterHeight; - - - handshake.RegionInfo.RegionFlags = (uint)m_regInfo.estateSettings.regionFlags; - - handshake.RegionInfo.SimName = _enc.GetBytes(m_regInfo.estateSettings.waterHeight + "\0"); - handshake.RegionInfo.SimOwner = m_regInfo.MasterAvatarAssignedUUID; - handshake.RegionInfo.TerrainBase0 = m_regInfo.estateSettings.terrainBase0; - handshake.RegionInfo.TerrainBase1 = m_regInfo.estateSettings.terrainBase1; - handshake.RegionInfo.TerrainBase2 = m_regInfo.estateSettings.terrainBase2; - handshake.RegionInfo.TerrainBase3 = m_regInfo.estateSettings.terrainBase3; - handshake.RegionInfo.TerrainDetail0 = m_regInfo.estateSettings.terrainDetail0; - handshake.RegionInfo.TerrainDetail1 = m_regInfo.estateSettings.terrainDetail1; - handshake.RegionInfo.TerrainDetail2 = m_regInfo.estateSettings.terrainDetail2; - handshake.RegionInfo.TerrainDetail3 = m_regInfo.estateSettings.terrainDetail3; - handshake.RegionInfo.CacheID = LLUUID.Random(); //I guess this is for the client to remember an old setting? - - this.ControllingClient.OutPacket(handshake); } /// diff --git a/OpenSim/OpenSim.World/Estate/EstateManager.cs b/OpenSim/OpenSim.World/Estate/EstateManager.cs index 85d9b0c3db..c94587aa4b 100644 --- a/OpenSim/OpenSim.World/Estate/EstateManager.cs +++ b/OpenSim/OpenSim.World/Estate/EstateManager.cs @@ -217,18 +217,22 @@ namespace OpenSim.world.Estate public void sendRegionInfoPacketToAll() { - foreach (OpenSim.world.Avatar av in m_world.Avatars.Values) - { - this.sendRegionInfoPacket(av.ControllingClient); - } + List avatars = m_world.RequestAvatarList(); + + for (int i = 0; i < avatars.Count; i++) + { + this.sendRegionInfoPacket(avatars[i].ControllingClient); + } } public void sendRegionHandshakeToAll() { - foreach (OpenSim.world.Avatar av in m_world.Avatars.Values) + List avatars = m_world.RequestAvatarList(); + + for (int i = 0; i < avatars.Count; i++) { - av.SendRegionHandshake(); - } + this.sendRegionHandshake(avatars[i].ControllingClient); + } } public void sendRegionInfoPacket(IClientAPI remote_client) @@ -259,5 +263,10 @@ namespace OpenSim.world.Estate remote_client.OutPacket(regionInfoPacket); } + public void sendRegionHandshake(IClientAPI remoteClient) + { + remoteClient.SendRegionHandshake(m_regInfo); + } + } } diff --git a/OpenSim/OpenSim.World/ParcelManager.cs b/OpenSim/OpenSim.World/ParcelManager.cs index 4a9bfb1ead..db6909db28 100644 --- a/OpenSim/OpenSim.World/ParcelManager.cs +++ b/OpenSim/OpenSim.World/ParcelManager.cs @@ -35,7 +35,7 @@ using OpenSim.Framework.Types; namespace OpenSim.world { - + #region ParcelManager Class /// @@ -62,7 +62,7 @@ namespace OpenSim.world public const byte PARCEL_FLAG_PROPERTY_BORDER_SOUTH = (byte)128; //Equals 10000000 //RequestResults (I think these are right, they seem to work): - public const int PARCEL_RESULT_ONE_PARCEL = 0; // The request they made contained only one parcel + public const int PARCEL_RESULT_ONE_PARCEL = 0; // The request they made contained only one parcel public const int PARCEL_RESULT_MULTIPLE_PARCELS = 1; // The request they made contained more than one parcel //These are other constants. Yay! @@ -143,7 +143,7 @@ namespace OpenSim.world } parcelList[lastParcelLocalID].forceUpdateParcelInfo(); - + } /// /// Removes a parcel from the list. Will not remove if local_id is still owning an area in parcelIDList @@ -258,12 +258,12 @@ namespace OpenSim.world int startParcelIndex = startParcel.parcelData.localID; parcelList[startParcelIndex].setParcelBitmap(Parcel.modifyParcelBitmapSquare(startParcel.getParcelBitmap(), start_x, start_y, end_x, end_y, false)); parcelList[startParcelIndex].forceUpdateParcelInfo(); - + //Now add the new parcel addParcel(newParcel); - + @@ -282,7 +282,7 @@ namespace OpenSim.world { end_x -= 4; end_y -= 4; - + //NOTE: The following only connects the parcels in each corner and not all the parcels that are within the selection box! //This should be fixed later -- somewhat "incomplete code" --Ming Parcel startParcel, endParcel; @@ -456,7 +456,7 @@ namespace OpenSim.world public void handleParcelJoinRequest(int west, int south, int east, int north, IClientAPI remote_client) { join(west, south, east, north, remote_client.AgentId); - + } #endregion @@ -543,7 +543,7 @@ namespace OpenSim.world //Place all new variables here! newParcel.parcelBitmap = (bool[,])(this.parcelBitmap.Clone()); newParcel.parcelData = parcelData.Copy(); - + return newParcel; } @@ -565,7 +565,7 @@ namespace OpenSim.world updatePacket.ParcelData.AABBMin = parcelData.AABBMin; updatePacket.ParcelData.Area = parcelData.area; updatePacket.ParcelData.AuctionID = parcelData.auctionID; - updatePacket.ParcelData.AuthBuyerID =parcelData.authBuyerID; //unemplemented + updatePacket.ParcelData.AuthBuyerID = parcelData.authBuyerID; //unemplemented updatePacket.ParcelData.Bitmap = parcelData.parcelBitmapByteArray; @@ -606,7 +606,7 @@ namespace OpenSim.world updatePacket.ParcelData.SequenceID = sequence_id; updatePacket.ParcelData.SimWideMaxPrims = 15000; //unemplemented updatePacket.ParcelData.SimWideTotalPrims = 0; //unemplemented - updatePacket.ParcelData.SnapSelection = snap_selection; + updatePacket.ParcelData.SnapSelection = snap_selection; updatePacket.ParcelData.SnapshotID = parcelData.snapshotID; updatePacket.ParcelData.Status = (byte)parcelData.parcelStatus; updatePacket.ParcelData.TotalPrims = 0; //unemplemented @@ -638,14 +638,17 @@ namespace OpenSim.world parcelData.userLocation = packet.ParcelData.UserLocation; parcelData.userLookAt = packet.ParcelData.UserLookAt; - foreach (Avatar av in m_world.Avatars.Values) + List avatars = m_world.RequestAvatarList(); + + for (int i = 0; i < avatars.Count; i++) { - Parcel over = m_world.parcelManager.getParcel((int)Math.Round(av.Pos.X), (int)Math.Round(av.Pos.Y)); + Parcel over = m_world.parcelManager.getParcel((int)Math.Round(avatars[i].Pos.X), (int)Math.Round(avatars[i].Pos.Y)); if (over == this) { - sendParcelProperties(0, false, 0, av.ControllingClient); + sendParcelProperties(0, false, 0, avatars[i].ControllingClient); } } + } } #endregion @@ -720,7 +723,7 @@ namespace OpenSim.world //Valid: Lets set it parcelBitmap = bitmap; forceUpdateParcelInfo(); - + } } /// @@ -761,23 +764,23 @@ namespace OpenSim.world private bool[,] convertBytesToParcelBitmap() { bool[,] tempConvertMap = new bool[64, 64]; - tempConvertMap.Initialize(); + tempConvertMap.Initialize(); byte tempByte = 0; int x = 0, y = 0, i = 0, bitNum = 0; - for(i = 0; i < 512; i++) + for (i = 0; i < 512; i++) { tempByte = parcelData.parcelBitmapByteArray[i]; - for(bitNum = 0; bitNum < 8; bitNum++) + for (bitNum = 0; bitNum < 8; bitNum++) { bool bit = Convert.ToBoolean(Convert.ToByte(tempByte >> bitNum) & (byte)1); tempConvertMap[x, y] = bit; x++; - if(x > 63) + if (x > 63) { - x = 0; + x = 0; y++; } - + } } @@ -859,7 +862,7 @@ namespace OpenSim.world { //Throw an exception - The bitmap is not 64x64 throw new Exception("Error: Invalid Parcel Bitmap - Bitmap_add in mergeParcelBitmaps"); - + } int x, y; @@ -879,9 +882,9 @@ namespace OpenSim.world #endregion - + } #endregion - - + + } diff --git a/OpenSim/OpenSim.World/World.cs b/OpenSim/OpenSim.World/World.cs index dc9602e37a..3e745018b5 100644 --- a/OpenSim/OpenSim.World/World.cs +++ b/OpenSim/OpenSim.World/World.cs @@ -24,9 +24,8 @@ namespace OpenSim.world { protected System.Timers.Timer m_heartbeatTimer = new System.Timers.Timer(); public object LockPhysicsEngine = new object(); - public Dictionary Avatars; - public Dictionary Prims; - //public ScriptEngine Scripts; + protected Dictionary Avatars; + protected Dictionary Prims; public uint _localNumber = 0; private PhysicsScene phyScene; private float timeStep = 0.1f; @@ -83,8 +82,8 @@ namespace OpenSim.world this.m_datastore = m_regInfo.DataStore; this.RegisterRegionWithComms(); - parcelManager = new ParcelManager(this,this.m_regInfo); - estateManager = new EstateManager(this,this.m_regInfo); + parcelManager = new ParcelManager(this, this.m_regInfo); + estateManager = new EstateManager(this, this.m_regInfo); m_scriptHandlers = new Dictionary(); m_scripts = new Dictionary(); @@ -476,10 +475,12 @@ namespace OpenSim.world try { OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "World.cs:AddViewerAgent() - Creating new avatar for remote viewer agent"); - newAvatar = new Avatar(remoteClient, this, m_clientThreads,this.m_regInfo); + newAvatar = new Avatar(remoteClient, this, m_clientThreads, this.m_regInfo); OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "World.cs:AddViewerAgent() - Adding new avatar to world"); OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "World.cs:AddViewerAgent() - Starting RegionHandshake "); - newAvatar.SendRegionHandshake(); + + //newAvatar.SendRegionHandshake(); + this.estateManager.sendRegionHandshake(remoteClient); PhysicsVector pVec = new PhysicsVector(newAvatar.Pos.X, newAvatar.Pos.Y, newAvatar.Pos.Z); lock (this.LockPhysicsEngine) @@ -522,7 +523,7 @@ namespace OpenSim.world /// protected void InformClientOfNeighbours(IClientAPI remoteClient) { - // Console.WriteLine("informing client of neighbouring regions"); + // Console.WriteLine("informing client of neighbouring regions"); List neighbours = this.commsManager.RequestNeighbours(this.m_regInfo); //Console.WriteLine("we have " + neighbours.Count + " neighbouring regions"); @@ -530,7 +531,7 @@ namespace OpenSim.world { for (int i = 0; i < neighbours.Count; i++) { - // Console.WriteLine("sending neighbours data"); + // Console.WriteLine("sending neighbours data"); AgentCircuitData agent = remoteClient.RequestClientInfo(); agent.BaseFolder = LLUUID.Zero; agent.InventoryFolder = LLUUID.Zero; @@ -556,7 +557,7 @@ namespace OpenSim.world // ie it could be all Avatars within a certain range of the calling prim/avatar. /// - /// + /// Request a List of all Avatars in this World /// /// public List RequestAvatarList() diff --git a/bin/XMLRPC.dll b/bin/XMLRPC.dll deleted file mode 100644 index 9afa15eabcbd1c82729046e9ffb73fd33c8de4f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 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