aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim.RegionServer
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim.RegionServer')
-rw-r--r--OpenSim.RegionServer/OpenSimMain.cs2
-rw-r--r--OpenSim.RegionServer/SimClient.cs35
-rw-r--r--OpenSim.RegionServer/world/Primitive2.cs22
-rw-r--r--OpenSim.RegionServer/world/World.cs5
-rw-r--r--OpenSim.RegionServer/world/WorldPacketHandlers.cs30
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}