diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 57d9ce4..ba2b55e 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -1018,11 +1018,26 @@ namespace OpenSim.Region.Framework.Scenes | |||
1018 | // justincc: I don't believe this hack is needed any longer, especially since the physics | 1018 | // justincc: I don't believe this hack is needed any longer, especially since the physics |
1019 | // parts of set AbsolutePosition were already commented out. By changing HasGroupChanged to false | 1019 | // parts of set AbsolutePosition were already commented out. By changing HasGroupChanged to false |
1020 | // this method was preventing proper reload of scene objects. | 1020 | // this method was preventing proper reload of scene objects. |
1021 | |||
1021 | // dahlia: I had to uncomment it, without it meshing was failing on some prims and objects | 1022 | // dahlia: I had to uncomment it, without it meshing was failing on some prims and objects |
1022 | // at region startup | 1023 | // at region startup |
1024 | |||
1025 | // teravus: After this was removed from the linking algorithm, Linked prims no longer collided | ||
1026 | // properly when non-physical if they havn't been moved. This breaks ALL builds. | ||
1027 | // see: http://opensimulator.org/mantis/view.php?id=3108 | ||
1028 | |||
1029 | // Here's the deal, this is ABSOLUTELY CRITICAL so the physics scene gets the update about the | ||
1030 | // position of linkset prims. IF YOU CHANGE THIS, YOU MUST TEST colliding with just linked and | ||
1031 | // unmoved prims! As soon as you move a Prim/group, it will collide properly because Absolute | ||
1032 | // Position has been set! | ||
1033 | |||
1023 | public void ResetChildPrimPhysicsPositions() | 1034 | public void ResetChildPrimPhysicsPositions() |
1024 | { | 1035 | { |
1025 | AbsolutePosition = AbsolutePosition; // could someone in the know please explain how this works? | 1036 | AbsolutePosition = AbsolutePosition; // could someone in the know please explain how this works? |
1037 | |||
1038 | // teravus: AbsolutePosition is NOT a normal property! | ||
1039 | // the code in the getter of AbsolutePosition is significantly different then the code in the setter! | ||
1040 | |||
1026 | } | 1041 | } |
1027 | 1042 | ||
1028 | public UUID GetPartsFullID(uint localID) | 1043 | public UUID GetPartsFullID(uint localID) |
@@ -2059,7 +2074,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
2059 | // Can't do this yet since backup still makes use of the root part without any synchronization | 2074 | // Can't do this yet since backup still makes use of the root part without any synchronization |
2060 | // objectGroup.m_rootPart = null; | 2075 | // objectGroup.m_rootPart = null; |
2061 | 2076 | ||
2062 | AttachToBackup(); | 2077 | AttachToBackup(); |
2078 | |||
2079 | |||
2080 | // Here's the deal, this is ABSOLUTELY CRITICAL so the physics scene gets the update about the | ||
2081 | // position of linkset prims. IF YOU CHANGE THIS, YOU MUST TEST colliding with just linked and | ||
2082 | // unmoved prims! | ||
2083 | ResetChildPrimPhysicsPositions(); | ||
2084 | |||
2063 | HasGroupChanged = true; | 2085 | HasGroupChanged = true; |
2064 | ScheduleGroupForFullUpdate(); | 2086 | ScheduleGroupForFullUpdate(); |
2065 | } | 2087 | } |