aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs')
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs58
1 files changed, 30 insertions, 28 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
index c2ce9d8..87e69f7 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
@@ -427,7 +427,7 @@ namespace OpenSim.Region.Environment.Scenes
427 if (reader.Name == "SceneObjectPart") 427 if (reader.Name == "SceneObjectPart")
428 { 428 {
429 SceneObjectPart Part = SceneObjectPart.FromXml(reader); 429 SceneObjectPart Part = SceneObjectPart.FromXml(reader);
430 if(m_rootPart.LinkNum == 0) 430 if (m_rootPart.LinkNum == 0)
431 m_rootPart.LinkNum++; 431 m_rootPart.LinkNum++;
432 AddPart(Part); 432 AddPart(Part);
433 Part.LinkNum = m_parts.Count; 433 Part.LinkNum = m_parts.Count;
@@ -833,7 +833,7 @@ namespace OpenSim.Region.Environment.Scenes
833 833
834 part.LinkNum = m_parts.Count; 834 part.LinkNum = m_parts.Count;
835 835
836 if(part.LinkNum == 2 && RootPart != null) 836 if (part.LinkNum == 2 && RootPart != null)
837 RootPart.LinkNum = 1; 837 RootPart.LinkNum = 1;
838 } 838 }
839 } 839 }
@@ -1745,7 +1745,7 @@ namespace OpenSim.Region.Environment.Scenes
1745 linkPart.RotationOffset = new LLQuaternion(newRot.x, newRot.y, newRot.z, newRot.w); 1745 linkPart.RotationOffset = new LLQuaternion(newRot.x, newRot.y, newRot.z, newRot.w);
1746 1746
1747 linkPart.ParentID = m_rootPart.LocalId; 1747 linkPart.ParentID = m_rootPart.LocalId;
1748 if(m_rootPart.LinkNum == 0) 1748 if (m_rootPart.LinkNum == 0)
1749 m_rootPart.LinkNum = 1; 1749 m_rootPart.LinkNum = 1;
1750 1750
1751 lock (m_parts) 1751 lock (m_parts)
@@ -1815,13 +1815,15 @@ namespace OpenSim.Region.Environment.Scenes
1815 m_parts.Remove(linkPart.UUID); 1815 m_parts.Remove(linkPart.UUID);
1816 } 1816 }
1817 1817
1818 if(m_parts.Count == 1 && RootPart != null) //Single prim is left 1818 if (m_parts.Count == 1 && RootPart != null) //Single prim is left
1819 RootPart.LinkNum = 0; 1819 RootPart.LinkNum = 0;
1820 else 1820 else
1821 { 1821 {
1822 foreach (SceneObjectPart p in m_parts.Values) 1822 foreach (SceneObjectPart p in m_parts.Values)
1823 if(p.LinkNum > linkPart.LinkNum) 1823 {
1824 if (p.LinkNum > linkPart.LinkNum)
1824 p.LinkNum--; 1825 p.LinkNum--;
1826 }
1825 } 1827 }
1826 1828
1827 linkPart.ParentID = 0; 1829 linkPart.ParentID = 0;
@@ -1858,7 +1860,7 @@ namespace OpenSim.Region.Environment.Scenes
1858 1860
1859 m_scene.AddNewSceneObject(objectGroup, true); 1861 m_scene.AddNewSceneObject(objectGroup, true);
1860 1862
1861 if(sendEvents) 1863 if (sendEvents)
1862 linkPart.TriggerScriptChangedEvent(Changed.LINK); 1864 linkPart.TriggerScriptChangedEvent(Changed.LINK);
1863 1865
1864 HasGroupChanged = true; 1866 HasGroupChanged = true;
@@ -2131,11 +2133,11 @@ namespace OpenSim.Region.Environment.Scenes
2131 /// <param name="localID"></param> 2133 /// <param name="localID"></param>
2132 public void Resize(LLVector3 scale, uint localID) 2134 public void Resize(LLVector3 scale, uint localID)
2133 { 2135 {
2134 if(scale.X > m_scene.m_maxNonphys) 2136 if (scale.X > m_scene.m_maxNonphys)
2135 scale.X = m_scene.m_maxNonphys; 2137 scale.X = m_scene.m_maxNonphys;
2136 if(scale.Y > m_scene.m_maxNonphys) 2138 if (scale.Y > m_scene.m_maxNonphys)
2137 scale.Y = m_scene.m_maxNonphys; 2139 scale.Y = m_scene.m_maxNonphys;
2138 if(scale.Z > m_scene.m_maxNonphys) 2140 if (scale.Z > m_scene.m_maxNonphys)
2139 scale.Z = m_scene.m_maxNonphys; 2141 scale.Z = m_scene.m_maxNonphys;
2140 2142
2141 SceneObjectPart part = GetChildPart(localID); 2143 SceneObjectPart part = GetChildPart(localID);
@@ -2144,13 +2146,13 @@ namespace OpenSim.Region.Environment.Scenes
2144 part.Resize(scale); 2146 part.Resize(scale);
2145 if (part.PhysActor != null) 2147 if (part.PhysActor != null)
2146 { 2148 {
2147 if(part.PhysActor.IsPhysical) 2149 if (part.PhysActor.IsPhysical)
2148 { 2150 {
2149 if(scale.X > m_scene.m_maxPhys) 2151 if (scale.X > m_scene.m_maxPhys)
2150 scale.X = m_scene.m_maxPhys; 2152 scale.X = m_scene.m_maxPhys;
2151 if(scale.Y > m_scene.m_maxPhys) 2153 if (scale.Y > m_scene.m_maxPhys)
2152 scale.Y = m_scene.m_maxPhys; 2154 scale.Y = m_scene.m_maxPhys;
2153 if(scale.Z > m_scene.m_maxPhys) 2155 if (scale.Z > m_scene.m_maxPhys)
2154 scale.Z = m_scene.m_maxPhys; 2156 scale.Z = m_scene.m_maxPhys;
2155 } 2157 }
2156 part.PhysActor.Size = 2158 part.PhysActor.Size =
@@ -2179,19 +2181,19 @@ namespace OpenSim.Region.Environment.Scenes
2179 SceneObjectPart part = GetChildPart(localID); 2181 SceneObjectPart part = GetChildPart(localID);
2180 if (part != null) 2182 if (part != null)
2181 { 2183 {
2182 if(scale.X > m_scene.m_maxNonphys) 2184 if (scale.X > m_scene.m_maxNonphys)
2183 scale.X = m_scene.m_maxNonphys; 2185 scale.X = m_scene.m_maxNonphys;
2184 if(scale.Y > m_scene.m_maxNonphys) 2186 if (scale.Y > m_scene.m_maxNonphys)
2185 scale.Y = m_scene.m_maxNonphys; 2187 scale.Y = m_scene.m_maxNonphys;
2186 if(scale.Z > m_scene.m_maxNonphys) 2188 if (scale.Z > m_scene.m_maxNonphys)
2187 scale.Z = m_scene.m_maxNonphys; 2189 scale.Z = m_scene.m_maxNonphys;
2188 if(part.PhysActor != null && part.PhysActor.IsPhysical) 2190 if (part.PhysActor != null && part.PhysActor.IsPhysical)
2189 { 2191 {
2190 if(scale.X > m_scene.m_maxPhys) 2192 if (scale.X > m_scene.m_maxPhys)
2191 scale.X = m_scene.m_maxPhys; 2193 scale.X = m_scene.m_maxPhys;
2192 if(scale.Y > m_scene.m_maxPhys) 2194 if (scale.Y > m_scene.m_maxPhys)
2193 scale.Y = m_scene.m_maxPhys; 2195 scale.Y = m_scene.m_maxPhys;
2194 if(scale.Z > m_scene.m_maxPhys) 2196 if (scale.Z > m_scene.m_maxPhys)
2195 scale.Z = m_scene.m_maxPhys; 2197 scale.Z = m_scene.m_maxPhys;
2196 } 2198 }
2197 float x = (scale.X / part.Scale.X); 2199 float x = (scale.X / part.Scale.X);
@@ -2200,7 +2202,7 @@ namespace OpenSim.Region.Environment.Scenes
2200 2202
2201 lock (m_parts) 2203 lock (m_parts)
2202 { 2204 {
2203 if(x > 1.0f || y > 1.0f || z > 1.0f) 2205 if (x > 1.0f || y > 1.0f || z > 1.0f)
2204 { 2206 {
2205 foreach (SceneObjectPart obPart in m_parts.Values) 2207 foreach (SceneObjectPart obPart in m_parts.Values)
2206 { 2208 {
@@ -2211,9 +2213,9 @@ namespace OpenSim.Region.Environment.Scenes
2211 float f = 1.0f; 2213 float f = 1.0f;
2212 float a = 1.0f; 2214 float a = 1.0f;
2213 2215
2214 if(part.PhysActor != null && part.PhysActor.IsPhysical) 2216 if (part.PhysActor != null && part.PhysActor.IsPhysical)
2215 { 2217 {
2216 if(oldSize.X*x > m_scene.m_maxPhys) 2218 if (oldSize.X*x > m_scene.m_maxPhys)
2217 { 2219 {
2218 f = m_scene.m_maxPhys / oldSize.X; 2220 f = m_scene.m_maxPhys / oldSize.X;
2219 a = f / x; 2221 a = f / x;
@@ -2221,7 +2223,7 @@ namespace OpenSim.Region.Environment.Scenes
2221 y *= a; 2223 y *= a;
2222 z *= a; 2224 z *= a;
2223 } 2225 }
2224 if(oldSize.Y*y > m_scene.m_maxPhys) 2226 if (oldSize.Y*y > m_scene.m_maxPhys)
2225 { 2227 {
2226 f = m_scene.m_maxPhys / oldSize.Y; 2228 f = m_scene.m_maxPhys / oldSize.Y;
2227 a = f / y; 2229 a = f / y;
@@ -2229,7 +2231,7 @@ namespace OpenSim.Region.Environment.Scenes
2229 y *= a; 2231 y *= a;
2230 z *= a; 2232 z *= a;
2231 } 2233 }
2232 if(oldSize.Z*z > m_scene.m_maxPhys) 2234 if (oldSize.Z*z > m_scene.m_maxPhys)
2233 { 2235 {
2234 f = m_scene.m_maxPhys / oldSize.Z; 2236 f = m_scene.m_maxPhys / oldSize.Z;
2235 a = f / z; 2237 a = f / z;
@@ -2240,7 +2242,7 @@ namespace OpenSim.Region.Environment.Scenes
2240 } 2242 }
2241 else 2243 else
2242 { 2244 {
2243 if(oldSize.X*x > m_scene.m_maxNonphys) 2245 if (oldSize.X*x > m_scene.m_maxNonphys)
2244 { 2246 {
2245 f = m_scene.m_maxNonphys / oldSize.X; 2247 f = m_scene.m_maxNonphys / oldSize.X;
2246 a = f / x; 2248 a = f / x;
@@ -2248,7 +2250,7 @@ namespace OpenSim.Region.Environment.Scenes
2248 y *= a; 2250 y *= a;
2249 z *= a; 2251 z *= a;
2250 } 2252 }
2251 if(oldSize.Y*y > m_scene.m_maxNonphys) 2253 if (oldSize.Y*y > m_scene.m_maxNonphys)
2252 { 2254 {
2253 f = m_scene.m_maxNonphys / oldSize.Y; 2255 f = m_scene.m_maxNonphys / oldSize.Y;
2254 a = f / y; 2256 a = f / y;
@@ -2256,7 +2258,7 @@ namespace OpenSim.Region.Environment.Scenes
2256 y *= a; 2258 y *= a;
2257 z *= a; 2259 z *= a;
2258 } 2260 }
2259 if(oldSize.Z*z > m_scene.m_maxNonphys) 2261 if (oldSize.Z*z > m_scene.m_maxNonphys)
2260 { 2262 {
2261 f = m_scene.m_maxNonphys / oldSize.Z; 2263 f = m_scene.m_maxNonphys / oldSize.Z;
2262 a = f / z; 2264 a = f / z;