aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
diff options
context:
space:
mode:
authorMelanie2011-11-05 00:09:37 +0000
committerMelanie2011-11-05 00:09:37 +0000
commitc803ed28c3365c230d513837efc9ded8e8d1a4bd (patch)
treed256326159b4068809a661684d7a04f1b61464ef /OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
parentOn standup, trigger the changed link script event after the avatar has been f... (diff)
downloadopensim-SC-c803ed28c3365c230d513837efc9ded8e8d1a4bd.zip
opensim-SC-c803ed28c3365c230d513837efc9ded8e8d1a4bd.tar.gz
opensim-SC-c803ed28c3365c230d513837efc9ded8e8d1a4bd.tar.bz2
opensim-SC-c803ed28c3365c230d513837efc9ded8e8d1a4bd.tar.xz
Replacing te linking code with the code from Avination. Link sets prims are now
numbered properly even when sets are linked to sets.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs46
1 files changed, 11 insertions, 35 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index ef2682f..4d6c4cb 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -1963,16 +1963,6 @@ namespace OpenSim.Region.Framework.Scenes
1963 /// <param name="objectGroup">The group of prims which should be linked to this group</param> 1963 /// <param name="objectGroup">The group of prims which should be linked to this group</param>
1964 public void LinkToGroup(SceneObjectGroup objectGroup) 1964 public void LinkToGroup(SceneObjectGroup objectGroup)
1965 { 1965 {
1966 // Make sure we have sent any pending unlinks or stuff.
1967 //if (objectGroup.RootPart.UpdateFlag > 0)
1968 //{
1969 // m_log.WarnFormat(
1970 // "[SCENE OBJECT GROUP]: Forcing send of linkset {0}, {1} to {2}, {3} as its still waiting.",
1971 // objectGroup.RootPart.Name, objectGroup.RootPart.UUID, RootPart.Name, RootPart.UUID);
1972
1973 // objectGroup.RootPart.SendScheduledUpdates();
1974 //}
1975
1976// m_log.DebugFormat( 1966// m_log.DebugFormat(
1977// "[SCENE OBJECT GROUP]: Linking group with root part {0}, {1} to group with root part {2}, {3}", 1967// "[SCENE OBJECT GROUP]: Linking group with root part {0}, {1} to group with root part {2}, {3}",
1978// objectGroup.RootPart.Name, objectGroup.RootPart.UUID, RootPart.Name, RootPart.UUID); 1968// objectGroup.RootPart.Name, objectGroup.RootPart.UUID, RootPart.Name, RootPart.UUID);
@@ -1983,6 +1973,7 @@ namespace OpenSim.Region.Framework.Scenes
1983 Quaternion oldRootRotation = linkPart.RotationOffset; 1973 Quaternion oldRootRotation = linkPart.RotationOffset;
1984 1974
1985 linkPart.OffsetPosition = linkPart.GroupPosition - AbsolutePosition; 1975 linkPart.OffsetPosition = linkPart.GroupPosition - AbsolutePosition;
1976 linkPart.ParentID = m_rootPart.LocalId;
1986 linkPart.GroupPosition = AbsolutePosition; 1977 linkPart.GroupPosition = AbsolutePosition;
1987 Vector3 axPos = linkPart.OffsetPosition; 1978 Vector3 axPos = linkPart.OffsetPosition;
1988 1979
@@ -1995,42 +1986,27 @@ namespace OpenSim.Region.Framework.Scenes
1995 linkPart.RotationOffset = newRot; 1986 linkPart.RotationOffset = newRot;
1996 1987
1997 linkPart.ParentID = m_rootPart.LocalId; 1988 linkPart.ParentID = m_rootPart.LocalId;
1989
1998 if (m_rootPart.LinkNum == 0) 1990 if (m_rootPart.LinkNum == 0)
1999 m_rootPart.LinkNum = 1; 1991 m_rootPart.LinkNum = 1;
2000 1992
2001 lock (m_parts.SyncRoot) 1993 lock (m_parts.SyncRoot)
2002 { 1994 {
2003 m_parts.Add(linkPart.UUID, linkPart); 1995 int linkNum = PrimCount + 1;
2004
2005 // Insert in terms of link numbers, the new links
2006 // before the current ones (with the exception of
2007 // the root prim. Shuffle the old ones up
2008 SceneObjectPart[] parts = m_parts.GetArray();
2009 for (int i = 0; i < parts.Length; i++)
2010 {
2011 SceneObjectPart part = parts[i];
2012 if (part.LinkNum != 1)
2013 {
2014 // Don't update root prim link number
2015 part.LinkNum += objectGroup.PrimCount;
2016 }
2017 }
2018 1996
2019 linkPart.LinkNum = 2; 1997 m_parts.Add(linkPart.UUID, linkPart);
2020 1998
2021 linkPart.SetParent(this); 1999 linkPart.SetParent(this);
2022 linkPart.CreateSelected = true; 2000 linkPart.CreateSelected = true;
2023 2001
2024 //if (linkPart.PhysActor != null) 2002 linkPart.LinkNum = linkNum++;
2025 //{
2026 // m_scene.PhysicsScene.RemovePrim(linkPart.PhysActor);
2027
2028 //linkPart.PhysActor = null;
2029 //}
2030 2003
2031 //TODO: rest of parts
2032 int linkNum = 3;
2033 SceneObjectPart[] ogParts = objectGroup.Parts; 2004 SceneObjectPart[] ogParts = objectGroup.Parts;
2005 Array.Sort(ogParts, delegate(SceneObjectPart a, SceneObjectPart b)
2006 {
2007 return a.LinkNum - b.LinkNum;
2008 });
2009
2034 for (int i = 0; i < ogParts.Length; i++) 2010 for (int i = 0; i < ogParts.Length; i++)
2035 { 2011 {
2036 SceneObjectPart part = ogParts[i]; 2012 SceneObjectPart part = ogParts[i];
@@ -2044,7 +2020,7 @@ namespace OpenSim.Region.Framework.Scenes
2044 objectGroup.IsDeleted = true; 2020 objectGroup.IsDeleted = true;
2045 2021
2046 objectGroup.m_parts.Clear(); 2022 objectGroup.m_parts.Clear();
2047 2023
2048 // Can't do this yet since backup still makes use of the root part without any synchronization 2024 // Can't do this yet since backup still makes use of the root part without any synchronization
2049// objectGroup.m_rootPart = null; 2025// objectGroup.m_rootPart = null;
2050 2026