aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/OpenSim.RegionServer/ClientView.API.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/OpenSim.RegionServer/ClientView.API.cs333
1 files changed, 195 insertions, 138 deletions
diff --git a/OpenSim/OpenSim.RegionServer/ClientView.API.cs b/OpenSim/OpenSim.RegionServer/ClientView.API.cs
index b9773c6..3badec9 100644
--- a/OpenSim/OpenSim.RegionServer/ClientView.API.cs
+++ b/OpenSim/OpenSim.RegionServer/ClientView.API.cs
@@ -147,7 +147,7 @@ namespace OpenSim
147 147
148 handshake.RegionInfo.RegionFlags = (uint)regionInfo.estateSettings.regionFlags; 148 handshake.RegionInfo.RegionFlags = (uint)regionInfo.estateSettings.regionFlags;
149 149
150 handshake.RegionInfo.SimName = _enc.GetBytes(regionInfo.estateSettings.waterHeight + "\0"); 150 handshake.RegionInfo.SimName = _enc.GetBytes(regionInfo.RegionName + "\0");
151 handshake.RegionInfo.SimOwner = regionInfo.MasterAvatarAssignedUUID; 151 handshake.RegionInfo.SimOwner = regionInfo.MasterAvatarAssignedUUID;
152 handshake.RegionInfo.TerrainBase0 = regionInfo.estateSettings.terrainBase0; 152 handshake.RegionInfo.TerrainBase0 = regionInfo.estateSettings.terrainBase0;
153 handshake.RegionInfo.TerrainBase1 = regionInfo.estateSettings.terrainBase1; 153 handshake.RegionInfo.TerrainBase1 = regionInfo.estateSettings.terrainBase1;
@@ -266,6 +266,12 @@ namespace OpenSim
266 } 266 }
267 } 267 }
268 268
269 /// <summary>
270 ///
271 /// </summary>
272 /// <param name="neighbourHandle"></param>
273 /// <param name="neighbourIP"></param>
274 /// <param name="neighbourPort"></param>
269 public void InformClientOfNeighbour(ulong neighbourHandle, System.Net.IPAddress neighbourIP, ushort neighbourPort) 275 public void InformClientOfNeighbour(ulong neighbourHandle, System.Net.IPAddress neighbourIP, ushort neighbourPort)
270 { 276 {
271 EnableSimulatorPacket enablesimpacket = new EnableSimulatorPacket(); 277 EnableSimulatorPacket enablesimpacket = new EnableSimulatorPacket();
@@ -281,6 +287,10 @@ namespace OpenSim
281 OutPacket(enablesimpacket); 287 OutPacket(enablesimpacket);
282 } 288 }
283 289
290 /// <summary>
291 ///
292 /// </summary>
293 /// <returns></returns>
284 public AgentCircuitData RequestClientInfo() 294 public AgentCircuitData RequestClientInfo()
285 { 295 {
286 AgentCircuitData agentData = new AgentCircuitData(); 296 AgentCircuitData agentData = new AgentCircuitData();
@@ -383,70 +393,6 @@ namespace OpenSim
383 393
384 } 394 }
385 395
386
387 /// <summary>
388 ///
389 /// </summary>
390 /// <param name="objdata"></param>
391 protected void SetDefaultAvatarPacketValues(ref ObjectUpdatePacket.ObjectDataBlock objdata)
392 {
393 objdata.PSBlock = new byte[0];
394 objdata.ExtraParams = new byte[1];
395 objdata.MediaURL = new byte[0];
396 objdata.NameValue = new byte[0];
397 objdata.Text = new byte[0];
398 objdata.TextColor = new byte[4];
399 objdata.JointAxisOrAnchor = new LLVector3(0, 0, 0);
400 objdata.JointPivot = new LLVector3(0, 0, 0);
401 objdata.Material = 4;
402 objdata.TextureAnim = new byte[0];
403 objdata.Sound = LLUUID.Zero;
404 LLObject.TextureEntry ntex = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-5005-000000000005"));
405 objdata.TextureEntry = ntex.ToBytes();
406 objdata.State = 0;
407 objdata.Data = new byte[0];
408
409 objdata.ObjectData = new byte[76];
410 objdata.ObjectData[15] = 128;
411 objdata.ObjectData[16] = 63;
412 objdata.ObjectData[56] = 128;
413 objdata.ObjectData[61] = 102;
414 objdata.ObjectData[62] = 40;
415 objdata.ObjectData[63] = 61;
416 objdata.ObjectData[64] = 189;
417 }
418
419 /// <summary>
420 ///
421 /// </summary>
422 /// <returns></returns>
423 protected ObjectUpdatePacket.ObjectDataBlock CreateDefaultAvatarPacket()
424 {
425 libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock objdata = new ObjectUpdatePacket.ObjectDataBlock(); // new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock(data1, ref i);
426
427 SetDefaultAvatarPacketValues(ref objdata);
428 objdata.UpdateFlags = 61 + (9 << 8) + (130 << 16) + (16 << 24);
429 objdata.PathCurve = 16;
430 objdata.ProfileCurve = 1;
431 objdata.PathScaleX = 100;
432 objdata.PathScaleY = 100;
433 objdata.ParentID = 0;
434 objdata.OwnerID = LLUUID.Zero;
435 objdata.Scale = new LLVector3(1, 1, 1);
436 objdata.PCode = 47;
437 System.Text.Encoding enc = System.Text.Encoding.ASCII;
438 libsecondlife.LLVector3 pos = new LLVector3(objdata.ObjectData, 16);
439 pos.X = 100f;
440 objdata.ID = 8880000;
441 objdata.NameValue = enc.GetBytes("FirstName STRING RW SV Test \nLastName STRING RW SV User \0");
442 libsecondlife.LLVector3 pos2 = new LLVector3(100f, 100f, 23f);
443 //objdata.FullID=user.AgentID;
444 byte[] pb = pos.GetBytes();
445 Array.Copy(pb, 0, objdata.ObjectData, 16, pb.Length);
446
447 return objdata;
448 }
449
450 #endregion 396 #endregion
451 397
452 #region Primitive Packet/data Sending Methods 398 #region Primitive Packet/data Sending Methods
@@ -521,78 +467,13 @@ namespace OpenSim
521 } 467 }
522 468
523 /// <summary> 469 /// <summary>
524 /// Create the ObjectDataBlock for a ObjectUpdatePacket (for a Primitive) 470 ///
525 /// </summary>
526 /// <param name="primData"></param>
527 /// <returns></returns>
528 protected ObjectUpdatePacket.ObjectDataBlock CreatePrimUpdateBlock(PrimData primData, LLUUID textureID)
529 {
530 ObjectUpdatePacket.ObjectDataBlock objupdate = new ObjectUpdatePacket.ObjectDataBlock();
531 this.SetDefaultPrimPacketValues(objupdate);
532 objupdate.UpdateFlags = 32 + 65536 + 131072 + 256 + 4 + 8 + 2048 + 524288 + 268435456;
533 this.SetPrimPacketShapeData(objupdate, primData, textureID);
534
535 return objupdate;
536 }
537
538 /// <summary>
539 /// Set some default values in a ObjectUpdatePacket
540 /// </summary>
541 /// <param name="objdata"></param>
542 protected void SetDefaultPrimPacketValues(ObjectUpdatePacket.ObjectDataBlock objdata)
543 {
544 objdata.PSBlock = new byte[0];
545 objdata.ExtraParams = new byte[1];
546 objdata.MediaURL = new byte[0];
547 objdata.NameValue = new byte[0];
548 objdata.Text = new byte[0];
549 objdata.TextColor = new byte[4];
550 objdata.JointAxisOrAnchor = new LLVector3(0, 0, 0);
551 objdata.JointPivot = new LLVector3(0, 0, 0);
552 objdata.Material = 3;
553 objdata.TextureAnim = new byte[0];
554 objdata.Sound = LLUUID.Zero;
555 objdata.State = 0;
556 objdata.Data = new byte[0];
557
558 objdata.ObjectData = new byte[60];
559 objdata.ObjectData[46] = 128;
560 objdata.ObjectData[47] = 63;
561 }
562
563 /// <summary>
564 /// Copy the data from a PrimData object to a ObjectUpdatePacket
565 /// </summary> 471 /// </summary>
566 /// <param name="objectData"></param> 472 /// <param name="regionHandle"></param>
567 /// <param name="primData"></param> 473 /// <param name="timeDilation"></param>
568 protected void SetPrimPacketShapeData(ObjectUpdatePacket.ObjectDataBlock objectData, PrimData primData, LLUUID textureID) 474 /// <param name="localID"></param>
569 { 475 /// <param name="position"></param>
570 LLObject.TextureEntry ntex = new LLObject.TextureEntry(textureID); 476 /// <param name="rotation"></param>
571 objectData.TextureEntry = ntex.ToBytes();
572 objectData.OwnerID = primData.OwnerID;
573 objectData.PCode = primData.PCode;
574 objectData.PathBegin =primData.PathBegin;
575 objectData.PathEnd = primData.PathEnd;
576 objectData.PathScaleX = primData.PathScaleX;
577 objectData.PathScaleY = primData.PathScaleY;
578 objectData.PathShearX = primData.PathShearX;
579 objectData.PathShearY = primData.PathShearY;
580 objectData.PathSkew = primData.PathSkew;
581 objectData.ProfileBegin = primData.ProfileBegin;
582 objectData.ProfileEnd = primData.ProfileEnd;
583 objectData.Scale = primData.Scale;
584 objectData.PathCurve = primData.PathCurve;
585 objectData.ProfileCurve = primData.ProfileCurve;
586 objectData.ParentID = primData.ParentID;
587 objectData.ProfileHollow = primData.ProfileHollow;
588 objectData.PathRadiusOffset = primData.PathRadiusOffset;
589 objectData.PathRevolutions = primData.PathRevolutions;
590 objectData.PathTaperX = primData.PathTaperX;
591 objectData.PathTaperY = primData.PathTaperY;
592 objectData.PathTwist = primData.PathTwist;
593 objectData.PathTwistBegin = primData.PathTwistBegin;
594 }
595
596 public void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation) 477 public void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation)
597 { 478 {
598 ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket(); 479 ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket();
@@ -604,6 +485,12 @@ namespace OpenSim
604 this.OutPacket(terse); 485 this.OutPacket(terse);
605 } 486 }
606 487
488 #endregion
489
490 #endregion
491
492 #region Helper Methods
493
607 /// <summary> 494 /// <summary>
608 /// 495 ///
609 /// </summary> 496 /// </summary>
@@ -625,7 +512,7 @@ namespace OpenSim
625 bytes[i++] = (byte)((ID >> 24) % 256); 512 bytes[i++] = (byte)((ID >> 24) % 256);
626 bytes[i++] = 0; 513 bytes[i++] = 0;
627 bytes[i++] = 0; 514 bytes[i++] = 0;
628 515
629 byte[] pb = position.GetBytes(); 516 byte[] pb = position.GetBytes();
630 Array.Copy(pb, 0, bytes, i, pb.Length); 517 Array.Copy(pb, 0, bytes, i, pb.Length);
631 i += 12; 518 i += 12;
@@ -674,8 +561,178 @@ namespace OpenSim
674 dat.Data = bytes; 561 dat.Data = bytes;
675 return dat; 562 return dat;
676 } 563 }
677 #endregion
678 564
565
566 /// <summary>
567 /// Create the ObjectDataBlock for a ObjectUpdatePacket (for a Primitive)
568 /// </summary>
569 /// <param name="primData"></param>
570 /// <returns></returns>
571 protected ObjectUpdatePacket.ObjectDataBlock CreatePrimUpdateBlock(PrimData primData, LLUUID textureID)
572 {
573 ObjectUpdatePacket.ObjectDataBlock objupdate = new ObjectUpdatePacket.ObjectDataBlock();
574 this.SetDefaultPrimPacketValues(objupdate);
575 objupdate.UpdateFlags = 32 + 65536 + 131072 + 256 + 4 + 8 + 2048 + 524288 + 268435456;
576 this.SetPrimPacketShapeData(objupdate, primData, textureID);
577
578 return objupdate;
579 }
580
581 /// <summary>
582 /// Copy the data from a PrimData object to a ObjectUpdatePacket
583 /// </summary>
584 /// <param name="objectData"></param>
585 /// <param name="primData"></param>
586 protected void SetPrimPacketShapeData(ObjectUpdatePacket.ObjectDataBlock objectData, PrimData primData, LLUUID textureID)
587 {
588 LLObject.TextureEntry ntex = new LLObject.TextureEntry(textureID);
589 objectData.TextureEntry = ntex.ToBytes();
590 objectData.OwnerID = primData.OwnerID;
591 objectData.PCode = primData.PCode;
592 objectData.PathBegin = primData.PathBegin;
593 objectData.PathEnd = primData.PathEnd;
594 objectData.PathScaleX = primData.PathScaleX;
595 objectData.PathScaleY = primData.PathScaleY;
596 objectData.PathShearX = primData.PathShearX;
597 objectData.PathShearY = primData.PathShearY;
598 objectData.PathSkew = primData.PathSkew;
599 objectData.ProfileBegin = primData.ProfileBegin;
600 objectData.ProfileEnd = primData.ProfileEnd;
601 objectData.Scale = primData.Scale;
602 objectData.PathCurve = primData.PathCurve;
603 objectData.ProfileCurve = primData.ProfileCurve;
604 objectData.ParentID = primData.ParentID;
605 objectData.ProfileHollow = primData.ProfileHollow;
606 objectData.PathRadiusOffset = primData.PathRadiusOffset;
607 objectData.PathRevolutions = primData.PathRevolutions;
608 objectData.PathTaperX = primData.PathTaperX;
609 objectData.PathTaperY = primData.PathTaperY;
610 objectData.PathTwist = primData.PathTwist;
611 objectData.PathTwistBegin = primData.PathTwistBegin;
612 }
613
614 /// <summary>
615 /// Set some default values in a ObjectUpdatePacket
616 /// </summary>
617 /// <param name="objdata"></param>
618 protected void SetDefaultPrimPacketValues(ObjectUpdatePacket.ObjectDataBlock objdata)
619 {
620 objdata.PSBlock = new byte[0];
621 objdata.ExtraParams = new byte[1];
622 objdata.MediaURL = new byte[0];
623 objdata.NameValue = new byte[0];
624 objdata.Text = new byte[0];
625 objdata.TextColor = new byte[4];
626 objdata.JointAxisOrAnchor = new LLVector3(0, 0, 0);
627 objdata.JointPivot = new LLVector3(0, 0, 0);
628 objdata.Material = 3;
629 objdata.TextureAnim = new byte[0];
630 objdata.Sound = LLUUID.Zero;
631 objdata.State = 0;
632 objdata.Data = new byte[0];
633
634 objdata.ObjectData = new byte[60];
635 objdata.ObjectData[46] = 128;
636 objdata.ObjectData[47] = 63;
637 }
638
639
640 /// <summary>
641 ///
642 /// </summary>
643 /// <returns></returns>
644 protected ObjectUpdatePacket.ObjectDataBlock CreateDefaultAvatarPacket()
645 {
646 libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock objdata = new ObjectUpdatePacket.ObjectDataBlock(); // new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock(data1, ref i);
647
648 SetDefaultAvatarPacketValues(ref objdata);
649 objdata.UpdateFlags = 61 + (9 << 8) + (130 << 16) + (16 << 24);
650 objdata.PathCurve = 16;
651 objdata.ProfileCurve = 1;
652 objdata.PathScaleX = 100;
653 objdata.PathScaleY = 100;
654 objdata.ParentID = 0;
655 objdata.OwnerID = LLUUID.Zero;
656 objdata.Scale = new LLVector3(1, 1, 1);
657 objdata.PCode = 47;
658 System.Text.Encoding enc = System.Text.Encoding.ASCII;
659 libsecondlife.LLVector3 pos = new LLVector3(objdata.ObjectData, 16);
660 pos.X = 100f;
661 objdata.ID = 8880000;
662 objdata.NameValue = enc.GetBytes("FirstName STRING RW SV Test \nLastName STRING RW SV User \0");
663 libsecondlife.LLVector3 pos2 = new LLVector3(100f, 100f, 23f);
664 //objdata.FullID=user.AgentID;
665 byte[] pb = pos.GetBytes();
666 Array.Copy(pb, 0, objdata.ObjectData, 16, pb.Length);
667
668 return objdata;
669 }
670
671 /// <summary>
672 ///
673 /// </summary>
674 /// <param name="objdata"></param>
675 protected void SetDefaultAvatarPacketValues(ref ObjectUpdatePacket.ObjectDataBlock objdata)
676 {
677 objdata.PSBlock = new byte[0];
678 objdata.ExtraParams = new byte[1];
679 objdata.MediaURL = new byte[0];
680 objdata.NameValue = new byte[0];
681 objdata.Text = new byte[0];
682 objdata.TextColor = new byte[4];
683 objdata.JointAxisOrAnchor = new LLVector3(0, 0, 0);
684 objdata.JointPivot = new LLVector3(0, 0, 0);
685 objdata.Material = 4;
686 objdata.TextureAnim = new byte[0];
687 objdata.Sound = LLUUID.Zero;
688 LLObject.TextureEntry ntex = new LLObject.TextureEntry(new LLUUID("00000000-0000-0000-5005-000000000005"));
689 objdata.TextureEntry = ntex.ToBytes();
690 objdata.State = 0;
691 objdata.Data = new byte[0];
692
693 objdata.ObjectData = new byte[76];
694 objdata.ObjectData[15] = 128;
695 objdata.ObjectData[16] = 63;
696 objdata.ObjectData[56] = 128;
697 objdata.ObjectData[61] = 102;
698 objdata.ObjectData[62] = 40;
699 objdata.ObjectData[63] = 61;
700 objdata.ObjectData[64] = 189;
701 }
702
703 /// <summary>
704 ///
705 /// </summary>
706 /// <param name="addPacket"></param>
707 /// <returns></returns>
708 protected PrimData CreatePrimFromObjectAdd(ObjectAddPacket addPacket)
709 {
710 PrimData PData = new PrimData();
711 PData.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
712 PData.PCode = addPacket.ObjectData.PCode;
713 PData.PathBegin = addPacket.ObjectData.PathBegin;
714 PData.PathEnd = addPacket.ObjectData.PathEnd;
715 PData.PathScaleX = addPacket.ObjectData.PathScaleX;
716 PData.PathScaleY = addPacket.ObjectData.PathScaleY;
717 PData.PathShearX = addPacket.ObjectData.PathShearX;
718 PData.PathShearY = addPacket.ObjectData.PathShearY;
719 PData.PathSkew = addPacket.ObjectData.PathSkew;
720 PData.ProfileBegin = addPacket.ObjectData.ProfileBegin;
721 PData.ProfileEnd = addPacket.ObjectData.ProfileEnd;
722 PData.Scale = addPacket.ObjectData.Scale;
723 PData.PathCurve = addPacket.ObjectData.PathCurve;
724 PData.ProfileCurve = addPacket.ObjectData.ProfileCurve;
725 PData.ParentID = 0;
726 PData.ProfileHollow = addPacket.ObjectData.ProfileHollow;
727 PData.PathRadiusOffset = addPacket.ObjectData.PathRadiusOffset;
728 PData.PathRevolutions = addPacket.ObjectData.PathRevolutions;
729 PData.PathTaperX = addPacket.ObjectData.PathTaperX;
730 PData.PathTaperY = addPacket.ObjectData.PathTaperY;
731 PData.PathTwist = addPacket.ObjectData.PathTwist;
732 PData.PathTwistBegin = addPacket.ObjectData.PathTwistBegin;
733
734 return PData;
735 }
679 #endregion 736 #endregion
680 737
681 } 738 }