diff options
Diffstat (limited to 'OpenSim.RegionServer')
-rw-r--r-- | OpenSim.RegionServer/OpenSimMain.cs | 2 | ||||
-rw-r--r-- | OpenSim.RegionServer/SimClient.cs | 35 | ||||
-rw-r--r-- | OpenSim.RegionServer/world/Primitive2.cs | 22 | ||||
-rw-r--r-- | OpenSim.RegionServer/world/World.cs | 5 | ||||
-rw-r--r-- | OpenSim.RegionServer/world/WorldPacketHandlers.cs | 30 |
5 files changed, 82 insertions, 12 deletions
diff --git a/OpenSim.RegionServer/OpenSimMain.cs b/OpenSim.RegionServer/OpenSimMain.cs index d522e2b..9fb7c4e 100644 --- a/OpenSim.RegionServer/OpenSimMain.cs +++ b/OpenSim.RegionServer/OpenSimMain.cs | |||
@@ -225,7 +225,7 @@ namespace OpenSim | |||
225 | 225 | ||
226 | m_console.WriteLine(OpenSim.Framework.Console.LogPriority.NORMAL,"Main.cs:Startup() - We are " + regionData.RegionName + " at " + regionData.RegionLocX.ToString() + "," + regionData.RegionLocY.ToString()); | 226 | m_console.WriteLine(OpenSim.Framework.Console.LogPriority.NORMAL,"Main.cs:Startup() - We are " + regionData.RegionName + " at " + regionData.RegionLocX.ToString() + "," + regionData.RegionLocY.ToString()); |
227 | m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,"Initialising world"); | 227 | m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,"Initialising world"); |
228 | LocalWorld = new World(this._packetServer.ClientThreads, regionData.RegionHandle, regionData.RegionName); | 228 | LocalWorld = new World(this._packetServer.ClientThreads, regionData, regionData.RegionHandle, regionData.RegionName); |
229 | LocalWorld.InventoryCache = InventoryCache; | 229 | LocalWorld.InventoryCache = InventoryCache; |
230 | LocalWorld.AssetCache = AssetCache; | 230 | LocalWorld.AssetCache = AssetCache; |
231 | 231 | ||
diff --git a/OpenSim.RegionServer/SimClient.cs b/OpenSim.RegionServer/SimClient.cs index 76bf46e..ab13b02 100644 --- a/OpenSim.RegionServer/SimClient.cs +++ b/OpenSim.RegionServer/SimClient.cs | |||
@@ -144,7 +144,7 @@ namespace OpenSim | |||
144 | 144 | ||
145 | public void CrossSimBorder(LLVector3 avatarpos) | 145 | public void CrossSimBorder(LLVector3 avatarpos) |
146 | { // VERY VERY BASIC | 146 | { // VERY VERY BASIC |
147 | 147 | ||
148 | LLVector3 newpos = avatarpos; | 148 | LLVector3 newpos = avatarpos; |
149 | uint neighbourx = this.m_regionData.RegionLocX; | 149 | uint neighbourx = this.m_regionData.RegionLocX; |
150 | uint neighboury = this.m_regionData.RegionLocY; | 150 | uint neighboury = this.m_regionData.RegionLocY; |
@@ -642,6 +642,13 @@ namespace OpenSim | |||
642 | } | 642 | } |
643 | } | 643 | } |
644 | break; | 644 | break; |
645 | case PacketType.MapLayerRequest: | ||
646 | this.RequestMapLayer(); | ||
647 | break; | ||
648 | case PacketType.MapBlockRequest: | ||
649 | MapBlockRequestPacket MapRequest = (MapBlockRequestPacket)Pack; | ||
650 | this.RequestMapBlock( MapRequest.PositionData.MinX, MapRequest.PositionData.MinY, MapRequest.PositionData.MaxX, MapRequest.PositionData.MaxY); | ||
651 | break; | ||
645 | 652 | ||
646 | } | 653 | } |
647 | } | 654 | } |
@@ -1101,7 +1108,7 @@ namespace OpenSim | |||
1101 | 1108 | ||
1102 | case 3: // Landmark | 1109 | case 3: // Landmark |
1103 | String content; | 1110 | String content; |
1104 | content = "Landmark version 2\n"; | 1111 | content = "Landmark version 2\n"; |
1105 | content += "region_id " + m_regionData.SimUUID + "\n"; | 1112 | content += "region_id " + m_regionData.SimUUID + "\n"; |
1106 | String strPos = String.Format("%.2f %.2f %.2f>", | 1113 | String strPos = String.Format("%.2f %.2f %.2f>", |
1107 | this.ClientAvatar.Pos.X, | 1114 | this.ClientAvatar.Pos.X, |
@@ -1116,5 +1123,29 @@ namespace OpenSim | |||
1116 | m_assetCache.AddAsset(asset); | 1123 | m_assetCache.AddAsset(asset); |
1117 | m_inventoryCache.AddNewInventoryItem(this, packet.InventoryBlock.FolderID, asset); | 1124 | m_inventoryCache.AddNewInventoryItem(this, packet.InventoryBlock.FolderID, asset); |
1118 | } | 1125 | } |
1126 | |||
1127 | public void RequestMapLayer() //should be getting the map layer from the grid server | ||
1128 | { | ||
1129 | //send a layer covering the 800,800 - 1200,1200 area (should be covering the requested area) | ||
1130 | MapLayerReplyPacket mapReply = new MapLayerReplyPacket(); | ||
1131 | mapReply.AgentData.AgentID = this.AgentID; | ||
1132 | mapReply.AgentData.Flags = 0; | ||
1133 | mapReply.LayerData = new MapLayerReplyPacket.LayerDataBlock[1]; | ||
1134 | mapReply.LayerData[0] = new MapLayerReplyPacket.LayerDataBlock(); | ||
1135 | mapReply.LayerData[0].Bottom = 800; | ||
1136 | mapReply.LayerData[0].Left = 800; | ||
1137 | mapReply.LayerData[0].Top = 1200; | ||
1138 | mapReply.LayerData[0].Right = 1200; | ||
1139 | mapReply.LayerData[0].ImageID = new LLUUID("00000000-0000-0000-9999-000000000001"); | ||
1140 | this.OutPacket(mapReply); | ||
1141 | } | ||
1142 | |||
1143 | public void RequestMapBlock( int minX, int minY, int maxX, int maxY) | ||
1144 | { | ||
1145 | //check if our own map was requested | ||
1146 | this.m_world.RequestMapBlock(this, minX, minY, maxX, maxY); | ||
1147 | |||
1148 | //now should get other regions maps from gridserver | ||
1149 | } | ||
1119 | } | 1150 | } |
1120 | } | 1151 | } |
diff --git a/OpenSim.RegionServer/world/Primitive2.cs b/OpenSim.RegionServer/world/Primitive2.cs index 0df3079..5e76fd1 100644 --- a/OpenSim.RegionServer/world/Primitive2.cs +++ b/OpenSim.RegionServer/world/Primitive2.cs | |||
@@ -45,7 +45,17 @@ namespace OpenSim.world | |||
45 | this._physActor = value; | 45 | this._physActor = value; |
46 | } | 46 | } |
47 | } | 47 | } |
48 | 48 | public override LLVector3 Pos | |
49 | { | ||
50 | get | ||
51 | { | ||
52 | return base.Pos; | ||
53 | } | ||
54 | set | ||
55 | { | ||
56 | base.Pos = value; | ||
57 | } | ||
58 | } | ||
49 | #endregion | 59 | #endregion |
50 | 60 | ||
51 | public Primitive2(Dictionary<uint, SimClient> clientThreads, ulong regionHandle, World world) | 61 | public Primitive2(Dictionary<uint, SimClient> clientThreads, ulong regionHandle, World world) |
@@ -106,6 +116,11 @@ namespace OpenSim.world | |||
106 | 116 | ||
107 | #region Packet handlers | 117 | #region Packet handlers |
108 | 118 | ||
119 | public void UpdatePosition(LLVector3 pos) | ||
120 | { | ||
121 | |||
122 | } | ||
123 | |||
109 | public void UpdateShape(ObjectShapePacket.ObjectDataBlock addPacket) | 124 | public void UpdateShape(ObjectShapePacket.ObjectDataBlock addPacket) |
110 | { | 125 | { |
111 | this.primData.PathBegin = addPacket.PathBegin; | 126 | this.primData.PathBegin = addPacket.PathBegin; |
@@ -230,6 +245,7 @@ namespace OpenSim.world | |||
230 | 245 | ||
231 | #region Update viewers Methods | 246 | #region Update viewers Methods |
232 | 247 | ||
248 | //should change these mehtods, so that outgoing packets are sent through the avatar class | ||
233 | public void SendFullUpdateToClient(SimClient remoteClient) | 249 | public void SendFullUpdateToClient(SimClient remoteClient) |
234 | { | 250 | { |
235 | LLVector3 lPos; | 251 | LLVector3 lPos; |
@@ -346,7 +362,7 @@ namespace OpenSim.world | |||
346 | objdata.ObjectData[47] = 63; | 362 | objdata.ObjectData[47] = 63; |
347 | } | 363 | } |
348 | 364 | ||
349 | protected void UpdatePacketShapeData(ObjectUpdatePacket.ObjectDataBlock objectData) | 365 | protected void SetPacketShapeData(ObjectUpdatePacket.ObjectDataBlock objectData) |
350 | { | 366 | { |
351 | objectData.OwnerID = this.primData.OwnerID; | 367 | objectData.OwnerID = this.primData.OwnerID; |
352 | objectData.PCode = this.primData.PCode; | 368 | objectData.PCode = this.primData.PCode; |
@@ -378,7 +394,7 @@ namespace OpenSim.world | |||
378 | ObjectUpdatePacket.ObjectDataBlock objupdate = new ObjectUpdatePacket.ObjectDataBlock(); | 394 | ObjectUpdatePacket.ObjectDataBlock objupdate = new ObjectUpdatePacket.ObjectDataBlock(); |
379 | this.SetDefaultPacketValues(objupdate); | 395 | this.SetDefaultPacketValues(objupdate); |
380 | objupdate.UpdateFlags = 32 + 65536 + 131072 + 256 + 4 + 8 + 2048 + 524288 + 268435456; | 396 | objupdate.UpdateFlags = 32 + 65536 + 131072 + 256 + 4 + 8 + 2048 + 524288 + 268435456; |
381 | this.UpdatePacketShapeData(objupdate); | 397 | this.SetPacketShapeData(objupdate); |
382 | byte[] pb = this.Pos.GetBytes(); | 398 | byte[] pb = this.Pos.GetBytes(); |
383 | Array.Copy(pb, 0, objupdate.ObjectData, 0, pb.Length); | 399 | Array.Copy(pb, 0, objupdate.ObjectData, 0, pb.Length); |
384 | return objupdate; | 400 | return objupdate; |
diff --git a/OpenSim.RegionServer/world/World.cs b/OpenSim.RegionServer/world/World.cs index 225ce81..445df1d 100644 --- a/OpenSim.RegionServer/world/World.cs +++ b/OpenSim.RegionServer/world/World.cs | |||
@@ -43,7 +43,7 @@ namespace OpenSim.world | |||
43 | private InventoryCache _inventoryCache; | 43 | private InventoryCache _inventoryCache; |
44 | private AssetCache _assetCache; | 44 | private AssetCache _assetCache; |
45 | private Mutex updateLock; | 45 | private Mutex updateLock; |
46 | 46 | private RegionInfo m_regInfo; | |
47 | public string m_datastore; | 47 | public string m_datastore; |
48 | 48 | ||
49 | /// <summary> | 49 | /// <summary> |
@@ -52,7 +52,7 @@ namespace OpenSim.world | |||
52 | /// <param name="clientThreads">Dictionary to contain client threads</param> | 52 | /// <param name="clientThreads">Dictionary to contain client threads</param> |
53 | /// <param name="regionHandle">Region Handle for this region</param> | 53 | /// <param name="regionHandle">Region Handle for this region</param> |
54 | /// <param name="regionName">Region Name for this region</param> | 54 | /// <param name="regionName">Region Name for this region</param> |
55 | public World(Dictionary<uint, SimClient> clientThreads, ulong regionHandle, string regionName) | 55 | public World(Dictionary<uint, SimClient> clientThreads, RegionInfo regInfo, ulong regionHandle, string regionName) |
56 | { | 56 | { |
57 | try | 57 | try |
58 | { | 58 | { |
@@ -60,6 +60,7 @@ namespace OpenSim.world | |||
60 | m_clientThreads = clientThreads; | 60 | m_clientThreads = clientThreads; |
61 | m_regionHandle = regionHandle; | 61 | m_regionHandle = regionHandle; |
62 | m_regionName = regionName; | 62 | m_regionName = regionName; |
63 | m_regInfo = regInfo; | ||
63 | 64 | ||
64 | m_scriptHandlers = new Dictionary<LLUUID, ScriptHandler>(); | 65 | m_scriptHandlers = new Dictionary<LLUUID, ScriptHandler>(); |
65 | m_scripts = new Dictionary<string, ScriptFactory>(); | 66 | m_scripts = new Dictionary<string, ScriptFactory>(); |
diff --git a/OpenSim.RegionServer/world/WorldPacketHandlers.cs b/OpenSim.RegionServer/world/WorldPacketHandlers.cs index 9e1f9a1..d479c85 100644 --- a/OpenSim.RegionServer/world/WorldPacketHandlers.cs +++ b/OpenSim.RegionServer/world/WorldPacketHandlers.cs | |||
@@ -65,28 +65,28 @@ namespace OpenSim.world | |||
65 | switch (inchatpack.ChatData.Type) | 65 | switch (inchatpack.ChatData.Type) |
66 | { | 66 | { |
67 | case 0: | 67 | case 0: |
68 | int dis = Util.fast_distance2d((int)(client.ClientAvatar.Pos.X - simClient.ClientAvatar.Pos.X),(int)( client.ClientAvatar.Pos.Y - simClient.ClientAvatar.Pos.Y)); | 68 | int dis = Util.fast_distance2d((int)(client.ClientAvatar.Pos.X - simClient.ClientAvatar.Pos.X), (int)(client.ClientAvatar.Pos.Y - simClient.ClientAvatar.Pos.Y)); |
69 | if ((dis < 10) && (dis > -10)) | 69 | if ((dis < 10) && (dis > -10)) |
70 | { | 70 | { |
71 | client.OutPacket(reply); | 71 | client.OutPacket(reply); |
72 | } | 72 | } |
73 | break; | 73 | break; |
74 | case 1: | 74 | case 1: |
75 | dis = Util.fast_distance2d((int)(client.ClientAvatar.Pos.X - simClient.ClientAvatar.Pos.X), (int)(client.ClientAvatar.Pos.Y - simClient.ClientAvatar.Pos.Y)); | 75 | dis = Util.fast_distance2d((int)(client.ClientAvatar.Pos.X - simClient.ClientAvatar.Pos.X), (int)(client.ClientAvatar.Pos.Y - simClient.ClientAvatar.Pos.Y)); |
76 | if ((dis < 30) && (dis > -30)) | 76 | if ((dis < 30) && (dis > -30)) |
77 | { | 77 | { |
78 | client.OutPacket(reply); | 78 | client.OutPacket(reply); |
79 | } | 79 | } |
80 | break; | 80 | break; |
81 | case 2: | 81 | case 2: |
82 | dis = Util.fast_distance2d((int)(client.ClientAvatar.Pos.X - simClient.ClientAvatar.Pos.X),(int)( client.ClientAvatar.Pos.Y - simClient.ClientAvatar.Pos.Y)); | 82 | dis = Util.fast_distance2d((int)(client.ClientAvatar.Pos.X - simClient.ClientAvatar.Pos.X), (int)(client.ClientAvatar.Pos.Y - simClient.ClientAvatar.Pos.Y)); |
83 | if ((dis < 100) && (dis > -100)) | 83 | if ((dis < 100) && (dis > -100)) |
84 | { | 84 | { |
85 | client.OutPacket(reply); | 85 | client.OutPacket(reply); |
86 | } | 86 | } |
87 | break; | 87 | break; |
88 | } | 88 | } |
89 | 89 | ||
90 | } | 90 | } |
91 | return true; | 91 | return true; |
92 | } | 92 | } |
@@ -203,5 +203,27 @@ namespace OpenSim.world | |||
203 | return true; | 203 | return true; |
204 | } | 204 | } |
205 | 205 | ||
206 | public void RequestMapBlock(SimClient simClient, int minX, int minY, int maxX, int maxY) | ||
207 | { | ||
208 | System.Text.Encoding _enc = System.Text.Encoding.ASCII; | ||
209 | if (((m_regInfo.RegionLocX > minX) && (m_regInfo.RegionLocX < maxX)) && ((m_regInfo.RegionLocY > minY) && (m_regInfo.RegionLocY < maxY))) | ||
210 | { | ||
211 | MapBlockReplyPacket mapReply = new MapBlockReplyPacket(); | ||
212 | mapReply.AgentData.AgentID = simClient.AgentID; | ||
213 | mapReply.AgentData.Flags = 0; | ||
214 | mapReply.Data = new MapBlockReplyPacket.DataBlock[1]; | ||
215 | mapReply.Data[0] = new MapBlockReplyPacket.DataBlock(); | ||
216 | mapReply.Data[0].MapImageID = new LLUUID("00000000-0000-0000-9999-000000000002"); | ||
217 | mapReply.Data[0].X = (ushort)m_regInfo.RegionLocX; | ||
218 | mapReply.Data[0].Y = (ushort)m_regInfo.RegionLocY; | ||
219 | mapReply.Data[0].WaterHeight =(byte) m_regInfo.RegionWaterHeight; | ||
220 | mapReply.Data[0].Name = _enc.GetBytes(this.m_regionName); | ||
221 | mapReply.Data[0].RegionFlags = 72458694; | ||
222 | mapReply.Data[0].Access = 13; | ||
223 | mapReply.Data[0].Agents = 1; //should send number of clients connected | ||
224 | simClient.OutPacket(mapReply); | ||
225 | } | ||
226 | } | ||
227 | |||
206 | } | 228 | } |
207 | } | 229 | } |