diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/OpenSim.Region/World/Primitive.cs | 2 | ||||
-rw-r--r-- | OpenSim/OpenSim.Region/World/World.cs | 21 | ||||
-rw-r--r-- | OpenSim/OpenSim.RegionServer/ClientView.API.cs | 40 |
3 files changed, 56 insertions, 7 deletions
diff --git a/OpenSim/OpenSim.Region/World/Primitive.cs b/OpenSim/OpenSim.Region/World/Primitive.cs index 99e349d..d7c1e8d 100644 --- a/OpenSim/OpenSim.Region/World/Primitive.cs +++ b/OpenSim/OpenSim.Region/World/Primitive.cs | |||
@@ -440,7 +440,7 @@ namespace OpenSim.Region | |||
440 | PData.PathTwistBegin = addPacket.ObjectData.PathTwistBegin; | 440 | PData.PathTwistBegin = addPacket.ObjectData.PathTwistBegin; |
441 | LLVector3 pos1 = addPacket.ObjectData.RayEnd; | 441 | LLVector3 pos1 = addPacket.ObjectData.RayEnd; |
442 | this.primData.FullID = this.uuid = LLUUID.Random(); | 442 | this.primData.FullID = this.uuid = LLUUID.Random(); |
443 | this.localid = (uint)(localID); | 443 | this.primData.LocalID = this.localid = (uint)(localID); |
444 | this.primData.Position = this.Pos = pos1; | 444 | this.primData.Position = this.Pos = pos1; |
445 | 445 | ||
446 | this.updateFlag = 1; | 446 | this.updateFlag = 1; |
diff --git a/OpenSim/OpenSim.Region/World/World.cs b/OpenSim/OpenSim.Region/World/World.cs index e316e27..3415f08 100644 --- a/OpenSim/OpenSim.Region/World/World.cs +++ b/OpenSim/OpenSim.Region/World/World.cs | |||
@@ -20,6 +20,8 @@ using OpenSim.Region.Estate; | |||
20 | 20 | ||
21 | namespace OpenSim.Region | 21 | namespace OpenSim.Region |
22 | { | 22 | { |
23 | public delegate bool FilterAvatarList(Avatar avatar); | ||
24 | |||
23 | public partial class World : WorldBase, ILocalStorageReceiver, IScriptAPI | 25 | public partial class World : WorldBase, ILocalStorageReceiver, IScriptAPI |
24 | { | 26 | { |
25 | protected System.Timers.Timer m_heartbeatTimer = new System.Timers.Timer(); | 27 | protected System.Timers.Timer m_heartbeatTimer = new System.Timers.Timer(); |
@@ -592,6 +594,25 @@ namespace OpenSim.Region | |||
592 | return result; | 594 | return result; |
593 | } | 595 | } |
594 | 596 | ||
597 | /// <summary> | ||
598 | /// Request a filtered list of Avatars in this World | ||
599 | /// </summary> | ||
600 | /// <returns></returns> | ||
601 | public List<Avatar> RequestAvatarList(FilterAvatarList filter) | ||
602 | { | ||
603 | List<Avatar> result = new List<Avatar>(); | ||
604 | |||
605 | foreach (Avatar avatar in Avatars.Values) | ||
606 | { | ||
607 | if (filter(avatar)) | ||
608 | { | ||
609 | result.Add(avatar); | ||
610 | } | ||
611 | } | ||
612 | |||
613 | return result; | ||
614 | } | ||
615 | |||
595 | public Avatar RequestAvatar(LLUUID avatarID) | 616 | public Avatar RequestAvatar(LLUUID avatarID) |
596 | { | 617 | { |
597 | if (this.Avatars.ContainsKey(avatarID)) | 618 | if (this.Avatars.ContainsKey(avatarID)) |
diff --git a/OpenSim/OpenSim.RegionServer/ClientView.API.cs b/OpenSim/OpenSim.RegionServer/ClientView.API.cs index 780035c..f7d98bb 100644 --- a/OpenSim/OpenSim.RegionServer/ClientView.API.cs +++ b/OpenSim/OpenSim.RegionServer/ClientView.API.cs | |||
@@ -448,6 +448,34 @@ namespace OpenSim | |||
448 | /// Sends a full ObjectUpdatePacket to a client to inform it of a new primitive | 448 | /// Sends a full ObjectUpdatePacket to a client to inform it of a new primitive |
449 | /// or big changes to a existing primitive. | 449 | /// or big changes to a existing primitive. |
450 | /// </summary> | 450 | /// </summary> |
451 | /// <param name="regionHandle"></param> | ||
452 | /// <param name="timeDilation"></param> | ||
453 | /// <param name="localID"></param> | ||
454 | /// <param name="primData"></param> | ||
455 | /// <param name="pos"></param> | ||
456 | /// <param name="rotation"></param> | ||
457 | /// <param name="textureID"></param> | ||
458 | public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLQuaternion rotation, LLUUID textureID) | ||
459 | { | ||
460 | ObjectUpdatePacket outPacket = new ObjectUpdatePacket(); | ||
461 | outPacket.RegionData.RegionHandle = regionHandle; | ||
462 | outPacket.RegionData.TimeDilation = timeDilation; | ||
463 | outPacket.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; | ||
464 | outPacket.ObjectData[0] = this.CreatePrimUpdateBlock(primData, textureID); | ||
465 | outPacket.ObjectData[0].ID = localID; | ||
466 | outPacket.ObjectData[0].FullID = primData.FullID; | ||
467 | byte[] pb = pos.GetBytes(); | ||
468 | Array.Copy(pb, 0, outPacket.ObjectData[0].ObjectData, 0, pb.Length); | ||
469 | byte[] rot = rotation.GetBytes(); | ||
470 | Array.Copy(rot, 0, outPacket.ObjectData[0].ObjectData, 48, rot.Length); | ||
471 | OutPacket(outPacket); | ||
472 | } | ||
473 | |||
474 | /// <summary> | ||
475 | /// Sends a full ObjectUpdatePacket to a client to inform it of a new primitive | ||
476 | /// or big changes to a existing primitive. | ||
477 | /// uses default rotation | ||
478 | /// </summary> | ||
451 | /// <param name="primData"></param> | 479 | /// <param name="primData"></param> |
452 | /// <param name="pos"></param> | 480 | /// <param name="pos"></param> |
453 | public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID) | 481 | public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID) |
@@ -473,9 +501,9 @@ namespace OpenSim | |||
473 | protected ObjectUpdatePacket.ObjectDataBlock CreatePrimUpdateBlock(PrimData primData, LLUUID textureID) | 501 | protected ObjectUpdatePacket.ObjectDataBlock CreatePrimUpdateBlock(PrimData primData, LLUUID textureID) |
474 | { | 502 | { |
475 | ObjectUpdatePacket.ObjectDataBlock objupdate = new ObjectUpdatePacket.ObjectDataBlock(); | 503 | ObjectUpdatePacket.ObjectDataBlock objupdate = new ObjectUpdatePacket.ObjectDataBlock(); |
476 | this.SetDefaultPrimPacketValues(objupdate, textureID); | 504 | this.SetDefaultPrimPacketValues(objupdate); |
477 | objupdate.UpdateFlags = 32 + 65536 + 131072 + 256 + 4 + 8 + 2048 + 524288 + 268435456; | 505 | objupdate.UpdateFlags = 32 + 65536 + 131072 + 256 + 4 + 8 + 2048 + 524288 + 268435456; |
478 | this.SetPrimPacketShapeData(objupdate, primData); | 506 | this.SetPrimPacketShapeData(objupdate, primData, textureID); |
479 | 507 | ||
480 | return objupdate; | 508 | return objupdate; |
481 | } | 509 | } |
@@ -484,7 +512,7 @@ namespace OpenSim | |||
484 | /// Set some default values in a ObjectUpdatePacket | 512 | /// Set some default values in a ObjectUpdatePacket |
485 | /// </summary> | 513 | /// </summary> |
486 | /// <param name="objdata"></param> | 514 | /// <param name="objdata"></param> |
487 | protected void SetDefaultPrimPacketValues(ObjectUpdatePacket.ObjectDataBlock objdata, LLUUID textureID) | 515 | protected void SetDefaultPrimPacketValues(ObjectUpdatePacket.ObjectDataBlock objdata) |
488 | { | 516 | { |
489 | objdata.PSBlock = new byte[0]; | 517 | objdata.PSBlock = new byte[0]; |
490 | objdata.ExtraParams = new byte[1]; | 518 | objdata.ExtraParams = new byte[1]; |
@@ -497,8 +525,6 @@ namespace OpenSim | |||
497 | objdata.Material = 3; | 525 | objdata.Material = 3; |
498 | objdata.TextureAnim = new byte[0]; | 526 | objdata.TextureAnim = new byte[0]; |
499 | objdata.Sound = LLUUID.Zero; | 527 | objdata.Sound = LLUUID.Zero; |
500 | LLObject.TextureEntry ntex = new LLObject.TextureEntry(textureID); | ||
501 | objdata.TextureEntry = ntex.ToBytes(); | ||
502 | objdata.State = 0; | 528 | objdata.State = 0; |
503 | objdata.Data = new byte[0]; | 529 | objdata.Data = new byte[0]; |
504 | 530 | ||
@@ -512,8 +538,10 @@ namespace OpenSim | |||
512 | /// </summary> | 538 | /// </summary> |
513 | /// <param name="objectData"></param> | 539 | /// <param name="objectData"></param> |
514 | /// <param name="primData"></param> | 540 | /// <param name="primData"></param> |
515 | protected void SetPrimPacketShapeData(ObjectUpdatePacket.ObjectDataBlock objectData, PrimData primData) | 541 | protected void SetPrimPacketShapeData(ObjectUpdatePacket.ObjectDataBlock objectData, PrimData primData, LLUUID textureID) |
516 | { | 542 | { |
543 | LLObject.TextureEntry ntex = new LLObject.TextureEntry(textureID); | ||
544 | objectData.TextureEntry = ntex.ToBytes(); | ||
517 | objectData.OwnerID = primData.OwnerID; | 545 | objectData.OwnerID = primData.OwnerID; |
518 | objectData.PCode = primData.PCode; | 546 | objectData.PCode = primData.PCode; |
519 | objectData.PathBegin =primData.PathBegin; | 547 | objectData.PathBegin =primData.PathBegin; |