aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorMW2007-02-04 11:36:35 +0000
committerMW2007-02-04 11:36:35 +0000
commit8c80d98252f376a815e522c705a3c576dfc16f75 (patch)
tree89e779435d3e9ea2a58b814d81a64e44e4067cc6
parentBasic Inventory support and clean up (diff)
downloadopensim-SC_OLD-8c80d98252f376a815e522c705a3c576dfc16f75.zip
opensim-SC_OLD-8c80d98252f376a815e522c705a3c576dfc16f75.tar.gz
opensim-SC_OLD-8c80d98252f376a815e522c705a3c576dfc16f75.tar.bz2
opensim-SC_OLD-8c80d98252f376a815e522c705a3c576dfc16f75.tar.xz
Clean up
-rw-r--r--Agent_Manager.cs480
-rw-r--r--AssetManagement.cs299
-rw-r--r--Controller.cs228
-rw-r--r--Globals.cs20
-rw-r--r--GridManager.cs226
-rw-r--r--InventoryManager.cs172
-rw-r--r--Login_manager.cs65
-rw-r--r--Prim_manager.cs236
-rw-r--r--Script_manager.cs4
-rw-r--r--Second-server.sln2
-rw-r--r--Server.cs24
11 files changed, 867 insertions, 889 deletions
diff --git a/Agent_Manager.cs b/Agent_Manager.cs
index 769ee2a..5ff40cd 100644
--- a/Agent_Manager.cs
+++ b/Agent_Manager.cs
@@ -41,23 +41,23 @@ namespace OpenSim
41 { 41 {
42 public Dictionary<libsecondlife.LLUUID,AvatarData> AgentList; 42 public Dictionary<libsecondlife.LLUUID,AvatarData> AgentList;
43 43
44 private uint local_numer=0; 44 private uint _localNumber=0;
45 private Server server; 45 private Server _server;
46 public PrimManager Prim_Manager; 46 public PrimManager Prim_Manager;
47 public AssetManagement Asset_Manager; 47 public AssetManagement assetManager;
48 48
49 private libsecondlife.Packets.RegionHandshakePacket RegionPacket; 49 private libsecondlife.Packets.RegionHandshakePacket RegionPacket;
50 private System.Text.Encoding enc = System.Text.Encoding.ASCII; 50 private System.Text.Encoding _enc = System.Text.Encoding.ASCII;
51 public libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock AvatarTemplate; 51 private libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock AvatarTemplate;
52 52
53 /// <summary> 53 /// <summary>
54 /// 54 ///
55 /// </summary> 55 /// </summary>
56 /// <param name="serve"></param> 56 /// <param name="serve"></param>
57 public AgentManager(Server serve) 57 public AgentManager(Server server)
58 { 58 {
59 AgentList=new Dictionary<libsecondlife.LLUUID,AvatarData>(); 59 AgentList = new Dictionary<libsecondlife.LLUUID,AvatarData>();
60 server=serve; 60 _server = server;
61 this.initialise(); 61 this.initialise();
62 } 62 }
63 63
@@ -74,8 +74,8 @@ namespace OpenSim
74 } 74 }
75 else 75 else
76 { 76 {
77 AvatarData ad=this.AgentList[id]; 77 AvatarData avatar = this.AgentList[id];
78 return ad; 78 return avatar;
79 } 79 }
80 } 80 }
81 /// <summary> 81 /// <summary>
@@ -84,7 +84,7 @@ namespace OpenSim
84 /// <param name="agent"></param> 84 /// <param name="agent"></param>
85 public void AddAgent(AvatarData agent) 85 public void AddAgent(AvatarData agent)
86 { 86 {
87 this.AgentList.Add(agent.FullID,agent); 87 this.AgentList.Add(agent.FullID, agent);
88 } 88 }
89 /// <summary> 89 /// <summary>
90 /// 90 ///
@@ -102,20 +102,20 @@ namespace OpenSim
102 /// <param name="first"></param> 102 /// <param name="first"></param>
103 /// <param name="last"></param> 103 /// <param name="last"></param>
104 /// <returns></returns> 104 /// <returns></returns>
105 public bool NewAgent(User_Agent_info User_info, string first, string last ,LLUUID BaseFolder,LLUUID InventoryFolder) 105 public bool NewAgent(UserAgentInfo userInfo, string first, string last, LLUUID baseFolder, LLUUID inventoryFolder)
106 { 106 {
107 AvatarData agent=new AvatarData(); 107 AvatarData agent = new AvatarData();
108 agent.FullID=User_info.AgentID; 108 agent.FullID = userInfo.AgentID;
109 agent.NetInfo=User_info; 109 agent.NetInfo = userInfo;
110 agent.NetInfo.first_name=first; 110 agent.NetInfo.first_name =first;
111 agent.NetInfo.last_name=last; 111 agent.NetInfo.last_name = last;
112 agent.Position=new LLVector3(100,100,22); 112 agent.Position = new LLVector3(100, 100, 22);
113 agent.BaseFolder=BaseFolder; 113 agent.BaseFolder = baseFolder;
114 agent.InventoryFolder=InventoryFolder; 114 agent.InventoryFolder = inventoryFolder;
115 this.AgentList.Add(agent.FullID,agent); 115 this.AgentList.Add(agent.FullID, agent);
116 116
117 //Create new Wearable Assets and place in Inventory 117 //Create new Wearable Assets and place in Inventory
118 this.Asset_Manager.CreateNewInventorySet(ref agent,User_info); 118 this.assetManager.CreateNewInventorySet(ref agent, userInfo);
119 119
120 return(true); 120 return(true);
121 } 121 }
@@ -124,9 +124,9 @@ namespace OpenSim
124 /// 124 ///
125 /// </summary> 125 /// </summary>
126 /// <param name="UserInfo"></param> 126 /// <param name="UserInfo"></param>
127 public void RemoveAgent(User_Agent_info UserInfo) 127 public void RemoveAgent(UserAgentInfo userInfo)
128 { 128 {
129 this.AgentList.Remove(UserInfo.AgentID); 129 this.AgentList.Remove(userInfo.AgentID);
130 130
131 //tell other clients to delete this avatar 131 //tell other clients to delete this avatar
132 } 132 }
@@ -135,20 +135,20 @@ namespace OpenSim
135 /// 135 ///
136 /// </summary> 136 /// </summary>
137 /// <param name="User_info"></param> 137 /// <param name="User_info"></param>
138 public void AgentJoin(User_Agent_info User_info) 138 public void AgentJoin(UserAgentInfo userInfo)
139 { 139 {
140 //send region data 140 //send region data
141 server.SendPacket(RegionPacket,true,User_info); 141 _server.SendPacket(RegionPacket,true, userInfo);
142 142
143 //inform client of join comlete 143 //inform client of join comlete
144 libsecondlife.Packets.AgentMovementCompletePacket mov=new AgentMovementCompletePacket(); 144 libsecondlife.Packets.AgentMovementCompletePacket mov = new AgentMovementCompletePacket();
145 mov.AgentData.SessionID=User_info.SessionID; 145 mov.AgentData.SessionID = userInfo.SessionID;
146 mov.AgentData.AgentID=User_info.AgentID; 146 mov.AgentData.AgentID = userInfo.AgentID;
147 mov.Data.RegionHandle=Globals.Instance.RegionHandle; 147 mov.Data.RegionHandle = Globals.Instance.RegionHandle;
148 mov.Data.Timestamp=1169838966; 148 mov.Data.Timestamp = 1169838966;
149 mov.Data.Position=new LLVector3(100f,100f,22f); 149 mov.Data.Position = new LLVector3(100f, 100f, 22f);
150 mov.Data.LookAt=new LLVector3(0.99f,0.042f,0); 150 mov.Data.LookAt = new LLVector3(0.99f, 0.042f, 0);
151 server.SendPacket(mov,true,User_info); 151 _server.SendPacket(mov, true, userInfo);
152 } 152 }
153 153
154 /// <summary> 154 /// <summary>
@@ -157,12 +157,12 @@ namespace OpenSim
157 public void UpdatePositions() 157 public void UpdatePositions()
158 { 158 {
159 //update positions 159 //update positions
160 foreach (KeyValuePair<libsecondlife.LLUUID,AvatarData> kp in this.AgentList) 160 foreach (KeyValuePair<libsecondlife.LLUUID, AvatarData> kp in this.AgentList)
161 { 161 {
162 162
163 kp.Value.Position.X+=(kp.Value.Velocity.X*0.2f); 163 kp.Value.Position.X += (kp.Value.Velocity.X * 0.2f);
164 kp.Value.Position.Y+=(kp.Value.Velocity.Y*0.2f); 164 kp.Value.Position.Y += (kp.Value.Velocity.Y * 0.2f);
165 kp.Value.Position.Z+=(kp.Value.Velocity.Z*0.2f); 165 kp.Value.Position.Z += (kp.Value.Velocity.Z * 0.2f);
166 } 166 }
167 } 167 }
168 168
@@ -172,31 +172,31 @@ namespace OpenSim
172 private void initialise() 172 private void initialise()
173 { 173 {
174 //Region data 174 //Region data
175 RegionPacket=new RegionHandshakePacket(); 175 RegionPacket = new RegionHandshakePacket();
176 RegionPacket.RegionInfo.BillableFactor=0; 176 RegionPacket.RegionInfo.BillableFactor = 0;
177 RegionPacket.RegionInfo.IsEstateManager=false; 177 RegionPacket.RegionInfo.IsEstateManager = false;
178 RegionPacket.RegionInfo.TerrainHeightRange00=60; 178 RegionPacket.RegionInfo.TerrainHeightRange00 = 60;
179 RegionPacket.RegionInfo.TerrainHeightRange01=60; 179 RegionPacket.RegionInfo.TerrainHeightRange01 = 60;
180 RegionPacket.RegionInfo.TerrainHeightRange10=60; 180 RegionPacket.RegionInfo.TerrainHeightRange10 = 60;
181 RegionPacket.RegionInfo.TerrainHeightRange11=60; 181 RegionPacket.RegionInfo.TerrainHeightRange11 = 60;
182 RegionPacket.RegionInfo.TerrainStartHeight00=20; 182 RegionPacket.RegionInfo.TerrainStartHeight00 = 20;
183 RegionPacket.RegionInfo.TerrainStartHeight01=20; 183 RegionPacket.RegionInfo.TerrainStartHeight01 = 20;
184 RegionPacket.RegionInfo.TerrainStartHeight10=20; 184 RegionPacket.RegionInfo.TerrainStartHeight10 = 20;
185 RegionPacket.RegionInfo.TerrainStartHeight11=20; 185 RegionPacket.RegionInfo.TerrainStartHeight11 = 20;
186 RegionPacket.RegionInfo.SimAccess=13; 186 RegionPacket.RegionInfo.SimAccess = 13;
187 RegionPacket.RegionInfo.WaterHeight=5; 187 RegionPacket.RegionInfo.WaterHeight = 5;
188 RegionPacket.RegionInfo.RegionFlags=72458694; 188 RegionPacket.RegionInfo.RegionFlags = 72458694;
189 RegionPacket.RegionInfo.SimName=enc.GetBytes( Globals.Instance.RegionName); 189 RegionPacket.RegionInfo.SimName = _enc.GetBytes( Globals.Instance.RegionName);
190 RegionPacket.RegionInfo.SimOwner=new LLUUID("00000000-0000-0000-0000-000000000000"); 190 RegionPacket.RegionInfo.SimOwner = new LLUUID("00000000-0000-0000-0000-000000000000");
191 RegionPacket.RegionInfo.TerrainBase0=new LLUUID("b8d3965a-ad78-bf43-699b-bff8eca6c975"); 191 RegionPacket.RegionInfo.TerrainBase0 = new LLUUID("b8d3965a-ad78-bf43-699b-bff8eca6c975");
192 RegionPacket.RegionInfo.TerrainBase1=new LLUUID("abb783e6-3e93-26c0-248a-247666855da3"); 192 RegionPacket.RegionInfo.TerrainBase1 = new LLUUID("abb783e6-3e93-26c0-248a-247666855da3");
193 RegionPacket.RegionInfo.TerrainBase2=new LLUUID("179cdabd-398a-9b6b-1391-4dc333ba321f"); 193 RegionPacket.RegionInfo.TerrainBase2 = new LLUUID("179cdabd-398a-9b6b-1391-4dc333ba321f");
194 RegionPacket.RegionInfo.TerrainBase3=new LLUUID("beb169c7-11ea-fff2-efe5-0f24dc881df2"); 194 RegionPacket.RegionInfo.TerrainBase3 = new LLUUID("beb169c7-11ea-fff2-efe5-0f24dc881df2");
195 RegionPacket.RegionInfo.TerrainDetail0=new LLUUID("00000000-0000-0000-0000-000000000000"); 195 RegionPacket.RegionInfo.TerrainDetail0 = new LLUUID("00000000-0000-0000-0000-000000000000");
196 RegionPacket.RegionInfo.TerrainDetail1=new LLUUID("00000000-0000-0000-0000-000000000000"); 196 RegionPacket.RegionInfo.TerrainDetail1 = new LLUUID("00000000-0000-0000-0000-000000000000");
197 RegionPacket.RegionInfo.TerrainDetail2=new LLUUID("00000000-0000-0000-0000-000000000000"); 197 RegionPacket.RegionInfo.TerrainDetail2 = new LLUUID("00000000-0000-0000-0000-000000000000");
198 RegionPacket.RegionInfo.TerrainDetail3=new LLUUID("00000000-0000-0000-0000-000000000000"); 198 RegionPacket.RegionInfo.TerrainDetail3 = new LLUUID("00000000-0000-0000-0000-000000000000");
199 RegionPacket.RegionInfo.CacheID=new LLUUID("545ec0a5-5751-1026-8a0b-216e38a7ab37"); 199 RegionPacket.RegionInfo.CacheID = new LLUUID("545ec0a5-5751-1026-8a0b-216e38a7ab37");
200 200
201 this.SetupTemplate("objectupate168.dat"); 201 this.SetupTemplate("objectupate168.dat");
202 } 202 }
@@ -208,7 +208,7 @@ namespace OpenSim
208 private void SetupTemplate(string name) 208 private void SetupTemplate(string name)
209 { 209 {
210 210
211 int i=0; 211 int i = 0;
212 FileInfo fInfo = new FileInfo(name); 212 FileInfo fInfo = new FileInfo(name);
213 long numBytes = fInfo.Length; 213 long numBytes = fInfo.Length;
214 FileStream fStream = new FileStream(name, FileMode.Open, FileAccess.Read); 214 FileStream fStream = new FileStream(name, FileMode.Open, FileAccess.Read);
@@ -217,19 +217,19 @@ namespace OpenSim
217 br.Close(); 217 br.Close();
218 fStream.Close(); 218 fStream.Close();
219 219
220 libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock objdata=new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock(data1,ref i); 220 libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock objdata = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock(data1, ref i);
221 221
222 System.Text.Encoding enc = System.Text.Encoding.ASCII; 222 System.Text.Encoding enc = System.Text.Encoding.ASCII;
223 libsecondlife.LLVector3 pos=new LLVector3(objdata.ObjectData, 16); 223 libsecondlife.LLVector3 pos = new LLVector3(objdata.ObjectData, 16);
224 pos.X=100f; 224 pos.X = 100f;
225 objdata.ID=8880000; 225 objdata.ID = 8880000;
226 objdata.NameValue=enc.GetBytes("FirstName STRING RW SV Test \nLastName STRING RW SV User \0"); 226 objdata.NameValue = enc.GetBytes("FirstName STRING RW SV Test \nLastName STRING RW SV User \0");
227 libsecondlife.LLVector3 pos2=new LLVector3(13.981f,100.0f,20.0f); 227 libsecondlife.LLVector3 pos2 = new LLVector3(13.981f,100.0f,20.0f);
228 //objdata.FullID=user.AgentID; 228 //objdata.FullID=user.AgentID;
229 byte[] pb=pos.GetBytes(); 229 byte[] pb = pos.GetBytes();
230 Array.Copy(pb,0,objdata.ObjectData,16,pb.Length); 230 Array.Copy(pb, 0, objdata.ObjectData, 16, pb.Length);
231 231
232 AvatarTemplate=objdata; 232 AvatarTemplate = objdata;
233 233
234 } 234 }
235 235
@@ -237,52 +237,52 @@ namespace OpenSim
237 /// 237 ///
238 /// </summary> 238 /// </summary>
239 /// <param name="User_info"></param> 239 /// <param name="User_info"></param>
240 public void SendInitialData(User_Agent_info User_info) 240 public void SendInitialData(UserAgentInfo userInfo)
241 { 241 {
242 242
243 //shouldn't have to read all this in from disk for every new client 243 //shouldn't have to read all this in from disk for every new client
244 string data_path=System.AppDomain.CurrentDomain.BaseDirectory + @"\layer_data\"; 244 string data_path = System.AppDomain.CurrentDomain.BaseDirectory + @"\layer_data\";
245 245
246 //send layerdata 246 //send layerdata
247 LayerDataPacket layerpack=new LayerDataPacket(); 247 LayerDataPacket layerpack = new LayerDataPacket();
248 layerpack.LayerID.Type=76; 248 layerpack.LayerID.Type = 76;
249 this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata0.dat"); 249 this.SendLayerData(userInfo,ref layerpack, data_path+@"layerdata0.dat");
250 250
251 LayerDataPacket layerpack1=new LayerDataPacket(); 251 LayerDataPacket layerpack1 = new LayerDataPacket();
252 layerpack1.LayerID.Type=76; 252 layerpack1.LayerID.Type = 76;
253 this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata1.dat"); 253 this.SendLayerData(userInfo, ref layerpack, data_path+@"layerdata1.dat");
254 254
255 LayerDataPacket layerpack2=new LayerDataPacket(); 255 LayerDataPacket layerpack2 = new LayerDataPacket();
256 layerpack2.LayerID.Type=56; 256 layerpack2.LayerID.Type = 56;
257 this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata2.dat"); 257 this.SendLayerData(userInfo, ref layerpack, data_path+@"layerdata2.dat");
258 258
259 LayerDataPacket layerpack3=new LayerDataPacket(); 259 LayerDataPacket layerpack3 = new LayerDataPacket();
260 layerpack3.LayerID.Type=55; 260 layerpack3.LayerID.Type = 55;
261 this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata3.dat"); 261 this.SendLayerData(userInfo, ref layerpack, data_path+@"layerdata3.dat");
262 262
263 LayerDataPacket layerpack4=new LayerDataPacket(); 263 LayerDataPacket layerpack4 = new LayerDataPacket();
264 layerpack4.LayerID.Type=56; 264 layerpack4.LayerID.Type = 56;
265 this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata4.dat"); 265 this.SendLayerData(userInfo, ref layerpack, data_path+@"layerdata4.dat");
266 266
267 LayerDataPacket layerpack5=new LayerDataPacket(); 267 LayerDataPacket layerpack5 = new LayerDataPacket();
268 layerpack5.LayerID.Type=55; 268 layerpack5.LayerID.Type = 55;
269 this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata5.dat"); 269 this.SendLayerData(userInfo, ref layerpack, data_path+@"layerdata5.dat");
270 270
271 //send intial set of captured prims data? 271 //send intial set of captured prims data?
272 this.Prim_Manager.ReadPrimDatabase( "objectdatabase.ini",User_info); 272 this.Prim_Manager.ReadPrimDatabase( "objectdatabase.ini", userInfo);
273 273
274 //send prims that have been created by users 274 //send prims that have been created by users
275 //prim_man.send_existing_prims(User_info); 275 //prim_man.send_existing_prims(User_info);
276 276
277 //send update about clients avatar 277 //send update about clients avatar
278 this.SendInitialAvatarPosition(User_info); 278 this.SendInitialAvatarPosition(userInfo);
279 279
280 //send updates about all other users 280 //send updates about all other users
281 foreach (KeyValuePair<libsecondlife.LLUUID,AvatarData> kp in this.AgentList) 281 foreach (KeyValuePair<libsecondlife.LLUUID, AvatarData> kp in this.AgentList)
282 { 282 {
283 if(kp.Value.NetInfo.AgentID!=User_info.AgentID) 283 if(kp.Value.NetInfo.AgentID != userInfo.AgentID)
284 { 284 {
285 this.SendOtherAvatarPosition(User_info,kp.Value); 285 this.SendOtherAvatarPosition(userInfo, kp.Value);
286 } 286 }
287 } 287 }
288 } 288 }
@@ -291,41 +291,40 @@ namespace OpenSim
291 /// 291 ///
292 /// </summary> 292 /// </summary>
293 /// <param name="User_info"></param> 293 /// <param name="User_info"></param>
294 public void SendInitialAvatarPosition(User_Agent_info User_info) 294 public void SendInitialAvatarPosition(UserAgentInfo userInfo)
295 { 295 {
296 //send a objectupdate packet with information about the clients avatar 296 //send a objectupdate packet with information about the clients avatar
297 ObjectUpdatePacket objupdate=new ObjectUpdatePacket(); 297 ObjectUpdatePacket objupdate = new ObjectUpdatePacket();
298 objupdate.RegionData.RegionHandle=Globals.Instance.RegionHandle; 298 objupdate.RegionData.RegionHandle = Globals.Instance.RegionHandle;
299 objupdate.RegionData.TimeDilation=64096; 299 objupdate.RegionData.TimeDilation = 64096;
300 objupdate.ObjectData=new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1]; 300 objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1];
301 301
302 objupdate.ObjectData[0]=AvatarTemplate; 302 objupdate.ObjectData[0] = AvatarTemplate;
303 //give this avatar object a local id and assign the user a name 303 //give this avatar object a local id and assign the user a name
304 objupdate.ObjectData[0].ID=8880000+this.local_numer; 304 objupdate.ObjectData[0].ID = 8880000 + this._localNumber;
305 User_info.localID=objupdate.ObjectData[0].ID; 305 userInfo.localID = objupdate.ObjectData[0].ID;
306 //User_info.name="Test"+this.local_numer+" User"; 306 //User_info.name="Test"+this.local_numer+" User";
307 this.GetAgent(User_info.AgentID).Started=true; 307 this.GetAgent(userInfo.AgentID).Started = true;
308 objupdate.ObjectData[0].FullID=User_info.AgentID; 308 objupdate.ObjectData[0].FullID = userInfo.AgentID;
309 objupdate.ObjectData[0].NameValue=enc.GetBytes("FirstName STRING RW SV "+User_info.first_name+"\nLastName STRING RW SV "+User_info.last_name+" \0"); 309 objupdate.ObjectData[0].NameValue = _enc.GetBytes("FirstName STRING RW SV " + userInfo.first_name + "\nLastName STRING RW SV " + userInfo.last_name + " \0");
310 User_info.name="FirstName STRING RW SV "+User_info.first_name+"\nLastName STRING RW SV "+User_info.last_name+" \0"; 310 userInfo.name = "FirstName STRING RW SV " + userInfo.first_name + "\nLastName STRING RW SV " + userInfo.last_name + " \0";
311 //User_info.last_name="User"; 311
312 //User_info.first_name="Test"+this.local_numer; 312 libsecondlife.LLVector3 pos2 = new LLVector3(100f, 100.0f, 22.0f);
313 libsecondlife.LLVector3 pos2=new LLVector3(100f,100.0f,22.0f); 313
314 314 byte[] pb = pos2.GetBytes();
315 byte[] pb=pos2.GetBytes();
316 315
317 Array.Copy(pb,0,objupdate.ObjectData[0].ObjectData,16,pb.Length); 316 Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length);
318 this.local_numer++; 317 this._localNumber++;
319 318
320 server.SendPacket(objupdate,true,User_info); 319 _server.SendPacket(objupdate, true, userInfo);
321 320
322 //send this info to other existing clients 321 //send this info to other existing clients
323 foreach (KeyValuePair<libsecondlife.LLUUID,AvatarData> kp in this.AgentList) 322 foreach (KeyValuePair<libsecondlife.LLUUID, AvatarData> kp in this.AgentList)
324 { 323 {
325 if(kp.Value.NetInfo.AgentID!=User_info.AgentID) 324 if(kp.Value.NetInfo.AgentID != userInfo.AgentID)
326 { 325 {
327 server.SendPacket(objupdate,true,kp.Value.NetInfo); 326 _server.SendPacket(objupdate, true, kp.Value.NetInfo);
328 this.SendOtherAppearance(kp.Value.NetInfo,objupdate.ObjectData[0].FullID); 327 this.SendOtherAppearance(kp.Value.NetInfo, objupdate.ObjectData[0].FullID);
329 } 328 }
330 } 329 }
331 330
@@ -335,38 +334,38 @@ namespace OpenSim
335 /// 334 ///
336 /// </summary> 335 /// </summary>
337 /// <param name="user"></param> 336 /// <param name="user"></param>
338 public void SendIntialAvatarAppearance(User_Agent_info user) 337 public void SendIntialAvatarAppearance(UserAgentInfo userInfo)
339 { 338 {
340 AvatarData Agent=this.AgentList[user.AgentID]; 339 AvatarData Agent = this.AgentList[userInfo.AgentID];
341 AgentWearablesUpdatePacket aw=new AgentWearablesUpdatePacket(); 340 AgentWearablesUpdatePacket aw = new AgentWearablesUpdatePacket();
342 aw.AgentData.AgentID=user.AgentID; 341 aw.AgentData.AgentID = userInfo.AgentID;
343 aw.AgentData.SerialNum=0; 342 aw.AgentData.SerialNum = 0;
344 aw.AgentData.SessionID=user.SessionID; 343 aw.AgentData.SessionID = userInfo.SessionID;
345 344
346 aw.WearableData= new AgentWearablesUpdatePacket.WearableDataBlock[13]; 345 aw.WearableData = new AgentWearablesUpdatePacket.WearableDataBlock[13];
347 AgentWearablesUpdatePacket.WearableDataBlock awb=null; 346 AgentWearablesUpdatePacket.WearableDataBlock awb = null;
348 awb=new AgentWearablesUpdatePacket.WearableDataBlock(); 347 awb = new AgentWearablesUpdatePacket.WearableDataBlock();
349 awb.WearableType=(byte)0; 348 awb.WearableType = (byte)0;
350 awb.AssetID=Agent.Wearables[0].AssetID;//new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73"); 349 awb.AssetID = Agent.Wearables[0].AssetID;
351 awb.ItemID=Agent.Wearables[0].ItemID;//new LLUUID("b7878441893b094917f791174bc8401c"); 350 awb.ItemID = Agent.Wearables[0].ItemID;
352 aw.WearableData[0]=awb; 351 aw.WearableData[0] = awb;
353 352
354 awb=new AgentWearablesUpdatePacket.WearableDataBlock(); 353 awb = new AgentWearablesUpdatePacket.WearableDataBlock();
355 awb.WearableType=(byte)1; 354 awb.WearableType =(byte)1;
356 awb.AssetID=Agent.Wearables[1].AssetID;//new LLUUID("e0ee49b5a4184df8d3c9a65361fe7f49"); 355 awb.AssetID = Agent.Wearables[1].AssetID;
357 awb.ItemID=Agent.Wearables[1].ItemID;//new LLUUID("193f0876fc11d143797454352f9c9c26"); 356 awb.ItemID = Agent.Wearables[1].ItemID;
358 aw.WearableData[1]=awb; 357 aw.WearableData[1] = awb;
359 358
360 for(int i=2; i<13; i++) 359 for(int i=2; i<13; i++)
361 { 360 {
362 awb=new AgentWearablesUpdatePacket.WearableDataBlock(); 361 awb = new AgentWearablesUpdatePacket.WearableDataBlock();
363 awb.WearableType=(byte)i; 362 awb.WearableType = (byte)i;
364 awb.AssetID=new LLUUID("00000000-0000-0000-0000-000000000000"); 363 awb.AssetID = new LLUUID("00000000-0000-0000-0000-000000000000");
365 awb.ItemID=new LLUUID("00000000-0000-0000-0000-000000000000"); 364 awb.ItemID = new LLUUID("00000000-0000-0000-0000-000000000000");
366 aw.WearableData[i]=awb; 365 aw.WearableData[i] = awb;
367 } 366 }
368 367
369 server.SendPacket(aw,true,user); 368 _server.SendPacket(aw, true, userInfo);
370 } 369 }
371 370
372 /// <summary> 371 /// <summary>
@@ -374,34 +373,33 @@ namespace OpenSim
374 /// </summary> 373 /// </summary>
375 /// <param name="user"></param> 374 /// <param name="user"></param>
376 /// <param name="id"></param> 375 /// <param name="id"></param>
377 public void SendOtherAppearance(User_Agent_info user,LLUUID id) 376 public void SendOtherAppearance(UserAgentInfo userInfo, LLUUID id)
378 { 377 {
379 AvatarAppearancePacket avp=new AvatarAppearancePacket(); 378 AvatarAppearancePacket avp = new AvatarAppearancePacket();
380 379
381 380
382 avp.VisualParam=new AvatarAppearancePacket.VisualParamBlock[218]; 381 avp.VisualParam = new AvatarAppearancePacket.VisualParamBlock[218];
383 //avp.ObjectData.TextureEntry=this.avatar_template.TextureEntry;// br.ReadBytes((int)numBytes); 382 //avp.ObjectData.TextureEntry=this.avatar_template.TextureEntry;// br.ReadBytes((int)numBytes);
384 383
385 FileInfo fInfo = new FileInfo("Avatar_texture3.dat"); 384 FileInfo fInfo = new FileInfo("Avatar_texture3.dat");
386
387 long numBytes = fInfo.Length; 385 long numBytes = fInfo.Length;
388 FileStream fStream = new FileStream("Avatar_texture3.dat", FileMode.Open, FileAccess.Read); 386 FileStream fStream = new FileStream("Avatar_texture3.dat", FileMode.Open, FileAccess.Read);
389 BinaryReader br = new BinaryReader(fStream); 387 BinaryReader br = new BinaryReader(fStream);
390 avp.ObjectData.TextureEntry= br.ReadBytes((int)numBytes); 388 avp.ObjectData.TextureEntry = br.ReadBytes((int)numBytes);
391 br.Close(); 389 br.Close();
392 fStream.Close(); 390 fStream.Close();
393 391
394 AvatarAppearancePacket.VisualParamBlock avblock=null; 392 AvatarAppearancePacket.VisualParamBlock avblock = null;
395 for(int i=0; i<218; i++) 393 for(int i = 0; i < 218; i++)
396 { 394 {
397 avblock=new AvatarAppearancePacket.VisualParamBlock(); 395 avblock = new AvatarAppearancePacket.VisualParamBlock();
398 avblock.ParamValue=(byte)100; 396 avblock.ParamValue = (byte)100;
399 avp.VisualParam[i]=avblock; 397 avp.VisualParam[i] = avblock;
400 } 398 }
401 399
402 avp.Sender.IsTrial=false; 400 avp.Sender.IsTrial = false;
403 avp.Sender.ID=id; 401 avp.Sender.ID = id;
404 server.SendPacket(avp,true,user); 402 _server.SendPacket(avp, true, userInfo);
405 403
406 } 404 }
407 405
@@ -410,29 +408,27 @@ namespace OpenSim
410 /// </summary> 408 /// </summary>
411 /// <param name="User_info"></param> 409 /// <param name="User_info"></param>
412 /// <param name="avd"></param> 410 /// <param name="avd"></param>
413 public void SendOtherAvatarPosition(User_Agent_info User_info, AvatarData avd) 411 public void SendOtherAvatarPosition(UserAgentInfo userInfo, AvatarData avatar)
414 { 412 {
415 //send a objectupdate packet with information about the clients avatar 413 //send a objectupdate packet with information about the clients avatar
416 ObjectUpdatePacket objupdate=new ObjectUpdatePacket(); 414 ObjectUpdatePacket objupdate = new ObjectUpdatePacket();
417 objupdate.RegionData.RegionHandle=Globals.Instance.RegionHandle; 415 objupdate.RegionData.RegionHandle = Globals.Instance.RegionHandle;
418 objupdate.RegionData.TimeDilation=64500; 416 objupdate.RegionData.TimeDilation = 64500;
419 objupdate.ObjectData=new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1]; 417 objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1];
420 418
421 objupdate.ObjectData[0]=AvatarTemplate; 419 objupdate.ObjectData[0] = AvatarTemplate;
422 //give this avatar object a local id and assign the user a name 420 //give this avatar object a local id and assign the user a name
423 objupdate.ObjectData[0].ID=avd.NetInfo.localID; 421 objupdate.ObjectData[0].ID = avatar.NetInfo.localID;
424 objupdate.ObjectData[0].FullID=avd.NetInfo.AgentID;//new LLUUID("00000000-0000-0000-5665-000000000034"); 422 objupdate.ObjectData[0].FullID = avatar.NetInfo.AgentID;
425 objupdate.ObjectData[0].NameValue=enc.GetBytes(avd.NetInfo.name);//enc.GetBytes("FirstName STRING RW SV Test"+ this.local_numer+"\nLastName STRING RW SV User \0"); 423 objupdate.ObjectData[0].NameValue = _enc.GetBytes(avatar.NetInfo.name);
426 libsecondlife.LLVector3 pos2=new LLVector3(avd.Position.X,avd.Position.Y,avd.Position.Z); 424 libsecondlife.LLVector3 pos2 = new LLVector3(avatar.Position.X, avatar.Position.Y, avatar.Position.Z);
427 425
428 byte[] pb=pos2.GetBytes(); 426 byte[] pb = pos2.GetBytes();
429 427 Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length);
430 Array.Copy(pb,0,objupdate.ObjectData[0].ObjectData,16,pb.Length); 428 this._localNumber++;
431 this.local_numer++;
432
433 server.SendPacket(objupdate,true,User_info);
434 429
435 this.SendOtherAppearance(User_info,avd.NetInfo.AgentID);//new LLUUID("00000000-0000-0000-5665-000000000034")); 430 _server.SendPacket(objupdate, true, userInfo);
431 this.SendOtherAppearance(userInfo, avatar.NetInfo.AgentID);
436 432
437 } 433 }
438 434
@@ -441,26 +437,26 @@ namespace OpenSim
441 /// </summary> 437 /// </summary>
442 /// <param name="User_info"></param> 438 /// <param name="User_info"></param>
443 /// <param name="line"></param> 439 /// <param name="line"></param>
444 public void SendChatMessage(User_Agent_info User_info, string line) 440 public void SendChatMessage(UserAgentInfo userInfo, string line)
445 { 441 {
446 libsecondlife.Packets.ChatFromSimulatorPacket reply=new ChatFromSimulatorPacket(); 442 libsecondlife.Packets.ChatFromSimulatorPacket reply = new ChatFromSimulatorPacket();
447 reply.ChatData.Audible=1; 443 reply.ChatData.Audible = 1;
448 reply.ChatData.Message=enc.GetBytes(line); 444 reply.ChatData.Message = _enc.GetBytes(line);
449 reply.ChatData.ChatType=1; 445 reply.ChatData.ChatType = 1;
450 reply.ChatData.SourceType=1; 446 reply.ChatData.SourceType = 1;
451 reply.ChatData.Position=new LLVector3(120,100,21); //should set to actual position 447 reply.ChatData.Position = new LLVector3(120, 100, 21); //should set to actual position
452 reply.ChatData.FromName=enc.GetBytes(User_info.first_name +" "+User_info.last_name +"\0"); //enc.GetBytes("Echo: \0"); //and actual name 448 reply.ChatData.FromName = _enc.GetBytes(userInfo.first_name + " " + userInfo.last_name + "\0");
453 reply.ChatData.OwnerID=User_info.AgentID; 449 reply.ChatData.OwnerID = userInfo.AgentID;
454 reply.ChatData.SourceID=User_info.AgentID; 450 reply.ChatData.SourceID = userInfo.AgentID;
455 //echo to sender 451 //echo to sender
456 server.SendPacket(reply,true,User_info); 452 _server.SendPacket(reply, true, userInfo);
457 453
458 //send to all users 454 //send to all users
459 foreach (KeyValuePair<libsecondlife.LLUUID,AvatarData> kp in this.AgentList) 455 foreach (KeyValuePair<libsecondlife.LLUUID, AvatarData> kp in this.AgentList)
460 { 456 {
461 if(kp.Value.NetInfo.AgentID!=User_info.AgentID) 457 if(kp.Value.NetInfo.AgentID!=userInfo.AgentID)
462 { 458 {
463 server.SendPacket(reply,true,kp.Value.NetInfo); 459 _server.SendPacket(reply, true, kp.Value.NetInfo);
464 } 460 }
465 } 461 }
466 } 462 }
@@ -475,54 +471,54 @@ namespace OpenSim
475 /// <param name="z"></param> 471 /// <param name="z"></param>
476 /// <param name="av_id"></param> 472 /// <param name="av_id"></param>
477 /// <param name="body"></param> 473 /// <param name="body"></param>
478 public void SendMoveCommand(User_Agent_info user, bool stop,float x, float y, float z, uint av_id, libsecondlife.LLQuaternion body) 474 public void SendMoveCommand(UserAgentInfo userInfo, bool stop, float x, float y, float z, uint avatarID, libsecondlife.LLQuaternion body)
479 { 475 {
480 uint ID=user.localID; 476 Console.WriteLine("sending move");
481 //ID=av_id; 477 uint ID = userInfo.localID;
482 byte[] bytes=new byte[60]; 478 byte[] bytes = new byte[60];
479 int i=0;
483 480
484 ImprovedTerseObjectUpdatePacket im=new ImprovedTerseObjectUpdatePacket(); 481 ImprovedTerseObjectUpdatePacket im = new ImprovedTerseObjectUpdatePacket();
485 im.RegionData.RegionHandle=Globals.Instance.RegionHandle;; 482 im.RegionData.RegionHandle = Globals.Instance.RegionHandle;;
486 im.RegionData.TimeDilation=64096; 483 im.RegionData.TimeDilation = 64096;
487 484
488 im.ObjectData=new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; 485 im.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1];
489 int i=0; 486 ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock();
490 ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat=new ImprovedTerseObjectUpdatePacket.ObjectDataBlock();
491 487
492 im.ObjectData[0]=dat; 488 im.ObjectData[0] = dat;
493 489
494 dat.TextureEntry=AvatarTemplate.TextureEntry; 490 dat.TextureEntry = AvatarTemplate.TextureEntry;
495 libsecondlife.LLVector3 pos2=new LLVector3(x,y,z); 491 libsecondlife.LLVector3 pos2 = new LLVector3(x, y, z);
496 492
497 bytes[i++] = (byte)(ID % 256); 493 bytes[i++] = (byte)(ID % 256);
498 bytes[i++] = (byte)((ID >> 8) % 256); 494 bytes[i++] = (byte)((ID >> 8) % 256);
499 bytes[i++] = (byte)((ID >> 16) % 256); 495 bytes[i++] = (byte)((ID >> 16) % 256);
500 bytes[i++] = (byte)((ID >> 24) % 256); 496 bytes[i++] = (byte)((ID >> 24) % 256);
501 497
502 bytes[i++]=0; 498 bytes[i++] = 0;
503 bytes[i++]=1; 499 bytes[i++] = 1;
504 500
505 i+=14; 501 i += 14;
506 bytes[i++]=128; 502 bytes[i++] = 128;
507 bytes[i++]=63; 503 bytes[i++] = 63;
508 byte[] pb=pos2.GetBytes(); 504 byte[] pb = pos2.GetBytes();
509 505
510 Array.Copy(pb,0,bytes,i,pb.Length); 506 Array.Copy(pb, 0, bytes, i, pb.Length);
511 i+=12; 507 i += 12;
512 ushort ac=32767; 508 ushort ac = 32767;
513 Axiom.MathLib.Vector3 v3=new Axiom.MathLib.Vector3(1,0,0); 509 Axiom.MathLib.Vector3 v3 = new Axiom.MathLib.Vector3(1, 0, 0);
514 Axiom.MathLib.Quaternion q=new Axiom.MathLib.Quaternion(body.W,body.X,body.Y,body.Z); 510 Axiom.MathLib.Quaternion q = new Axiom.MathLib.Quaternion(body.W, body.X, body.Y, body.Z);
515 Axiom.MathLib.Vector3 direc=q*v3; 511 Axiom.MathLib.Vector3 direc = q * v3;
516 direc.Normalize(); 512 direc.Normalize();
517 513
518 direc=direc*(0.03f); 514 direc = direc * (0.03f);
519 direc.x+=1; 515 direc.x += 1;
520 direc.y+=1; 516 direc.y += 1;
521 direc.z+=1; 517 direc.z += 1;
522 ushort dx,dy,dz; 518 ushort dx, dy, dz;
523 dx=(ushort)(32768*direc.x); 519 dx = (ushort)(32768 * direc.x);
524 dy=(ushort)(32768*direc.y); 520 dy = (ushort)(32768 * direc.y);
525 dz=(ushort)(32768*direc.z); 521 dz = (ushort)(32768 * direc.z);
526 522
527 //vel 523 //vel
528 if(!stop) 524 if(!stop)
@@ -582,14 +578,14 @@ namespace OpenSim
582 578
583 dat.Data=bytes; 579 dat.Data=bytes;
584 580
585 server.SendPacket(im,true,user); 581 _server.SendPacket(im, true, userInfo);
586 582
587 //should send to all users. 583 //should send to all users.
588 foreach (KeyValuePair<libsecondlife.LLUUID,AvatarData> kp in this.AgentList) 584 foreach (KeyValuePair<libsecondlife.LLUUID, AvatarData> kp in this.AgentList)
589 { 585 {
590 if(kp.Value.NetInfo.AgentID!=user.AgentID) 586 if(kp.Value.NetInfo.AgentID != userInfo.AgentID)
591 { 587 {
592 server.SendPacket(im,true,kp.Value.NetInfo); 588 _server.SendPacket(im, true, kp.Value.NetInfo);
593 } 589 }
594 } 590 }
595 } 591 }
@@ -600,36 +596,30 @@ namespace OpenSim
600 /// <param name="User_info"></param> 596 /// <param name="User_info"></param>
601 /// <param name="lay"></param> 597 /// <param name="lay"></param>
602 /// <param name="name"></param> 598 /// <param name="name"></param>
603 public void SendLayerData(User_Agent_info User_info,ref LayerDataPacket lay,string name) 599 public void SendLayerData(UserAgentInfo userInfo, ref LayerDataPacket layer, string name)
604 { 600 {
605 FileInfo fInfo = new FileInfo(name); 601 FileInfo fInfo = new FileInfo(name);
606
607 long numBytes = fInfo.Length; 602 long numBytes = fInfo.Length;
608
609 FileStream fStream = new FileStream(name, FileMode.Open, FileAccess.Read); 603 FileStream fStream = new FileStream(name, FileMode.Open, FileAccess.Read);
610
611 BinaryReader br = new BinaryReader(fStream); 604 BinaryReader br = new BinaryReader(fStream);
612
613 byte [] data1 = br.ReadBytes((int)numBytes); 605 byte [] data1 = br.ReadBytes((int)numBytes);
614
615 br.Close(); 606 br.Close();
616
617 fStream.Close(); 607 fStream.Close();
618 lay.LayerData.Data=data1; 608 layer.LayerData.Data = data1;
619 server.SendPacket(lay,true,User_info); 609 _server.SendPacket(layer, true, userInfo);
620 //System.Console.WriteLine("sent"); 610
621 } 611 }
622 } 612 }
623 613
624 public class AvatarData 614 public class AvatarData
625 { 615 {
626 public User_Agent_info NetInfo; 616 public UserAgentInfo NetInfo;
627 public LLUUID FullID; 617 public LLUUID FullID;
628 public LLVector3 Position; 618 public LLVector3 Position;
629 public LLVector3 Velocity=new LLVector3(0,0,0); 619 public LLVector3 Velocity = new LLVector3(0,0,0);
630 //public LLQuaternion Rotation; 620 //public LLQuaternion Rotation;
631 public bool Walk=false; 621 public bool Walk = false;
632 public bool Started=false; 622 public bool Started = false;
633 //public TextureEntry TextureEntry; 623 //public TextureEntry TextureEntry;
634 public AvatarWearable[] Wearables; 624 public AvatarWearable[] Wearables;
635 public LLUUID InventoryFolder; 625 public LLUUID InventoryFolder;
@@ -638,9 +628,9 @@ namespace OpenSim
638 public AvatarData() 628 public AvatarData()
639 { 629 {
640 Wearables=new AvatarWearable[2]; //should be 13 630 Wearables=new AvatarWearable[2]; //should be 13
641 for(int i=0; i<2; i++) 631 for(int i = 0; i < 2; i++)
642 { 632 {
643 Wearables[i]=new AvatarWearable(); 633 Wearables[i] = new AvatarWearable();
644 } 634 }
645 } 635 }
646 } 636 }
diff --git a/AssetManagement.cs b/AssetManagement.cs
index a43a969..07b2b57 100644
--- a/AssetManagement.cs
+++ b/AssetManagement.cs
@@ -44,22 +44,23 @@ namespace OpenSim
44 public Dictionary<libsecondlife.LLUUID,AssetInfo> Assets; 44 public Dictionary<libsecondlife.LLUUID,AssetInfo> Assets;
45 public Dictionary<libsecondlife.LLUUID,TextureImage> Textures; 45 public Dictionary<libsecondlife.LLUUID,TextureImage> Textures;
46 46
47 public ArrayList AssetRequests=new ArrayList(); //should change to a generic 47 public ArrayList AssetRequests = new ArrayList(); //should change to a generic
48 public ArrayList TextureRequests=new ArrayList(); 48 public ArrayList TextureRequests = new ArrayList();
49 // public ArrayList uploads=new ArrayList(); 49 //public ArrayList uploads=new ArrayList();
50 private Server server; 50 private Server _server;
51 public InventoryManager InventoryManager; 51 private InventoryManager _inventoryManager;
52 private System.Text.Encoding enc = System.Text.Encoding.ASCII; 52 private System.Text.Encoding _enc = System.Text.Encoding.ASCII;
53 53
54 /// <summary> 54 /// <summary>
55 /// 55 ///
56 /// </summary> 56 /// </summary>
57 /// <param name="server"></param> 57 /// <param name="_server"></param>
58 public AssetManagement(Server server) 58 public AssetManagement(Server server, InventoryManager inventoryManager)
59 { 59 {
60 this.server=server; 60 this._server = server;
61 Textures=new Dictionary<libsecondlife.LLUUID,TextureImage> (); 61 this._inventoryManager = inventoryManager;
62 Assets=new Dictionary<libsecondlife.LLUUID,AssetInfo> (); 62 Textures = new Dictionary<libsecondlife.LLUUID,TextureImage> ();
63 Assets = new Dictionary<libsecondlife.LLUUID,AssetInfo> ();
63 this.initialise(); 64 this.initialise();
64 } 65 }
65 66
@@ -69,38 +70,38 @@ namespace OpenSim
69 private void initialise() 70 private void initialise()
70 { 71 {
71 //Shape and skin base assets 72 //Shape and skin base assets
72 AssetInfo Asset=new AssetInfo(); 73 AssetInfo Asset = new AssetInfo();
73 Asset.filename="base_shape.dat"; 74 Asset.filename = "base_shape.dat";
74 Asset.Full_ID=new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73"); 75 Asset.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
75 this.LoadAsset(Asset, false); 76 this.LoadAsset(Asset, false);
76 this.Assets.Add(Asset.Full_ID, Asset); 77 this.Assets.Add(Asset.FullID, Asset);
77 78
78 Asset=new AssetInfo(); 79 Asset = new AssetInfo();
79 Asset.filename="base_skin.dat"; 80 Asset.filename = "base_skin.dat";
80 Asset.Full_ID=new LLUUID("e0ee49b5a4184df8d3c9a65361fe7f49"); 81 Asset.FullID = new LLUUID("e0ee49b5a4184df8d3c9a65361fe7f49");
81 this.LoadAsset(Asset, false); 82 this.LoadAsset(Asset, false);
82 this.Assets.Add(Asset.Full_ID, Asset); 83 this.Assets.Add(Asset.FullID, Asset);
83 84
84 //our test images 85 //our test images
85 //Change these filenames to images you want to use. 86 //Change these filenames to images you want to use.
86 TextureImage Image=new TextureImage(); 87 TextureImage Image = new TextureImage();
87 Image.filename="testpic2.jp2"; 88 Image.filename = "testpic2.jp2";
88 Image.Full_ID=new LLUUID("00000000-0000-0000-5005-000000000005"); 89 Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005");
89 Image.Name="test Texture"; 90 Image.Name = "test Texture";
90 this.LoadAsset(Image, true); 91 this.LoadAsset(Image, true);
91 this.Textures.Add(Image.Full_ID, Image); 92 this.Textures.Add(Image.FullID, Image);
92 93
93 Image=new TextureImage(); 94 Image = new TextureImage();
94 Image.filename="map_base.jp2"; 95 Image.filename = "map_base.jp2";
95 Image.Full_ID=new LLUUID("00000000-0000-0000-7007-000000000006"); 96 Image.FullID = new LLUUID("00000000-0000-0000-7007-000000000006");
96 this.LoadAsset(Image, true); 97 this.LoadAsset(Image, true);
97 this.Textures.Add(Image.Full_ID, Image); 98 this.Textures.Add(Image.FullID, Image);
98 99
99 Image=new TextureImage(); 100 Image = new TextureImage();
100 Image.filename="map1.jp2"; 101 Image.filename = "map1.jp2";
101 Image.Full_ID=new LLUUID("00000000-0000-0000-7009-000000000008"); 102 Image.FullID = new LLUUID("00000000-0000-0000-7009-000000000008");
102 this.LoadAsset(Image, true); 103 this.LoadAsset(Image, true);
103 this.Textures.Add(Image.Full_ID, Image); 104 this.Textures.Add(Image.FullID, Image);
104 } 105 }
105 106
106 /// <summary> 107 /// <summary>
@@ -111,101 +112,101 @@ namespace OpenSim
111 /// <param name="TransferRequest"></param> 112 /// <param name="TransferRequest"></param>
112 #region AssetRegion 113 #region AssetRegion
113 114
114 public void AddAssetRequest(User_Agent_info UserInfo, LLUUID AssetID, TransferRequestPacket TransferRequest) 115 public void AddAssetRequest(UserAgentInfo userInfo, LLUUID assetID, TransferRequestPacket transferRequest)
115 { 116 {
116 117
117 if(!this.Assets.ContainsKey(AssetID)) 118 if(!this.Assets.ContainsKey(assetID))
118 { 119 {
119 //not found asset 120 //not found asset
120 return; 121 return;
121 } 122 }
122 AssetInfo info=this.Assets[AssetID]; 123 AssetInfo info = this.Assets[assetID];
123 //for now as it will be only skin or shape request just send back the asset 124 //for now as it will be only skin or shape request just send back the asset
124 TransferInfoPacket Transfer=new TransferInfoPacket(); 125 TransferInfoPacket Transfer = new TransferInfoPacket();
125 Transfer.TransferInfo.ChannelType=2; 126 Transfer.TransferInfo.ChannelType = 2;
126 Transfer.TransferInfo.Status=0; 127 Transfer.TransferInfo.Status = 0;
127 Transfer.TransferInfo.TargetType=0; 128 Transfer.TransferInfo.TargetType = 0;
128 Transfer.TransferInfo.Params=TransferRequest.TransferInfo.Params; 129 Transfer.TransferInfo.Params = transferRequest.TransferInfo.Params;
129 Transfer.TransferInfo.Size=info.data.Length; 130 Transfer.TransferInfo.Size = info.data.Length;
130 Transfer.TransferInfo.TransferID=TransferRequest.TransferInfo.TransferID; 131 Transfer.TransferInfo.TransferID = transferRequest.TransferInfo.TransferID;
131 132
132 server.SendPacket(Transfer, true, UserInfo); 133 _server.SendPacket(Transfer, true, userInfo);
133 134
134 TransferPacketPacket TransferPacket=new TransferPacketPacket(); 135 TransferPacketPacket TransferPacket = new TransferPacketPacket();
135 TransferPacket.TransferData.Packet=0; 136 TransferPacket.TransferData.Packet = 0;
136 TransferPacket.TransferData.ChannelType=2; 137 TransferPacket.TransferData.ChannelType = 2;
137 TransferPacket.TransferData.TransferID=TransferRequest.TransferInfo.TransferID; 138 TransferPacket.TransferData.TransferID=transferRequest.TransferInfo.TransferID;
138 if(info.data.Length>1000) //but needs to be less than 2000 at the moment 139 if(info.data.Length>1000) //but needs to be less than 2000 at the moment
139 { 140 {
140 byte[] chunk=new byte[1000]; 141 byte[] chunk = new byte[1000];
141 Array.Copy(info.data,chunk,1000); 142 Array.Copy(info.data,chunk,1000);
142 TransferPacket.TransferData.Data=chunk; 143 TransferPacket.TransferData.Data = chunk;
143 TransferPacket.TransferData.Status=0; 144 TransferPacket.TransferData.Status = 0;
144 server.SendPacket(TransferPacket,true,UserInfo); 145 _server.SendPacket(TransferPacket,true,userInfo);
145 146
146 TransferPacket=new TransferPacketPacket(); 147 TransferPacket = new TransferPacketPacket();
147 TransferPacket.TransferData.Packet=1; 148 TransferPacket.TransferData.Packet = 1;
148 TransferPacket.TransferData.ChannelType=2; 149 TransferPacket.TransferData.ChannelType = 2;
149 TransferPacket.TransferData.TransferID=TransferRequest.TransferInfo.TransferID; 150 TransferPacket.TransferData.TransferID = transferRequest.TransferInfo.TransferID;
150 byte[] chunk1=new byte[(info.data.Length-1000)]; 151 byte[] chunk1 = new byte[(info.data.Length-1000)];
151 Array.Copy(info.data, 1000, chunk1, 0, chunk1.Length); 152 Array.Copy(info.data, 1000, chunk1, 0, chunk1.Length);
152 TransferPacket.TransferData.Data=chunk1; 153 TransferPacket.TransferData.Data = chunk1;
153 TransferPacket.TransferData.Status=1; 154 TransferPacket.TransferData.Status = 1;
154 server.SendPacket(TransferPacket, true, UserInfo); 155 _server.SendPacket(TransferPacket, true, userInfo);
155 } 156 }
156 else 157 else
157 { 158 {
158 TransferPacket.TransferData.Status=1; //last packet? so set to 1 159 TransferPacket.TransferData.Status = 1; //last packet? so set to 1
159 TransferPacket.TransferData.Data=info.data; 160 TransferPacket.TransferData.Data = info.data;
160 server.SendPacket(TransferPacket, true, UserInfo); 161 _server.SendPacket(TransferPacket, true, userInfo);
161 } 162 }
162 163
163 } 164 }
164 165
165 public void CreateNewInventorySet(ref AvatarData Avata,User_Agent_info UserInfo) 166 public void CreateNewInventorySet(ref AvatarData Avata,UserAgentInfo UserInfo)
166 { 167 {
167 //Create Folders 168 //Create Folders
168 LLUUID BaseFolder=Avata.BaseFolder; 169 LLUUID BaseFolder = Avata.BaseFolder;
169 InventoryManager.CreateNewFolder(UserInfo, Avata.InventoryFolder); 170 _inventoryManager.CreateNewFolder(UserInfo, Avata.InventoryFolder);
170 InventoryManager.CreateNewFolder(UserInfo, BaseFolder); 171 _inventoryManager.CreateNewFolder(UserInfo, BaseFolder);
171 172
172 //Give a copy of default shape 173 //Give a copy of default shape
173 AssetInfo Base=this.Assets[new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73")]; 174 AssetInfo Base = this.Assets[new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73")];
174 AssetInfo Shape=this.CloneAsset(UserInfo.AgentID, Base); 175 AssetInfo Shape = this.CloneAsset(UserInfo.AgentID, Base);
175 176
176 Shape.filename=""; 177 Shape.filename = "";
177 Shape.Name="Default Shape"; 178 Shape.Name = "Default Shape";
178 Shape.Description="Default Shape"; 179 Shape.Description = "Default Shape";
179 Shape.InvType=18; 180 Shape.InvType = 18;
180 Shape.Type=libsecondlife.AssetSystem.Asset.ASSET_TYPE_WEARABLE_BODY; 181 Shape.Type = libsecondlife.AssetSystem.Asset.ASSET_TYPE_WEARABLE_BODY;
181 182
182 byte[] Agentid=enc.GetBytes(UserInfo.AgentID.ToStringHyphenated()); 183 byte[] Agentid = _enc.GetBytes(UserInfo.AgentID.ToStringHyphenated());
183 Array.Copy(Agentid, 0, Shape.data, 294, Agentid.Length); 184 Array.Copy(Agentid, 0, Shape.data, 294, Agentid.Length);
184 this.Assets.Add(Shape.Full_ID, Shape); 185 this.Assets.Add(Shape.FullID, Shape);
185 186
186 Avata.Wearables[0].ItemID=InventoryManager.AddToInventory(UserInfo, BaseFolder, Shape); 187 Avata.Wearables[0].ItemID = _inventoryManager.AddToInventory(UserInfo, BaseFolder, Shape);
187 Avata.Wearables[0].AssetID=Shape.Full_ID; 188 Avata.Wearables[0].AssetID = Shape.FullID;
188 189
189 //Give copy of default skin 190 //Give copy of default skin
190 Base=this.Assets[new LLUUID("e0ee49b5a4184df8d3c9a65361fe7f49")]; 191 Base = this.Assets[new LLUUID("e0ee49b5a4184df8d3c9a65361fe7f49")];
191 AssetInfo Skin=this.CloneAsset(UserInfo.AgentID, Base); 192 AssetInfo Skin=this.CloneAsset(UserInfo.AgentID, Base);
192 193
193 Skin.filename=""; 194 Skin.filename = "";
194 Skin.Name="Default Skin"; 195 Skin.Name = "Default Skin";
195 Skin.Description="Default Skin"; 196 Skin.Description = "Default Skin";
196 Skin.InvType=18; 197 Skin.InvType = 18;
197 Skin.Type=libsecondlife.AssetSystem.Asset.ASSET_TYPE_WEARABLE_BODY; 198 Skin.Type = libsecondlife.AssetSystem.Asset.ASSET_TYPE_WEARABLE_BODY;
198 199
199 Array.Copy(Agentid,0,Skin.data,238,Agentid.Length); 200 Array.Copy(Agentid,0,Skin.data,238,Agentid.Length);
200 this.Assets.Add(Skin.Full_ID, Skin); 201 this.Assets.Add(Skin.FullID, Skin);
201 202
202 Avata.Wearables[1].ItemID=InventoryManager.AddToInventory(UserInfo, BaseFolder, Skin); 203 Avata.Wearables[1].ItemID = _inventoryManager.AddToInventory(UserInfo, BaseFolder, Skin);
203 Avata.Wearables[1].AssetID=Skin.Full_ID; 204 Avata.Wearables[1].AssetID = Skin.FullID;
204 205
205 //give a copy of test texture 206 //give a copy of test texture
206 TextureImage Texture=this.CloneImage(UserInfo.AgentID,Textures[new LLUUID("00000000-0000-0000-5005-000000000005")]); 207 TextureImage Texture = this.CloneImage(UserInfo.AgentID, Textures[new LLUUID("00000000-0000-0000-5005-000000000005")]);
207 this.Textures.Add(Texture.Full_ID, Texture); 208 this.Textures.Add(Texture.FullID, Texture);
208 InventoryManager.AddToInventory(UserInfo, BaseFolder, Texture); 209 _inventoryManager.AddToInventory(UserInfo, BaseFolder, Texture);
209 210
210 } 211 }
211 212
@@ -217,116 +218,116 @@ namespace OpenSim
217 string folder; 218 string folder;
218 if(Image) 219 if(Image)
219 { 220 {
220 folder=@"\textures\"; 221 folder = @"\textures\";
221 } 222 }
222 else 223 else
223 { 224 {
224 folder=@"\assets\"; 225 folder = @"\assets\";
225 } 226 }
226 string data_path = System.AppDomain.CurrentDomain.BaseDirectory + folder; 227 string data_path = System.AppDomain.CurrentDomain.BaseDirectory + folder;
227 string filename=data_path+@info.filename; 228 string filename = data_path+@info.filename;
228 FileInfo fInfo = new FileInfo(filename); 229 FileInfo fInfo = new FileInfo(filename);
229 230
230 long numBytes = fInfo.Length; 231 long numBytes = fInfo.Length;
231 232
232 FileStream fStream = new FileStream(filename, FileMode.Open, FileAccess.Read); 233 FileStream fStream = new FileStream(filename, FileMode.Open, FileAccess.Read);
233 byte[] idata=new byte[numBytes]; 234 byte[] idata = new byte[numBytes];
234 BinaryReader br = new BinaryReader(fStream); 235 BinaryReader br = new BinaryReader(fStream);
235 idata= br.ReadBytes((int)numBytes); 236 idata= br.ReadBytes((int)numBytes);
236 br.Close(); 237 br.Close();
237 fStream.Close(); 238 fStream.Close();
238 info.data=idata; 239 info.data = idata;
239 //info.loaded=true; 240 //info.loaded=true;
240 } 241 }
241 242
242 public AssetInfo CloneAsset(LLUUID NewOwner, AssetInfo SourceAsset) 243 public AssetInfo CloneAsset(LLUUID NewOwner, AssetInfo SourceAsset)
243 { 244 {
244 AssetInfo NewAsset=new AssetInfo(); 245 AssetInfo NewAsset = new AssetInfo();
245 NewAsset.data=new byte[SourceAsset.data.Length]; 246 NewAsset.data = new byte[SourceAsset.data.Length];
246 Array.Copy(SourceAsset.data,NewAsset.data,SourceAsset.data.Length); 247 Array.Copy(SourceAsset.data, NewAsset.data, SourceAsset.data.Length);
247 NewAsset.Full_ID=LLUUID.Random(); 248 NewAsset.FullID = LLUUID.Random();
248 NewAsset.Type=SourceAsset.Type; 249 NewAsset.Type = SourceAsset.Type;
249 NewAsset.InvType=SourceAsset.InvType; 250 NewAsset.InvType = SourceAsset.InvType;
250 return(NewAsset); 251 return(NewAsset);
251 } 252 }
252 #endregion 253 #endregion
253 254
254 #region TextureRegion 255 #region TextureRegion
255 public void AddTextureRequest(User_Agent_info user, LLUUID image_id) 256 public void AddTextureRequest(UserAgentInfo userInfo, LLUUID imageID)
256 { 257 {
257 258
258 if(!this.Textures.ContainsKey(image_id)) 259 if(!this.Textures.ContainsKey(imageID))
259 { 260 {
260 //not found image so send back image not in data base message 261 //not found image so send back image not in data base message
261 ImageNotInDatabasePacket im_not=new ImageNotInDatabasePacket(); 262 ImageNotInDatabasePacket im_not = new ImageNotInDatabasePacket();
262 im_not.ImageID.ID=image_id; 263 im_not.ImageID.ID=imageID;
263 server.SendPacket(im_not, true, user); 264 _server.SendPacket(im_not, true, userInfo);
264 return; 265 return;
265 } 266 }
266 TextureImage imag=this.Textures[image_id]; 267 TextureImage imag = this.Textures[imageID];
267 TextureRequest req=new TextureRequest(); 268 TextureRequest req = new TextureRequest();
268 req.RequestUser=user; 269 req.RequestUser = userInfo;
269 req.RequestImage=image_id; 270 req.RequestImage = imageID;
270 req.image_info=imag; 271 req.image_info = imag;
271 272
272 if(imag.data.LongLength>1000) //should be bigger or smaller? 273 if(imag.data.LongLength>1000) //should be bigger or smaller?
273 { 274 {
274 //over 1000 bytes so split up file 275 //over 1000 bytes so split up file
275 req.num_packets=(int)imag.data.LongLength/1000; 276 req.num_packets = (int)imag.data.LongLength/1000;
276 req.num_packets++; 277 req.num_packets++;
277 } 278 }
278 else 279 else
279 { 280 {
280 req.num_packets=1; 281 req.num_packets = 1;
281 } 282 }
282 283
283 this.TextureRequests.Add(req); 284 this.TextureRequests.Add(req);
284 285
285 } 286 }
286 287
287 public void AddTexture(LLUUID image_id, string name, byte[] data) 288 public void AddTexture(LLUUID imageID, string name, byte[] data)
288 { 289 {
289 290
290 } 291 }
291 public void DoWork(ulong time) 292 public void DoWork(ulong time)
292 { 293 {
293 if(this.TextureRequests.Count==0) 294 if(this.TextureRequests.Count == 0)
294 { 295 {
295 //no requests waiting 296 //no requests waiting
296 return; 297 return;
297 } 298 }
298 int num; 299 int num;
299 //should be running in its own thread but for now is called by timer 300 //should be running in its own thread but for now is called by timer
300 if(this.TextureRequests.Count<5) 301 if(this.TextureRequests.Count < 5)
301 { 302 {
302 //lower than 5 so do all of them 303 //lower than 5 so do all of them
303 num=this.TextureRequests.Count; 304 num = this.TextureRequests.Count;
304 } 305 }
305 else 306 else
306 { 307 {
307 num=5; 308 num=5;
308 } 309 }
309 TextureRequest req; 310 TextureRequest req;
310 for(int i=0; i<num; i++) 311 for(int i = 0; i < num; i++)
311 { 312 {
312 req=(TextureRequest)this.TextureRequests[i]; 313 req=(TextureRequest)this.TextureRequests[i];
313 314
314 if(req.packet_counter==0) 315 if(req.packet_counter == 0)
315 { 316 {
316 //first time for this request so send imagedata packet 317 //first time for this request so send imagedata packet
317 if(req.num_packets==1) 318 if(req.num_packets == 1)
318 { 319 {
319 //only one packet so send whole file 320 //only one packet so send whole file
320 ImageDataPacket im=new ImageDataPacket(); 321 ImageDataPacket im = new ImageDataPacket();
321 im.ImageID.Packets=1; 322 im.ImageID.Packets = 1;
322 im.ImageID.ID=req.image_info.Full_ID; 323 im.ImageID.ID = req.image_info.FullID;
323 im.ImageID.Size=(uint)req.image_info.data.Length; 324 im.ImageID.Size = (uint)req.image_info.data.Length;
324 im.ImageData.Data=req.image_info.data; 325 im.ImageData.Data = req.image_info.data;
325 im.ImageID.Codec=2; 326 im.ImageID.Codec = 2;
326 server.SendPacket(im,true,req.RequestUser); 327 _server.SendPacket(im, true, req.RequestUser);
327 req.packet_counter++; 328 req.packet_counter++;
328 req.image_info.last_used=time; 329 req.image_info.last_used = time;
329 System.Console.WriteLine("sent texture: "+req.image_info.Full_ID); 330 System.Console.WriteLine("sent texture: "+req.image_info.FullID);
330 } 331 }
331 else 332 else
332 { 333 {
@@ -341,10 +342,10 @@ namespace OpenSim
341 } 342 }
342 343
343 //remove requests that have been completed 344 //remove requests that have been completed
344 for(int i=0; i<num; i++) 345 for(int i = 0; i < num; i++)
345 { 346 {
346 req=(TextureRequest)this.TextureRequests[i]; 347 req=(TextureRequest)this.TextureRequests[i];
347 if(req.packet_counter==req.num_packets) 348 if(req.packet_counter == req.num_packets)
348 { 349 {
349 this.TextureRequests.Remove(req); 350 this.TextureRequests.Remove(req);
350 } 351 }
@@ -356,15 +357,15 @@ namespace OpenSim
356 357
357 } 358 }
358 359
359 public TextureImage CloneImage(LLUUID NewOwner,TextureImage Source) 360 public TextureImage CloneImage(LLUUID newOwner, TextureImage source)
360 { 361 {
361 TextureImage NewImage=new TextureImage(); 362 TextureImage newImage = new TextureImage();
362 NewImage.data=new byte[Source.data.Length]; 363 newImage.data = new byte[source.data.Length];
363 Array.Copy(Source.data,NewImage.data,Source.data.Length); 364 Array.Copy(source.data,newImage.data,source.data.Length);
364 NewImage.filename=Source.filename; 365 newImage.filename = source.filename;
365 NewImage.Full_ID=LLUUID.Random(); 366 newImage.FullID = LLUUID.Random();
366 NewImage.Name=Source.Name; 367 newImage.Name = source.Name;
367 return(NewImage); 368 return(newImage);
368 } 369 }
369 370
370 #endregion 371 #endregion
@@ -372,12 +373,12 @@ namespace OpenSim
372 373
373 public class AssetRequest 374 public class AssetRequest
374 { 375 {
375 public User_Agent_info RequestUser; 376 public UserAgentInfo RequestUser;
376 public LLUUID RequestImage; 377 public LLUUID RequestImage;
377 public AssetInfo asset_inf; 378 public AssetInfo asset_inf;
378 public long data_pointer=0; 379 public long data_pointer = 0;
379 public int num_packets=0; 380 public int num_packets = 0;
380 public int packet_counter=0; 381 public int packet_counter = 0;
381 382
382 public AssetRequest() 383 public AssetRequest()
383 { 384 {
@@ -401,7 +402,7 @@ namespace OpenSim
401 public class AssetBase 402 public class AssetBase
402 { 403 {
403 public byte[] data; 404 public byte[] data;
404 public LLUUID Full_ID; 405 public LLUUID FullID;
405 public sbyte Type; 406 public sbyte Type;
406 public sbyte InvType; 407 public sbyte InvType;
407 public string Name; 408 public string Name;
@@ -413,14 +414,14 @@ namespace OpenSim
413 414
414 } 415 }
415 } 416 }
416 public class TextureRequest 417 public class TextureRequest
417 { 418 {
418 public User_Agent_info RequestUser; 419 public UserAgentInfo RequestUser;
419 public LLUUID RequestImage; 420 public LLUUID RequestImage;
420 public TextureImage image_info; 421 public TextureImage image_info;
421 public long data_pointer=0; 422 public long data_pointer = 0;
422 public int num_packets=0; 423 public int num_packets = 0;
423 public int packet_counter=0; 424 public int packet_counter = 0;
424 425
425 public TextureRequest() 426 public TextureRequest()
426 { 427 {
@@ -435,7 +436,7 @@ namespace OpenSim
435 //public string name; 436 //public string name;
436 public bool loaded; 437 public bool loaded;
437 public ulong last_used; //need to add a tick/time counter and keep record 438 public ulong last_used; //need to add a tick/time counter and keep record
438 // of how often images are requested to unload unused ones. 439 // of how often images are requested to unload unused ones.
439 440
440 public TextureImage() 441 public TextureImage()
441 { 442 {
diff --git a/Controller.cs b/Controller.cs
index 3ace638..6282ce3 100644
--- a/Controller.cs
+++ b/Controller.cs
@@ -43,47 +43,46 @@ namespace OpenSim
43 /// <summary> 43 /// <summary>
44 /// Description of MainForm. 44 /// Description of MainForm.
45 /// </summary> 45 /// </summary>
46 public partial class Controller : ServerCallback { 46 public partial class Controller : ServerCallback
47 47 {
48
49 48
50 [STAThread] 49 [STAThread]
51 public static void Main( string[] args ) { 50 public static void Main( string[] args )
51 {
52 Controller c = new Controller(); 52 Controller c = new Controller();
53 while( true ) // fuckin' a 53 while( true ) // fuckin' a
54 System.Threading.Thread.Sleep( 1000 ); 54 System.Threading.Thread.Sleep( 1000 );
55
56 } 55 }
57 public Server server; 56
58 public Logon _login; 57 private Server _server;
59 private AgentManager Agent_Manager; 58 private Logon _login;
60 private PrimManager Prim_Manager; 59 private AgentManager _agentManager;
61 private AssetManagement Asset_Manager; 60 private PrimManager _primManager;
62 private GridManager Grid_Manager; 61 private AssetManagement _assetManager;
63 private InventoryManager Inventory_Manager; 62 private GridManager _gridManager;
64 private LoginManager Login_Manager; //built in login server 63 private InventoryManager _inventoryManager;
64 private LoginManager _loginManager; //built in login server
65 private ulong time; //ticks 65 private ulong time; //ticks
66 private Timer timer1 = new Timer(); 66 private Timer timer1 = new Timer();
67 67
68 68
69 public Controller() { 69 public Controller() {
70 _login=new Logon(); // should create a list for these. 70 _login = new Logon(); // should create a list for these.
71 server = new Server( this ); 71 _server = new Server( this );
72 Agent_Manager = new AgentManager( this.server ); 72 _agentManager = new AgentManager( this._server );
73 Prim_Manager = new PrimManager( this.server ); 73 _primManager = new PrimManager( this._server );
74 Asset_Manager = new AssetManagement( this.server ); 74 _inventoryManager = new InventoryManager(this._server);
75 Prim_Manager.Agent_Manager = Agent_Manager; 75 _assetManager = new AssetManagement(this._server, _inventoryManager );
76 Agent_Manager.Prim_Manager = Prim_Manager; 76 _primManager.AgentManagement = _agentManager;
77 Agent_Manager.Asset_Manager=Asset_Manager; 77 _agentManager.Prim_Manager = _primManager;
78 Inventory_Manager=new InventoryManager(this.server); 78 _agentManager.assetManager = _assetManager;
79 Asset_Manager.InventoryManager=Inventory_Manager; 79 _gridManager = new GridManager(this._server, _agentManager);
80 Grid_Manager=new GridManager(this.server,Agent_Manager);
81 80
82 if(Globals.Instance.LoginSever) 81 if(Globals.Instance.LoginSever)
83 { 82 {
84 Console.WriteLine("Starting login Server"); 83 Console.WriteLine("Starting login Server");
85 Login_Manager = new LoginManager(_login); // startup 84 _loginManager = new LoginManager(_login); // startup
86 Login_Manager.Startup(); // login server 85 _loginManager.Startup(); // login server
87 } 86 }
88 87
89 timer1.Enabled = true; 88 timer1.Enabled = true;
@@ -92,169 +91,162 @@ namespace OpenSim
92 91
93 92
94 } 93 }
95 public void MainCallback( Packet pack, User_Agent_info User_info ) { 94 public void MainCallback( Packet pack, UserAgentInfo userInfo )
95 {
96 96
97 /*if( ( pack.Type != PacketType.StartPingCheck ) && ( pack.Type != PacketType.AgentUpdate ) ) { 97 /*if( ( pack.Type != PacketType.StartPingCheck ) && ( pack.Type != PacketType.AgentUpdate ) ) {
98 //Log packet? 98 //Log packet?
99 // System.Console.WriteLine(pack.Type); 99 //System.Console.WriteLine(pack.Type);
100 //this.richTextBox1.Text=this.richTextBox1.Text+"\n "+pack.Type; 100 //this.richTextBox1.Text = this.richTextBox1.Text + "\n " + pack.Type;
101 }*/ 101 }*/
102 102
103 //should replace with a switch 103 //should replace with a switch
104 if( pack.Type == PacketType.AgentSetAppearance ) { 104 if( pack.Type == PacketType.AgentSetAppearance ) {
105 //System.Console.WriteLine(pack); 105
106 //this.richTextBox1.Text=this.richTextBox1.Text+"\n "+pack.Type;
107
108 } 106 }
109 else if( pack.Type == PacketType.FetchInventory) 107 else if( pack.Type == PacketType.FetchInventory)
110 { 108 {
111 FetchInventoryPacket FetchInventory=(FetchInventoryPacket)pack; 109 FetchInventoryPacket FetchInventory = (FetchInventoryPacket)pack;
112 Inventory_Manager.FetchInventory(User_info,FetchInventory); 110 _inventoryManager.FetchInventory(userInfo, FetchInventory);
113 } 111 }
114 else if( pack.Type == PacketType.FetchInventoryDescendents) 112 else if( pack.Type == PacketType.FetchInventoryDescendents)
115 { 113 {
116 FetchInventoryDescendentsPacket Fetch=(FetchInventoryDescendentsPacket)pack; 114 FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)pack;
117 Inventory_Manager.FetchInventoryDescendents(User_info,Fetch); 115 _inventoryManager.FetchInventoryDescendents(userInfo, Fetch);
118 } 116 }
119 else if(pack.Type== PacketType.MapBlockRequest) 117 else if(pack.Type == PacketType.MapBlockRequest)
120 { 118 {
121 //int MinX, MinY, MaxX, MaxY;
122 MapBlockRequestPacket MapRequest=(MapBlockRequestPacket)pack; 119 MapBlockRequestPacket MapRequest=(MapBlockRequestPacket)pack;
123 this.Grid_Manager.RequestMapBlock(User_info,MapRequest.PositionData.MinX,MapRequest.PositionData.MinY,MapRequest.PositionData.MaxX,MapRequest.PositionData.MaxY); 120 this._gridManager.RequestMapBlock(userInfo, MapRequest.PositionData.MinX, MapRequest.PositionData.MinY, MapRequest.PositionData.MaxX, MapRequest.PositionData.MaxY);
124 121
125 } 122 }
126 else if(pack.Type== PacketType.CloseCircuit) 123 else if(pack.Type == PacketType.CloseCircuit)
127 { 124 {
128 this.Agent_Manager.RemoveAgent(User_info); 125 this._agentManager.RemoveAgent(userInfo);
129 } 126 }
130 else if(pack.Type== PacketType.MapLayerRequest) 127 else if(pack.Type == PacketType.MapLayerRequest)
131 { 128 {
132 this.Grid_Manager.RequestMapLayer(User_info); 129 this._gridManager.RequestMapLayer(userInfo);
133
134 } 130 }
135 else if((pack.Type== PacketType.TeleportRequest ) ||(pack.Type== PacketType.TeleportLocationRequest)) 131 else if((pack.Type == PacketType.TeleportRequest ) || (pack.Type == PacketType.TeleportLocationRequest))
136 { 132 {
137 TeleportLocationRequestPacket Request=(TeleportLocationRequestPacket)pack; 133 TeleportLocationRequestPacket Request = (TeleportLocationRequestPacket)pack;
138 134 this._gridManager.RequestTeleport(userInfo,Request);
139 this.Grid_Manager.RequestTeleport(User_info,Request);
140 135
141 } 136 }
142 else if( pack.Type == PacketType.TransferRequest ) { 137 else if( pack.Type == PacketType.TransferRequest ) {
143 TransferRequestPacket tran = (TransferRequestPacket)pack; 138 TransferRequestPacket transfer = (TransferRequestPacket)pack;
144 LLUUID id = new LLUUID( tran.TransferInfo.Params, 0 ); 139 LLUUID id = new LLUUID( transfer.TransferInfo.Params, 0 );
145 Asset_Manager.AddAssetRequest( User_info, id, tran ); 140 _assetManager.AddAssetRequest( userInfo, id, transfer );
146
147 } 141 }
148 else if( ( pack.Type == PacketType.StartPingCheck ) ) { 142 else if( ( pack.Type == PacketType.StartPingCheck ) ) {
149 //reply to pingcheck 143 //reply to pingcheck
150 libsecondlife.Packets.StartPingCheckPacket startp = (libsecondlife.Packets.StartPingCheckPacket)pack; 144 libsecondlife.Packets.StartPingCheckPacket startping = (libsecondlife.Packets.StartPingCheckPacket)pack;
151 libsecondlife.Packets.CompletePingCheckPacket endping = new CompletePingCheckPacket(); 145 libsecondlife.Packets.CompletePingCheckPacket endping = new CompletePingCheckPacket();
152 endping.PingID.PingID = startp.PingID.PingID; 146 endping.PingID.PingID = startping.PingID.PingID;
153 server.SendPacket( endping, true, User_info ); 147 _server.SendPacket(endping, true, userInfo );
154 } 148 }
155 else if( pack.Type == PacketType.CompleteAgentMovement ) 149 else if( pack.Type == PacketType.CompleteAgentMovement )
156 { 150 {
157 // new client 151 _agentManager.AgentJoin(userInfo );
158 Agent_Manager.AgentJoin( User_info );
159 } 152 }
160 else if( pack.Type == PacketType.RequestImage ) 153 else if( pack.Type == PacketType.RequestImage )
161 { 154 {
162 RequestImagePacket image_req = (RequestImagePacket)pack; 155 RequestImagePacket imageRequest = (RequestImagePacket)pack;
163 for( int i = 0; i < image_req.RequestImage.Length; i++ ) 156 for( int i = 0; i < imageRequest.RequestImage.Length; i++ )
164 { 157 {
165 this.Asset_Manager.AddTextureRequest( User_info, image_req.RequestImage[ i ].Image ); 158 this._assetManager.AddTextureRequest(userInfo, imageRequest.RequestImage[i].Image);
166 } 159 }
167 } 160 }
168 else if( pack.Type == PacketType.RegionHandshakeReply ) { 161 else if( pack.Type == PacketType.RegionHandshakeReply ) {
169 //recieved regionhandshake so can now start sending info 162 //recieved regionhandshake so can now start sending info
170 Agent_Manager.SendInitialData( User_info ); 163 _agentManager.SendInitialData(userInfo );
171 //this.setuptemplates("objectupate164.dat",User_info,false); 164 }
172 }
173 else if( pack.Type == PacketType.ObjectAdd ) 165 else if( pack.Type == PacketType.ObjectAdd )
174 { 166 {
175 ObjectAddPacket ad = (ObjectAddPacket)pack; 167 ObjectAddPacket ad = (ObjectAddPacket)pack;
176 Prim_Manager.CreatePrim( User_info, ad.ObjectData.RayEnd, ad ); 168 _primManager.CreatePrim(userInfo, ad.ObjectData.RayEnd, ad );
177 //this.send_prim(User_info,ad.ObjectData.RayEnd, ad);
178 } 169 }
179 else if( pack.Type == PacketType.ObjectPosition ) { 170 else if( pack.Type == PacketType.ObjectPosition ) {
180 //System.Console.WriteLine(pack.ToString()); 171 //System.Console.WriteLine(pack.ToString());
181 } 172 }
182 else if( pack.Type == PacketType.MultipleObjectUpdate ) { 173 else if( pack.Type == PacketType.MultipleObjectUpdate )
183 //System.Console.WriteLine(pack.ToString()); 174 {
184 MultipleObjectUpdatePacket mupd = (MultipleObjectUpdatePacket)pack; 175 MultipleObjectUpdatePacket multipleupdate = (MultipleObjectUpdatePacket)pack;
185 176
186 for( int i = 0; i < mupd.ObjectData.Length; i++ ) 177 for( int i = 0; i < multipleupdate.ObjectData.Length; i++ )
187 { 178 {
188 if( mupd.ObjectData[ i ].Type == 9 ) //change position 179 if( multipleupdate.ObjectData[ i ].Type == 9 ) //change position
189 { 180 {
190 libsecondlife.LLVector3 pos = new LLVector3( mupd.ObjectData[ i ].Data, 0 ); 181 libsecondlife.LLVector3 pos = new LLVector3(multipleupdate.ObjectData[ i ].Data, 0 );
191 // libsecondlife.LLQuaternion rot=new LLQuaternion(mupd.ObjectData[i].Data,12,true); 182 _primManager.UpdatePrimPosition(userInfo, pos, multipleupdate.ObjectData[ i ].ObjectLocalID ,false ,libsecondlife.LLQuaternion.Identity);
192 Prim_Manager.UpdatePrimPosition( User_info, pos, mupd.ObjectData[ i ].ObjectLocalID ,false ,libsecondlife.LLQuaternion.Identity);
193 //should update stored position of the prim 183 //should update stored position of the prim
194 } 184 }
195 else if( mupd.ObjectData[ i ].Type == 10 ) 185 else if(multipleupdate.ObjectData[i].Type == 10 )//rotation
196 { 186 {
197 //System.Console.WriteLine(mupd.ObjectData[ i ].Type);
198 //System.Console.WriteLine(mupd);
199 libsecondlife.LLVector3 pos = new LLVector3(100,100,22); 187 libsecondlife.LLVector3 pos = new LLVector3(100,100,22);
200 libsecondlife.LLQuaternion rot=new LLQuaternion(mupd.ObjectData[i].Data,0,true); 188 libsecondlife.LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 0, true);
201 Prim_Manager.UpdatePrimPosition( User_info, pos, mupd.ObjectData[ i ].ObjectLocalID ,true ,rot); 189 _primManager.UpdatePrimPosition(userInfo, pos, multipleupdate.ObjectData[ i ].ObjectLocalID, true ,rot);
202
203 } 190 }
204 } 191 }
205 } 192 }
206 else if( pack.Type == PacketType.AgentWearablesRequest ) 193 else if( pack.Type == PacketType.AgentWearablesRequest )
207 { 194 {
208 Agent_Manager.SendIntialAvatarAppearance( User_info ); 195 _agentManager.SendIntialAvatarAppearance(userInfo );
209 } 196 }
210 else if( pack.Type == PacketType.AgentUpdate ) 197 else if(pack.Type == PacketType.AgentUpdate)
211 { 198 {
212 AgentUpdatePacket ag = (AgentUpdatePacket)pack; 199 // System.Console.WriteLine("agent update");
213 uint mask = ag.AgentData.ControlFlags & ( 1 ); 200 AgentUpdatePacket agent = (AgentUpdatePacket)pack;
214 AvatarData m_av = Agent_Manager.GetAgent( User_info.AgentID ); 201 uint mask = agent.AgentData.ControlFlags & ( 1 );
215 if( m_av != null ) 202 AvatarData avatar = _agentManager.GetAgent(userInfo.AgentID );
216 { 203 if(avatar != null )
217 if( m_av.Started ) 204 {
205 if(avatar.Started )
218 { 206 {
219 if( mask == ( 1 ) ) 207 if( mask == ( 1 ) )
220 { 208 {
221 if( !m_av.Walk ) 209 if(!avatar.Walk)
222 { 210 {
223 //start walking 211 //start walking
224 Agent_Manager.SendMoveCommand( User_info, false, m_av.Position.X, m_av.Position.Y, m_av.Position.Z, 0, ag.AgentData.BodyRotation ); 212 _agentManager.SendMoveCommand(userInfo, false, avatar.Position.X, avatar.Position.Y, avatar.Position.Z, 0, agent.AgentData.BodyRotation );
225 Axiom.MathLib.Vector3 v3 = new Axiom.MathLib.Vector3( 1, 0, 0 ); 213 Axiom.MathLib.Vector3 v3 = new Axiom.MathLib.Vector3( 1, 0, 0 );
226 Axiom.MathLib.Quaternion q = new Axiom.MathLib.Quaternion( ag.AgentData.BodyRotation.W, ag.AgentData.BodyRotation.X, ag.AgentData.BodyRotation.Y, ag.AgentData.BodyRotation.Z ); 214 Axiom.MathLib.Quaternion q = new Axiom.MathLib.Quaternion( agent.AgentData.BodyRotation.W, agent.AgentData.BodyRotation.X, agent.AgentData.BodyRotation.Y, agent.AgentData.BodyRotation.Z );
227 Axiom.MathLib.Vector3 direc = q * v3; 215 Axiom.MathLib.Vector3 direc = q * v3;
228 direc.Normalize(); 216 direc.Normalize();
229 direc = direc * ( ( 0.03f ) * 128f ); 217 direc = direc * ( ( 0.03f ) * 128f );
230 218
231 m_av.Velocity.X = direc.x; 219 avatar.Velocity.X = direc.x;
232 m_av.Velocity.Y = direc.y; 220 avatar.Velocity.Y = direc.y;
233 m_av.Velocity.Z = direc.z; 221 avatar.Velocity.Z = direc.z;
234 m_av.Walk = true; 222 avatar.Walk = true;
235 } 223 }
236 } 224 }
237 else 225 else
238 { 226 {
239 if( m_av.Walk ) 227 if(avatar.Walk)
240 { 228 {
241 //walking but key not pressed so need to stop 229 //walking but key not pressed so need to stop
242 Agent_Manager.SendMoveCommand( User_info, true, m_av.Position.X, m_av.Position.Y, m_av.Position.Z, 0, ag.AgentData.BodyRotation ); 230 _agentManager.SendMoveCommand(userInfo, true, avatar.Position.X, avatar.Position.Y, avatar.Position.Z, 0, agent.AgentData.BodyRotation );
243 m_av.Walk = false; 231 avatar.Walk = false;
244 m_av.Velocity.X = 0; 232 avatar.Velocity.X = 0;
245 m_av.Velocity.Y = 0; 233 avatar.Velocity.Y = 0;
246 m_av.Velocity.Z = 0; 234 avatar.Velocity.Z = 0;
247 } 235 }
248 } 236 }
249 } 237 }
250 } 238 }
239 else
240 {
241
242 }
251 } 243 }
252 else if( pack.Type == PacketType.ChatFromViewer ) 244 else if( pack.Type == PacketType.ChatFromViewer )
253 { 245 {
254 ChatFromViewerPacket chat = (ChatFromViewerPacket)pack; 246 ChatFromViewerPacket chat = (ChatFromViewerPacket)pack;
255 System.Text.Encoding enc = System.Text.Encoding.ASCII; 247 System.Text.Encoding enc = System.Text.Encoding.ASCII;
256 248
257 string myString = enc.GetString( chat.ChatData.Message ); 249 string myString = enc.GetString(chat.ChatData.Message );
258 if( myString != "" ) { 250 if( myString != "" ) {
259 string[] comp = new string[ 10 ]; 251 string[] comp = new string[ 10 ];
260 string delimStr = " , "; 252 string delimStr = " , ";
@@ -271,34 +263,32 @@ namespace OpenSim
271 } 263 }
272 else 264 else
273 { 265 {
274 Agent_Manager.SendChatMessage( User_info, line ); 266 _agentManager.SendChatMessage(userInfo, line );
275
276 } 267 }
277 } 268 }
278 } 269 }
279 } 270 }
280 public void NewUserCallback( User_Agent_info UserInfo ) 271 public void NewUserCallback(UserAgentInfo userInfo )
281 { 272 {
282 Console.WriteLine( "new user - {0} - has joined [session {1}]", UserInfo.AgentID.ToString(), UserInfo.SessionID.ToString() +"curcuit used"+UserInfo.circuitCode); 273 Console.WriteLine( "new user - {0} - has joined [session {1}]", userInfo.AgentID.ToString(), userInfo.SessionID.ToString() +"curcuit used"+userInfo.circuitCode);
283 string first,last; 274 string first,last;
284 LLUUID Base,Inventory; 275 LLUUID Base,Inventory;
285 lock(_login) 276 lock(_login)
286 { 277 {
287 first=_login.first; 278 first=_login.First;
288 last=_login.last; 279 last=_login.Last;
289 Base=_login.BaseFolder; 280 Base=_login.BaseFolder;
290 Inventory=_login.InventoryFolder; 281 Inventory=_login.InventoryFolder;
291
292 //should get agentid and sessionid so they can be checked. 282 //should get agentid and sessionid so they can be checked.
293 } 283 }
294 Agent_Manager.NewAgent( UserInfo ,first,last,Base,Inventory); 284 _agentManager.NewAgent(userInfo, first, last, Base, Inventory);
295 //now because of the lack of Global account management (User server etc) 285 //now because of the lack of Global account management (User server etc)
296 //we need to reset the names back to default incase a teleport happens 286 //we need to reset the names back to default incase a teleport happens
297 //which will not have a Login name set, so they will use default names 287 //which will not have a Login name set, so they will use default names
298 lock(_login) 288 lock(_login)
299 { 289 {
300 _login.first="Test"; 290 _login.First="Test";
301 _login.last="User"; 291 _login.Last="User";
302 } 292 }
303 } 293 }
304 294
@@ -308,14 +298,14 @@ namespace OpenSim
308 298
309 void Timer1Tick( object sender, System.EventArgs e ) { 299 void Timer1Tick( object sender, System.EventArgs e ) {
310 this.time++; 300 this.time++;
311 Agent_Manager.UpdatePositions(); 301 _agentManager.UpdatePositions();
312 this.Asset_Manager.DoWork( time ); 302 this._assetManager.DoWork( time );
313 } 303 }
314 } 304 }
315 public class Logon 305 public class Logon
316 { 306 {
317 public string first="Test"; 307 public string First = "Test";
318 public string last="User"; 308 public string Last = "User";
319 public LLUUID Agent; 309 public LLUUID Agent;
320 public LLUUID Session; 310 public LLUUID Session;
321 public LLUUID InventoryFolder; 311 public LLUUID InventoryFolder;
diff --git a/Globals.cs b/Globals.cs
index 44dae82..066a76d 100644
--- a/Globals.cs
+++ b/Globals.cs
@@ -38,8 +38,10 @@ namespace OpenSim
38 { 38 {
39 private static Globals instance = new Globals(); 39 private static Globals instance = new Globals();
40 40
41 public static Globals Instance { 41 public static Globals Instance
42 get { 42 {
43 get
44 {
43 return instance; 45 return instance;
44 } 46 }
45 } 47 }
@@ -48,17 +50,13 @@ namespace OpenSim
48 { 50 {
49 } 51 }
50 52
51 public string RegionName="Test Sandbox\0"; 53 public string RegionName = "Test Sandbox\0";
52 public ulong RegionHandle= 1096213093147648; 54 public ulong RegionHandle = 1096213093147648;
53 public int IpPort=1000; 55 public int IpPort = 1000;
54 56
55 public bool LoginSever=true; 57 public bool LoginSever = true;
56 public ushort LoginServerPort=8080; 58 public ushort LoginServerPort = 8080;
57 59
58 //public string RegionName= "The Other\0";
59 //public ulong RegionHandle= 1095113581519872;
60 //public int IpPort=1020;
61 //public bool LoginSever=false;
62 60
63 } 61 }
64} 62}
diff --git a/GridManager.cs b/GridManager.cs
index c6b7c49..c52bd51 100644
--- a/GridManager.cs
+++ b/GridManager.cs
@@ -44,21 +44,21 @@ namespace OpenSim
44 /// </summary> 44 /// </summary>
45 public class GridManager 45 public class GridManager
46 { 46 {
47 private Server server; 47 private Server _server;
48 private System.Text.Encoding enc = System.Text.Encoding.ASCII; 48 private System.Text.Encoding _enc = System.Text.Encoding.ASCII;
49 private AgentManager AgentManager; 49 private AgentManager _agentManager;
50 private Dictionary<ulong,RegionInfo> Grid; 50 public Dictionary<ulong,RegionInfo> Grid;
51 51
52 /// <summary> 52 /// <summary>
53 /// 53 ///
54 /// </summary> 54 /// </summary>
55 /// <param name="serve"></param> 55 /// <param name="serve"></param>
56 /// <param name="agentManager"></param> 56 /// <param name="agentManager"></param>
57 public GridManager(Server serve, AgentManager agentManager) 57 public GridManager(Server server, AgentManager agentManager)
58 { 58 {
59 Grid=new Dictionary<ulong, RegionInfo>(); 59 Grid = new Dictionary<ulong, RegionInfo>();
60 server=serve; 60 _server = server;
61 AgentManager=agentManager; 61 _agentManager = agentManager;
62 LoadGrid(); 62 LoadGrid();
63 } 63 }
64 64
@@ -66,20 +66,20 @@ namespace OpenSim
66 /// 66 ///
67 /// </summary> 67 /// </summary>
68 /// <param name="UserInfo"></param> 68 /// <param name="UserInfo"></param>
69 public void RequestMapLayer(User_Agent_info UserInfo) 69 public void RequestMapLayer(UserAgentInfo userInfo)
70 { 70 {
71 //send a layer covering the 800,800 - 1200,1200 area 71 //send a layer covering the 800,800 - 1200,1200 area
72 MapLayerReplyPacket MapReply=new MapLayerReplyPacket(); 72 MapLayerReplyPacket MapReply = new MapLayerReplyPacket();
73 MapReply.AgentData.AgentID=UserInfo.AgentID; 73 MapReply.AgentData.AgentID = userInfo.AgentID;
74 MapReply.AgentData.Flags=0; 74 MapReply.AgentData.Flags = 0;
75 MapReply.LayerData=new MapLayerReplyPacket.LayerDataBlock[1]; 75 MapReply.LayerData = new MapLayerReplyPacket.LayerDataBlock[1];
76 MapReply.LayerData[0]=new MapLayerReplyPacket.LayerDataBlock(); 76 MapReply.LayerData[0] = new MapLayerReplyPacket.LayerDataBlock();
77 MapReply.LayerData[0].Bottom=800; 77 MapReply.LayerData[0].Bottom = 800;
78 MapReply.LayerData[0].Left=800; 78 MapReply.LayerData[0].Left = 800;
79 MapReply.LayerData[0].Top=1200; 79 MapReply.LayerData[0].Top = 1200;
80 MapReply.LayerData[0].Right=1200; 80 MapReply.LayerData[0].Right = 1200;
81 MapReply.LayerData[0].ImageID=new LLUUID("00000000-0000-0000-7007-000000000006"); 81 MapReply.LayerData[0].ImageID = new LLUUID("00000000-0000-0000-7007-000000000006");
82 server.SendPacket(MapReply,true,UserInfo); 82 _server.SendPacket(MapReply, true, userInfo);
83 } 83 }
84 84
85 /// <summary> 85 /// <summary>
@@ -90,28 +90,28 @@ namespace OpenSim
90 /// <param name="MinY"></param> 90 /// <param name="MinY"></param>
91 /// <param name="MaxX"></param> 91 /// <param name="MaxX"></param>
92 /// <param name="MaxY"></param> 92 /// <param name="MaxY"></param>
93 public void RequestMapBlock(User_Agent_info UserInfo, int MinX, int MinY,int MaxX,int MaxY) 93 public void RequestMapBlock(UserAgentInfo userInfo, int minX, int minY,int maxX,int maxY)
94 { 94 {
95 foreach (KeyValuePair<ulong,RegionInfo> RegionPair in this.Grid) 95 foreach (KeyValuePair<ulong, RegionInfo> RegionPair in this.Grid)
96 { 96 {
97 //check Region is inside the requested area 97 //check Region is inside the requested area
98 RegionInfo Region=RegionPair.Value; 98 RegionInfo Region = RegionPair.Value;
99 if(((Region.X>MinX) && (Region.X<MaxX)) && ((Region.Y>MinY) && (Region.Y<MaxY))) 99 if(((Region.X > minX) && (Region.X < maxX)) && ((Region.Y > minY) && (Region.Y < maxY)))
100 { 100 {
101 MapBlockReplyPacket MapReply=new MapBlockReplyPacket(); 101 MapBlockReplyPacket MapReply = new MapBlockReplyPacket();
102 MapReply.AgentData.AgentID=UserInfo.AgentID; 102 MapReply.AgentData.AgentID = userInfo.AgentID;
103 MapReply.AgentData.Flags=0; 103 MapReply.AgentData.Flags = 0;
104 MapReply.Data=new MapBlockReplyPacket.DataBlock[1]; 104 MapReply.Data = new MapBlockReplyPacket.DataBlock[1];
105 MapReply.Data[0]=new MapBlockReplyPacket.DataBlock(); 105 MapReply.Data[0] = new MapBlockReplyPacket.DataBlock();
106 MapReply.Data[0].MapImageID=Region.ImageID; 106 MapReply.Data[0].MapImageID = Region.ImageID;
107 MapReply.Data[0].X=Region.X; 107 MapReply.Data[0].X = Region.X;
108 MapReply.Data[0].Y=Region.Y; 108 MapReply.Data[0].Y = Region.Y;
109 MapReply.Data[0].WaterHeight=Region.WaterHeight; 109 MapReply.Data[0].WaterHeight = Region.WaterHeight;
110 MapReply.Data[0].Name=enc.GetBytes( Region.Name); 110 MapReply.Data[0].Name = _enc.GetBytes( Region.Name);
111 MapReply.Data[0].RegionFlags=72458694; 111 MapReply.Data[0].RegionFlags = 72458694;
112 MapReply.Data[0].Access=13; 112 MapReply.Data[0].Access = 13;
113 MapReply.Data[0].Agents=1; 113 MapReply.Data[0].Agents = 1;
114 server.SendPacket(MapReply,true,UserInfo); 114 _server.SendPacket(MapReply, true, userInfo);
115 } 115 }
116 } 116 }
117 117
@@ -122,35 +122,35 @@ namespace OpenSim
122 /// </summary> 122 /// </summary>
123 /// <param name="UserInfo"></param> 123 /// <param name="UserInfo"></param>
124 /// <param name="Request"></param> 124 /// <param name="Request"></param>
125 public void RequestTeleport(User_Agent_info UserInfo, TeleportLocationRequestPacket Request) 125 public void RequestTeleport(UserAgentInfo userInfo, TeleportLocationRequestPacket request)
126 { 126 {
127 if(Grid.ContainsKey(Request.Info.RegionHandle)) 127 if(Grid.ContainsKey(request.Info.RegionHandle))
128 { 128 {
129 RegionInfo Region=Grid[Request.Info.RegionHandle]; 129 RegionInfo Region = Grid[request.Info.RegionHandle];
130 libsecondlife.Packets.TeleportStartPacket TeleportStart=new TeleportStartPacket(); 130 libsecondlife.Packets.TeleportStartPacket TeleportStart = new TeleportStartPacket();
131 TeleportStart.Info.TeleportFlags=16; 131 TeleportStart.Info.TeleportFlags = 16;
132 server.SendPacket(TeleportStart,true,UserInfo); 132 _server.SendPacket(TeleportStart, true, userInfo);
133 133
134 libsecondlife.Packets.TeleportFinishPacket Teleport=new TeleportFinishPacket(); 134 libsecondlife.Packets.TeleportFinishPacket Teleport = new TeleportFinishPacket();
135 Teleport.Info.AgentID=UserInfo.AgentID; 135 Teleport.Info.AgentID = userInfo.AgentID;
136 Teleport.Info.RegionHandle=Request.Info.RegionHandle; 136 Teleport.Info.RegionHandle = request.Info.RegionHandle;
137 Teleport.Info.SimAccess=13; 137 Teleport.Info.SimAccess = 13;
138 Teleport.Info.SeedCapability=new byte[0]; 138 Teleport.Info.SeedCapability = new byte[0];
139 139
140 System.Net.IPAddress oIP=System.Net.IPAddress.Parse(Region.IPAddress.Address); 140 System.Net.IPAddress oIP = System.Net.IPAddress.Parse(Region.IPAddress.Address);
141 byte[] byteIP=oIP.GetAddressBytes(); 141 byte[] byteIP = oIP.GetAddressBytes();
142 uint ip=(uint)byteIP[3]<<24; 142 uint ip=(uint)byteIP[3]<<24;
143 ip+=(uint)byteIP[2]<<16; 143 ip+=(uint)byteIP[2]<<16;
144 ip+=(uint)byteIP[1]<<8; 144 ip+=(uint)byteIP[1]<<8;
145 ip+=(uint)byteIP[0]; 145 ip+=(uint)byteIP[0];
146 146
147 Teleport.Info.SimIP=ip; 147 Teleport.Info.SimIP = ip;
148 Teleport.Info.SimPort=Region.IPAddress.Port; 148 Teleport.Info.SimPort = Region.IPAddress.Port;
149 Teleport.Info.LocationID=4; 149 Teleport.Info.LocationID = 4;
150 Teleport.Info.TeleportFlags= 1 << 4;; 150 Teleport.Info.TeleportFlags = 1 << 4;;
151 server.SendPacket(Teleport,true,UserInfo); 151 _server.SendPacket(Teleport, true, userInfo);
152 152
153 this.AgentManager.RemoveAgent(UserInfo); 153 this._agentManager.RemoveAgent(userInfo);
154 } 154 }
155 155
156 } 156 }
@@ -162,13 +162,13 @@ namespace OpenSim
162 { 162 {
163 //should connect to a space server to see what grids there are 163 //should connect to a space server to see what grids there are
164 //but for now we read static xml files 164 //but for now we read static xml files
165 ulong CurrentHandle=0; 165 ulong CurrentHandle = 0;
166 bool Login=true; 166 bool Login = true;
167 167
168 XmlDocument doc = new XmlDocument(); 168 XmlDocument doc = new XmlDocument();
169 169
170 try { 170 try {
171 doc.Load(Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory,"Grid.ini" )); 171 doc.Load(Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Grid.ini" ));
172 } 172 }
173 catch ( Exception e) 173 catch ( Exception e)
174 { 174 {
@@ -189,102 +189,102 @@ namespace OpenSim
189 if (nodes.HasChildNodes) { 189 if (nodes.HasChildNodes) {
190 foreach( XmlNode xmlnc in nodes.ChildNodes) 190 foreach( XmlNode xmlnc in nodes.ChildNodes)
191 { 191 {
192 if(xmlnc.Name=="Region") 192 if(xmlnc.Name == "Region")
193 { 193 {
194 string xmlAttri; 194 string xmlAttri;
195 RegionInfo Region=new RegionInfo(); 195 RegionInfo Region = new RegionInfo();
196 if(xmlnc.Attributes["Name"]!=null) 196 if(xmlnc.Attributes["Name"] != null)
197 { 197 {
198 xmlAttri=((XmlAttribute)xmlnc.Attributes.GetNamedItem("Name")).Value; 198 xmlAttri = ((XmlAttribute)xmlnc.Attributes.GetNamedItem("Name")).Value;
199 Region.Name=xmlAttri+" \0"; 199 Region.Name = xmlAttri+" \0";
200 } 200 }
201 if(xmlnc.Attributes["ImageID"]!=null) 201 if(xmlnc.Attributes["ImageID"] != null)
202 { 202 {
203 xmlAttri=((XmlAttribute)xmlnc.Attributes.GetNamedItem("ImageID")).Value; 203 xmlAttri = ((XmlAttribute)xmlnc.Attributes.GetNamedItem("ImageID")).Value;
204 Region.ImageID=new LLUUID(xmlAttri); 204 Region.ImageID = new LLUUID(xmlAttri);
205 } 205 }
206 if(xmlnc.Attributes["IP_Address"]!=null) 206 if(xmlnc.Attributes["IP_Address"] != null)
207 { 207 {
208 xmlAttri=((XmlAttribute)xmlnc.Attributes.GetNamedItem("IP_Address")).Value; 208 xmlAttri = ((XmlAttribute)xmlnc.Attributes.GetNamedItem("IP_Address")).Value;
209 Region.IPAddress.Address=xmlAttri; 209 Region.IPAddress.Address = xmlAttri;
210 } 210 }
211 if(xmlnc.Attributes["IP_Port"]!=null) 211 if(xmlnc.Attributes["IP_Port"] != null)
212 { 212 {
213 xmlAttri=((XmlAttribute)xmlnc.Attributes.GetNamedItem("IP_Port")).Value; 213 xmlAttri = ((XmlAttribute)xmlnc.Attributes.GetNamedItem("IP_Port")).Value;
214 Region.IPAddress.Port=Convert.ToUInt16(xmlAttri); 214 Region.IPAddress.Port = Convert.ToUInt16(xmlAttri);
215 } 215 }
216 if(xmlnc.Attributes["Location_X"]!=null) 216 if(xmlnc.Attributes["Location_X"] != null)
217 { 217 {
218 xmlAttri=((XmlAttribute)xmlnc.Attributes.GetNamedItem("Location_X")).Value; 218 xmlAttri = ((XmlAttribute)xmlnc.Attributes.GetNamedItem("Location_X")).Value;
219 Region.X=Convert.ToUInt16(xmlAttri); 219 Region.X = Convert.ToUInt16(xmlAttri);
220 } 220 }
221 if(xmlnc.Attributes["Location_Y"]!=null) 221 if(xmlnc.Attributes["Location_Y"] != null)
222 { 222 {
223 xmlAttri=((XmlAttribute)xmlnc.Attributes.GetNamedItem("Location_Y")).Value; 223 xmlAttri = ((XmlAttribute)xmlnc.Attributes.GetNamedItem("Location_Y")).Value;
224 Region.Y=Convert.ToUInt16(xmlAttri); 224 Region.Y = Convert.ToUInt16(xmlAttri);
225 } 225 }
226 226
227 this.Grid.Add(Region.Handle,Region); 227 this.Grid.Add(Region.Handle, Region);
228 228
229 } 229 }
230 if(xmlnc.Name=="CurrentRegion") 230 if(xmlnc.Name == "CurrentRegion")
231 { 231 {
232 232
233 string xmlAttri; 233 string xmlAttri;
234 uint Rx=0,Ry=0; 234 uint Rx = 0, Ry = 0;
235 if(xmlnc.Attributes["RegionHandle"]!=null) 235 if(xmlnc.Attributes["RegionHandle"] != null)
236 { 236 {
237 xmlAttri=((XmlAttribute)xmlnc.Attributes.GetNamedItem("RegionHandle")).Value; 237 xmlAttri = ((XmlAttribute)xmlnc.Attributes.GetNamedItem("RegionHandle")).Value;
238 CurrentHandle=Convert.ToUInt64(xmlAttri); 238 CurrentHandle = Convert.ToUInt64(xmlAttri);
239 239
240 } 240 }
241 else 241 else
242 { 242 {
243 if(xmlnc.Attributes["Region_X"]!=null) 243 if(xmlnc.Attributes["Region_X"] != null)
244 { 244 {
245 xmlAttri=((XmlAttribute)xmlnc.Attributes.GetNamedItem("Region_X")).Value; 245 xmlAttri = ((XmlAttribute)xmlnc.Attributes.GetNamedItem("Region_X")).Value;
246 Rx=Convert.ToUInt32(xmlAttri); 246 Rx = Convert.ToUInt32(xmlAttri);
247 } 247 }
248 if(xmlnc.Attributes["Region_Y"]!=null) 248 if(xmlnc.Attributes["Region_Y"] != null)
249 { 249 {
250 xmlAttri=((XmlAttribute)xmlnc.Attributes.GetNamedItem("Region_Y")).Value; 250 xmlAttri = ((XmlAttribute)xmlnc.Attributes.GetNamedItem("Region_Y")).Value;
251 Ry=Convert.ToUInt32(xmlAttri); 251 Ry = Convert.ToUInt32(xmlAttri);
252 } 252 }
253 } 253 }
254 if(xmlnc.Attributes["LoginServer"]!=null) 254 if(xmlnc.Attributes["LoginServer"] != null)
255 { 255 {
256 xmlAttri=((XmlAttribute)xmlnc.Attributes.GetNamedItem("LoginServer")).Value; 256 xmlAttri = ((XmlAttribute)xmlnc.Attributes.GetNamedItem("LoginServer")).Value;
257 Login=Convert.ToBoolean(xmlAttri); 257 Login = Convert.ToBoolean(xmlAttri);
258 258
259 } 259 }
260 if(CurrentHandle==0) 260 if(CurrentHandle == 0)
261 { 261 {
262 //no RegionHandle set 262 //no RegionHandle set
263 //so check for Region X and Y 263 //so check for Region X and Y
264 if((Rx >0) && (Ry>0)) 264 if((Rx > 0) && (Ry > 0))
265 { 265 {
266 CurrentHandle=Helpers.UIntsToLong((Rx*256),(Ry*256)); 266 CurrentHandle = Helpers.UIntsToLong((Rx*256), (Ry*256));
267 } 267 }
268 else 268 else
269 { 269 {
270 //seems to be no Region location set 270 //seems to be no Region location set
271 // so set default 271 // so set default
272 CurrentHandle=1096213093147648; 272 CurrentHandle = 1096213093147648;
273 } 273 }
274 } 274 }
275 } 275 }
276 } 276 }
277 277
278 //finished loading grid, now set Globals to current region 278 //finished loading grid, now set Globals to current region
279 if(CurrentHandle!=0) 279 if(CurrentHandle != 0)
280 { 280 {
281 if(Grid.ContainsKey(CurrentHandle)) 281 if(Grid.ContainsKey(CurrentHandle))
282 { 282 {
283 RegionInfo Region=Grid[CurrentHandle]; 283 RegionInfo Region = Grid[CurrentHandle];
284 Globals.Instance.RegionHandle=Region.Handle; 284 Globals.Instance.RegionHandle = Region.Handle;
285 Globals.Instance.RegionName=Region.Name; 285 Globals.Instance.RegionName = Region.Name;
286 Globals.Instance.IpPort=Region.IPAddress.Port; 286 Globals.Instance.IpPort = Region.IPAddress.Port;
287 Globals.Instance.LoginSever=Login; 287 Globals.Instance.LoginSever = Login;
288 } 288 }
289 } 289 }
290 290
@@ -317,8 +317,8 @@ namespace OpenSim
317 } 317 }
318 set 318 set
319 { 319 {
320 x=value; 320 x = value;
321 Handle=Helpers.UIntsToLong((((uint)x)*256),(((uint)y)*256)); 321 Handle = Helpers.UIntsToLong((((uint)x)*256), (((uint)y)*256));
322 } 322 }
323 } 323 }
324 public ushort Y 324 public ushort Y
@@ -329,33 +329,33 @@ namespace OpenSim
329 } 329 }
330 set 330 set
331 { 331 {
332 y=value; 332 y = value;
333 Handle=Helpers.UIntsToLong((((uint)x)*256),(((uint)y)*256)); 333 Handle = Helpers.UIntsToLong((((uint)x)*256), (((uint)y)*256));
334 } 334 }
335 } 335 }
336 public ulong Handle 336 public ulong Handle
337 { 337 {
338 get 338 get
339 { 339 {
340 if(handle>0) 340 if(handle > 0)
341 { 341 {
342 return(handle); 342 return(handle);
343 } 343 }
344 else 344 else
345 { 345 {
346 return(Helpers.UIntsToLong((((uint)x)*256),(((uint)y)*256))); 346 return(Helpers.UIntsToLong((((uint)x)*256), (((uint)y)*256)));
347 } 347 }
348 } 348 }
349 set 349 set
350 { 350 {
351 handle=value; 351 handle = value;
352 } 352 }
353 353
354 } 354 }
355 355
356 public RegionInfo() 356 public RegionInfo()
357 { 357 {
358 this.IPAddress=new RegionIP(); 358 this.IPAddress = new RegionIP();
359 } 359 }
360 } 360 }
361 public class RegionIP 361 public class RegionIP
diff --git a/InventoryManager.cs b/InventoryManager.cs
index 72c9607..17f7f5c 100644
--- a/InventoryManager.cs
+++ b/InventoryManager.cs
@@ -38,20 +38,20 @@ namespace OpenSim
38 /// </summary> 38 /// </summary>
39 public class InventoryManager 39 public class InventoryManager
40 { 40 {
41 private System.Text.Encoding enc = System.Text.Encoding.ASCII; 41
42 public Dictionary<LLUUID, InventoryFolder> Folders; 42 public Dictionary<LLUUID, InventoryFolder> Folders;
43 public Dictionary<LLUUID, InventoryItem> Items; 43 public Dictionary<LLUUID, InventoryItem> Items;
44 private Server server; 44 private Server _server;
45 45 private System.Text.Encoding _enc = System.Text.Encoding.ASCII;
46 private const uint FULL_MASK_PERMISSIONS = 2147483647; 46 private const uint FULL_MASK_PERMISSIONS = 2147483647;
47 47
48 /// <summary> 48 /// <summary>
49 /// 49 ///
50 /// </summary> 50 /// </summary>
51 /// <param name="serve"></param> 51 /// <param name="serve"></param>
52 public InventoryManager(Server serve) 52 public InventoryManager(Server server)
53 { 53 {
54 server=serve; 54 _server = server;
55 Folders=new Dictionary<LLUUID, InventoryFolder>(); 55 Folders=new Dictionary<LLUUID, InventoryFolder>();
56 Items=new Dictionary<LLUUID, InventoryItem>(); 56 Items=new Dictionary<LLUUID, InventoryItem>();
57 } 57 }
@@ -63,23 +63,23 @@ namespace OpenSim
63 /// <param name="FolderID"></param> 63 /// <param name="FolderID"></param>
64 /// <param name="Asset"></param> 64 /// <param name="Asset"></param>
65 /// <returns></returns> 65 /// <returns></returns>
66 public LLUUID AddToInventory(User_Agent_info UserInfo, LLUUID FolderID,AssetBase Asset) 66 public LLUUID AddToInventory(UserAgentInfo userInfo, LLUUID folderID, AssetBase asset)
67 { 67 {
68 if(this.Folders.ContainsKey(FolderID)) 68 if(this.Folders.ContainsKey(folderID))
69 { 69 {
70 LLUUID NewItemID=LLUUID.Random(); 70 LLUUID NewItemID = LLUUID.Random();
71 71
72 InventoryItem Item=new InventoryItem(); 72 InventoryItem Item = new InventoryItem();
73 Item.FolderID=FolderID; 73 Item.FolderID = folderID;
74 Item.OwnerID=UserInfo.AgentID; 74 Item.OwnerID = userInfo.AgentID;
75 Item.AssetID=Asset.Full_ID; 75 Item.AssetID = asset.FullID;
76 Item.ItemID=NewItemID; 76 Item.ItemID = NewItemID;
77 Item.Type=Asset.Type; 77 Item.Type = asset.Type;
78 Item.Name=Asset.Name; 78 Item.Name = asset.Name;
79 Item.Description=Asset.Description; 79 Item.Description = asset.Description;
80 Item.InvType=Asset.InvType; 80 Item.InvType = asset.InvType;
81 this.Items.Add(Item.ItemID,Item); 81 this.Items.Add(Item.ItemID, Item);
82 InventoryFolder Folder=Folders[Item.FolderID]; 82 InventoryFolder Folder = Folders[Item.FolderID];
83 Folder.Items.Add(Item); 83 Folder.Items.Add(Item);
84 return(Item.ItemID); 84 return(Item.ItemID);
85 } 85 }
@@ -95,12 +95,12 @@ namespace OpenSim
95 /// <param name="UserInfo"></param> 95 /// <param name="UserInfo"></param>
96 /// <param name="NewFolder"></param> 96 /// <param name="NewFolder"></param>
97 /// <returns></returns> 97 /// <returns></returns>
98 public bool CreateNewFolder(User_Agent_info UserInfo, LLUUID NewFolder) 98 public bool CreateNewFolder(UserAgentInfo userInfo, LLUUID newFolder)
99 { 99 {
100 InventoryFolder Folder=new InventoryFolder(); 100 InventoryFolder Folder = new InventoryFolder();
101 Folder.FolderID=NewFolder; 101 Folder.FolderID = newFolder;
102 Folder.OwnerID=UserInfo.AgentID; 102 Folder.OwnerID = userInfo.AgentID;
103 this.Folders.Add(Folder.FolderID,Folder); 103 this.Folders.Add(Folder.FolderID, Folder);
104 104
105 return(true); 105 return(true);
106 } 106 }
@@ -110,49 +110,49 @@ namespace OpenSim
110 /// </summary> 110 /// </summary>
111 /// <param name="User_info"></param> 111 /// <param name="User_info"></param>
112 /// <param name="FetchDescend"></param> 112 /// <param name="FetchDescend"></param>
113 public void FetchInventoryDescendents(User_Agent_info User_info,FetchInventoryDescendentsPacket FetchDescend) 113 public void FetchInventoryDescendents(UserAgentInfo userInfo, FetchInventoryDescendentsPacket FetchDescend)
114 { 114 {
115 if(FetchDescend.InventoryData.FetchItems) 115 if(FetchDescend.InventoryData.FetchItems)
116 { 116 {
117 if(this.Folders.ContainsKey(FetchDescend.InventoryData.FolderID)) 117 if(this.Folders.ContainsKey(FetchDescend.InventoryData.FolderID))
118 { 118 {
119 119
120 InventoryFolder Folder=this.Folders[FetchDescend.InventoryData.FolderID]; 120 InventoryFolder Folder = this.Folders[FetchDescend.InventoryData.FolderID];
121 InventoryDescendentsPacket Descend=new InventoryDescendentsPacket(); 121 InventoryDescendentsPacket Descend = new InventoryDescendentsPacket();
122 Descend.AgentData.AgentID=User_info.AgentID; 122 Descend.AgentData.AgentID = userInfo.AgentID;
123 Descend.AgentData.OwnerID=Folder.OwnerID; 123 Descend.AgentData.OwnerID = Folder.OwnerID;
124 Descend.AgentData.FolderID=FetchDescend.InventoryData.FolderID; 124 Descend.AgentData.FolderID = FetchDescend.InventoryData.FolderID;
125 Descend.AgentData.Descendents=Folder.Items.Count; 125 Descend.AgentData.Descendents = Folder.Items.Count;
126 Descend.AgentData.Version=Folder.Items.Count; 126 Descend.AgentData.Version = Folder.Items.Count;
127 127
128 Descend.ItemData=new InventoryDescendentsPacket.ItemDataBlock[Folder.Items.Count]; 128 Descend.ItemData = new InventoryDescendentsPacket.ItemDataBlock[Folder.Items.Count];
129 for(int i=0; i<Folder.Items.Count ; i++) 129 for(int i = 0; i < Folder.Items.Count ; i++)
130 { 130 {
131 131
132 InventoryItem Item=Folder.Items[i]; 132 InventoryItem Item=Folder.Items[i];
133 Descend.ItemData[i]=new InventoryDescendentsPacket.ItemDataBlock(); 133 Descend.ItemData[i] = new InventoryDescendentsPacket.ItemDataBlock();
134 Descend.ItemData[i].ItemID=Item.ItemID; 134 Descend.ItemData[i].ItemID = Item.ItemID;
135 Descend.ItemData[i].AssetID=Item.AssetID; 135 Descend.ItemData[i].AssetID = Item.AssetID;
136 Descend.ItemData[i].CreatorID=Item.CreatorID; 136 Descend.ItemData[i].CreatorID = Item.CreatorID;
137 Descend.ItemData[i].BaseMask=FULL_MASK_PERMISSIONS; 137 Descend.ItemData[i].BaseMask = FULL_MASK_PERMISSIONS;
138 Descend.ItemData[i].CreationDate=1000; 138 Descend.ItemData[i].CreationDate = 1000;
139 Descend.ItemData[i].Description=enc.GetBytes(Item.Description+"\0"); 139 Descend.ItemData[i].Description = _enc.GetBytes(Item.Description+"\0");
140 Descend.ItemData[i].EveryoneMask=FULL_MASK_PERMISSIONS; 140 Descend.ItemData[i].EveryoneMask = FULL_MASK_PERMISSIONS;
141 Descend.ItemData[i].Flags=1; 141 Descend.ItemData[i].Flags = 1;
142 Descend.ItemData[i].FolderID=Item.FolderID; 142 Descend.ItemData[i].FolderID = Item.FolderID;
143 Descend.ItemData[i].GroupID=new LLUUID("00000000-0000-0000-0000-000000000000"); 143 Descend.ItemData[i].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000");
144 Descend.ItemData[i].GroupMask=FULL_MASK_PERMISSIONS; 144 Descend.ItemData[i].GroupMask = FULL_MASK_PERMISSIONS;
145 Descend.ItemData[i].InvType=Item.InvType; 145 Descend.ItemData[i].InvType = Item.InvType;
146 Descend.ItemData[i].Name=enc.GetBytes(Item.Name+"\0"); 146 Descend.ItemData[i].Name = _enc.GetBytes(Item.Name+"\0");
147 Descend.ItemData[i].NextOwnerMask=FULL_MASK_PERMISSIONS; 147 Descend.ItemData[i].NextOwnerMask = FULL_MASK_PERMISSIONS;
148 Descend.ItemData[i].OwnerID=Item.OwnerID; 148 Descend.ItemData[i].OwnerID = Item.OwnerID;
149 Descend.ItemData[i].OwnerMask=FULL_MASK_PERMISSIONS; 149 Descend.ItemData[i].OwnerMask = FULL_MASK_PERMISSIONS;
150 Descend.ItemData[i].SalePrice=100; 150 Descend.ItemData[i].SalePrice = 100;
151 Descend.ItemData[i].SaleType=0; 151 Descend.ItemData[i].SaleType = 0;
152 Descend.ItemData[i].Type=Item.Type; 152 Descend.ItemData[i].Type = Item.Type;
153 Descend.ItemData[i].CRC=libsecondlife.Helpers.InventoryCRC(1000,0,Descend.ItemData[i].InvType,Descend.ItemData[i].Type,Descend.ItemData[i].AssetID ,Descend.ItemData[i].GroupID,100,Descend.ItemData[i].OwnerID,Descend.ItemData[i].CreatorID,Descend.ItemData[i].ItemID,Descend.ItemData[i].FolderID,FULL_MASK_PERMISSIONS,1,FULL_MASK_PERMISSIONS,FULL_MASK_PERMISSIONS,FULL_MASK_PERMISSIONS); 153 Descend.ItemData[i].CRC=libsecondlife.Helpers.InventoryCRC(1000, 0, Descend.ItemData[i].InvType, Descend.ItemData[i].Type, Descend.ItemData[i].AssetID, Descend.ItemData[i].GroupID, 100, Descend.ItemData[i].OwnerID, Descend.ItemData[i].CreatorID, Descend.ItemData[i].ItemID, Descend.ItemData[i].FolderID, FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS);
154 } 154 }
155 server.SendPacket(Descend,true,User_info); 155 _server.SendPacket(Descend, true, userInfo);
156 156
157 } 157 }
158 } 158 }
@@ -166,40 +166,40 @@ namespace OpenSim
166 /// 166 ///
167 /// </summary> 167 /// </summary>
168 /// <param name="User_info"></param> 168 /// <param name="User_info"></param>
169 public void FetchInventory(User_Agent_info User_info, FetchInventoryPacket FetchItems) 169 public void FetchInventory(UserAgentInfo userInfo, FetchInventoryPacket FetchItems)
170 { 170 {
171 171
172 for(int i=0; i<FetchItems.InventoryData.Length; i++) 172 for(int i = 0; i < FetchItems.InventoryData.Length; i++)
173 { 173 {
174 if(this.Items.ContainsKey(FetchItems.InventoryData[i].ItemID)) 174 if(this.Items.ContainsKey(FetchItems.InventoryData[i].ItemID))
175 { 175 {
176 176
177 InventoryItem Item=Items[FetchItems.InventoryData[i].ItemID]; 177 InventoryItem Item = Items[FetchItems.InventoryData[i].ItemID];
178 FetchInventoryReplyPacket InventoryReply=new FetchInventoryReplyPacket(); 178 FetchInventoryReplyPacket InventoryReply = new FetchInventoryReplyPacket();
179 InventoryReply.AgentData.AgentID=User_info.AgentID; 179 InventoryReply.AgentData.AgentID = userInfo.AgentID;
180 InventoryReply.InventoryData=new FetchInventoryReplyPacket.InventoryDataBlock[1]; 180 InventoryReply.InventoryData = new FetchInventoryReplyPacket.InventoryDataBlock[1];
181 InventoryReply.InventoryData[0]=new FetchInventoryReplyPacket.InventoryDataBlock(); 181 InventoryReply.InventoryData[0] = new FetchInventoryReplyPacket.InventoryDataBlock();
182 InventoryReply.InventoryData[0].ItemID=Item.ItemID; 182 InventoryReply.InventoryData[0].ItemID = Item.ItemID;
183 InventoryReply.InventoryData[0].AssetID=Item.AssetID; 183 InventoryReply.InventoryData[0].AssetID = Item.AssetID;
184 InventoryReply.InventoryData[0].CreatorID=Item.CreatorID; 184 InventoryReply.InventoryData[0].CreatorID = Item.CreatorID;
185 InventoryReply.InventoryData[0].BaseMask=FULL_MASK_PERMISSIONS; 185 InventoryReply.InventoryData[0].BaseMask = FULL_MASK_PERMISSIONS;
186 InventoryReply.InventoryData[0].CreationDate=1000; 186 InventoryReply.InventoryData[0].CreationDate = 1000;
187 InventoryReply.InventoryData[0].Description=enc.GetBytes( Item.Description+"\0"); 187 InventoryReply.InventoryData[0].Description = _enc.GetBytes( Item.Description+"\0");
188 InventoryReply.InventoryData[0].EveryoneMask=FULL_MASK_PERMISSIONS; 188 InventoryReply.InventoryData[0].EveryoneMask = FULL_MASK_PERMISSIONS;
189 InventoryReply.InventoryData[0].Flags=1; 189 InventoryReply.InventoryData[0].Flags = 1;
190 InventoryReply.InventoryData[0].FolderID=Item.FolderID; 190 InventoryReply.InventoryData[0].FolderID = Item.FolderID;
191 InventoryReply.InventoryData[0].GroupID=new LLUUID("00000000-0000-0000-0000-000000000000"); 191 InventoryReply.InventoryData[0].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000");
192 InventoryReply.InventoryData[0].GroupMask=FULL_MASK_PERMISSIONS; 192 InventoryReply.InventoryData[0].GroupMask = FULL_MASK_PERMISSIONS;
193 InventoryReply.InventoryData[0].InvType=Item.InvType; 193 InventoryReply.InventoryData[0].InvType = Item.InvType;
194 InventoryReply.InventoryData[0].Name=enc.GetBytes(Item.Name+"\0"); 194 InventoryReply.InventoryData[0].Name = _enc.GetBytes(Item.Name+"\0");
195 InventoryReply.InventoryData[0].NextOwnerMask=FULL_MASK_PERMISSIONS; 195 InventoryReply.InventoryData[0].NextOwnerMask = FULL_MASK_PERMISSIONS;
196 InventoryReply.InventoryData[0].OwnerID=Item.OwnerID; 196 InventoryReply.InventoryData[0].OwnerID = Item.OwnerID;
197 InventoryReply.InventoryData[0].OwnerMask=FULL_MASK_PERMISSIONS; 197 InventoryReply.InventoryData[0].OwnerMask = FULL_MASK_PERMISSIONS;
198 InventoryReply.InventoryData[0].SalePrice=100; 198 InventoryReply.InventoryData[0].SalePrice = 100;
199 InventoryReply.InventoryData[0].SaleType=0; 199 InventoryReply.InventoryData[0].SaleType = 0;
200 InventoryReply.InventoryData[0].Type=Item.Type; 200 InventoryReply.InventoryData[0].Type = Item.Type;
201 InventoryReply.InventoryData[0].CRC=libsecondlife.Helpers.InventoryCRC(1000,0,InventoryReply.InventoryData[0].InvType,InventoryReply.InventoryData[0].Type,InventoryReply.InventoryData[0].AssetID ,InventoryReply.InventoryData[0].GroupID,100,InventoryReply.InventoryData[0].OwnerID,InventoryReply.InventoryData[0].CreatorID,InventoryReply.InventoryData[0].ItemID,InventoryReply.InventoryData[0].FolderID,FULL_MASK_PERMISSIONS,1,FULL_MASK_PERMISSIONS,FULL_MASK_PERMISSIONS,FULL_MASK_PERMISSIONS); 201 InventoryReply.InventoryData[0].CRC = libsecondlife.Helpers.InventoryCRC(1000, 0, InventoryReply.InventoryData[0].InvType, InventoryReply.InventoryData[0].Type, InventoryReply.InventoryData[0].AssetID, InventoryReply.InventoryData[0].GroupID, 100, InventoryReply.InventoryData[0].OwnerID, InventoryReply.InventoryData[0].CreatorID, InventoryReply.InventoryData[0].ItemID, InventoryReply.InventoryData[0].FolderID, FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS);
202 server.SendPacket(InventoryReply,true,User_info); 202 _server.SendPacket(InventoryReply, true, userInfo);
203 } 203 }
204 } 204 }
205 } 205 }
@@ -217,7 +217,7 @@ namespace OpenSim
217 217
218 public InventoryFolder() 218 public InventoryFolder()
219 { 219 {
220 Items=new List<InventoryItem>(); 220 Items = new List<InventoryItem>();
221 } 221 }
222 222
223 } 223 }
@@ -228,7 +228,7 @@ namespace OpenSim
228 public LLUUID OwnerID; 228 public LLUUID OwnerID;
229 public LLUUID ItemID; 229 public LLUUID ItemID;
230 public LLUUID AssetID; 230 public LLUUID AssetID;
231 public LLUUID CreatorID=LLUUID.Zero; 231 public LLUUID CreatorID = LLUUID.Zero;
232 public sbyte InvType; 232 public sbyte InvType;
233 public sbyte Type; 233 public sbyte Type;
234 public string Name; 234 public string Name;
diff --git a/Login_manager.cs b/Login_manager.cs
index dc90613..2d4f524 100644
--- a/Login_manager.cs
+++ b/Login_manager.cs
@@ -116,7 +116,8 @@ namespace OpenSim
116 int contentLength = 0; 116 int contentLength = 0;
117 117
118 // read HTTP header 118 // read HTTP header
119 do { 119 do
120 {
120 // read one line of the header 121 // read one line of the header
121 line = reader.ReadLine(); 122 line = reader.ReadLine();
122 123
@@ -145,72 +146,72 @@ namespace OpenSim
145 //get login name 146 //get login name
146 if(requestData.Contains("first")) 147 if(requestData.Contains("first"))
147 { 148 {
148 first=(string)requestData["first"]; 149 first = (string)requestData["first"];
149 } 150 }
150 else 151 else
151 { 152 {
152 first="test"; 153 first = "test";
153 } 154 }
154 if(requestData.Contains("last")) 155 if(requestData.Contains("last"))
155 { 156 {
156 last=(string)requestData["last"]; 157 last = (string)requestData["last"];
157 } 158 }
158 else 159 else
159 { 160 {
160 last="User"+NumClients.ToString(); 161 last = "User"+NumClients.ToString();
161 } 162 }
162 NumClients++; 163 NumClients++;
163 164
164 //create a agent and session LLUUID 165 //create a agent and session LLUUID
165 int AgentRand=this.RandomClass.Next(1,9999); 166 int AgentRand = this.RandomClass.Next(1,9999);
166 Agent=new LLUUID("99998888-"+AgentRand.ToString("0000")+"-4f52-8ec1-0b1d5cd6aead"); 167 Agent = new LLUUID("99998888-"+AgentRand.ToString("0000")+"-4f52-8ec1-0b1d5cd6aead");
167 int SessionRand=this.RandomClass.Next(1,999); 168 int SessionRand = this.RandomClass.Next(1,999);
168 Session=new LLUUID("aaaabbbb-8932-"+SessionRand.ToString("0000")+"-8664-58f53e442797"); 169 Session = new LLUUID("aaaabbbb-8932-"+SessionRand.ToString("0000")+"-8664-58f53e442797");
169 170
170 171
171 StreamReader SR; 172 StreamReader SR;
172 string ResponseString=""; 173 string ResponseString = "";
173 string lines; 174 string lines;
174 SR=File.OpenText("new-login.dat"); 175 SR=File.OpenText("new-login.dat");
175 176
176 lines=SR.ReadLine(); 177 lines=SR.ReadLine();
177 178
178 while(lines!="end-mfile") 179 while(lines != "end-mfile")
179 { 180 {
180 181
181 ResponseString+=lines; 182 ResponseString += lines;
182 lines=SR.ReadLine(); 183 lines = SR.ReadLine();
183 } 184 }
184 SR.Close(); 185 SR.Close();
185 186
186 XmlRpcResponse response =(XmlRpcResponse)(new XmlRpcResponseDeserializer()).Deserialize(ResponseString); 187 XmlRpcResponse response =(XmlRpcResponse)(new XmlRpcResponseDeserializer()).Deserialize(ResponseString);
187 Hashtable responseData = (Hashtable)response.Value; 188 Hashtable responseData = (Hashtable)response.Value;
188 189
189 responseData["agent_id"]=Agent.ToStringHyphenated(); 190 responseData["agent_id"] = Agent.ToStringHyphenated();
190 responseData["session_id"]=Session.ToStringHyphenated(); 191 responseData["session_id"] = Session.ToStringHyphenated();
191 ArrayList InventoryList=(ArrayList) responseData["inventory-skeleton"]; 192 ArrayList InventoryList = (ArrayList) responseData["inventory-skeleton"];
192 Hashtable Inventory1=(Hashtable)InventoryList[0]; 193 Hashtable Inventory1 = (Hashtable)InventoryList[0];
193 Hashtable Inventory2=(Hashtable)InventoryList[1]; 194 Hashtable Inventory2 = (Hashtable)InventoryList[1];
194 LLUUID BaseFolderID=LLUUID.Random(); 195 LLUUID BaseFolderID = LLUUID.Random();
195 LLUUID InventoryFolderID=LLUUID.Random(); 196 LLUUID InventoryFolderID = LLUUID.Random();
196 Inventory2["name"]="Base"; 197 Inventory2["name"] = "Base";
197 Inventory2["folder_id"]=BaseFolderID.ToStringHyphenated(); 198 Inventory2["folder_id"] = BaseFolderID.ToStringHyphenated();
198 Inventory1["folder_id"]=InventoryFolderID.ToStringHyphenated(); 199 Inventory1["folder_id"] = InventoryFolderID.ToStringHyphenated();
199 200
200 ArrayList InventoryRoot=(ArrayList) responseData["inventory-root"]; 201 ArrayList InventoryRoot = (ArrayList) responseData["inventory-root"];
201 Hashtable Inventoryroot=(Hashtable)InventoryRoot[0]; 202 Hashtable Inventoryroot = (Hashtable)InventoryRoot[0];
202 Inventoryroot["folder_id"]=InventoryFolderID.ToStringHyphenated(); 203 Inventoryroot["folder_id"] = InventoryFolderID.ToStringHyphenated();
203 204
204 205
205 //copy data to login object 206 //copy data to login object
206 lock(Login) 207 lock(Login)
207 { 208 {
208 Login.first=first; 209 Login.First = first;
209 Login.last=last; 210 Login.Last = last;
210 Login.Agent=Agent; 211 Login.Agent = Agent;
211 Login.Session=Session; 212 Login.Session = Session;
212 Login.BaseFolder=BaseFolderID; 213 Login.BaseFolder = BaseFolderID;
213 Login.InventoryFolder=InventoryFolderID; 214 Login.InventoryFolder = InventoryFolderID;
214 } 215 }
215 216
216 // forward the XML-RPC response to the client 217 // forward the XML-RPC response to the client
diff --git a/Prim_manager.cs b/Prim_manager.cs
index 856bffe..aa1c32a 100644
--- a/Prim_manager.cs
+++ b/Prim_manager.cs
@@ -40,11 +40,10 @@ namespace OpenSim
40 /// </summary> 40 /// </summary>
41 public class PrimManager 41 public class PrimManager
42 { 42 {
43 private Server server; 43 private Server _server;
44 public AgentManager Agent_Manager; 44 private uint _primCount;
45
46 private uint prim_count;
47 45
46 public AgentManager AgentManagement;
48 public libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock PrimTemplate; 47 public libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock PrimTemplate;
49 public Dictionary<libsecondlife.LLUUID,PrimInfo> PrimList; 48 public Dictionary<libsecondlife.LLUUID,PrimInfo> PrimList;
50 49
@@ -52,10 +51,10 @@ namespace OpenSim
52 /// 51 ///
53 /// </summary> 52 /// </summary>
54 /// <param name="serve"></param> 53 /// <param name="serve"></param>
55 public PrimManager(Server serve) 54 public PrimManager(Server server)
56 { 55 {
57 server=serve; 56 _server = server;
58 PrimList=new Dictionary<libsecondlife.LLUUID,PrimInfo> (); 57 PrimList = new Dictionary<libsecondlife.LLUUID,PrimInfo> ();
59 this.SetupTemplates("objectupate164.dat"); 58 this.SetupTemplates("objectupate164.dat");
60 59
61 } 60 }
@@ -66,58 +65,59 @@ namespace OpenSim
66 /// <param name="User_info"></param> 65 /// <param name="User_info"></param>
67 /// <param name="p1"></param> 66 /// <param name="p1"></param>
68 /// <param name="add_pack"></param> 67 /// <param name="add_pack"></param>
69 public void CreatePrim(User_Agent_info User_info, libsecondlife.LLVector3 p1, ObjectAddPacket add_pack) 68 public void CreatePrim(UserAgentInfo userInfo, libsecondlife.LLVector3 pos1, ObjectAddPacket addPacket)
70 { 69 {
71 ObjectUpdatePacket objupdate=new ObjectUpdatePacket(); 70 ObjectUpdatePacket objupdate = new ObjectUpdatePacket();
72 objupdate.RegionData.RegionHandle=Globals.Instance.RegionHandle; 71 objupdate.RegionData.RegionHandle = Globals.Instance.RegionHandle;
73 objupdate.RegionData.TimeDilation=64096; 72 objupdate.RegionData.TimeDilation = 64096;
74 objupdate.ObjectData=new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1]; 73
75 PrimData PData=new PrimData(); 74 objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1];
76 objupdate.ObjectData[0]=this.PrimTemplate; 75 PrimData PData = new PrimData();
77 PData.OwnerID=objupdate.ObjectData[0].OwnerID=User_info.AgentID; 76 objupdate.ObjectData[0] = this.PrimTemplate;
78 PData.PCode=objupdate.ObjectData[0].PCode=add_pack.ObjectData.PCode; 77 PData.OwnerID=objupdate.ObjectData[0].OwnerID = userInfo.AgentID;
79 PData.PathBegin=objupdate.ObjectData[0].PathBegin=add_pack.ObjectData.PathBegin; 78 PData.PCode=objupdate.ObjectData[0].PCode = addPacket.ObjectData.PCode;
80 PData.PathEnd=objupdate.ObjectData[0].PathEnd=add_pack.ObjectData.PathEnd; 79 PData.PathBegin=objupdate.ObjectData[0].PathBegin = addPacket.ObjectData.PathBegin;
81 PData.PathScaleX=objupdate.ObjectData[0].PathScaleX=add_pack.ObjectData.PathScaleX; 80 PData.PathEnd=objupdate.ObjectData[0].PathEnd = addPacket.ObjectData.PathEnd;
82 PData.PathScaleY=objupdate.ObjectData[0].PathScaleY=add_pack.ObjectData.PathScaleY; 81 PData.PathScaleX=objupdate.ObjectData[0].PathScaleX = addPacket.ObjectData.PathScaleX;
83 PData.PathShearX=objupdate.ObjectData[0].PathShearX=add_pack.ObjectData.PathShearX; 82 PData.PathScaleY=objupdate.ObjectData[0].PathScaleY = addPacket.ObjectData.PathScaleY;
84 PData.PathShearY=objupdate.ObjectData[0].PathShearY=add_pack.ObjectData.PathShearY; 83 PData.PathShearX=objupdate.ObjectData[0].PathShearX = addPacket.ObjectData.PathShearX;
85 PData.PathSkew=objupdate.ObjectData[0].PathSkew=add_pack.ObjectData.PathSkew; 84 PData.PathShearY=objupdate.ObjectData[0].PathShearY = addPacket.ObjectData.PathShearY;
86 PData.ProfileBegin=objupdate.ObjectData[0].ProfileBegin=add_pack.ObjectData.ProfileBegin; 85 PData.PathSkew=objupdate.ObjectData[0].PathSkew = addPacket.ObjectData.PathSkew;
87 PData.ProfileEnd=objupdate.ObjectData[0].ProfileEnd=add_pack.ObjectData.ProfileEnd; 86 PData.ProfileBegin=objupdate.ObjectData[0].ProfileBegin = addPacket.ObjectData.ProfileBegin;
88 PData.Scale=objupdate.ObjectData[0].Scale=add_pack.ObjectData.Scale;//new LLVector3(1,1,1); 87 PData.ProfileEnd=objupdate.ObjectData[0].ProfileEnd = addPacket.ObjectData.ProfileEnd;
89 PData.PathCurve=objupdate.ObjectData[0].PathCurve=add_pack.ObjectData.PathCurve; 88 PData.Scale=objupdate.ObjectData[0].Scale = addPacket.ObjectData.Scale;
90 PData.ProfileCurve=objupdate.ObjectData[0].ProfileCurve=add_pack.ObjectData.ProfileCurve; 89 PData.PathCurve=objupdate.ObjectData[0].PathCurve = addPacket.ObjectData.PathCurve;
91 PData.ParentID=objupdate.ObjectData[0].ParentID=0; 90 PData.ProfileCurve=objupdate.ObjectData[0].ProfileCurve = addPacket.ObjectData.ProfileCurve;
92 PData.ProfileHollow=objupdate.ObjectData[0].ProfileHollow=add_pack.ObjectData.ProfileHollow; 91 PData.ParentID=objupdate.ObjectData[0].ParentID = 0;
92 PData.ProfileHollow=objupdate.ObjectData[0].ProfileHollow = addPacket.ObjectData.ProfileHollow;
93 //finish off copying rest of shape data 93 //finish off copying rest of shape data
94 94
95 objupdate.ObjectData[0].ID=(uint)(702000+prim_count); 95 objupdate.ObjectData[0].ID = (uint)(702000 + _primCount);
96 objupdate.ObjectData[0].FullID=new LLUUID("edba7151-5857-acc5-b30b-f01efefda"+prim_count.ToString("000")); 96 objupdate.ObjectData[0].FullID = new LLUUID("edba7151-5857-acc5-b30b-f01efefda"+_primCount.ToString("000"));
97 97
98 //update position 98 //update position
99 byte[] pb=p1.GetBytes(); 99 byte[] pb = pos1.GetBytes();
100 Array.Copy(pb,0,objupdate.ObjectData[0].ObjectData,0,pb.Length); 100 Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 0, pb.Length);
101 101
102 prim_count++; 102 _primCount++;
103 server.SendPacket(objupdate,true,User_info); 103 _server.SendPacket(objupdate, true, userInfo);
104 104
105 //should send to all users 105 //should send to all users
106 foreach (KeyValuePair<libsecondlife.LLUUID,AvatarData> kp in Agent_Manager.AgentList) 106 foreach (KeyValuePair<libsecondlife.LLUUID, AvatarData> kp in AgentManagement.AgentList)
107 { 107 {
108 if(kp.Value.NetInfo.AgentID!=User_info.AgentID) 108 if(kp.Value.NetInfo.AgentID != userInfo.AgentID)
109 { 109 {
110 server.SendPacket(objupdate,true,kp.Value.NetInfo); 110 _server.SendPacket(objupdate, true, kp.Value.NetInfo);
111 } 111 }
112 } 112 }
113 //should store this infomation 113 //should store this infomation
114 PrimInfo NewPrim=new PrimInfo(); 114 PrimInfo NewPrim = new PrimInfo();
115 NewPrim.FullID=objupdate.ObjectData[0].FullID; 115 NewPrim.FullID = objupdate.ObjectData[0].FullID;
116 NewPrim.LocalID=objupdate.ObjectData[0].ID; 116 NewPrim.LocalID = objupdate.ObjectData[0].ID;
117 NewPrim.Position=p1; 117 NewPrim.Position = pos1;
118 NewPrim.data=PData; 118 NewPrim.Data = PData;
119 119
120 this.PrimList.Add(NewPrim.FullID,NewPrim); 120 this.PrimList.Add(NewPrim.FullID, NewPrim);
121 121
122 //store rest of data 122 //store rest of data
123 123
@@ -131,62 +131,62 @@ namespace OpenSim
131 /// <param name="LocalID"></param> 131 /// <param name="LocalID"></param>
132 /// <param name="setRotation"></param> 132 /// <param name="setRotation"></param>
133 /// <param name="rotation"></param> 133 /// <param name="rotation"></param>
134 public void UpdatePrimPosition(User_Agent_info User,LLVector3 position,uint LocalID,bool setRotation, LLQuaternion rotation) 134 public void UpdatePrimPosition(UserAgentInfo userInfo, LLVector3 position, uint localID, bool setRotation, LLQuaternion rotation)
135 { 135 {
136 PrimInfo pri=null; 136 PrimInfo pri = null;
137 foreach (KeyValuePair<libsecondlife.LLUUID,PrimInfo> kp in this.PrimList) 137 foreach (KeyValuePair<libsecondlife.LLUUID,PrimInfo> kp in this.PrimList)
138 { 138 {
139 if(kp.Value.LocalID==LocalID) 139 if(kp.Value.LocalID == localID)
140 { 140 {
141 pri=kp.Value; 141 pri = kp.Value;
142 } 142 }
143 } 143 }
144 if(pri==null) 144 if(pri == null)
145 { 145 {
146 return; 146 return;
147 } 147 }
148 uint ID=pri.LocalID; 148 uint ID = pri.LocalID;
149 libsecondlife.LLVector3 pos2=new LLVector3(position.X,position.Y,position.Z); 149 libsecondlife.LLVector3 pos2 = new LLVector3(position.X, position.Y, position.Z);
150 libsecondlife.LLQuaternion rotation2; 150 libsecondlife.LLQuaternion rotation2;
151 if(!setRotation) 151 if(!setRotation)
152 { 152 {
153 pri.Position=pos2; 153 pri.Position = pos2;
154 rotation2=new LLQuaternion(pri.Rotation.X,pri.Rotation.Y,pri.Rotation.Z,pri.Rotation.W); 154 rotation2 = new LLQuaternion(pri.Rotation.X, pri.Rotation.Y, pri.Rotation.Z, pri.Rotation.W);
155 } 155 }
156 else 156 else
157 { 157 {
158 rotation2=new LLQuaternion(rotation.X,rotation.Y,rotation.Z,rotation.W); 158 rotation2=new LLQuaternion(rotation.X, rotation.Y, rotation.Z, rotation.W);
159 pos2=pri.Position; 159 pos2 = pri.Position;
160 pri.Rotation=rotation; 160 pri.Rotation = rotation;
161 } 161 }
162 rotation2.W+=1; 162 rotation2.W += 1;
163 rotation2.X+=1; 163 rotation2.X += 1;
164 rotation2.Y+=1; 164 rotation2.Y += 1;
165 rotation2.Z+=1; 165 rotation2.Z += 1;
166 166
167 byte[] bytes=new byte[60]; 167 byte[] bytes = new byte[60];
168 168
169 ImprovedTerseObjectUpdatePacket im=new ImprovedTerseObjectUpdatePacket(); 169 ImprovedTerseObjectUpdatePacket im = new ImprovedTerseObjectUpdatePacket();
170 im.RegionData.RegionHandle=Globals.Instance.RegionHandle; 170 im.RegionData.RegionHandle = Globals.Instance.RegionHandle;
171 im.RegionData.TimeDilation=64096; 171 im.RegionData.TimeDilation = 64096;
172 im.ObjectData=new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; 172 im.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1];
173 int i=0; 173 int i = 0;
174 ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat=new ImprovedTerseObjectUpdatePacket.ObjectDataBlock(); 174 ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock();
175 im.ObjectData[0]=dat; 175 im.ObjectData[0] = dat;
176 dat.TextureEntry=PrimTemplate.TextureEntry; 176 dat.TextureEntry = PrimTemplate.TextureEntry;
177 177
178 bytes[i++] = (byte)(ID % 256); 178 bytes[i++] = (byte)(ID % 256);
179 bytes[i++] = (byte)((ID >> 8) % 256); 179 bytes[i++] = (byte)((ID >> 8) % 256);
180 bytes[i++] = (byte)((ID >> 16) % 256); 180 bytes[i++] = (byte)((ID >> 16) % 256);
181 bytes[i++] = (byte)((ID >> 24) % 256); 181 bytes[i++] = (byte)((ID >> 24) % 256);
182 bytes[i++]=0; 182 bytes[i++]= 0;
183 bytes[i++]=0;//1; 183 bytes[i++]= 0;
184 184
185 byte[] pb=pos2.GetBytes(); 185 byte[] pb = pos2.GetBytes();
186 pri.Position=pos2; 186 pri.Position = pos2;
187 Array.Copy(pb,0,bytes,i,pb.Length); 187 Array.Copy(pb, 0, bytes, i, pb.Length);
188 i+=12; 188 i += 12;
189 ushort ac=32767; 189 ushort ac = 32767;
190 190
191 //vel 191 //vel
192 bytes[i++] = (byte)(ac % 256); 192 bytes[i++] = (byte)(ac % 256);
@@ -205,10 +205,10 @@ namespace OpenSim
205 bytes[i++] = (byte)((ac >> 8) % 256); 205 bytes[i++] = (byte)((ac >> 8) % 256);
206 206
207 ushort rw, rx,ry,rz; 207 ushort rw, rx,ry,rz;
208 rw=(ushort)(32768*rotation2.W); 208 rw = (ushort)(32768 * rotation2.W);
209 rx=(ushort)(32768*rotation2.X); 209 rx = (ushort)(32768 * rotation2.X);
210 ry=(ushort)(32768*rotation2.Y); 210 ry = (ushort)(32768 * rotation2.Y);
211 rz=(ushort)(32768*rotation2.Z); 211 rz = (ushort)(32768 * rotation2.Z);
212 212
213 //rot 213 //rot
214 bytes[i++] = (byte)(rx % 256); 214 bytes[i++] = (byte)(rx % 256);
@@ -230,11 +230,11 @@ namespace OpenSim
230 230
231 dat.Data=bytes; 231 dat.Data=bytes;
232 232
233 foreach (KeyValuePair<libsecondlife.LLUUID,AvatarData> kp in Agent_Manager.AgentList) 233 foreach (KeyValuePair<libsecondlife.LLUUID,AvatarData> kp in AgentManagement.AgentList)
234 { 234 {
235 if(kp.Value.NetInfo.AgentID!=User.AgentID) 235 if(kp.Value.NetInfo.AgentID!=userInfo.AgentID)
236 { 236 {
237 server.SendPacket(im,true,kp.Value.NetInfo); 237 _server.SendPacket(im, true, kp.Value.NetInfo);
238 } 238 }
239 } 239 }
240 } 240 }
@@ -243,7 +243,7 @@ namespace OpenSim
243 /// 243 ///
244 /// </summary> 244 /// </summary>
245 /// <param name="user"></param> 245 /// <param name="user"></param>
246 public void SendExistingPrims(User_Agent_info user) 246 public void SendExistingPrims(UserAgentInfo userInfo)
247 { 247 {
248 //send data for already created prims to a new joining user 248 //send data for already created prims to a new joining user
249 } 249 }
@@ -254,12 +254,12 @@ namespace OpenSim
254 /// <param name="name"></param> 254 /// <param name="name"></param>
255 public void SetupTemplates(string name) 255 public void SetupTemplates(string name)
256 { 256 {
257 ObjectUpdatePacket objupdate=new ObjectUpdatePacket(); 257 ObjectUpdatePacket objupdate = new ObjectUpdatePacket();
258 objupdate.RegionData.RegionHandle=Globals.Instance.RegionHandle; 258 objupdate.RegionData.RegionHandle = Globals.Instance.RegionHandle;
259 objupdate.RegionData.TimeDilation=64096; 259 objupdate.RegionData.TimeDilation = 64096;
260 objupdate.ObjectData=new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1]; 260 objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1];
261 261
262 int i=0; 262 int i = 0;
263 FileInfo fInfo = new FileInfo(name); 263 FileInfo fInfo = new FileInfo(name);
264 long numBytes = fInfo.Length; 264 long numBytes = fInfo.Length;
265 FileStream fStream = new FileStream(name, FileMode.Open, FileAccess.Read); 265 FileStream fStream = new FileStream(name, FileMode.Open, FileAccess.Read);
@@ -268,18 +268,18 @@ namespace OpenSim
268 br.Close(); 268 br.Close();
269 fStream.Close(); 269 fStream.Close();
270 270
271 libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock objdata=new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock(data1,ref i); 271 libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock objdata = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock(data1,ref i);
272 objupdate.ObjectData[0]=objdata; 272 objupdate.ObjectData[0] = objdata;
273 this.PrimTemplate=objdata; 273 this.PrimTemplate = objdata;
274 objdata.UpdateFlags=objdata.UpdateFlags+12-16+32+256; 274 objdata.UpdateFlags = objdata.UpdateFlags + 12 - 16 + 32 + 256;
275 objdata.OwnerID=new LLUUID("00000000-0000-0000-0000-000000000000"); 275 objdata.OwnerID = new LLUUID("00000000-0000-0000-0000-000000000000");
276 //test adding a new texture to object , to test image downloading 276 //test adding a new texture to object , to test image downloading
277 LLObject.TextureEntry te=new LLObject.TextureEntry(objdata.TextureEntry,0,objdata.TextureEntry.Length); 277 LLObject.TextureEntry te = new LLObject.TextureEntry(objdata.TextureEntry, 0, objdata.TextureEntry.Length);
278 te.DefaultTexture.TextureID=new LLUUID("00000000-0000-0000-5005-000000000005"); 278 te.DefaultTexture.TextureID = new LLUUID("00000000-0000-0000-5005-000000000005");
279 279
280 LLObject.TextureEntry ntex=new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-5005-000000000005")); 280 LLObject.TextureEntry ntex = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-5005-000000000005"));
281 281
282 objdata.TextureEntry=ntex.ToBytes(); 282 objdata.TextureEntry = ntex.ToBytes();
283 } 283 }
284 284
285 /// <summary> 285 /// <summary>
@@ -287,34 +287,34 @@ namespace OpenSim
287 /// </summary> 287 /// </summary>
288 /// <param name="name"></param> 288 /// <param name="name"></param>
289 /// <param name="user"></param> 289 /// <param name="user"></param>
290 public void ReadPrimDatabase(string name,User_Agent_info user) 290 public void ReadPrimDatabase(string name, UserAgentInfo userInfo)
291 { 291 {
292 StreamReader SR; 292 StreamReader SR;
293 string line; 293 string line;
294 SR=File.OpenText(name); 294 SR=File.OpenText(name);
295 string [] comp= new string[10]; 295 string [] comp = new string[10];
296 string delimStr = " , "; 296 string delimStr = " , ";
297 char [] delimiter = delimStr.ToCharArray(); 297 char [] delimiter = delimStr.ToCharArray();
298 298
299 line=SR.ReadLine(); 299 line=SR.ReadLine();
300 while(line!="end") 300 while(line != "end")
301 { 301 {
302 comp=line.Split(delimiter); 302 comp = line.Split(delimiter);
303 if(comp[0]=="ObjPack") 303 if(comp[0] == "ObjPack")
304 { 304 {
305 int num=Convert.ToInt32(comp[2]); 305 int num = Convert.ToInt32(comp[2]);
306 int start=Convert.ToInt32(comp[1]); 306 int start = Convert.ToInt32(comp[1]);
307 ObjectUpdatePacket objupdate=new ObjectUpdatePacket(); 307 ObjectUpdatePacket objupdate = new ObjectUpdatePacket();
308 objupdate.RegionData.RegionHandle=Globals.Instance.RegionHandle; 308 objupdate.RegionData.RegionHandle = Globals.Instance.RegionHandle;
309 objupdate.RegionData.TimeDilation=64096; 309 objupdate.RegionData.TimeDilation = 64096;
310 objupdate.ObjectData=new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[num]; 310 objupdate.ObjectData = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[num];
311 311
312 // int count=0; 312 // int count=0;
313 string data_path = System.AppDomain.CurrentDomain.BaseDirectory + @"\data\"; 313 string data_path = System.AppDomain.CurrentDomain.BaseDirectory + @"\data\";
314 for(int cc=0; cc<num; cc++) 314 for(int cc = 0; cc < num; cc++)
315 { 315 {
316 string filenam=data_path+@"prim_updates"+start+".dat"; 316 string filenam = data_path+@"prim_updates"+start+".dat";
317 int i=0; 317 int i = 0;
318 //FileInfo fInfo = new FileInfo("objectupate"+start+".dat"); 318 //FileInfo fInfo = new FileInfo("objectupate"+start+".dat");
319 FileInfo fInfo = new FileInfo(filenam); 319 FileInfo fInfo = new FileInfo(filenam);
320 long numBytes = fInfo.Length; 320 long numBytes = fInfo.Length;
@@ -325,12 +325,12 @@ namespace OpenSim
325 br.Close(); 325 br.Close();
326 fStream.Close(); 326 fStream.Close();
327 327
328 libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock objdata=new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock(data1,ref i); 328 libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock objdata = new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock(data1, ref i);
329 objupdate.ObjectData[cc]=objdata; 329 objupdate.ObjectData[cc] = objdata;
330 start++; 330 start++;
331 } 331 }
332 server.SendPacket(objupdate,true,user); 332 _server.SendPacket(objupdate, true, userInfo);
333 line=SR.ReadLine(); 333 line = SR.ReadLine();
334 } 334 }
335 } 335 }
336 SR.Close(); 336 SR.Close();
@@ -344,7 +344,7 @@ namespace OpenSim
344 public LLQuaternion Rotation=LLQuaternion.Identity; 344 public LLQuaternion Rotation=LLQuaternion.Identity;
345 public uint LocalID; 345 public uint LocalID;
346 public LLUUID FullID; 346 public LLUUID FullID;
347 public PrimData data; 347 public PrimData Data;
348 348
349 public PrimInfo() 349 public PrimInfo()
350 { 350 {
diff --git a/Script_manager.cs b/Script_manager.cs
index 87a32d0..26b87f1 100644
--- a/Script_manager.cs
+++ b/Script_manager.cs
@@ -78,11 +78,11 @@ namespace OpenSim
78 78
79 #region Lua Functions 79 #region Lua Functions
80 80
81 public void ScriptRegister( script_object_interface script) 81 public void ScriptRegister(script_object_interface script)
82 { 82 {
83 //called by scripts to register themselves 83 //called by scripts to register themselves
84 } 84 }
85 public void MoveObject(float x ,float y, float z) 85 public void MoveObject(float x , float y, float z)
86 { 86 {
87 87
88 } 88 }
diff --git a/Second-server.sln b/Second-server.sln
index 2575f51..44be1db 100644
--- a/Second-server.sln
+++ b/Second-server.sln
@@ -3,8 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 9.00
3# SharpDevelop 2.1.0.2017 3# SharpDevelop 2.1.0.2017
4Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Second-server", "Second-server.csproj", "{132A6E3E-8F2D-4BF5-BDFB-8555F53F334E}" 4Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Second-server", "Second-server.csproj", "{132A6E3E-8F2D-4BF5-BDFB-8555F53F334E}"
5EndProject 5EndProject
6Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "libsecondlife", "..\..\libsecondlife\libsecondlife-cs\libsecondlife.csproj", "{D9CDEDFB-8169-4B03-B57F-0DF638F044EC}"
7EndProject
8Global 6Global
9 GlobalSection(SolutionConfigurationPlatforms) = preSolution 7 GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 Debug|.NET 1.1 = Debug|.NET 1.1 8 Debug|.NET 1.1 = Debug|.NET 1.1
diff --git a/Server.cs b/Server.cs
index 5c8d961..5e1bb5a 100644
--- a/Server.cs
+++ b/Server.cs
@@ -45,8 +45,8 @@ namespace OpenSim
45 public interface ServerCallback 45 public interface ServerCallback
46 { 46 {
47 //should replace with delegates 47 //should replace with delegates
48 void MainCallback(Packet pack, User_Agent_info User_info); 48 void MainCallback(Packet pack, UserAgentInfo User_info);
49 void NewUserCallback(User_Agent_info User_info); 49 void NewUserCallback(UserAgentInfo User_info);
50 void ErrorCallback(string text); 50 void ErrorCallback(string text);
51 } 51 }
52 public class Server 52 public class Server
@@ -197,7 +197,7 @@ namespace OpenSim
197 /// </summary> 197 /// </summary>
198 /// <param name="packet">Packet to be sent</param> 198 /// <param name="packet">Packet to be sent</param>
199 /// <param name="incrementSequence">Increment sequence number?</param> 199 /// <param name="incrementSequence">Increment sequence number?</param>
200 public void SendPacket(Packet packet, bool incrementSequence, User_Agent_info User_info) 200 public void SendPacket(Packet packet, bool incrementSequence, UserAgentInfo User_info)
201 { 201 {
202 byte[] buffer; 202 byte[] buffer;
203 int bytes; 203 int bytes;
@@ -324,7 +324,7 @@ namespace OpenSim
324 /// <summary> 324 /// <summary>
325 /// Sends out pending acknowledgements 325 /// Sends out pending acknowledgements
326 /// </summary> 326 /// </summary>
327 private void SendAcks(User_Agent_info User_info) 327 private void SendAcks(UserAgentInfo User_info)
328 { 328 {
329 lock (User_info.PendingAcks) 329 lock (User_info.PendingAcks)
330 { 330 {
@@ -358,7 +358,7 @@ namespace OpenSim
358 /// <summary> 358 /// <summary>
359 /// Resend unacknowledged packets 359 /// Resend unacknowledged packets
360 /// </summary> 360 /// </summary>
361 private void ResendUnacked(User_Agent_info User_info) 361 private void ResendUnacked(UserAgentInfo User_info)
362 { 362 {
363 if (connected) 363 if (connected)
364 { 364 {
@@ -397,7 +397,7 @@ namespace OpenSim
397 397
398 // Update the disconnect flag so this sim doesn't time out 398 // Update the disconnect flag so this sim doesn't time out
399 DisconnectCandidate = false; 399 DisconnectCandidate = false;
400 User_Agent_info User_info=null; 400 UserAgentInfo User_info=null;
401 401
402 lock (RecvBuffer) 402 lock (RecvBuffer)
403 { 403 {
@@ -416,7 +416,7 @@ namespace OpenSim
416 if (packet.Type == PacketType.UseCircuitCode) 416 if (packet.Type == PacketType.UseCircuitCode)
417 { 417 {
418 UseCircuitCodePacket cir_pack=(UseCircuitCodePacket)packet; 418 UseCircuitCodePacket cir_pack=(UseCircuitCodePacket)packet;
419 User_Agent_info new_user=new User_Agent_info(); 419 UserAgentInfo new_user=new UserAgentInfo();
420 new_user.circuitCode=cir_pack.CircuitCode.Code; 420 new_user.circuitCode=cir_pack.CircuitCode.Code;
421 new_user.AgentID=cir_pack.CircuitCode.ID; 421 new_user.AgentID=cir_pack.CircuitCode.ID;
422 new_user.SessionID=cir_pack.CircuitCode.SessionID; 422 new_user.SessionID=cir_pack.CircuitCode.SessionID;
@@ -429,13 +429,13 @@ namespace OpenSim
429 } 429 }
430 430
431 431
432 User_Agent_info temp_agent=null; 432 UserAgentInfo temp_agent=null;
433 IPEndPoint send_ip=(IPEndPoint)epSender; 433 IPEndPoint send_ip=(IPEndPoint)epSender;
434 // this.callback_object.error("incoming: address is "+send_ip.Address +"port number is: "+send_ip.Port.ToString()); 434 // this.callback_object.error("incoming: address is "+send_ip.Address +"port number is: "+send_ip.Port.ToString());
435 435
436 for(int ii=0; ii<this.User_agents.Count ; ii++) 436 for(int ii=0; ii<this.User_agents.Count ; ii++)
437 { 437 {
438 temp_agent=(User_Agent_info)this.User_agents[ii]; 438 temp_agent=(UserAgentInfo)this.User_agents[ii];
439 IPEndPoint ag_ip=(IPEndPoint)temp_agent.endpoint; 439 IPEndPoint ag_ip=(IPEndPoint)temp_agent.endpoint;
440 //this.callback_object.error("searching: address is "+ag_ip.Address +"port number is: "+ag_ip.Port.ToString()); 440 //this.callback_object.error("searching: address is "+ag_ip.Address +"port number is: "+ag_ip.Port.ToString());
441 441
@@ -563,7 +563,7 @@ namespace OpenSim
563 //TODO for each user_agent_info 563 //TODO for each user_agent_info
564 for(int i=0; i<this.User_agents.Count; i++) 564 for(int i=0; i<this.User_agents.Count; i++)
565 { 565 {
566 User_Agent_info user=(User_Agent_info)this.User_agents[i]; 566 UserAgentInfo user=(UserAgentInfo)this.User_agents[i];
567 567
568 SendAcks(user); 568 SendAcks(user);
569 ResendUnacked(user); 569 ResendUnacked(user);
@@ -619,7 +619,7 @@ namespace OpenSim
619 } 619 }
620 } 620 }
621 621
622 public class User_Agent_info 622 public class UserAgentInfo
623 { 623 {
624 public EndPoint endpoint; 624 public EndPoint endpoint;
625 public LLUUID AgentID; 625 public LLUUID AgentID;
@@ -636,7 +636,7 @@ namespace OpenSim
636 // ACKs that are queued up to be sent to the simulator 636 // ACKs that are queued up to be sent to the simulator
637 public Dictionary<uint, uint> PendingAcks = new Dictionary<uint, uint>(); 637 public Dictionary<uint, uint> PendingAcks = new Dictionary<uint, uint>();
638 638
639 public User_Agent_info() 639 public UserAgentInfo()
640 { 640 {
641 641
642 } 642 }