aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs483
1 files changed, 236 insertions, 247 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 0970c92..7025551 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -268,7 +268,6 @@ namespace OpenSim.Region.Framework.Scenes
268 private string m_touchName = String.Empty; 268 private string m_touchName = String.Empty;
269 private readonly Stack<UndoState> m_undo = new Stack<UndoState>(5); 269 private readonly Stack<UndoState> m_undo = new Stack<UndoState>(5);
270 private readonly Stack<UndoState> m_redo = new Stack<UndoState>(5); 270 private readonly Stack<UndoState> m_redo = new Stack<UndoState>(5);
271 private UUID _creatorID;
272 271
273 private bool m_passTouches; 272 private bool m_passTouches;
274 273
@@ -355,19 +354,14 @@ namespace OpenSim.Region.Framework.Scenes
355 m_name = "Object"; 354 m_name = "Object";
356 355
357 Rezzed = DateTime.UtcNow; 356 Rezzed = DateTime.UtcNow;
358 _creationDate = (int)Utils.DateTimeToUnixTime(Rezzed); 357 CreationDate = (int)Utils.DateTimeToUnixTime(Rezzed);
359 _ownerID = ownerID; 358 LastOwnerID = CreatorID = OwnerID = ownerID;
360 _creatorID = _ownerID;
361 _lastOwnerID = UUID.Zero;
362 UUID = UUID.Random(); 359 UUID = UUID.Random();
363 Shape = shape; 360 Shape = shape;
364 // Todo: Add More Object Parameter from above! 361 OwnershipCost = 0;
365 _ownershipCost = 0; 362 ObjectSaleType = 0;
366 _objectSaleType = 0; 363 SalePrice = 0;
367 _salePrice = 0; 364 Category = 0;
368 _category = 0;
369 _lastOwnerID = _creatorID;
370 // End Todo: ///
371 GroupPosition = groupPosition; 365 GroupPosition = groupPosition;
372 OffsetPosition = offsetPosition; 366 OffsetPosition = offsetPosition;
373 RotationOffset = rotationOffset; 367 RotationOffset = rotationOffset;
@@ -412,20 +406,15 @@ namespace OpenSim.Region.Framework.Scenes
412 private DateTime m_expires; 406 private DateTime m_expires;
413 private DateTime m_rezzed; 407 private DateTime m_rezzed;
414 private bool m_createSelected = false; 408 private bool m_createSelected = false;
415 private string m_creatorData = string.Empty;
416 409
410 private UUID _creatorID;
417 public UUID CreatorID 411 public UUID CreatorID
418 { 412 {
419 get 413 get { return _creatorID; }
420 { 414 set { _creatorID = value; }
421 return _creatorID;
422 }
423 set
424 {
425 _creatorID = value;
426 }
427 } 415 }
428 416
417 private string m_creatorData = string.Empty;
429 /// <summary> 418 /// <summary>
430 /// Data about the creator in the form profile_url;name 419 /// Data about the creator in the form profile_url;name
431 /// </summary> 420 /// </summary>
@@ -444,16 +433,16 @@ namespace OpenSim.Region.Framework.Scenes
444 { 433 {
445 get 434 get
446 { 435 {
447 if (m_creatorData != null && m_creatorData != string.Empty) 436 if (CreatorData != null && CreatorData != string.Empty)
448 return _creatorID.ToString() + ';' + m_creatorData; 437 return CreatorID.ToString() + ';' + CreatorData;
449 else 438 else
450 return _creatorID.ToString(); 439 return CreatorID.ToString();
451 } 440 }
452 set 441 set
453 { 442 {
454 if ((value == null) || (value != null && value == string.Empty)) 443 if ((value == null) || (value != null && value == string.Empty))
455 { 444 {
456 m_creatorData = string.Empty; 445 CreatorData = string.Empty;
457 return; 446 return;
458 } 447 }
459 448
@@ -461,7 +450,7 @@ namespace OpenSim.Region.Framework.Scenes
461 { 450 {
462 UUID uuid = UUID.Zero; 451 UUID uuid = UUID.Zero;
463 UUID.TryParse(value, out uuid); 452 UUID.TryParse(value, out uuid);
464 _creatorID = uuid; 453 CreatorID = uuid;
465 } 454 }
466 else // <uuid>[;<endpoint>[;name]] 455 else // <uuid>[;<endpoint>[;name]]
467 { 456 {
@@ -471,14 +460,14 @@ namespace OpenSim.Region.Framework.Scenes
471 { 460 {
472 UUID uuid = UUID.Zero; 461 UUID uuid = UUID.Zero;
473 UUID.TryParse(parts[0], out uuid); 462 UUID.TryParse(parts[0], out uuid);
474 _creatorID = uuid; 463 CreatorID = uuid;
475 } 464 }
476 if (parts.Length >= 2) 465 if (parts.Length >= 2)
477 m_creatorData = parts[1]; 466 CreatorData = parts[1];
478 if (parts.Length >= 3) 467 if (parts.Length >= 3)
479 name = parts[2]; 468 name = parts[2];
480 469
481 m_creatorData += ';' + name; 470 CreatorData += ';' + name;
482 471
483 } 472 }
484 } 473 }
@@ -698,16 +687,16 @@ namespace OpenSim.Region.Framework.Scenes
698 { 687 {
699 // If this is a linkset, we don't want the physics engine mucking up our group position here. 688 // If this is a linkset, we don't want the physics engine mucking up our group position here.
700 PhysicsActor actor = PhysActor; 689 PhysicsActor actor = PhysActor;
701 if (_parentID == 0) 690 if (actor != null && ParentID == 0)
702 { 691 {
703 if (actor != null) 692 if (actor != null)
704 m_groupPosition = actor.Position; 693 m_groupPosition = actor.Position;
705 return m_groupPosition; 694 return m_groupPosition;
706 } 695 }
707 696
708 if (m_parentGroup.IsAttachment) 697 if (ParentGroup.IsAttachment)
709 { 698 {
710 ScenePresence sp = m_parentGroup.Scene.GetScenePresence(ParentGroup.AttachedAvatar); 699 ScenePresence sp = ParentGroup.Scene.GetScenePresence(ParentGroup.AttachedAvatar);
711 if (sp != null) 700 if (sp != null)
712 return sp.AbsolutePosition; 701 return sp.AbsolutePosition;
713 } 702 }
@@ -726,7 +715,7 @@ namespace OpenSim.Region.Framework.Scenes
726 try 715 try
727 { 716 {
728 // Root prim actually goes at Position 717 // Root prim actually goes at Position
729 if (_parentID == 0) 718 if (ParentID == 0)
730 { 719 {
731 actor.Position = value; 720 actor.Position = value;
732 } 721 }
@@ -738,8 +727,7 @@ namespace OpenSim.Region.Framework.Scenes
738 } 727 }
739 728
740 // Tell the physics engines that this prim changed. 729 // Tell the physics engines that this prim changed.
741 m_parentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(actor); 730 ParentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(actor);
742
743 } 731 }
744 catch (Exception e) 732 catch (Exception e)
745 { 733 {
@@ -760,14 +748,14 @@ namespace OpenSim.Region.Framework.Scenes
760 if (ParentGroup != null && !ParentGroup.IsDeleted) 748 if (ParentGroup != null && !ParentGroup.IsDeleted)
761 { 749 {
762 PhysicsActor actor = PhysActor; 750 PhysicsActor actor = PhysActor;
763 if (_parentID != 0 && actor != null) 751 if (ParentID != 0 && actor != null)
764 { 752 {
765 actor.Position = GetWorldPosition(); 753 actor.Position = GetWorldPosition();
766 actor.Orientation = GetWorldRotation(); 754 actor.Orientation = GetWorldRotation();
767 755
768 // Tell the physics engines that this prim changed. 756 // Tell the physics engines that this prim changed.
769 if (m_parentGroup.Scene != null) 757 if (ParentGroup.Scene != null)
770 m_parentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(actor); 758 ParentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(actor);
771 } 759 }
772 760
773 if (!m_parentGroup.m_dupeInProgress) 761 if (!m_parentGroup.m_dupeInProgress)
@@ -794,7 +782,7 @@ namespace OpenSim.Region.Framework.Scenes
794 { 782 {
795 if (IsRoot) 783 if (IsRoot)
796 { 784 {
797 if (m_parentGroup.IsAttachment) 785 if (ParentGroup.IsAttachment)
798 return AttachedPos; 786 return AttachedPos;
799 else 787 else
800 return AbsolutePosition; 788 return AbsolutePosition;
@@ -812,7 +800,7 @@ namespace OpenSim.Region.Framework.Scenes
812 { 800 {
813 // We don't want the physics engine mucking up the rotations in a linkset 801 // We don't want the physics engine mucking up the rotations in a linkset
814 PhysicsActor actor = PhysActor; 802 PhysicsActor actor = PhysActor;
815 if (_parentID == 0 && (Shape.PCode != 9 || Shape.State == 0) && actor != null) 803 if (ParentID == 0 && (Shape.PCode != 9 || Shape.State == 0) && actor != null)
816 { 804 {
817 if (actor.Orientation.X != 0f || actor.Orientation.Y != 0f 805 if (actor.Orientation.X != 0f || actor.Orientation.Y != 0f
818 || actor.Orientation.Z != 0f || actor.Orientation.W != 0f) 806 || actor.Orientation.Z != 0f || actor.Orientation.W != 0f)
@@ -842,7 +830,7 @@ namespace OpenSim.Region.Framework.Scenes
842 try 830 try
843 { 831 {
844 // Root prim gets value directly 832 // Root prim gets value directly
845 if (_parentID == 0) 833 if (ParentID == 0)
846 { 834 {
847 actor.Orientation = value; 835 actor.Orientation = value;
848 //m_log.Info("[PART]: RO1:" + actor.Orientation.ToString()); 836 //m_log.Info("[PART]: RO1:" + actor.Orientation.ToString());
@@ -855,8 +843,8 @@ namespace OpenSim.Region.Framework.Scenes
855 //m_log.Info("[PART]: RO2:" + actor.Orientation.ToString()); 843 //m_log.Info("[PART]: RO2:" + actor.Orientation.ToString());
856 } 844 }
857 845
858 if (m_parentGroup != null) 846 if (ParentGroup != null)
859 m_parentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(actor); 847 ParentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(actor);
860 //} 848 //}
861 } 849 }
862 catch (Exception ex) 850 catch (Exception ex)
@@ -901,7 +889,7 @@ namespace OpenSim.Region.Framework.Scenes
901 if (actor.IsPhysical) 889 if (actor.IsPhysical)
902 { 890 {
903 actor.Velocity = value; 891 actor.Velocity = value;
904 m_parentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(actor); 892 ParentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(actor);
905 } 893 }
906 } 894 }
907 } 895 }
@@ -1045,9 +1033,9 @@ namespace OpenSim.Region.Framework.Scenes
1045 PhysicsActor actor = PhysActor; 1033 PhysicsActor actor = PhysActor;
1046 if (actor != null) 1034 if (actor != null)
1047 { 1035 {
1048 if (m_parentGroup.Scene != null) 1036 if (ParentGroup.Scene != null)
1049 { 1037 {
1050 if (m_parentGroup.Scene.PhysicsScene != null) 1038 if (ParentGroup.Scene.PhysicsScene != null)
1051 { 1039 {
1052 actor.Size = m_shape.Scale; 1040 actor.Size = m_shape.Scale;
1053 1041
@@ -1109,7 +1097,7 @@ namespace OpenSim.Region.Framework.Scenes
1109 { 1097 {
1110 get 1098 get
1111 { 1099 {
1112 if (m_parentGroup.IsAttachment) 1100 if (ParentGroup.IsAttachment)
1113 return GroupPosition; 1101 return GroupPosition;
1114 1102
1115 return m_offsetPosition + m_groupPosition; 1103 return m_offsetPosition + m_groupPosition;
@@ -1119,6 +1107,7 @@ namespace OpenSim.Region.Framework.Scenes
1119 public SceneObjectGroup ParentGroup 1107 public SceneObjectGroup ParentGroup
1120 { 1108 {
1121 get { return m_parentGroup; } 1109 get { return m_parentGroup; }
1110 private set { m_parentGroup = value; }
1122 } 1111 }
1123 1112
1124 public scriptEvents ScriptEvents 1113 public scriptEvents ScriptEvents
@@ -1441,7 +1430,7 @@ namespace OpenSim.Region.Framework.Scenes
1441 /// </summary> 1430 /// </summary>
1442 public void AddFullUpdateToAllAvatars() 1431 public void AddFullUpdateToAllAvatars()
1443 { 1432 {
1444 m_parentGroup.Scene.ForEachScenePresence(delegate(ScenePresence avatar) 1433 ParentGroup.Scene.ForEachScenePresence(delegate(ScenePresence avatar)
1445 { 1434 {
1446 AddFullUpdateToAvatar(avatar); 1435 AddFullUpdateToAvatar(avatar);
1447 }); 1436 });
@@ -1468,7 +1457,7 @@ namespace OpenSim.Region.Framework.Scenes
1468 /// Terse updates 1457 /// Terse updates
1469 public void AddTerseUpdateToAllAvatars() 1458 public void AddTerseUpdateToAllAvatars()
1470 { 1459 {
1471 m_parentGroup.Scene.ForEachScenePresence(delegate(ScenePresence avatar) 1460 ParentGroup.Scene.ForEachScenePresence(delegate(ScenePresence avatar)
1472 { 1461 {
1473 AddTerseUpdateToAvatar(avatar); 1462 AddTerseUpdateToAvatar(avatar);
1474 }); 1463 });
@@ -1506,7 +1495,7 @@ namespace OpenSim.Region.Framework.Scenes
1506 if (volume < 0) 1495 if (volume < 0)
1507 volume = 0; 1496 volume = 0;
1508 1497
1509 m_parentGroup.Scene.ForEachRootClient(delegate(IClientAPI client) 1498 ParentGroup.Scene.ForEachRootClient(delegate(IClientAPI client)
1510 { 1499 {
1511 client.SendAttachedSoundGainChange(UUID, (float)volume); 1500 client.SendAttachedSoundGainChange(UUID, (float)volume);
1512 }); 1501 });
@@ -1532,9 +1521,9 @@ namespace OpenSim.Region.Framework.Scenes
1532 impulse = newimpulse; 1521 impulse = newimpulse;
1533 } 1522 }
1534 1523
1535 if (m_parentGroup != null) 1524 if (ParentGroup != null)
1536 { 1525 {
1537 m_parentGroup.applyImpulse(impulse); 1526 ParentGroup.applyImpulse(impulse);
1538 } 1527 }
1539 } 1528 }
1540 1529
@@ -1558,7 +1547,7 @@ namespace OpenSim.Region.Framework.Scenes
1558 impulse = newimpulse; 1547 impulse = newimpulse;
1559 } 1548 }
1560 1549
1561 m_parentGroup.applyAngularImpulse(impulse); 1550 ParentGroup.applyAngularImpulse(impulse);
1562 } 1551 }
1563 1552
1564 /// <summary> 1553 /// <summary>
@@ -1581,7 +1570,7 @@ namespace OpenSim.Region.Framework.Scenes
1581 impulse = newimpulse; 1570 impulse = newimpulse;
1582 } 1571 }
1583 1572
1584 m_parentGroup.setAngularImpulse(impulse); 1573 ParentGroup.setAngularImpulse(impulse);
1585 } 1574 }
1586 1575
1587 /// <summary> 1576 /// <summary>
@@ -1613,11 +1602,11 @@ namespace OpenSim.Region.Framework.Scenes
1613 1602
1614 // The only time the physics scene shouldn't know about the prim is if it's phantom or an attachment, which is phantom by definition 1603 // The only time the physics scene shouldn't know about the prim is if it's phantom or an attachment, which is phantom by definition
1615 // or flexible 1604 // or flexible
1616 if (!isPhantom && !m_parentGroup.IsAttachment && !(Shape.PathCurve == (byte) Extrusion.Flexible)) 1605 if (!isPhantom && !ParentGroup.IsAttachment && !(Shape.PathCurve == (byte)Extrusion.Flexible))
1617 { 1606 {
1618 try 1607 try
1619 { 1608 {
1620 PhysActor = m_parentGroup.Scene.PhysicsScene.AddPrimShape( 1609 PhysActor = ParentGroup.Scene.PhysicsScene.AddPrimShape(
1621 string.Format("{0}/{1}", Name, UUID), 1610 string.Format("{0}/{1}", Name, UUID),
1622 Shape, 1611 Shape,
1623 AbsolutePosition, 1612 AbsolutePosition,
@@ -1684,8 +1673,8 @@ namespace OpenSim.Region.Framework.Scenes
1684 if (!userExposed) 1673 if (!userExposed)
1685 dupe.PhysActor = null; 1674 dupe.PhysActor = null;
1686 1675
1687 dupe._ownerID = AgentID; 1676 dupe.OwnerID = AgentID;
1688 dupe._groupID = GroupID; 1677 dupe.GroupID = GroupID;
1689 dupe.GroupPosition = GroupPosition; 1678 dupe.GroupPosition = GroupPosition;
1690 dupe.OffsetPosition = OffsetPosition; 1679 dupe.OffsetPosition = OffsetPosition;
1691 dupe.RotationOffset = RotationOffset; 1680 dupe.RotationOffset = RotationOffset;
@@ -1694,10 +1683,10 @@ namespace OpenSim.Region.Framework.Scenes
1694 dupe.AngularVelocity = new Vector3(0, 0, 0); 1683 dupe.AngularVelocity = new Vector3(0, 0, 0);
1695 dupe.Flags = Flags; 1684 dupe.Flags = Flags;
1696 1685
1697 dupe._ownershipCost = _ownershipCost; 1686 dupe.OwnershipCost = OwnershipCost;
1698 dupe._objectSaleType = _objectSaleType; 1687 dupe.ObjectSaleType = ObjectSaleType;
1699 dupe._salePrice = _salePrice; 1688 dupe.SalePrice = SalePrice;
1700 dupe._category = _category; 1689 dupe.Category = Category;
1701 dupe.m_rezzed = m_rezzed; 1690 dupe.m_rezzed = m_rezzed;
1702 1691
1703 dupe.m_inventory = new SceneObjectPartInventory(dupe); 1692 dupe.m_inventory = new SceneObjectPartInventory(dupe);
@@ -1719,7 +1708,7 @@ namespace OpenSim.Region.Framework.Scenes
1719 dupe.PhysActor.LocalID = localID; 1708 dupe.PhysActor.LocalID = localID;
1720 1709
1721 // This may be wrong... it might have to be applied in SceneObjectGroup to the object that's being duplicated. 1710 // This may be wrong... it might have to be applied in SceneObjectGroup to the object that's being duplicated.
1722 dupe._lastOwnerID = OwnerID; 1711 dupe.LastOwnerID = OwnerID;
1723 1712
1724 byte[] extraP = new byte[Shape.ExtraParams.Length]; 1713 byte[] extraP = new byte[Shape.ExtraParams.Length];
1725 Array.Copy(Shape.ExtraParams, extraP, extraP.Length); 1714 Array.Copy(Shape.ExtraParams, extraP, extraP.Length);
@@ -1806,7 +1795,7 @@ namespace OpenSim.Region.Framework.Scenes
1806 } 1795 }
1807 } 1796 }
1808 1797
1809 SceneObjectPart trackedBody = m_parentGroup.Scene.GetSceneObjectPart(trackedBodyName); // FIXME: causes a sequential lookup 1798 SceneObjectPart trackedBody = ParentGroup.Scene.GetSceneObjectPart(trackedBodyName); // FIXME: causes a sequential lookup
1810 Quaternion localRotation = Quaternion.Identity; 1799 Quaternion localRotation = Quaternion.Identity;
1811 if (trackedBody != null) 1800 if (trackedBody != null)
1812 { 1801 {
@@ -1819,7 +1808,7 @@ namespace OpenSim.Region.Framework.Scenes
1819 1808
1820 PhysicsJoint joint; 1809 PhysicsJoint joint;
1821 1810
1822 joint = m_parentGroup.Scene.PhysicsScene.RequestJointCreation(Name, jointType, 1811 joint = ParentGroup.Scene.PhysicsScene.RequestJointCreation(Name, jointType,
1823 AbsolutePosition, 1812 AbsolutePosition,
1824 this.RotationOffset, 1813 this.RotationOffset,
1825 Description, 1814 Description,
@@ -1844,7 +1833,7 @@ namespace OpenSim.Region.Framework.Scenes
1844 else 1833 else
1845 { 1834 {
1846 // here we turn off the joint object, so remove the joint from the physics scene 1835 // here we turn off the joint object, so remove the joint from the physics scene
1847 m_parentGroup.Scene.PhysicsScene.RequestJointDeletion(Name); // FIXME: what if the name changed? 1836 ParentGroup.Scene.PhysicsScene.RequestJointDeletion(Name); // FIXME: what if the name changed?
1848 1837
1849 // make sure client isn't interpolating the joint proxy object 1838 // make sure client isn't interpolating the joint proxy object
1850 Velocity = Vector3.Zero; 1839 Velocity = Vector3.Zero;
@@ -1886,7 +1875,7 @@ namespace OpenSim.Region.Framework.Scenes
1886 if (ParentGroup.Scene.PhysicsScene.SupportsNINJAJoints && (!isNew)) 1875 if (ParentGroup.Scene.PhysicsScene.SupportsNINJAJoints && (!isNew))
1887 { 1876 {
1888 // destroy all joints connected to this now deactivated body 1877 // destroy all joints connected to this now deactivated body
1889 m_parentGroup.Scene.PhysicsScene.RemoveAllJointsConnectedToActorThreadLocked(PhysActor); 1878 ParentGroup.Scene.PhysicsScene.RemoveAllJointsConnectedToActorThreadLocked(PhysActor);
1890 } 1879 }
1891 1880
1892 // stop client-side interpolation of all joint proxy objects that have just been deleted 1881 // stop client-side interpolation of all joint proxy objects that have just been deleted
@@ -1920,7 +1909,7 @@ namespace OpenSim.Region.Framework.Scenes
1920 1909
1921 PhysActor.OnRequestTerseUpdate += PhysicsRequestingTerseUpdate; 1910 PhysActor.OnRequestTerseUpdate += PhysicsRequestingTerseUpdate;
1922 PhysActor.OnOutOfBounds += PhysicsOutOfBounds; 1911 PhysActor.OnOutOfBounds += PhysicsOutOfBounds;
1923 if (_parentID != 0 && _parentID != LocalId) 1912 if (ParentID != 0 && ParentID != LocalId)
1924 { 1913 {
1925 if (ParentGroup.RootPart.PhysActor != null) 1914 if (ParentGroup.RootPart.PhysActor != null)
1926 { 1915 {
@@ -1936,7 +1925,7 @@ namespace OpenSim.Region.Framework.Scenes
1936 if (Shape.SculptEntry) 1925 if (Shape.SculptEntry)
1937 CheckSculptAndLoad(); 1926 CheckSculptAndLoad();
1938 else 1927 else
1939 m_parentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(PhysActor); 1928 ParentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(PhysActor);
1940 } 1929 }
1941 } 1930 }
1942 } 1931 }
@@ -1959,58 +1948,58 @@ namespace OpenSim.Region.Framework.Scenes
1959 1948
1960 public bool GetDieAtEdge() 1949 public bool GetDieAtEdge()
1961 { 1950 {
1962 if (m_parentGroup.IsDeleted) 1951 if (ParentGroup.IsDeleted)
1963 return false; 1952 return false;
1964 1953
1965 return m_parentGroup.RootPart.DIE_AT_EDGE; 1954 return ParentGroup.RootPart.DIE_AT_EDGE;
1966 } 1955 }
1967 1956
1968 public bool GetReturnAtEdge() 1957 public bool GetReturnAtEdge()
1969 { 1958 {
1970 if (m_parentGroup.IsDeleted) 1959 if (ParentGroup.IsDeleted)
1971 return false; 1960 return false;
1972 1961
1973 return m_parentGroup.RootPart.RETURN_AT_EDGE; 1962 return ParentGroup.RootPart.RETURN_AT_EDGE;
1974 } 1963 }
1975 1964
1976 public void SetReturnAtEdge(bool p) 1965 public void SetReturnAtEdge(bool p)
1977 { 1966 {
1978 if (m_parentGroup.IsDeleted) 1967 if (ParentGroup.IsDeleted)
1979 return; 1968 return;
1980 1969
1981 m_parentGroup.RootPart.RETURN_AT_EDGE = p; 1970 ParentGroup.RootPart.RETURN_AT_EDGE = p;
1982 } 1971 }
1983 1972
1984 public bool GetBlockGrab() 1973 public bool GetBlockGrab()
1985 { 1974 {
1986 if (m_parentGroup.IsDeleted) 1975 if (ParentGroup.IsDeleted)
1987 return false; 1976 return false;
1988 1977
1989 return m_parentGroup.RootPart.BlockGrab; 1978 return ParentGroup.RootPart.BlockGrab;
1990 } 1979 }
1991 1980
1992 public void SetBlockGrab(bool p) 1981 public void SetBlockGrab(bool p)
1993 { 1982 {
1994 if (m_parentGroup.IsDeleted) 1983 if (ParentGroup.IsDeleted)
1995 return; 1984 return;
1996 1985
1997 m_parentGroup.RootPart.BlockGrab = p; 1986 ParentGroup.RootPart.BlockGrab = p;
1998 } 1987 }
1999 1988
2000 public void SetStatusSandbox(bool p) 1989 public void SetStatusSandbox(bool p)
2001 { 1990 {
2002 if (m_parentGroup.IsDeleted) 1991 if (ParentGroup.IsDeleted)
2003 return; 1992 return;
2004 StatusSandboxPos = m_parentGroup.RootPart.AbsolutePosition; 1993 StatusSandboxPos = ParentGroup.RootPart.AbsolutePosition;
2005 m_parentGroup.RootPart.StatusSandbox = p; 1994 ParentGroup.RootPart.StatusSandbox = p;
2006 } 1995 }
2007 1996
2008 public bool GetStatusSandbox() 1997 public bool GetStatusSandbox()
2009 { 1998 {
2010 if (m_parentGroup.IsDeleted) 1999 if (ParentGroup.IsDeleted)
2011 return false; 2000 return false;
2012 2001
2013 return m_parentGroup.RootPart.StatusSandbox; 2002 return ParentGroup.RootPart.StatusSandbox;
2014 } 2003 }
2015 2004
2016 public int GetAxisRotation(int axis) 2005 public int GetAxisRotation(int axis)
@@ -2118,7 +2107,7 @@ namespace OpenSim.Region.Framework.Scenes
2118 { 2107 {
2119 if (tau > 0) 2108 if (tau > 0)
2120 { 2109 {
2121 m_parentGroup.moveToTarget(target, tau); 2110 ParentGroup.moveToTarget(target, tau);
2122 } 2111 }
2123 else 2112 else
2124 { 2113 {
@@ -2134,12 +2123,12 @@ namespace OpenSim.Region.Framework.Scenes
2134 /// <param name="tau">Number of seconds over which to reach target</param> 2123 /// <param name="tau">Number of seconds over which to reach target</param>
2135 public void SetHoverHeight(float height, PIDHoverType hoverType, float tau) 2124 public void SetHoverHeight(float height, PIDHoverType hoverType, float tau)
2136 { 2125 {
2137 m_parentGroup.SetHoverHeight(height, hoverType, tau); 2126 ParentGroup.SetHoverHeight(height, hoverType, tau);
2138 } 2127 }
2139 2128
2140 public void StopHover() 2129 public void StopHover()
2141 { 2130 {
2142 m_parentGroup.SetHoverHeight(0f, PIDHoverType.Ground, 0f); 2131 ParentGroup.SetHoverHeight(0f, PIDHoverType.Ground, 0f);
2143 } 2132 }
2144 2133
2145 public virtual void OnGrab(Vector3 offsetPos, IClientAPI remoteClient) 2134 public virtual void OnGrab(Vector3 offsetPos, IClientAPI remoteClient)
@@ -2190,7 +2179,7 @@ namespace OpenSim.Region.Framework.Scenes
2190 m_lastColliders.Remove(localID); 2179 m_lastColliders.Remove(localID);
2191 } 2180 }
2192 2181
2193 if (m_parentGroup.IsDeleted) 2182 if (ParentGroup.IsDeleted)
2194 return; 2183 return;
2195 2184
2196 // play the sound. 2185 // play the sound.
@@ -2199,7 +2188,7 @@ namespace OpenSim.Region.Framework.Scenes
2199 SendSound(CollisionSound.ToString(), CollisionSoundVolume, true, (byte)0, 0, false, false); 2188 SendSound(CollisionSound.ToString(), CollisionSoundVolume, true, (byte)0, 0, false, false);
2200 } 2189 }
2201 2190
2202 if ((m_parentGroup.RootPart.ScriptEvents & scriptEvents.collision_start) != 0) 2191 if ((ParentGroup.RootPart.ScriptEvents & scriptEvents.collision_start) != 0)
2203 { 2192 {
2204 // do event notification 2193 // do event notification
2205 if (startedColliders.Count > 0) 2194 if (startedColliders.Count > 0)
@@ -2210,30 +2199,30 @@ namespace OpenSim.Region.Framework.Scenes
2210 { 2199 {
2211 if (localId == 0) 2200 if (localId == 0)
2212 continue; 2201 continue;
2213 2202
2214 if (m_parentGroup.Scene == null) 2203 if (ParentGroup.Scene == null)
2215 return; 2204 return;
2216 2205
2217 SceneObjectPart obj = m_parentGroup.Scene.GetSceneObjectPart(localId); 2206 SceneObjectPart obj = ParentGroup.Scene.GetSceneObjectPart(localId);
2218 string data = ""; 2207 string data = "";
2219 if (obj != null) 2208 if (obj != null)
2220 { 2209 {
2221 if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) 2210 if (ParentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString())
2222 || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name)) 2211 || ParentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name))
2223 { 2212 {
2224 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 2213 bool found = ParentGroup.RootPart.CollisionFilter.TryGetValue(1, out data);
2225 //If it is 1, it is to accept ONLY collisions from this object 2214 //If it is 1, it is to accept ONLY collisions from this object
2226 if (found) 2215 if (found)
2227 { 2216 {
2228 DetectedObject detobj = new DetectedObject(); 2217 DetectedObject detobj = new DetectedObject();
2229 detobj.keyUUID = obj.UUID; 2218 detobj.keyUUID = obj.UUID;
2230 detobj.nameStr = obj.Name; 2219 detobj.nameStr = obj.Name;
2231 detobj.ownerUUID = obj._ownerID; 2220 detobj.ownerUUID = obj.OwnerID;
2232 detobj.posVector = obj.AbsolutePosition; 2221 detobj.posVector = obj.AbsolutePosition;
2233 detobj.rotQuat = obj.GetWorldRotation(); 2222 detobj.rotQuat = obj.GetWorldRotation();
2234 detobj.velVector = obj.Velocity; 2223 detobj.velVector = obj.Velocity;
2235 detobj.colliderType = 0; 2224 detobj.colliderType = 0;
2236 detobj.groupUUID = obj._groupID; 2225 detobj.groupUUID = obj.GroupID;
2237 colliding.Add(detobj); 2226 colliding.Add(detobj);
2238 } 2227 }
2239 //If it is 0, it is to not accept collisions from this object 2228 //If it is 0, it is to not accept collisions from this object
@@ -2243,33 +2232,33 @@ namespace OpenSim.Region.Framework.Scenes
2243 } 2232 }
2244 else 2233 else
2245 { 2234 {
2246 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 2235 bool found = ParentGroup.RootPart.CollisionFilter.TryGetValue(1, out data);
2247 //If it is 1, it is to accept ONLY collisions from this object, so this other object will not work 2236 //If it is 1, it is to accept ONLY collisions from this object, so this other object will not work
2248 if (!found) 2237 if (!found)
2249 { 2238 {
2250 DetectedObject detobj = new DetectedObject(); 2239 DetectedObject detobj = new DetectedObject();
2251 detobj.keyUUID = obj.UUID; 2240 detobj.keyUUID = obj.UUID;
2252 detobj.nameStr = obj.Name; 2241 detobj.nameStr = obj.Name;
2253 detobj.ownerUUID = obj._ownerID; 2242 detobj.ownerUUID = obj.OwnerID;
2254 detobj.posVector = obj.AbsolutePosition; 2243 detobj.posVector = obj.AbsolutePosition;
2255 detobj.rotQuat = obj.GetWorldRotation(); 2244 detobj.rotQuat = obj.GetWorldRotation();
2256 detobj.velVector = obj.Velocity; 2245 detobj.velVector = obj.Velocity;
2257 detobj.colliderType = 0; 2246 detobj.colliderType = 0;
2258 detobj.groupUUID = obj._groupID; 2247 detobj.groupUUID = obj.GroupID;
2259 colliding.Add(detobj); 2248 colliding.Add(detobj);
2260 } 2249 }
2261 } 2250 }
2262 } 2251 }
2263 else 2252 else
2264 { 2253 {
2265 m_parentGroup.Scene.ForEachRootScenePresence(delegate(ScenePresence av) 2254 ParentGroup.Scene.ForEachRootScenePresence(delegate(ScenePresence av)
2266 { 2255 {
2267 if (av.LocalId == localId) 2256 if (av.LocalId == localId)
2268 { 2257 {
2269 if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.UUID.ToString()) 2258 if (ParentGroup.RootPart.CollisionFilter.ContainsValue(av.UUID.ToString())
2270 || m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.Name)) 2259 || ParentGroup.RootPart.CollisionFilter.ContainsValue(av.Name))
2271 { 2260 {
2272 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1, out data); 2261 bool found = ParentGroup.RootPart.CollisionFilter.TryGetValue(1, out data);
2273 //If it is 1, it is to accept ONLY collisions from this avatar 2262 //If it is 1, it is to accept ONLY collisions from this avatar
2274 if (found) 2263 if (found)
2275 { 2264 {
@@ -2291,7 +2280,7 @@ namespace OpenSim.Region.Framework.Scenes
2291 } 2280 }
2292 else 2281 else
2293 { 2282 {
2294 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1, out data); 2283 bool found = ParentGroup.RootPart.CollisionFilter.TryGetValue(1, out data);
2295 //If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work 2284 //If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work
2296 if (!found) 2285 if (!found)
2297 { 2286 {
@@ -2316,8 +2305,8 @@ namespace OpenSim.Region.Framework.Scenes
2316 if (colliding.Count > 0) 2305 if (colliding.Count > 0)
2317 { 2306 {
2318 StartCollidingMessage.Colliders = colliding; 2307 StartCollidingMessage.Colliders = colliding;
2319 2308
2320 if (m_parentGroup.Scene == null) 2309 if (ParentGroup.Scene == null)
2321 return; 2310 return;
2322 2311
2323// if (m_parentGroup.PassCollision == true) 2312// if (m_parentGroup.PassCollision == true)
@@ -2325,12 +2314,12 @@ namespace OpenSim.Region.Framework.Scenes
2325// //TODO: Add pass to root prim! 2314// //TODO: Add pass to root prim!
2326// } 2315// }
2327 2316
2328 m_parentGroup.Scene.EventManager.TriggerScriptCollidingStart(LocalId, StartCollidingMessage); 2317 ParentGroup.Scene.EventManager.TriggerScriptCollidingStart(LocalId, StartCollidingMessage);
2329 } 2318 }
2330 } 2319 }
2331 } 2320 }
2332 2321
2333 if ((m_parentGroup.RootPart.ScriptEvents & scriptEvents.collision) != 0) 2322 if ((ParentGroup.RootPart.ScriptEvents & scriptEvents.collision) != 0)
2334 { 2323 {
2335 if (m_lastColliders.Count > 0) 2324 if (m_lastColliders.Count > 0)
2336 { 2325 {
@@ -2342,29 +2331,29 @@ namespace OpenSim.Region.Framework.Scenes
2342 if (localId == 0) 2331 if (localId == 0)
2343 continue; 2332 continue;
2344 2333
2345 if (m_parentGroup.Scene == null) 2334 if (ParentGroup.Scene == null)
2346 return; 2335 return;
2347 2336
2348 SceneObjectPart obj = m_parentGroup.Scene.GetSceneObjectPart(localId); 2337 SceneObjectPart obj = ParentGroup.Scene.GetSceneObjectPart(localId);
2349 string data = ""; 2338 string data = "";
2350 if (obj != null) 2339 if (obj != null)
2351 { 2340 {
2352 if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) 2341 if (ParentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString())
2353 || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name)) 2342 || ParentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name))
2354 { 2343 {
2355 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 2344 bool found = ParentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
2356 //If it is 1, it is to accept ONLY collisions from this object 2345 //If it is 1, it is to accept ONLY collisions from this object
2357 if (found) 2346 if (found)
2358 { 2347 {
2359 DetectedObject detobj = new DetectedObject(); 2348 DetectedObject detobj = new DetectedObject();
2360 detobj.keyUUID = obj.UUID; 2349 detobj.keyUUID = obj.UUID;
2361 detobj.nameStr = obj.Name; 2350 detobj.nameStr = obj.Name;
2362 detobj.ownerUUID = obj._ownerID; 2351 detobj.ownerUUID = obj.OwnerID;
2363 detobj.posVector = obj.AbsolutePosition; 2352 detobj.posVector = obj.AbsolutePosition;
2364 detobj.rotQuat = obj.GetWorldRotation(); 2353 detobj.rotQuat = obj.GetWorldRotation();
2365 detobj.velVector = obj.Velocity; 2354 detobj.velVector = obj.Velocity;
2366 detobj.colliderType = 0; 2355 detobj.colliderType = 0;
2367 detobj.groupUUID = obj._groupID; 2356 detobj.groupUUID = obj.GroupID;
2368 colliding.Add(detobj); 2357 colliding.Add(detobj);
2369 } 2358 }
2370 //If it is 0, it is to not accept collisions from this object 2359 //If it is 0, it is to not accept collisions from this object
@@ -2374,33 +2363,33 @@ namespace OpenSim.Region.Framework.Scenes
2374 } 2363 }
2375 else 2364 else
2376 { 2365 {
2377 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 2366 bool found = ParentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
2378 //If it is 1, it is to accept ONLY collisions from this object, so this other object will not work 2367 //If it is 1, it is to accept ONLY collisions from this object, so this other object will not work
2379 if (!found) 2368 if (!found)
2380 { 2369 {
2381 DetectedObject detobj = new DetectedObject(); 2370 DetectedObject detobj = new DetectedObject();
2382 detobj.keyUUID = obj.UUID; 2371 detobj.keyUUID = obj.UUID;
2383 detobj.nameStr = obj.Name; 2372 detobj.nameStr = obj.Name;
2384 detobj.ownerUUID = obj._ownerID; 2373 detobj.ownerUUID = obj.OwnerID;
2385 detobj.posVector = obj.AbsolutePosition; 2374 detobj.posVector = obj.AbsolutePosition;
2386 detobj.rotQuat = obj.GetWorldRotation(); 2375 detobj.rotQuat = obj.GetWorldRotation();
2387 detobj.velVector = obj.Velocity; 2376 detobj.velVector = obj.Velocity;
2388 detobj.colliderType = 0; 2377 detobj.colliderType = 0;
2389 detobj.groupUUID = obj._groupID; 2378 detobj.groupUUID = obj.GroupID;
2390 colliding.Add(detobj); 2379 colliding.Add(detobj);
2391 } 2380 }
2392 } 2381 }
2393 } 2382 }
2394 else 2383 else
2395 { 2384 {
2396 m_parentGroup.Scene.ForEachRootScenePresence(delegate(ScenePresence av) 2385 ParentGroup.Scene.ForEachRootScenePresence(delegate(ScenePresence av)
2397 { 2386 {
2398 if (av.LocalId == localId) 2387 if (av.LocalId == localId)
2399 { 2388 {
2400 if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.UUID.ToString()) 2389 if (ParentGroup.RootPart.CollisionFilter.ContainsValue(av.UUID.ToString())
2401 || m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.Name)) 2390 || ParentGroup.RootPart.CollisionFilter.ContainsValue(av.Name))
2402 { 2391 {
2403 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1, out data); 2392 bool found = ParentGroup.RootPart.CollisionFilter.TryGetValue(1, out data);
2404 //If it is 1, it is to accept ONLY collisions from this avatar 2393 //If it is 1, it is to accept ONLY collisions from this avatar
2405 if (found) 2394 if (found)
2406 { 2395 {
@@ -2422,7 +2411,7 @@ namespace OpenSim.Region.Framework.Scenes
2422 } 2411 }
2423 else 2412 else
2424 { 2413 {
2425 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1, out data); 2414 bool found = ParentGroup.RootPart.CollisionFilter.TryGetValue(1, out data);
2426 //If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work 2415 //If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work
2427 if (!found) 2416 if (!found)
2428 { 2417 {
@@ -2447,15 +2436,15 @@ namespace OpenSim.Region.Framework.Scenes
2447 { 2436 {
2448 CollidingMessage.Colliders = colliding; 2437 CollidingMessage.Colliders = colliding;
2449 2438
2450 if (m_parentGroup.Scene == null) 2439 if (ParentGroup.Scene == null)
2451 return; 2440 return;
2452 2441
2453 m_parentGroup.Scene.EventManager.TriggerScriptColliding(LocalId, CollidingMessage); 2442 ParentGroup.Scene.EventManager.TriggerScriptColliding(LocalId, CollidingMessage);
2454 } 2443 }
2455 } 2444 }
2456 } 2445 }
2457 2446
2458 if ((m_parentGroup.RootPart.ScriptEvents & scriptEvents.collision_end) != 0) 2447 if ((ParentGroup.RootPart.ScriptEvents & scriptEvents.collision_end) != 0)
2459 { 2448 {
2460 if (endedColliders.Count > 0) 2449 if (endedColliders.Count > 0)
2461 { 2450 {
@@ -2466,28 +2455,28 @@ namespace OpenSim.Region.Framework.Scenes
2466 if (localId == 0) 2455 if (localId == 0)
2467 continue; 2456 continue;
2468 2457
2469 if (m_parentGroup.Scene == null) 2458 if (ParentGroup.Scene == null)
2470 return; 2459 return;
2471 2460
2472 SceneObjectPart obj = m_parentGroup.Scene.GetSceneObjectPart(localId); 2461 SceneObjectPart obj = ParentGroup.Scene.GetSceneObjectPart(localId);
2473 string data = ""; 2462 string data = "";
2474 if (obj != null) 2463 if (obj != null)
2475 { 2464 {
2476 if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) || m_parentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name)) 2465 if (ParentGroup.RootPart.CollisionFilter.ContainsValue(obj.UUID.ToString()) || ParentGroup.RootPart.CollisionFilter.ContainsValue(obj.Name))
2477 { 2466 {
2478 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 2467 bool found = ParentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
2479 //If it is 1, it is to accept ONLY collisions from this object 2468 //If it is 1, it is to accept ONLY collisions from this object
2480 if (found) 2469 if (found)
2481 { 2470 {
2482 DetectedObject detobj = new DetectedObject(); 2471 DetectedObject detobj = new DetectedObject();
2483 detobj.keyUUID = obj.UUID; 2472 detobj.keyUUID = obj.UUID;
2484 detobj.nameStr = obj.Name; 2473 detobj.nameStr = obj.Name;
2485 detobj.ownerUUID = obj._ownerID; 2474 detobj.ownerUUID = obj.OwnerID;
2486 detobj.posVector = obj.AbsolutePosition; 2475 detobj.posVector = obj.AbsolutePosition;
2487 detobj.rotQuat = obj.GetWorldRotation(); 2476 detobj.rotQuat = obj.GetWorldRotation();
2488 detobj.velVector = obj.Velocity; 2477 detobj.velVector = obj.Velocity;
2489 detobj.colliderType = 0; 2478 detobj.colliderType = 0;
2490 detobj.groupUUID = obj._groupID; 2479 detobj.groupUUID = obj.GroupID;
2491 colliding.Add(detobj); 2480 colliding.Add(detobj);
2492 } 2481 }
2493 //If it is 0, it is to not accept collisions from this object 2482 //If it is 0, it is to not accept collisions from this object
@@ -2497,33 +2486,33 @@ namespace OpenSim.Region.Framework.Scenes
2497 } 2486 }
2498 else 2487 else
2499 { 2488 {
2500 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1,out data); 2489 bool found = ParentGroup.RootPart.CollisionFilter.TryGetValue(1,out data);
2501 //If it is 1, it is to accept ONLY collisions from this object, so this other object will not work 2490 //If it is 1, it is to accept ONLY collisions from this object, so this other object will not work
2502 if (!found) 2491 if (!found)
2503 { 2492 {
2504 DetectedObject detobj = new DetectedObject(); 2493 DetectedObject detobj = new DetectedObject();
2505 detobj.keyUUID = obj.UUID; 2494 detobj.keyUUID = obj.UUID;
2506 detobj.nameStr = obj.Name; 2495 detobj.nameStr = obj.Name;
2507 detobj.ownerUUID = obj._ownerID; 2496 detobj.ownerUUID = obj.OwnerID;
2508 detobj.posVector = obj.AbsolutePosition; 2497 detobj.posVector = obj.AbsolutePosition;
2509 detobj.rotQuat = obj.GetWorldRotation(); 2498 detobj.rotQuat = obj.GetWorldRotation();
2510 detobj.velVector = obj.Velocity; 2499 detobj.velVector = obj.Velocity;
2511 detobj.colliderType = 0; 2500 detobj.colliderType = 0;
2512 detobj.groupUUID = obj._groupID; 2501 detobj.groupUUID = obj.GroupID;
2513 colliding.Add(detobj); 2502 colliding.Add(detobj);
2514 } 2503 }
2515 } 2504 }
2516 } 2505 }
2517 else 2506 else
2518 { 2507 {
2519 m_parentGroup.Scene.ForEachRootScenePresence(delegate(ScenePresence av) 2508 ParentGroup.Scene.ForEachRootScenePresence(delegate(ScenePresence av)
2520 { 2509 {
2521 if (av.LocalId == localId) 2510 if (av.LocalId == localId)
2522 { 2511 {
2523 if (m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.UUID.ToString()) 2512 if (ParentGroup.RootPart.CollisionFilter.ContainsValue(av.UUID.ToString())
2524 || m_parentGroup.RootPart.CollisionFilter.ContainsValue(av.Name)) 2513 || ParentGroup.RootPart.CollisionFilter.ContainsValue(av.Name))
2525 { 2514 {
2526 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1, out data); 2515 bool found = ParentGroup.RootPart.CollisionFilter.TryGetValue(1, out data);
2527 //If it is 1, it is to accept ONLY collisions from this avatar 2516 //If it is 1, it is to accept ONLY collisions from this avatar
2528 if (found) 2517 if (found)
2529 { 2518 {
@@ -2545,7 +2534,7 @@ namespace OpenSim.Region.Framework.Scenes
2545 } 2534 }
2546 else 2535 else
2547 { 2536 {
2548 bool found = m_parentGroup.RootPart.CollisionFilter.TryGetValue(1, out data); 2537 bool found = ParentGroup.RootPart.CollisionFilter.TryGetValue(1, out data);
2549 //If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work 2538 //If it is 1, it is to accept ONLY collisions from this avatar, so this other avatar will not work
2550 if (!found) 2539 if (!found)
2551 { 2540 {
@@ -2571,15 +2560,15 @@ namespace OpenSim.Region.Framework.Scenes
2571 { 2560 {
2572 EndCollidingMessage.Colliders = colliding; 2561 EndCollidingMessage.Colliders = colliding;
2573 2562
2574 if (m_parentGroup.Scene == null) 2563 if (ParentGroup.Scene == null)
2575 return; 2564 return;
2576 2565
2577 m_parentGroup.Scene.EventManager.TriggerScriptCollidingEnd(LocalId, EndCollidingMessage); 2566 ParentGroup.Scene.EventManager.TriggerScriptCollidingEnd(LocalId, EndCollidingMessage);
2578 } 2567 }
2579 } 2568 }
2580 } 2569 }
2581 2570
2582 if ((m_parentGroup.RootPart.ScriptEvents & scriptEvents.land_collision_start) != 0) 2571 if ((ParentGroup.RootPart.ScriptEvents & scriptEvents.land_collision_start) != 0)
2583 { 2572 {
2584 if (startedColliders.Count > 0) 2573 if (startedColliders.Count > 0)
2585 { 2574 {
@@ -2594,7 +2583,7 @@ namespace OpenSim.Region.Framework.Scenes
2594 detobj.keyUUID = UUID.Zero; 2583 detobj.keyUUID = UUID.Zero;
2595 detobj.nameStr = ""; 2584 detobj.nameStr = "";
2596 detobj.ownerUUID = UUID.Zero; 2585 detobj.ownerUUID = UUID.Zero;
2597 detobj.posVector = m_parentGroup.RootPart.AbsolutePosition; 2586 detobj.posVector = ParentGroup.RootPart.AbsolutePosition;
2598 detobj.rotQuat = Quaternion.Identity; 2587 detobj.rotQuat = Quaternion.Identity;
2599 detobj.velVector = Vector3.Zero; 2588 detobj.velVector = Vector3.Zero;
2600 detobj.colliderType = 0; 2589 detobj.colliderType = 0;
@@ -2607,15 +2596,15 @@ namespace OpenSim.Region.Framework.Scenes
2607 { 2596 {
2608 LandStartCollidingMessage.Colliders = colliding; 2597 LandStartCollidingMessage.Colliders = colliding;
2609 2598
2610 if (m_parentGroup.Scene == null) 2599 if (ParentGroup.Scene == null)
2611 return; 2600 return;
2612 2601
2613 m_parentGroup.Scene.EventManager.TriggerScriptLandCollidingStart(LocalId, LandStartCollidingMessage); 2602 ParentGroup.Scene.EventManager.TriggerScriptLandCollidingStart(LocalId, LandStartCollidingMessage);
2614 } 2603 }
2615 } 2604 }
2616 } 2605 }
2617 2606
2618 if ((m_parentGroup.RootPart.ScriptEvents & scriptEvents.land_collision) != 0) 2607 if ((ParentGroup.RootPart.ScriptEvents & scriptEvents.land_collision) != 0)
2619 { 2608 {
2620 if (m_lastColliders.Count > 0) 2609 if (m_lastColliders.Count > 0)
2621 { 2610 {
@@ -2630,7 +2619,7 @@ namespace OpenSim.Region.Framework.Scenes
2630 detobj.keyUUID = UUID.Zero; 2619 detobj.keyUUID = UUID.Zero;
2631 detobj.nameStr = ""; 2620 detobj.nameStr = "";
2632 detobj.ownerUUID = UUID.Zero; 2621 detobj.ownerUUID = UUID.Zero;
2633 detobj.posVector = m_parentGroup.RootPart.AbsolutePosition; 2622 detobj.posVector = ParentGroup.RootPart.AbsolutePosition;
2634 detobj.rotQuat = Quaternion.Identity; 2623 detobj.rotQuat = Quaternion.Identity;
2635 detobj.velVector = Vector3.Zero; 2624 detobj.velVector = Vector3.Zero;
2636 detobj.colliderType = 0; 2625 detobj.colliderType = 0;
@@ -2643,15 +2632,15 @@ namespace OpenSim.Region.Framework.Scenes
2643 { 2632 {
2644 LandCollidingMessage.Colliders = colliding; 2633 LandCollidingMessage.Colliders = colliding;
2645 2634
2646 if (m_parentGroup.Scene == null) 2635 if (ParentGroup.Scene == null)
2647 return; 2636 return;
2648 2637
2649 m_parentGroup.Scene.EventManager.TriggerScriptLandColliding(LocalId, LandCollidingMessage); 2638 ParentGroup.Scene.EventManager.TriggerScriptLandColliding(LocalId, LandCollidingMessage);
2650 } 2639 }
2651 } 2640 }
2652 } 2641 }
2653 2642
2654 if ((m_parentGroup.RootPart.ScriptEvents & scriptEvents.land_collision_end) != 0) 2643 if ((ParentGroup.RootPart.ScriptEvents & scriptEvents.land_collision_end) != 0)
2655 { 2644 {
2656 if (endedColliders.Count > 0) 2645 if (endedColliders.Count > 0)
2657 { 2646 {
@@ -2666,7 +2655,7 @@ namespace OpenSim.Region.Framework.Scenes
2666 detobj.keyUUID = UUID.Zero; 2655 detobj.keyUUID = UUID.Zero;
2667 detobj.nameStr = ""; 2656 detobj.nameStr = "";
2668 detobj.ownerUUID = UUID.Zero; 2657 detobj.ownerUUID = UUID.Zero;
2669 detobj.posVector = m_parentGroup.RootPart.AbsolutePosition; 2658 detobj.posVector = ParentGroup.RootPart.AbsolutePosition;
2670 detobj.rotQuat = Quaternion.Identity; 2659 detobj.rotQuat = Quaternion.Identity;
2671 detobj.velVector = Vector3.Zero; 2660 detobj.velVector = Vector3.Zero;
2672 detobj.colliderType = 0; 2661 detobj.colliderType = 0;
@@ -2679,10 +2668,10 @@ namespace OpenSim.Region.Framework.Scenes
2679 { 2668 {
2680 LandEndCollidingMessage.Colliders = colliding; 2669 LandEndCollidingMessage.Colliders = colliding;
2681 2670
2682 if (m_parentGroup.Scene == null) 2671 if (ParentGroup.Scene == null)
2683 return; 2672 return;
2684 2673
2685 m_parentGroup.Scene.EventManager.TriggerScriptLandCollidingEnd(LocalId, LandEndCollidingMessage); 2674 ParentGroup.Scene.EventManager.TriggerScriptLandCollidingEnd(LocalId, LandEndCollidingMessage);
2686 } 2675 }
2687 } 2676 }
2688 } 2677 }
@@ -2694,7 +2683,7 @@ namespace OpenSim.Region.Framework.Scenes
2694 2683
2695 RemFlag(PrimFlags.Physics); 2684 RemFlag(PrimFlags.Physics);
2696 DoPhysicsPropertyUpdate(false, true); 2685 DoPhysicsPropertyUpdate(false, true);
2697 //m_parentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(PhysActor); 2686 //ParentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(PhysActor);
2698 } 2687 }
2699 2688
2700 public void PhysicsRequestingTerseUpdate() 2689 public void PhysicsRequestingTerseUpdate()
@@ -2703,15 +2692,15 @@ namespace OpenSim.Region.Framework.Scenes
2703 { 2692 {
2704 Vector3 newpos = new Vector3(PhysActor.Position.GetBytes(), 0); 2693 Vector3 newpos = new Vector3(PhysActor.Position.GetBytes(), 0);
2705 2694
2706 if (m_parentGroup.Scene.TestBorderCross(newpos, Cardinals.N) 2695 if (ParentGroup.Scene.TestBorderCross(newpos, Cardinals.N)
2707 | m_parentGroup.Scene.TestBorderCross(newpos, Cardinals.S) 2696 | ParentGroup.Scene.TestBorderCross(newpos, Cardinals.S)
2708 | m_parentGroup.Scene.TestBorderCross(newpos, Cardinals.E) 2697 | ParentGroup.Scene.TestBorderCross(newpos, Cardinals.E)
2709 | m_parentGroup.Scene.TestBorderCross(newpos, Cardinals.W)) 2698 | ParentGroup.Scene.TestBorderCross(newpos, Cardinals.W))
2710 { 2699 {
2711 m_parentGroup.AbsolutePosition = newpos; 2700 ParentGroup.AbsolutePosition = newpos;
2712 return; 2701 return;
2713 } 2702 }
2714 //m_parentGroup.RootPart.m_groupPosition = newpos; 2703 //ParentGroup.RootPart.m_groupPosition = newpos;
2715 } 2704 }
2716 ScheduleTerseUpdate(); 2705 ScheduleTerseUpdate();
2717 2706
@@ -2743,7 +2732,7 @@ namespace OpenSim.Region.Framework.Scenes
2743 TaskInventory.LockItemsForRead(false); 2732 TaskInventory.LockItemsForRead(false);
2744 } 2733 }
2745 2734
2746 m_parentGroup.Scene.ForEachRootScenePresence(delegate(ScenePresence sp) 2735 ParentGroup.Scene.ForEachRootScenePresence(delegate(ScenePresence sp)
2747 { 2736 {
2748 if (!(Util.GetDistanceTo(sp.AbsolutePosition, AbsolutePosition) >= 100)) 2737 if (!(Util.GetDistanceTo(sp.AbsolutePosition, AbsolutePosition) >= 100))
2749 sp.ControllingClient.SendPreLoadSound(objectID, objectID, soundID); 2738 sp.ControllingClient.SendPreLoadSound(objectID, objectID, soundID);
@@ -2828,7 +2817,7 @@ namespace OpenSim.Region.Framework.Scenes
2828 2817
2829 public void rotLookAt(Quaternion target, float strength, float damping) 2818 public void rotLookAt(Quaternion target, float strength, float damping)
2830 { 2819 {
2831 if (m_parentGroup.IsAttachment) 2820 if (ParentGroup.IsAttachment)
2832 { 2821 {
2833 /* 2822 /*
2834 ScenePresence avatar = m_scene.GetScenePresence(rootpart.AttachedAvatar); 2823 ScenePresence avatar = m_scene.GetScenePresence(rootpart.AttachedAvatar);
@@ -2864,10 +2853,10 @@ namespace OpenSim.Region.Framework.Scenes
2864 { 2853 {
2865// m_log.DebugFormat("[SCENE OBJECT PART]: Scheduling full update for {0} {1}", Name, LocalId); 2854// m_log.DebugFormat("[SCENE OBJECT PART]: Scheduling full update for {0} {1}", Name, LocalId);
2866 2855
2867 if (m_parentGroup == null) 2856 if (ParentGroup == null)
2868 return; 2857 return;
2869 2858
2870 m_parentGroup.QueueForUpdateCheck(); 2859 ParentGroup.QueueForUpdateCheck();
2871 2860
2872 int timeNow = Util.UnixTimeSinceEpoch(); 2861 int timeNow = Util.UnixTimeSinceEpoch();
2873 2862
@@ -2896,13 +2885,13 @@ namespace OpenSim.Region.Framework.Scenes
2896 /// </summary> 2885 /// </summary>
2897 public void ScheduleTerseUpdate() 2886 public void ScheduleTerseUpdate()
2898 { 2887 {
2899 if (m_parentGroup == null) 2888 if (ParentGroup == null)
2900 return; 2889 return;
2901 2890
2902 if (UpdateFlag == UpdateRequired.NONE) 2891 if (UpdateFlag == UpdateRequired.NONE)
2903 { 2892 {
2904 m_parentGroup.HasGroupChanged = true; 2893 ParentGroup.HasGroupChanged = true;
2905 m_parentGroup.QueueForUpdateCheck(); 2894 ParentGroup.QueueForUpdateCheck();
2906 2895
2907 TimeStampTerse = (uint) Util.UnixTimeSinceEpoch(); 2896 TimeStampTerse = (uint) Util.UnixTimeSinceEpoch();
2908 UpdateFlag = UpdateRequired.TERSE; 2897 UpdateFlag = UpdateRequired.TERSE;
@@ -2915,7 +2904,7 @@ namespace OpenSim.Region.Framework.Scenes
2915 2904
2916 public void ScriptSetPhysicsStatus(bool UsePhysics) 2905 public void ScriptSetPhysicsStatus(bool UsePhysics)
2917 { 2906 {
2918 m_parentGroup.ScriptSetPhysicsStatus(UsePhysics); 2907 ParentGroup.ScriptSetPhysicsStatus(UsePhysics);
2919 } 2908 }
2920 2909
2921 /// <summary> 2910 /// <summary>
@@ -2942,7 +2931,7 @@ namespace OpenSim.Region.Framework.Scenes
2942 // Update the physics actor with the new loaded sculpt data and set the taint signal. 2931 // Update the physics actor with the new loaded sculpt data and set the taint signal.
2943 PhysActor.Shape = m_shape; 2932 PhysActor.Shape = m_shape;
2944 2933
2945 m_parentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(PhysActor); 2934 ParentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(PhysActor);
2946 } 2935 }
2947 } 2936 }
2948 } 2937 }
@@ -2955,7 +2944,7 @@ namespace OpenSim.Region.Framework.Scenes
2955 /// <param name="clientFlags"></param> 2944 /// <param name="clientFlags"></param>
2956 protected internal void SendFullUpdate(IClientAPI remoteClient, uint clientFlags) 2945 protected internal void SendFullUpdate(IClientAPI remoteClient, uint clientFlags)
2957 { 2946 {
2958 if (m_parentGroup == null) 2947 if (ParentGroup == null)
2959 return; 2948 return;
2960 2949
2961// m_log.DebugFormat( 2950// m_log.DebugFormat(
@@ -2963,7 +2952,7 @@ namespace OpenSim.Region.Framework.Scenes
2963 2952
2964 if (IsRoot) 2953 if (IsRoot)
2965 { 2954 {
2966 if (m_parentGroup.IsAttachment) 2955 if (ParentGroup.IsAttachment)
2967 { 2956 {
2968 SendFullUpdateToClient(remoteClient, AttachedPos, clientFlags); 2957 SendFullUpdateToClient(remoteClient, AttachedPos, clientFlags);
2969 } 2958 }
@@ -2983,10 +2972,10 @@ namespace OpenSim.Region.Framework.Scenes
2983 /// </summary> 2972 /// </summary>
2984 public void SendFullUpdateToAllClients() 2973 public void SendFullUpdateToAllClients()
2985 { 2974 {
2986 if (m_parentGroup == null) 2975 if (ParentGroup == null)
2987 return; 2976 return;
2988 2977
2989 m_parentGroup.Scene.ForEachScenePresence(delegate(ScenePresence avatar) 2978 ParentGroup.Scene.ForEachScenePresence(delegate(ScenePresence avatar)
2990 { 2979 {
2991 SendFullUpdate(avatar.ControllingClient, avatar.GenerateClientFlags(UUID)); 2980 SendFullUpdate(avatar.ControllingClient, avatar.GenerateClientFlags(UUID));
2992 }); 2981 });
@@ -2998,10 +2987,10 @@ namespace OpenSim.Region.Framework.Scenes
2998 /// <param name="agentID"></param> 2987 /// <param name="agentID"></param>
2999 public void SendFullUpdateToAllClientsExcept(UUID agentID) 2988 public void SendFullUpdateToAllClientsExcept(UUID agentID)
3000 { 2989 {
3001 if (m_parentGroup == null) 2990 if (ParentGroup == null)
3002 return; 2991 return;
3003 2992
3004 m_parentGroup.Scene.ForEachScenePresence(delegate(ScenePresence avatar) 2993 ParentGroup.Scene.ForEachScenePresence(delegate(ScenePresence avatar)
3005 { 2994 {
3006 // Ugly reference :( 2995 // Ugly reference :(
3007 if (avatar.UUID != agentID) 2996 if (avatar.UUID != agentID)
@@ -3046,7 +3035,7 @@ namespace OpenSim.Region.Framework.Scenes
3046 3035
3047 clientFlags &= ~(uint) PrimFlags.CreateSelected; 3036 clientFlags &= ~(uint) PrimFlags.CreateSelected;
3048 3037
3049 if (remoteClient.AgentId == _ownerID) 3038 if (remoteClient.AgentId == OwnerID)
3050 { 3039 {
3051 if ((Flags & PrimFlags.CreateSelected) != 0) 3040 if ((Flags & PrimFlags.CreateSelected) != 0)
3052 { 3041 {
@@ -3122,13 +3111,13 @@ namespace OpenSim.Region.Framework.Scenes
3122 if (volume < 0) 3111 if (volume < 0)
3123 volume = 0; 3112 volume = 0;
3124 3113
3125 UUID ownerID = _ownerID; 3114 UUID ownerID = OwnerID;
3126 UUID objectID = ParentGroup.RootPart.UUID; 3115 UUID objectID = ParentGroup.RootPart.UUID;
3127 UUID parentID = ParentGroup.UUID; 3116 UUID parentID = ParentGroup.UUID;
3128 3117
3129 UUID soundID = UUID.Zero; 3118 UUID soundID = UUID.Zero;
3130 Vector3 position = AbsolutePosition; // region local 3119 Vector3 position = AbsolutePosition; // region local
3131 ulong regionHandle = m_parentGroup.Scene.RegionInfo.RegionHandle; 3120 ulong regionHandle = ParentGroup.Scene.RegionInfo.RegionHandle;
3132 3121
3133 if (!UUID.TryParse(sound, out soundID)) 3122 if (!UUID.TryParse(sound, out soundID))
3134 { 3123 {
@@ -3148,7 +3137,7 @@ namespace OpenSim.Region.Framework.Scenes
3148 if (soundID == UUID.Zero) 3137 if (soundID == UUID.Zero)
3149 return; 3138 return;
3150 3139
3151 ISoundModule soundModule = m_parentGroup.Scene.RequestModuleInterface<ISoundModule>(); 3140 ISoundModule soundModule = ParentGroup.Scene.RequestModuleInterface<ISoundModule>();
3152 if (soundModule != null) 3141 if (soundModule != null)
3153 { 3142 {
3154 if (useMaster) 3143 if (useMaster)
@@ -3160,7 +3149,7 @@ namespace OpenSim.Region.Framework.Scenes
3160 else 3149 else
3161 soundModule.PlayAttachedSound(soundID, ownerID, objectID, volume, position, flags, radius); 3150 soundModule.PlayAttachedSound(soundID, ownerID, objectID, volume, position, flags, radius);
3162 ParentGroup.PlaySoundMasterPrim = this; 3151 ParentGroup.PlaySoundMasterPrim = this;
3163 ownerID = _ownerID; 3152 ownerID = OwnerID;
3164 objectID = ParentGroup.RootPart.UUID; 3153 objectID = ParentGroup.RootPart.UUID;
3165 parentID = ParentGroup.UUID; 3154 parentID = ParentGroup.UUID;
3166 position = AbsolutePosition; // region local 3155 position = AbsolutePosition; // region local
@@ -3171,7 +3160,7 @@ namespace OpenSim.Region.Framework.Scenes
3171 soundModule.PlayAttachedSound(soundID, ownerID, objectID, volume, position, flags, radius); 3160 soundModule.PlayAttachedSound(soundID, ownerID, objectID, volume, position, flags, radius);
3172 foreach (SceneObjectPart prim in ParentGroup.PlaySoundSlavePrims) 3161 foreach (SceneObjectPart prim in ParentGroup.PlaySoundSlavePrims)
3173 { 3162 {
3174 ownerID = prim._ownerID; 3163 ownerID = prim.OwnerID;
3175 objectID = prim.ParentGroup.RootPart.UUID; 3164 objectID = prim.ParentGroup.RootPart.UUID;
3176 parentID = prim.ParentGroup.UUID; 3165 parentID = prim.ParentGroup.UUID;
3177 position = prim.AbsolutePosition; // region local 3166 position = prim.AbsolutePosition; // region local
@@ -3204,7 +3193,7 @@ namespace OpenSim.Region.Framework.Scenes
3204 /// </summary> 3193 /// </summary>
3205 public void SendTerseUpdateToAllClients() 3194 public void SendTerseUpdateToAllClients()
3206 { 3195 {
3207 m_parentGroup.Scene.ForEachScenePresence(delegate(ScenePresence avatar) 3196 ParentGroup.Scene.ForEachScenePresence(delegate(ScenePresence avatar)
3208 { 3197 {
3209 SendTerseUpdateToClient(avatar.ControllingClient); 3198 SendTerseUpdateToClient(avatar.ControllingClient);
3210 }); 3199 });
@@ -3212,7 +3201,7 @@ namespace OpenSim.Region.Framework.Scenes
3212 3201
3213 public void SetAxisRotation(int axis, int rotate) 3202 public void SetAxisRotation(int axis, int rotate)
3214 { 3203 {
3215 m_parentGroup.SetAxisRotation(axis, rotate); 3204 ParentGroup.SetAxisRotation(axis, rotate);
3216 3205
3217 //Cannot use ScriptBaseClass constants as no referance to it currently. 3206 //Cannot use ScriptBaseClass constants as no referance to it currently.
3218 if (axis == 2)//STATUS_ROTATE_X 3207 if (axis == 2)//STATUS_ROTATE_X
@@ -3235,10 +3224,10 @@ namespace OpenSim.Region.Framework.Scenes
3235 3224
3236 public void SetDieAtEdge(bool p) 3225 public void SetDieAtEdge(bool p)
3237 { 3226 {
3238 if (m_parentGroup.IsDeleted) 3227 if (ParentGroup.IsDeleted)
3239 return; 3228 return;
3240 3229
3241 m_parentGroup.RootPart.DIE_AT_EDGE = p; 3230 ParentGroup.RootPart.DIE_AT_EDGE = p;
3242 } 3231 }
3243 3232
3244 public void SetFloatOnWater(int floatYN) 3233 public void SetFloatOnWater(int floatYN)
@@ -3480,7 +3469,7 @@ namespace OpenSim.Region.Framework.Scenes
3480 3469
3481 public void SetGroup(UUID groupID, IClientAPI client) 3470 public void SetGroup(UUID groupID, IClientAPI client)
3482 { 3471 {
3483 _groupID = groupID; 3472 GroupID = groupID;
3484 if (client != null) 3473 if (client != null)
3485 SendPropertiesToClient(client); 3474 SendPropertiesToClient(client);
3486 UpdateFlag = UpdateRequired.FULL; 3475 UpdateFlag = UpdateRequired.FULL;
@@ -3491,13 +3480,13 @@ namespace OpenSim.Region.Framework.Scenes
3491 /// </summary> 3480 /// </summary>
3492 public void SetParent(SceneObjectGroup parent) 3481 public void SetParent(SceneObjectGroup parent)
3493 { 3482 {
3494 m_parentGroup = parent; 3483 ParentGroup = parent;
3495 } 3484 }
3496 3485
3497 // Use this for attachments! LocalID should be avatar's localid 3486 // Use this for attachments! LocalID should be avatar's localid
3498 public void SetParentLocalId(uint localID) 3487 public void SetParentLocalId(uint localID)
3499 { 3488 {
3500 _parentID = localID; 3489 ParentID = localID;
3501 } 3490 }
3502 3491
3503 public void SetPhysicsAxisRotation() 3492 public void SetPhysicsAxisRotation()
@@ -3505,7 +3494,7 @@ namespace OpenSim.Region.Framework.Scenes
3505 if (PhysActor != null) 3494 if (PhysActor != null)
3506 { 3495 {
3507 PhysActor.LockAngularMotion(RotationAxis); 3496 PhysActor.LockAngularMotion(RotationAxis);
3508 m_parentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(PhysActor); 3497 ParentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(PhysActor);
3509 } 3498 }
3510 } 3499 }
3511 3500
@@ -3553,9 +3542,9 @@ namespace OpenSim.Region.Framework.Scenes
3553 3542
3554 public void StopLookAt() 3543 public void StopLookAt()
3555 { 3544 {
3556 m_parentGroup.stopLookAt(); // This calls method in SceneObjectGroup. 3545 ParentGroup.stopLookAt();
3557 3546
3558 m_parentGroup.ScheduleGroupForTerseUpdate(); 3547 ParentGroup.ScheduleGroupForTerseUpdate();
3559 } 3548 }
3560 3549
3561 /// <summary> 3550 /// <summary>
@@ -3575,10 +3564,10 @@ namespace OpenSim.Region.Framework.Scenes
3575 3564
3576 public void StopMoveToTarget() 3565 public void StopMoveToTarget()
3577 { 3566 {
3578 m_parentGroup.stopMoveToTarget(); 3567 ParentGroup.stopMoveToTarget();
3579 3568
3580 m_parentGroup.ScheduleGroupForTerseUpdate(); 3569 ParentGroup.ScheduleGroupForTerseUpdate();
3581 //m_parentGroup.ScheduleGroupForFullUpdate(); 3570 //ParentGroup.ScheduleGroupForFullUpdate();
3582 } 3571 }
3583 3572
3584 public void StoreUndoState() 3573 public void StoreUndoState()
@@ -3612,12 +3601,12 @@ namespace OpenSim.Region.Framework.Scenes
3612 } 3601 }
3613 } 3602 }
3614 } 3603 }
3615 3604
3616 // m_log.DebugFormat( 3605 // m_log.DebugFormat(
3617 // "[SCENE OBJECT PART]: Storing undo state for {0} {1}, forGroup {2}, initial stack size {3}", 3606 // "[SCENE OBJECT PART]: Storing undo state for {0} {1}, forGroup {2}, initial stack size {3}",
3618 // Name, LocalId, forGroup, m_undo.Count); 3607 // Name, LocalId, forGroup, m_undo.Count);
3619 3608
3620 if (m_parentGroup.GetSceneMaxUndo() > 0) 3609 if (ParentGroup.GetSceneMaxUndo() > 0)
3621 { 3610 {
3622 UndoState nUndo = new UndoState(this, forGroup); 3611 UndoState nUndo = new UndoState(this, forGroup);
3623 3612
@@ -3673,7 +3662,7 @@ namespace OpenSim.Region.Framework.Scenes
3673 { 3662 {
3674 UndoState nUndo = null; 3663 UndoState nUndo = null;
3675 3664
3676 if (m_parentGroup.GetSceneMaxUndo() > 0) 3665 if (ParentGroup.GetSceneMaxUndo() > 0)
3677 { 3666 {
3678 nUndo = new UndoState(this, goback.ForGroup); 3667 nUndo = new UndoState(this, goback.ForGroup);
3679 } 3668 }
@@ -3705,7 +3694,7 @@ namespace OpenSim.Region.Framework.Scenes
3705 3694
3706 if (gofwd != null) 3695 if (gofwd != null)
3707 { 3696 {
3708 if (m_parentGroup.GetSceneMaxUndo() > 0) 3697 if (ParentGroup.GetSceneMaxUndo() > 0)
3709 { 3698 {
3710 UndoState nUndo = new UndoState(this, gofwd.ForGroup); 3699 UndoState nUndo = new UndoState(this, gofwd.ForGroup);
3711 3700
@@ -4180,17 +4169,17 @@ namespace OpenSim.Region.Framework.Scenes
4180 4169
4181 public void TriggerScriptChangedEvent(Changed val) 4170 public void TriggerScriptChangedEvent(Changed val)
4182 { 4171 {
4183 if (m_parentGroup != null && m_parentGroup.Scene != null) 4172 if (ParentGroup != null && ParentGroup.Scene != null)
4184 m_parentGroup.Scene.EventManager.TriggerOnScriptChangedEvent(LocalId, (uint)val); 4173 ParentGroup.Scene.EventManager.TriggerOnScriptChangedEvent(LocalId, (uint)val);
4185 } 4174 }
4186 4175
4187 public void TrimPermissions() 4176 public void TrimPermissions()
4188 { 4177 {
4189 _baseMask &= (uint)PermissionMask.All; 4178 BaseMask &= (uint)PermissionMask.All;
4190 _ownerMask &= (uint)PermissionMask.All; 4179 OwnerMask &= (uint)PermissionMask.All;
4191 _groupMask &= (uint)PermissionMask.All; 4180 GroupMask &= (uint)PermissionMask.All;
4192 _everyoneMask &= (uint)PermissionMask.All; 4181 EveryoneMask &= (uint)PermissionMask.All;
4193 _nextOwnerMask &= (uint)PermissionMask.All; 4182 NextOwnerMask &= (uint)PermissionMask.All;
4194 } 4183 }
4195 4184
4196 public void UpdateExtraParam(ushort type, bool inUse, byte[] data) 4185 public void UpdateExtraParam(ushort type, bool inUse, byte[] data)
@@ -4201,7 +4190,7 @@ namespace OpenSim.Region.Framework.Scenes
4201 { 4190 {
4202 if (m_shape.SculptEntry && m_shape.SculptTexture != UUID.Zero) 4191 if (m_shape.SculptEntry && m_shape.SculptTexture != UUID.Zero)
4203 { 4192 {
4204 m_parentGroup.Scene.AssetService.Get(m_shape.SculptTexture.ToString(), this, AssetReceived); 4193 ParentGroup.Scene.AssetService.Get(m_shape.SculptTexture.ToString(), this, AssetReceived);
4205 } 4194 }
4206 } 4195 }
4207 4196
@@ -4264,46 +4253,46 @@ namespace OpenSim.Region.Framework.Scenes
4264 public void UpdatePermissions(UUID AgentID, byte field, uint localID, uint mask, byte addRemTF) 4253 public void UpdatePermissions(UUID AgentID, byte field, uint localID, uint mask, byte addRemTF)
4265 { 4254 {
4266 bool set = addRemTF == 1; 4255 bool set = addRemTF == 1;
4267 bool god = m_parentGroup.Scene.Permissions.IsGod(AgentID); 4256 bool god = ParentGroup.Scene.Permissions.IsGod(AgentID);
4268 4257
4269 uint baseMask = _baseMask; 4258 uint baseMask = BaseMask;
4270 if (god) 4259 if (god)
4271 baseMask = 0x7ffffff0; 4260 baseMask = 0x7ffffff0;
4272 4261
4273 // Are we the owner? 4262 // Are we the owner?
4274 if ((AgentID == _ownerID) || god) 4263 if ((AgentID == OwnerID) || god)
4275 { 4264 {
4276 switch (field) 4265 switch (field)
4277 { 4266 {
4278 case 1: 4267 case 1:
4279 if (god) 4268 if (god)
4280 { 4269 {
4281 _baseMask = ApplyMask(_baseMask, set, mask); 4270 BaseMask = ApplyMask(BaseMask, set, mask);
4282 Inventory.ApplyGodPermissions(_baseMask); 4271 Inventory.ApplyGodPermissions(_baseMask);
4283 } 4272 }
4284 4273
4285 break; 4274 break;
4286 case 2: 4275 case 2:
4287 _ownerMask = ApplyMask(_ownerMask, set, mask) & 4276 OwnerMask = ApplyMask(OwnerMask, set, mask) &
4288 baseMask; 4277 baseMask;
4289 break; 4278 break;
4290 case 4: 4279 case 4:
4291 _groupMask = ApplyMask(_groupMask, set, mask) & 4280 GroupMask = ApplyMask(GroupMask, set, mask) &
4292 baseMask; 4281 baseMask;
4293 break; 4282 break;
4294 case 8: 4283 case 8:
4295 _everyoneMask = ApplyMask(_everyoneMask, set, mask) & 4284 EveryoneMask = ApplyMask(EveryoneMask, set, mask) &
4296 baseMask; 4285 baseMask;
4297 break; 4286 break;
4298 case 16: 4287 case 16:
4299 _nextOwnerMask = ApplyMask(_nextOwnerMask, set, mask) & 4288 NextOwnerMask = ApplyMask(NextOwnerMask, set, mask) &
4300 baseMask; 4289 baseMask;
4301 // Prevent the client from creating no mod, no copy 4290 // Prevent the client from creating no mod, no copy
4302 // objects 4291 // objects
4303 if ((_nextOwnerMask & (uint)PermissionMask.Copy) == 0) 4292 if ((NextOwnerMask & (uint)PermissionMask.Copy) == 0)
4304 _nextOwnerMask |= (uint)PermissionMask.Transfer; 4293 NextOwnerMask |= (uint)PermissionMask.Transfer;
4305 4294
4306 _nextOwnerMask |= (uint)PermissionMask.Move; 4295 NextOwnerMask |= (uint)PermissionMask.Move;
4307 4296
4308 break; 4297 break;
4309 } 4298 }
@@ -4317,7 +4306,7 @@ namespace OpenSim.Region.Framework.Scenes
4317 // For now, we use the NINJA naming scheme for identifying joints. 4306 // For now, we use the NINJA naming scheme for identifying joints.
4318 // In the future, we can support other joint specification schemes such as a 4307 // In the future, we can support other joint specification schemes such as a
4319 // custom checkbox in the viewer GUI. 4308 // custom checkbox in the viewer GUI.
4320 if (m_parentGroup.Scene.PhysicsScene.SupportsNINJAJoints) 4309 if (ParentGroup.Scene.PhysicsScene.SupportsNINJAJoints)
4321 { 4310 {
4322 string hingeString = "hingejoint"; 4311 string hingeString = "hingejoint";
4323 return (Name.Length >= hingeString.Length && Name.Substring(0, hingeString.Length) == hingeString); 4312 return (Name.Length >= hingeString.Length && Name.Substring(0, hingeString.Length) == hingeString);
@@ -4333,7 +4322,7 @@ namespace OpenSim.Region.Framework.Scenes
4333 // For now, we use the NINJA naming scheme for identifying joints. 4322 // For now, we use the NINJA naming scheme for identifying joints.
4334 // In the future, we can support other joint specification schemes such as a 4323 // In the future, we can support other joint specification schemes such as a
4335 // custom checkbox in the viewer GUI. 4324 // custom checkbox in the viewer GUI.
4336 if (m_parentGroup.Scene.PhysicsScene.SupportsNINJAJoints) 4325 if (ParentGroup.Scene.PhysicsScene.SupportsNINJAJoints)
4337 { 4326 {
4338 string ballString = "balljoint"; 4327 string ballString = "balljoint";
4339 return (Name.Length >= ballString.Length && Name.Substring(0, ballString.Length) == ballString); 4328 return (Name.Length >= ballString.Length && Name.Substring(0, ballString.Length) == ballString);
@@ -4349,7 +4338,7 @@ namespace OpenSim.Region.Framework.Scenes
4349 // For now, we use the NINJA naming scheme for identifying joints. 4338 // For now, we use the NINJA naming scheme for identifying joints.
4350 // In the future, we can support other joint specification schemes such as a 4339 // In the future, we can support other joint specification schemes such as a
4351 // custom checkbox in the viewer GUI. 4340 // custom checkbox in the viewer GUI.
4352 if (m_parentGroup.Scene.PhysicsScene.SupportsNINJAJoints) 4341 if (ParentGroup.Scene.PhysicsScene.SupportsNINJAJoints)
4353 { 4342 {
4354 return IsHingeJoint() || IsBallJoint(); 4343 return IsHingeJoint() || IsBallJoint();
4355 } 4344 }
@@ -4415,11 +4404,11 @@ namespace OpenSim.Region.Framework.Scenes
4415 { 4404 {
4416 DoPhysicsPropertyUpdate(UsePhysics, false); 4405 DoPhysicsPropertyUpdate(UsePhysics, false);
4417 4406
4418 if (!m_parentGroup.IsDeleted) 4407 if (!ParentGroup.IsDeleted)
4419 { 4408 {
4420 if (LocalId == m_parentGroup.RootPart.LocalId) 4409 if (LocalId == ParentGroup.RootPart.LocalId)
4421 { 4410 {
4422 m_parentGroup.CheckSculptAndLoad(); 4411 ParentGroup.CheckSculptAndLoad();
4423 } 4412 }
4424 } 4413 }
4425 } 4414 }
@@ -4452,7 +4441,7 @@ namespace OpenSim.Region.Framework.Scenes
4452 if (PhysActor == null) 4441 if (PhysActor == null)
4453 { 4442 {
4454 // It's not phantom anymore. So make sure the physics engine get's knowledge of it 4443 // It's not phantom anymore. So make sure the physics engine get's knowledge of it
4455 PhysActor = m_parentGroup.Scene.PhysicsScene.AddPrimShape( 4444 PhysActor = ParentGroup.Scene.PhysicsScene.AddPrimShape(
4456 string.Format("{0}/{1}", Name, UUID), 4445 string.Format("{0}/{1}", Name, UUID),
4457 Shape, 4446 Shape,
4458 AbsolutePosition, 4447 AbsolutePosition,
@@ -4464,11 +4453,11 @@ namespace OpenSim.Region.Framework.Scenes
4464 PhysActor.SetMaterial(Material); 4453 PhysActor.SetMaterial(Material);
4465 DoPhysicsPropertyUpdate(UsePhysics, true); 4454 DoPhysicsPropertyUpdate(UsePhysics, true);
4466 4455
4467 if (!m_parentGroup.IsDeleted) 4456 if (!ParentGroup.IsDeleted)
4468 { 4457 {
4469 if (LocalId == m_parentGroup.RootPart.LocalId) 4458 if (LocalId == ParentGroup.RootPart.LocalId)
4470 { 4459 {
4471 m_parentGroup.CheckSculptAndLoad(); 4460 ParentGroup.CheckSculptAndLoad();
4472 } 4461 }
4473 } 4462 }
4474 4463
@@ -4490,11 +4479,11 @@ namespace OpenSim.Region.Framework.Scenes
4490 { 4479 {
4491 DoPhysicsPropertyUpdate(UsePhysics, false); // Update physical status. If it's phantom this will remove the prim 4480 DoPhysicsPropertyUpdate(UsePhysics, false); // Update physical status. If it's phantom this will remove the prim
4492 4481
4493 if (!m_parentGroup.IsDeleted) 4482 if (!ParentGroup.IsDeleted)
4494 { 4483 {
4495 if (LocalId == m_parentGroup.RootPart.LocalId) 4484 if (LocalId == ParentGroup.RootPart.LocalId)
4496 { 4485 {
4497 m_parentGroup.CheckSculptAndLoad(); 4486 ParentGroup.CheckSculptAndLoad();
4498 } 4487 }
4499 } 4488 }
4500 } 4489 }
@@ -4606,7 +4595,7 @@ namespace OpenSim.Region.Framework.Scenes
4606 if (PhysActor != null) 4595 if (PhysActor != null)
4607 { 4596 {
4608 PhysActor.Shape = m_shape; 4597 PhysActor.Shape = m_shape;
4609 m_parentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(PhysActor); 4598 ParentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(PhysActor);
4610 } 4599 }
4611 4600
4612 // This is what makes vehicle trailers work 4601 // This is what makes vehicle trailers work
@@ -4768,18 +4757,18 @@ namespace OpenSim.Region.Framework.Scenes
4768 4757
4769 //if ((GetEffectiveObjectFlags() & (uint)PrimFlags.Scripted) != 0) 4758 //if ((GetEffectiveObjectFlags() & (uint)PrimFlags.Scripted) != 0)
4770 //{ 4759 //{
4771 // m_parentGroup.Scene.EventManager.OnScriptTimerEvent += handleTimerAccounting; 4760 // ParentGroup.Scene.EventManager.OnScriptTimerEvent += handleTimerAccounting;
4772 //} 4761 //}
4773 //else 4762 //else
4774 //{ 4763 //{
4775 // m_parentGroup.Scene.EventManager.OnScriptTimerEvent -= handleTimerAccounting; 4764 // ParentGroup.Scene.EventManager.OnScriptTimerEvent -= handleTimerAccounting;
4776 //} 4765 //}
4777 4766
4778 LocalFlags = (PrimFlags)objectflagupdate; 4767 LocalFlags = (PrimFlags)objectflagupdate;
4779 4768
4780 if (m_parentGroup != null && m_parentGroup.RootPart == this) 4769 if (ParentGroup != null && ParentGroup.RootPart == this)
4781 { 4770 {
4782 m_parentGroup.aggregateScriptEvents(); 4771 ParentGroup.aggregateScriptEvents();
4783 } 4772 }
4784 else 4773 else
4785 { 4774 {
@@ -4847,14 +4836,14 @@ namespace OpenSim.Region.Framework.Scenes
4847 4836
4848 public void AddScriptLPS(int count) 4837 public void AddScriptLPS(int count)
4849 { 4838 {
4850 m_parentGroup.AddScriptLPS(count); 4839 ParentGroup.AddScriptLPS(count);
4851 } 4840 }
4852 4841
4853 public void ApplyNextOwnerPermissions() 4842 public void ApplyNextOwnerPermissions()
4854 { 4843 {
4855 _baseMask &= _nextOwnerMask; 4844 BaseMask &= NextOwnerMask;
4856 _ownerMask &= _nextOwnerMask; 4845 OwnerMask &= NextOwnerMask;
4857 _everyoneMask &= _nextOwnerMask; 4846 EveryoneMask &= NextOwnerMask;
4858 4847
4859 Inventory.ApplyNextOwnerPermissions(); 4848 Inventory.ApplyNextOwnerPermissions();
4860 } 4849 }