aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneGraph.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneGraph.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs41
1 files changed, 21 insertions, 20 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 0e0999a..3007598 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -442,7 +442,7 @@ namespace OpenSim.Region.Framework.Scenes
442 if (group != null) 442 if (group != null)
443 { 443 {
444 //group.DetachToGround(); 444 //group.DetachToGround();
445 m_parentScene.DetachSingleAttachmentToInv(group.GetFromAssetID(), remoteClient); 445 m_parentScene.DetachSingleAttachmentToInv(group.GetFromItemID(), remoteClient);
446 } 446 }
447 } 447 }
448 448
@@ -489,7 +489,7 @@ namespace OpenSim.Region.Framework.Scenes
489 // Calls attach with a Zero position 489 // Calls attach with a Zero position
490 // 490 //
491 AttachObject(remoteClient, objectLocalID, AttachmentPt, rot, Vector3.Zero, false); 491 AttachObject(remoteClient, objectLocalID, AttachmentPt, rot, Vector3.Zero, false);
492 m_parentScene.SendAttachEvent(objectLocalID, part.ParentGroup.GetFromAssetID(), remoteClient.AgentId); 492 m_parentScene.SendAttachEvent(objectLocalID, part.ParentGroup.GetFromItemID(), remoteClient.AgentId);
493 } 493 }
494 494
495 public SceneObjectGroup RezSingleAttachment( 495 public SceneObjectGroup RezSingleAttachment(
@@ -536,14 +536,14 @@ namespace OpenSim.Region.Framework.Scenes
536 if (entity is SceneObjectGroup) 536 if (entity is SceneObjectGroup)
537 { 537 {
538 group = (SceneObjectGroup)entity; 538 group = (SceneObjectGroup)entity;
539 if (group.GetFromAssetID() == itemID) 539 if (group.GetFromItemID() == itemID)
540 { 540 {
541 m_parentScene.SendAttachEvent(group.LocalId, itemID, UUID.Zero); 541 m_parentScene.SendAttachEvent(group.LocalId, itemID, UUID.Zero);
542 group.DetachToInventoryPrep(); 542 group.DetachToInventoryPrep();
543 m_log.Debug("[DETACH]: Saving attachpoint: " + 543 m_log.Debug("[DETACH]: Saving attachpoint: " +
544 ((uint)group.GetAttachmentPoint()).ToString()); 544 ((uint)group.GetAttachmentPoint()).ToString());
545 m_parentScene.updateKnownAsset(remoteClient, group, 545 m_parentScene.UpdateKnownItem(remoteClient, group,
546 group.GetFromAssetID(), group.OwnerID); 546 group.GetFromItemID(), group.OwnerID);
547 m_parentScene.DeleteSceneObject(group, false); 547 m_parentScene.DeleteSceneObject(group, false);
548 return; 548 return;
549 } 549 }
@@ -572,7 +572,7 @@ namespace OpenSim.Region.Framework.Scenes
572 { 572 {
573 // Check object for stored attachment point 573 // Check object for stored attachment point
574 AttachmentPt = (uint)group.GetAttachmentPoint(); 574 AttachmentPt = (uint)group.GetAttachmentPoint();
575 } 575 }
576 576
577 // if we still didn't find a suitable attachment point....... 577 // if we still didn't find a suitable attachment point.......
578 if (AttachmentPt == 0) 578 if (AttachmentPt == 0)
@@ -580,21 +580,23 @@ namespace OpenSim.Region.Framework.Scenes
580 // Stick it on left hand with Zero Offset from the attachment point. 580 // Stick it on left hand with Zero Offset from the attachment point.
581 AttachmentPt = (uint)AttachmentPoint.LeftHand; 581 AttachmentPt = (uint)AttachmentPoint.LeftHand;
582 attachPos = Vector3.Zero; 582 attachPos = Vector3.Zero;
583
583 } 584 }
584 585
586
585 group.SetAttachmentPoint(Convert.ToByte(AttachmentPt)); 587 group.SetAttachmentPoint(Convert.ToByte(AttachmentPt));
586 group.AbsolutePosition = attachPos; 588 group.AbsolutePosition = attachPos;
587 589
588 // Saves and gets assetID 590 // Saves and gets itemID
589 UUID itemId; 591 UUID itemId;
590 592
591 if (group.GetFromAssetID() == UUID.Zero) 593 if (group.GetFromItemID() == UUID.Zero)
592 { 594 {
593 m_parentScene.attachObjectAssetStore(remoteClient, group, remoteClient.AgentId, out itemId); 595 m_parentScene.attachObjectAssetStore(remoteClient, group, remoteClient.AgentId, out itemId);
594 } 596 }
595 else 597 else
596 { 598 {
597 itemId = group.GetFromAssetID(); 599 itemId = group.GetFromItemID();
598 } 600 }
599 601
600 m_parentScene.AttachObject(remoteClient, AttachmentPt, itemId, group); 602 m_parentScene.AttachObject(remoteClient, AttachmentPt, itemId, group);
@@ -611,6 +613,8 @@ namespace OpenSim.Region.Framework.Scenes
611 remoteClient.SendAgentAlertMessage("You don't have sufficient permissions to attach this object", false); 613 remoteClient.SendAgentAlertMessage("You don't have sufficient permissions to attach this object", false);
612 } 614 }
613 } 615 }
616 else
617 m_log.DebugFormat("[SCENE GRAPH]: AttachObject found no such scene object {0}", objectLocalID);
614 } 618 }
615 619
616 protected internal ScenePresence CreateAndAddChildScenePresence(IClientAPI client, AvatarAppearance appearance) 620 protected internal ScenePresence CreateAndAddChildScenePresence(IClientAPI client, AvatarAppearance appearance)
@@ -928,25 +932,22 @@ namespace OpenSim.Region.Framework.Scenes
928 { 932 {
929 // Primitive Ray Tracing 933 // Primitive Ray Tracing
930 float closestDistance = 280f; 934 float closestDistance = 280f;
931 EntityIntersection returnResult = new EntityIntersection(); 935 EntityIntersection result = new EntityIntersection();
932 List<EntityBase> EntityList = GetEntities(); 936 List<EntityBase> EntityList = GetEntities();
933 foreach (EntityBase ent in EntityList) 937 foreach (EntityBase ent in EntityList)
934 { 938 {
935 if (ent is SceneObjectGroup) 939 if (ent is SceneObjectGroup)
936 { 940 {
937 SceneObjectGroup reportingG = (SceneObjectGroup)ent; 941 SceneObjectGroup reportingG = (SceneObjectGroup)ent;
938 EntityIntersection result = reportingG.TestIntersection(hray, frontFacesOnly, faceCenters); 942 EntityIntersection inter = reportingG.TestIntersection(hray, frontFacesOnly, faceCenters);
939 if (result.HitTF) 943 if (inter.HitTF && inter.distance < closestDistance)
940 { 944 {
941 if (result.distance < closestDistance) 945 closestDistance = inter.distance;
942 { 946 result = inter;
943 closestDistance = result.distance;
944 returnResult = result;
945 }
946 } 947 }
947 } 948 }
948 } 949 }
949 return returnResult; 950 return result;
950 } 951 }
951 952
952 /// <summary> 953 /// <summary>
@@ -979,7 +980,7 @@ namespace OpenSim.Region.Framework.Scenes
979 { 980 {
980 foreach (SceneObjectPart p in ((SceneObjectGroup) ent).GetParts()) 981 foreach (SceneObjectPart p in ((SceneObjectGroup) ent).GetParts())
981 { 982 {
982 if (p.Name==name) 983 if (p.Name == name)
983 { 984 {
984 return p; 985 return p;
985 } 986 }
@@ -1307,7 +1308,7 @@ namespace OpenSim.Region.Framework.Scenes
1307 group.UpdateGroupPosition(pos); 1308 group.UpdateGroupPosition(pos);
1308 group.RootPart.IsAttachment = false; 1309 group.RootPart.IsAttachment = false;
1309 group.AbsolutePosition = group.RootPart.AttachedPos; 1310 group.AbsolutePosition = group.RootPart.AttachedPos;
1310 m_parentScene.updateKnownAsset(remoteClient, group, group.GetFromAssetID(), group.OwnerID); 1311 m_parentScene.UpdateKnownItem(remoteClient, group, group.GetFromItemID(), group.OwnerID);
1311 group.SetAttachmentPoint(attachmentPoint); 1312 group.SetAttachmentPoint(attachmentPoint);
1312 1313
1313 } 1314 }