diff options
author | MW | 2007-02-03 21:09:54 +0000 |
---|---|---|
committer | MW | 2007-02-03 21:09:54 +0000 |
commit | dc2316de9c7a7168263e7a367b4c69189f9bc232 (patch) | |
tree | 57b639a77d585f5ded98f283d24a02617faf5b1a /Agent_Manager.cs | |
parent | (no commit message) (diff) | |
download | opensim-SC-dc2316de9c7a7168263e7a367b4c69189f9bc232.zip opensim-SC-dc2316de9c7a7168263e7a367b4c69189f9bc232.tar.gz opensim-SC-dc2316de9c7a7168263e7a367b4c69189f9bc232.tar.bz2 opensim-SC-dc2316de9c7a7168263e7a367b4c69189f9bc232.tar.xz |
Basic Inventory support and clean up
Diffstat (limited to '')
-rw-r--r-- | Agent_Manager.cs | 367 |
1 files changed, 177 insertions, 190 deletions
diff --git a/Agent_Manager.cs b/Agent_Manager.cs index 2f5ceba..769ee2a 100644 --- a/Agent_Manager.cs +++ b/Agent_Manager.cs | |||
@@ -207,30 +207,18 @@ namespace OpenSim | |||
207 | /// <param name="name"></param> | 207 | /// <param name="name"></param> |
208 | private void SetupTemplate(string name) | 208 | private void SetupTemplate(string name) |
209 | { | 209 | { |
210 | /*ObjectUpdatePacket objupdate=new ObjectUpdatePacket(); | 210 | |
211 | objupdate.RegionData.RegionHandle=1096213093147648; | ||
212 | objupdate.RegionData.TimeDilation=64096; | ||
213 | objupdate.ObjectData=new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock[1]; | ||
214 | */ | ||
215 | int i=0; | 211 | int i=0; |
216 | FileInfo fInfo = new FileInfo(name); | 212 | FileInfo fInfo = new FileInfo(name); |
217 | |||
218 | long numBytes = fInfo.Length; | 213 | long numBytes = fInfo.Length; |
219 | |||
220 | FileStream fStream = new FileStream(name, FileMode.Open, FileAccess.Read); | 214 | FileStream fStream = new FileStream(name, FileMode.Open, FileAccess.Read); |
221 | |||
222 | BinaryReader br = new BinaryReader(fStream); | 215 | BinaryReader br = new BinaryReader(fStream); |
223 | |||
224 | byte [] data1 = br.ReadBytes((int)numBytes); | 216 | byte [] data1 = br.ReadBytes((int)numBytes); |
225 | |||
226 | br.Close(); | 217 | br.Close(); |
227 | |||
228 | fStream.Close(); | 218 | fStream.Close(); |
229 | 219 | ||
230 | 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); |
231 | 221 | ||
232 | //objupdate.ObjectData[0]=objdata; | ||
233 | |||
234 | System.Text.Encoding enc = System.Text.Encoding.ASCII; | 222 | System.Text.Encoding enc = System.Text.Encoding.ASCII; |
235 | libsecondlife.LLVector3 pos=new LLVector3(objdata.ObjectData, 16); | 223 | libsecondlife.LLVector3 pos=new LLVector3(objdata.ObjectData, 16); |
236 | pos.X=100f; | 224 | pos.X=100f; |
@@ -238,8 +226,7 @@ namespace OpenSim | |||
238 | 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"); |
239 | libsecondlife.LLVector3 pos2=new LLVector3(13.981f,100.0f,20.0f); | 227 | libsecondlife.LLVector3 pos2=new LLVector3(13.981f,100.0f,20.0f); |
240 | //objdata.FullID=user.AgentID; | 228 | //objdata.FullID=user.AgentID; |
241 | byte[] pb=pos.GetBytes(); | 229 | byte[] pb=pos.GetBytes(); |
242 | |||
243 | Array.Copy(pb,0,objdata.ObjectData,16,pb.Length); | 230 | Array.Copy(pb,0,objdata.ObjectData,16,pb.Length); |
244 | 231 | ||
245 | AvatarTemplate=objdata; | 232 | AvatarTemplate=objdata; |
@@ -254,50 +241,50 @@ namespace OpenSim | |||
254 | { | 241 | { |
255 | 242 | ||
256 | //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 |
257 | string data_path=System.AppDomain.CurrentDomain.BaseDirectory + @"\layer_data\"; | 244 | string data_path=System.AppDomain.CurrentDomain.BaseDirectory + @"\layer_data\"; |
258 | 245 | ||
259 | //send layerdata | 246 | //send layerdata |
260 | LayerDataPacket layerpack=new LayerDataPacket(); | 247 | LayerDataPacket layerpack=new LayerDataPacket(); |
261 | layerpack.LayerID.Type=76; | 248 | layerpack.LayerID.Type=76; |
262 | this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata0.dat"); | 249 | this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata0.dat"); |
263 | 250 | ||
264 | LayerDataPacket layerpack1=new LayerDataPacket(); | 251 | LayerDataPacket layerpack1=new LayerDataPacket(); |
265 | layerpack1.LayerID.Type=76; | 252 | layerpack1.LayerID.Type=76; |
266 | this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata1.dat"); | 253 | this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata1.dat"); |
267 | 254 | ||
268 | LayerDataPacket layerpack2=new LayerDataPacket(); | 255 | LayerDataPacket layerpack2=new LayerDataPacket(); |
269 | layerpack2.LayerID.Type=56; | 256 | layerpack2.LayerID.Type=56; |
270 | this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata2.dat"); | 257 | this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata2.dat"); |
271 | 258 | ||
272 | LayerDataPacket layerpack3=new LayerDataPacket(); | 259 | LayerDataPacket layerpack3=new LayerDataPacket(); |
273 | layerpack3.LayerID.Type=55; | 260 | layerpack3.LayerID.Type=55; |
274 | this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata3.dat"); | 261 | this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata3.dat"); |
275 | 262 | ||
276 | LayerDataPacket layerpack4=new LayerDataPacket(); | 263 | LayerDataPacket layerpack4=new LayerDataPacket(); |
277 | layerpack4.LayerID.Type=56; | 264 | layerpack4.LayerID.Type=56; |
278 | this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata4.dat"); | 265 | this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata4.dat"); |
279 | 266 | ||
280 | LayerDataPacket layerpack5=new LayerDataPacket(); | 267 | LayerDataPacket layerpack5=new LayerDataPacket(); |
281 | layerpack5.LayerID.Type=55; | 268 | layerpack5.LayerID.Type=55; |
282 | this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata5.dat"); | 269 | this.SendLayerData(User_info,ref layerpack,data_path+@"layerdata5.dat"); |
283 | 270 | ||
284 | //send intial set of captured prims data? | 271 | //send intial set of captured prims data? |
285 | this.Prim_Manager.ReadPrimDatabase( "objectdatabase.ini",User_info); | 272 | this.Prim_Manager.ReadPrimDatabase( "objectdatabase.ini",User_info); |
286 | 273 | ||
287 | //send prims that have been created by users | 274 | //send prims that have been created by users |
288 | //prim_man.send_existing_prims(User_info); | 275 | //prim_man.send_existing_prims(User_info); |
289 | 276 | ||
290 | //send update about clients avatar | 277 | //send update about clients avatar |
291 | this.SendInitialAvatarPosition(User_info); | 278 | this.SendInitialAvatarPosition(User_info); |
292 | 279 | ||
293 | //send updates about all other users | 280 | //send updates about all other users |
294 | foreach (KeyValuePair<libsecondlife.LLUUID,AvatarData> kp in this.AgentList) | 281 | foreach (KeyValuePair<libsecondlife.LLUUID,AvatarData> kp in this.AgentList) |
282 | { | ||
283 | if(kp.Value.NetInfo.AgentID!=User_info.AgentID) | ||
295 | { | 284 | { |
296 | if(kp.Value.NetInfo.AgentID!=User_info.AgentID) | 285 | this.SendOtherAvatarPosition(User_info,kp.Value); |
297 | { | 286 | } |
298 | this.SendOtherAvatarPosition(User_info,kp.Value); | 287 | } |
299 | } | ||
300 | } | ||
301 | } | 288 | } |
302 | 289 | ||
303 | /// <summary> | 290 | /// <summary> |
@@ -456,26 +443,26 @@ namespace OpenSim | |||
456 | /// <param name="line"></param> | 443 | /// <param name="line"></param> |
457 | public void SendChatMessage(User_Agent_info User_info, string line) | 444 | public void SendChatMessage(User_Agent_info User_info, string line) |
458 | { | 445 | { |
459 | libsecondlife.Packets.ChatFromSimulatorPacket reply=new ChatFromSimulatorPacket(); | 446 | libsecondlife.Packets.ChatFromSimulatorPacket reply=new ChatFromSimulatorPacket(); |
460 | reply.ChatData.Audible=1; | 447 | reply.ChatData.Audible=1; |
461 | reply.ChatData.Message=enc.GetBytes(line); | 448 | reply.ChatData.Message=enc.GetBytes(line); |
462 | reply.ChatData.ChatType=1; | 449 | reply.ChatData.ChatType=1; |
463 | reply.ChatData.SourceType=1; | 450 | reply.ChatData.SourceType=1; |
464 | reply.ChatData.Position=new LLVector3(120,100,21); //should set to actual position | 451 | reply.ChatData.Position=new LLVector3(120,100,21); //should set to actual position |
465 | reply.ChatData.FromName=enc.GetBytes(User_info.first_name +" "+User_info.last_name +"\0"); //enc.GetBytes("Echo: \0"); //and actual name | 452 | reply.ChatData.FromName=enc.GetBytes(User_info.first_name +" "+User_info.last_name +"\0"); //enc.GetBytes("Echo: \0"); //and actual name |
466 | reply.ChatData.OwnerID=User_info.AgentID; | 453 | reply.ChatData.OwnerID=User_info.AgentID; |
467 | reply.ChatData.SourceID=User_info.AgentID; | 454 | reply.ChatData.SourceID=User_info.AgentID; |
468 | //echo to sender | 455 | //echo to sender |
469 | server.SendPacket(reply,true,User_info); | 456 | server.SendPacket(reply,true,User_info); |
470 | 457 | ||
471 | //send to all users | 458 | //send to all users |
472 | foreach (KeyValuePair<libsecondlife.LLUUID,AvatarData> kp in this.AgentList) | 459 | foreach (KeyValuePair<libsecondlife.LLUUID,AvatarData> kp in this.AgentList) |
473 | { | 460 | { |
474 | if(kp.Value.NetInfo.AgentID!=User_info.AgentID) | 461 | if(kp.Value.NetInfo.AgentID!=User_info.AgentID) |
475 | { | 462 | { |
476 | server.SendPacket(reply,true,kp.Value.NetInfo); | 463 | server.SendPacket(reply,true,kp.Value.NetInfo); |
477 | } | 464 | } |
478 | } | 465 | } |
479 | } | 466 | } |
480 | 467 | ||
481 | /// <summary> | 468 | /// <summary> |
@@ -490,121 +477,121 @@ namespace OpenSim | |||
490 | /// <param name="body"></param> | 477 | /// <param name="body"></param> |
491 | public void SendMoveCommand(User_Agent_info user, bool stop,float x, float y, float z, uint av_id, libsecondlife.LLQuaternion body) | 478 | public void SendMoveCommand(User_Agent_info user, bool stop,float x, float y, float z, uint av_id, libsecondlife.LLQuaternion body) |
492 | { | 479 | { |
493 | uint ID=user.localID; | 480 | uint ID=user.localID; |
494 | //ID=av_id; | 481 | //ID=av_id; |
495 | byte[] bytes=new byte[60]; | 482 | byte[] bytes=new byte[60]; |
496 | 483 | ||
497 | ImprovedTerseObjectUpdatePacket im=new ImprovedTerseObjectUpdatePacket(); | 484 | ImprovedTerseObjectUpdatePacket im=new ImprovedTerseObjectUpdatePacket(); |
498 | im.RegionData.RegionHandle=Globals.Instance.RegionHandle;; | 485 | im.RegionData.RegionHandle=Globals.Instance.RegionHandle;; |
499 | im.RegionData.TimeDilation=64096; | 486 | im.RegionData.TimeDilation=64096; |
500 | 487 | ||
501 | im.ObjectData=new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; | 488 | im.ObjectData=new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; |
502 | int i=0; | 489 | int i=0; |
503 | ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat=new ImprovedTerseObjectUpdatePacket.ObjectDataBlock(); | 490 | ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat=new ImprovedTerseObjectUpdatePacket.ObjectDataBlock(); |
504 | 491 | ||
505 | im.ObjectData[0]=dat; | 492 | im.ObjectData[0]=dat; |
506 | 493 | ||
507 | dat.TextureEntry=AvatarTemplate.TextureEntry; | 494 | dat.TextureEntry=AvatarTemplate.TextureEntry; |
508 | libsecondlife.LLVector3 pos2=new LLVector3(x,y,z); | 495 | libsecondlife.LLVector3 pos2=new LLVector3(x,y,z); |
509 | 496 | ||
510 | bytes[i++] = (byte)(ID % 256); | 497 | bytes[i++] = (byte)(ID % 256); |
511 | bytes[i++] = (byte)((ID >> 8) % 256); | 498 | bytes[i++] = (byte)((ID >> 8) % 256); |
512 | bytes[i++] = (byte)((ID >> 16) % 256); | 499 | bytes[i++] = (byte)((ID >> 16) % 256); |
513 | bytes[i++] = (byte)((ID >> 24) % 256); | 500 | bytes[i++] = (byte)((ID >> 24) % 256); |
514 | 501 | ||
515 | bytes[i++]=0; | 502 | bytes[i++]=0; |
516 | bytes[i++]=1; | 503 | bytes[i++]=1; |
517 | 504 | ||
518 | i+=14; | 505 | i+=14; |
519 | bytes[i++]=128; | 506 | bytes[i++]=128; |
520 | bytes[i++]=63; | 507 | bytes[i++]=63; |
521 | byte[] pb=pos2.GetBytes(); | 508 | byte[] pb=pos2.GetBytes(); |
522 | 509 | ||
523 | Array.Copy(pb,0,bytes,i,pb.Length); | 510 | Array.Copy(pb,0,bytes,i,pb.Length); |
524 | i+=12; | 511 | i+=12; |
525 | ushort ac=32767; | 512 | ushort ac=32767; |
526 | Axiom.MathLib.Vector3 v3=new Axiom.MathLib.Vector3(1,0,0); | 513 | Axiom.MathLib.Vector3 v3=new Axiom.MathLib.Vector3(1,0,0); |
527 | Axiom.MathLib.Quaternion q=new Axiom.MathLib.Quaternion(body.W,body.X,body.Y,body.Z); | 514 | Axiom.MathLib.Quaternion q=new Axiom.MathLib.Quaternion(body.W,body.X,body.Y,body.Z); |
528 | Axiom.MathLib.Vector3 direc=q*v3; | 515 | Axiom.MathLib.Vector3 direc=q*v3; |
529 | direc.Normalize(); | 516 | direc.Normalize(); |
530 | 517 | ||
531 | direc=direc*(0.03f); | 518 | direc=direc*(0.03f); |
532 | direc.x+=1; | 519 | direc.x+=1; |
533 | direc.y+=1; | 520 | direc.y+=1; |
534 | direc.z+=1; | 521 | direc.z+=1; |
535 | ushort dx,dy,dz; | 522 | ushort dx,dy,dz; |
536 | dx=(ushort)(32768*direc.x); | 523 | dx=(ushort)(32768*direc.x); |
537 | dy=(ushort)(32768*direc.y); | 524 | dy=(ushort)(32768*direc.y); |
538 | dz=(ushort)(32768*direc.z); | 525 | dz=(ushort)(32768*direc.z); |
539 | 526 | ||
540 | //vel | 527 | //vel |
541 | if(!stop) | 528 | if(!stop) |
542 | { | 529 | { |
543 | bytes[i++] = (byte)(dx % 256); | 530 | bytes[i++] = (byte)(dx % 256); |
544 | bytes[i++] = (byte)((dx >> 8) % 256); | 531 | bytes[i++] = (byte)((dx >> 8) % 256); |
545 | 532 | ||
546 | bytes[i++] = (byte)(dy % 256); | 533 | bytes[i++] = (byte)(dy % 256); |
547 | bytes[i++] = (byte)((dy >> 8) % 256); | 534 | bytes[i++] = (byte)((dy >> 8) % 256); |
548 | 535 | ||
549 | bytes[i++] = (byte)(dz % 256); | 536 | bytes[i++] = (byte)(dz % 256); |
550 | bytes[i++] = (byte)((dz >> 8) % 256); | 537 | bytes[i++] = (byte)((dz >> 8) % 256); |
551 | } | 538 | } |
552 | else | 539 | else |
553 | { | 540 | { |
554 | bytes[i++] = (byte)(ac % 256); | 541 | bytes[i++] = (byte)(ac % 256); |
555 | bytes[i++] = (byte)((ac >> 8) % 256); | 542 | bytes[i++] = (byte)((ac >> 8) % 256); |
556 | 543 | ||
557 | bytes[i++] = (byte)(ac % 256); | 544 | bytes[i++] = (byte)(ac % 256); |
558 | bytes[i++] = (byte)((ac >> 8) % 256); | 545 | bytes[i++] = (byte)((ac >> 8) % 256); |
559 | 546 | ||
560 | bytes[i++] = (byte)(ac % 256); | 547 | bytes[i++] = (byte)(ac % 256); |
561 | bytes[i++] = (byte)((ac >> 8) % 256); | 548 | bytes[i++] = (byte)((ac >> 8) % 256); |
562 | } | 549 | } |
563 | //accel | 550 | //accel |
564 | bytes[i++] = (byte)(ac % 256); | 551 | bytes[i++] = (byte)(ac % 256); |
565 | bytes[i++] = (byte)((ac >> 8) % 256); | 552 | bytes[i++] = (byte)((ac >> 8) % 256); |
566 | 553 | ||
567 | bytes[i++] = (byte)(ac % 256); | 554 | bytes[i++] = (byte)(ac % 256); |
568 | bytes[i++] = (byte)((ac >> 8) % 256); | 555 | bytes[i++] = (byte)((ac >> 8) % 256); |
569 | 556 | ||
570 | bytes[i++] = (byte)(ac % 256); | 557 | bytes[i++] = (byte)(ac % 256); |
571 | bytes[i++] = (byte)((ac >> 8) % 256); | 558 | bytes[i++] = (byte)((ac >> 8) % 256); |
572 | 559 | ||
573 | //rot | 560 | //rot |
574 | bytes[i++] = (byte)(ac % 256); | 561 | bytes[i++] = (byte)(ac % 256); |
575 | bytes[i++] = (byte)((ac >> 8) % 256); | 562 | bytes[i++] = (byte)((ac >> 8) % 256); |
576 | 563 | ||
577 | bytes[i++] = (byte)(ac % 256); | 564 | bytes[i++] = (byte)(ac % 256); |
578 | bytes[i++] = (byte)((ac >> 8) % 256); | 565 | bytes[i++] = (byte)((ac >> 8) % 256); |
579 | 566 | ||
580 | bytes[i++] = (byte)(ac % 256); | 567 | bytes[i++] = (byte)(ac % 256); |
581 | bytes[i++] = (byte)((ac >> 8) % 256); | 568 | bytes[i++] = (byte)((ac >> 8) % 256); |
582 | 569 | ||
583 | bytes[i++] = (byte)(ac % 256); | 570 | bytes[i++] = (byte)(ac % 256); |
584 | bytes[i++] = (byte)((ac >> 8) % 256); | 571 | bytes[i++] = (byte)((ac >> 8) % 256); |
585 | 572 | ||
586 | //rotation vel | 573 | //rotation vel |
587 | bytes[i++] = (byte)(ac % 256); | 574 | bytes[i++] = (byte)(ac % 256); |
588 | bytes[i++] = (byte)((ac >> 8) % 256); | 575 | bytes[i++] = (byte)((ac >> 8) % 256); |
589 | 576 | ||
590 | bytes[i++] = (byte)(ac % 256); | 577 | bytes[i++] = (byte)(ac % 256); |
591 | bytes[i++] = (byte)((ac >> 8) % 256); | 578 | bytes[i++] = (byte)((ac >> 8) % 256); |
592 | 579 | ||
593 | bytes[i++] = (byte)(ac % 256); | 580 | bytes[i++] = (byte)(ac % 256); |
594 | bytes[i++] = (byte)((ac >> 8) % 256); | 581 | bytes[i++] = (byte)((ac >> 8) % 256); |
595 | 582 | ||
596 | dat.Data=bytes; | 583 | dat.Data=bytes; |
597 | 584 | ||
598 | server.SendPacket(im,true,user); | 585 | server.SendPacket(im,true,user); |
599 | 586 | ||
600 | //should send to all users. | 587 | //should send to all users. |
601 | foreach (KeyValuePair<libsecondlife.LLUUID,AvatarData> kp in this.AgentList) | 588 | foreach (KeyValuePair<libsecondlife.LLUUID,AvatarData> kp in this.AgentList) |
602 | { | 589 | { |
603 | if(kp.Value.NetInfo.AgentID!=user.AgentID) | 590 | if(kp.Value.NetInfo.AgentID!=user.AgentID) |
604 | { | 591 | { |
605 | server.SendPacket(im,true,kp.Value.NetInfo); | 592 | server.SendPacket(im,true,kp.Value.NetInfo); |
606 | } | 593 | } |
607 | } | 594 | } |
608 | } | 595 | } |
609 | 596 | ||
610 | /// <summary> | 597 | /// <summary> |