aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/InnerScene.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/InnerScene.cs')
-rw-r--r--OpenSim/Region/Environment/Scenes/InnerScene.cs152
1 files changed, 1 insertions, 151 deletions
diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs
index 2c8c323..9dba398 100644
--- a/OpenSim/Region/Environment/Scenes/InnerScene.cs
+++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs
@@ -447,157 +447,7 @@ namespace OpenSim.Region.Environment.Scenes
447 } 447 }
448 448
449 } 449 }
450 // Use the above method. 450
451 public void AttachObject(IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, LLQuaternion rot,
452 bool deadMethod)
453 {
454 Console.WriteLine("Attaching object " + objectLocalID + " to " + AttachmentPt);
455 SceneObjectPart p = GetSceneObjectPart(objectLocalID);
456 if (p != null)
457 {
458 ScenePresence av = null;
459 if (TryGetAvatar(remoteClient.AgentId, out av))
460 {
461 ObjectUpdatePacket objupdate = new ObjectUpdatePacket();
462 objupdate.RegionData.RegionHandle = m_regInfo.RegionHandle;
463 objupdate.RegionData.TimeDilation = ushort.MaxValue;
464 objupdate.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[2];
465 // avatar stuff - horrible group copypaste
466
467 objupdate.ObjectData[0] = new ObjectUpdatePacket.ObjectDataBlock();
468 objupdate.ObjectData[0].PSBlock = new byte[0];
469 objupdate.ObjectData[0].ExtraParams = new byte[1];
470 objupdate.ObjectData[0].MediaURL = new byte[0];
471 objupdate.ObjectData[0].NameValue = new byte[0];
472 objupdate.ObjectData[0].Text = new byte[0];
473 objupdate.ObjectData[0].TextColor = new byte[4];
474 objupdate.ObjectData[0].JointAxisOrAnchor = new LLVector3(0, 0, 0);
475 objupdate.ObjectData[0].JointPivot = new LLVector3(0, 0, 0);
476 objupdate.ObjectData[0].Material = 4;
477 objupdate.ObjectData[0].TextureAnim = new byte[0];
478 objupdate.ObjectData[0].Sound = LLUUID.Zero;
479
480 objupdate.ObjectData[0].State = 0;
481 objupdate.ObjectData[0].Data = new byte[0];
482
483 objupdate.ObjectData[0].ObjectData = new byte[76];
484 objupdate.ObjectData[0].ObjectData[15] = 128;
485 objupdate.ObjectData[0].ObjectData[16] = 63;
486 objupdate.ObjectData[0].ObjectData[56] = 128;
487 objupdate.ObjectData[0].ObjectData[61] = 102;
488 objupdate.ObjectData[0].ObjectData[62] = 40;
489 objupdate.ObjectData[0].ObjectData[63] = 61;
490 objupdate.ObjectData[0].ObjectData[64] = 189;
491
492
493 objupdate.ObjectData[0].UpdateFlags = 61 + (9 << 8) + (130 << 16) + (16 << 24);
494 objupdate.ObjectData[0].PathCurve = 16;
495 objupdate.ObjectData[0].ProfileCurve = 1;
496 objupdate.ObjectData[0].PathScaleX = 100;
497 objupdate.ObjectData[0].PathScaleY = 100;
498 objupdate.ObjectData[0].ParentID = 0;
499 objupdate.ObjectData[0].OwnerID = LLUUID.Zero;
500 objupdate.ObjectData[0].Scale = new LLVector3(1, 1, 1);
501 objupdate.ObjectData[0].PCode = (byte)PCode.Avatar;
502 objupdate.ObjectData[0].TextureEntry = ScenePresence.DefaultTexture;
503
504 objupdate.ObjectData[0].ID = av.LocalId;
505 objupdate.ObjectData[0].FullID = remoteClient.AgentId;
506 objupdate.ObjectData[0].ParentID = 0;
507 objupdate.ObjectData[0].NameValue =
508 Helpers.StringToField("FirstName STRING RW SV " + av.Firstname + "\nLastName STRING RW SV " + av.Lastname);
509 LLVector3 pos2 = av.AbsolutePosition;
510 // new LLVector3((float) Pos.X, (float) Pos.Y, (float) Pos.Z);
511 byte[] pb = pos2.GetBytes();
512 Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length);
513
514
515 // primitive part
516 objupdate.ObjectData[1] = new ObjectUpdatePacket.ObjectDataBlock();
517 // SetDefaultPrimPacketValues
518 objupdate.ObjectData[1].PSBlock = new byte[0];
519 objupdate.ObjectData[1].ExtraParams = new byte[1];
520 objupdate.ObjectData[1].MediaURL = new byte[0];
521 objupdate.ObjectData[1].NameValue = new byte[0];
522 objupdate.ObjectData[1].Text = new byte[0];
523 objupdate.ObjectData[1].TextColor = new byte[4];
524 objupdate.ObjectData[1].JointAxisOrAnchor = new LLVector3(0, 0, 0);
525 objupdate.ObjectData[1].JointPivot = new LLVector3(0, 0, 0);
526 objupdate.ObjectData[1].Material = 3;
527 objupdate.ObjectData[1].TextureAnim = new byte[0];
528 objupdate.ObjectData[1].Sound = LLUUID.Zero;
529 objupdate.ObjectData[1].State = 0;
530 objupdate.ObjectData[1].Data = new byte[0];
531
532 objupdate.ObjectData[1].ObjectData = new byte[60];
533 objupdate.ObjectData[1].ObjectData[46] = 128;
534 objupdate.ObjectData[1].ObjectData[47] = 63;
535
536 // SetPrimPacketShapeData
537 PrimitiveBaseShape primData = p.Shape;
538
539 objupdate.ObjectData[1].TextureEntry = primData.TextureEntry;
540 objupdate.ObjectData[1].PCode = primData.PCode;
541 objupdate.ObjectData[1].State = (byte)(((byte)AttachmentPt) << 4);
542 objupdate.ObjectData[1].PathBegin = primData.PathBegin;
543 objupdate.ObjectData[1].PathEnd = primData.PathEnd;
544 objupdate.ObjectData[1].PathScaleX = primData.PathScaleX;
545 objupdate.ObjectData[1].PathScaleY = primData.PathScaleY;
546 objupdate.ObjectData[1].PathShearX = primData.PathShearX;
547 objupdate.ObjectData[1].PathShearY = primData.PathShearY;
548 objupdate.ObjectData[1].PathSkew = primData.PathSkew;
549 objupdate.ObjectData[1].ProfileBegin = primData.ProfileBegin;
550 objupdate.ObjectData[1].ProfileEnd = primData.ProfileEnd;
551 objupdate.ObjectData[1].Scale = primData.Scale;
552 objupdate.ObjectData[1].PathCurve = primData.PathCurve;
553 objupdate.ObjectData[1].ProfileCurve = primData.ProfileCurve;
554 objupdate.ObjectData[1].ProfileHollow = primData.ProfileHollow;
555 objupdate.ObjectData[1].PathRadiusOffset = primData.PathRadiusOffset;
556 objupdate.ObjectData[1].PathRevolutions = primData.PathRevolutions;
557 objupdate.ObjectData[1].PathTaperX = primData.PathTaperX;
558 objupdate.ObjectData[1].PathTaperY = primData.PathTaperY;
559 objupdate.ObjectData[1].PathTwist = primData.PathTwist;
560 objupdate.ObjectData[1].PathTwistBegin = primData.PathTwistBegin;
561 objupdate.ObjectData[1].ExtraParams = primData.ExtraParams;
562
563
564 objupdate.ObjectData[1].UpdateFlags = 276957500; // flags; // ??
565 objupdate.ObjectData[1].ID = p.LocalId;
566 objupdate.ObjectData[1].FullID = p.UUID;
567 objupdate.ObjectData[1].OwnerID = p.OwnerID;
568 objupdate.ObjectData[1].Text = Helpers.StringToField(p.Text);
569 objupdate.ObjectData[1].TextColor[0] = 255;
570 objupdate.ObjectData[1].TextColor[1] = 255;
571 objupdate.ObjectData[1].TextColor[2] = 255;
572 objupdate.ObjectData[1].TextColor[3] = 128;
573 objupdate.ObjectData[1].ParentID = objupdate.ObjectData[0].ID;
574 //objupdate.ObjectData[1].PSBlock = particleSystem;
575 //objupdate.ObjectData[1].ClickAction = clickAction;
576 objupdate.ObjectData[1].Radius = 20;
577 objupdate.ObjectData[1].NameValue =
578 Helpers.StringToField("AttachItemID STRING RW SV " + p.UUID);
579 LLVector3 pos = new LLVector3((float)0.0, (float)0.0, (float)0.0);
580
581 pb = pos.GetBytes();
582 Array.Copy(pb, 0, objupdate.ObjectData[1].ObjectData, 0, pb.Length);
583
584 byte[] brot = rot.GetBytes();
585 Array.Copy(brot, 0, objupdate.ObjectData[1].ObjectData, 36, brot.Length);
586
587 remoteClient.OutPacket(objupdate, ThrottleOutPacketType.Task);
588 }
589 else
590 {
591 m_log.Info("[SCENE]: Avatar " + remoteClient.AgentId + " not found");
592 }
593 }
594 else
595 {
596 m_log.Info("[SCENE]: Attempting to attach object; Object " + objectLocalID + "(localID) not found");
597 }
598 }
599
600
601 public ScenePresence CreateAndAddScenePresence(IClientAPI client, bool child, AvatarAppearance appearance) 451 public ScenePresence CreateAndAddScenePresence(IClientAPI client, bool child, AvatarAppearance appearance)
602 { 452 {
603 ScenePresence newAvatar = null; 453 ScenePresence newAvatar = null;