diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs | 20 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | 8 |
2 files changed, 22 insertions, 6 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs index 7c0cd77..c393479 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs | |||
@@ -104,11 +104,16 @@ namespace OpenSim.Region.Environment.Scenes | |||
104 | { | 104 | { |
105 | if (ent is SceneObjectGroup) | 105 | if (ent is SceneObjectGroup) |
106 | { | 106 | { |
107 | |||
107 | if (((SceneObjectGroup) ent).LocalId == primLocalID) | 108 | if (((SceneObjectGroup) ent).LocalId == primLocalID) |
108 | { | 109 | { |
109 | ((SceneObjectGroup) ent).GetProperties(remoteClient); | 110 | // A prim is only tainted if it's allowed to be edited by the person clicking it. |
110 | ((SceneObjectGroup) ent).IsSelected = true; | 111 | if (m_permissionManager.CanEditObjectPosition(remoteClient.AgentId, ((SceneObjectGroup)ent).UUID) || m_permissionManager.CanEditObject(remoteClient.AgentId, ((SceneObjectGroup)ent).UUID)) |
111 | LandManager.setPrimsTainted(); | 112 | { |
113 | ((SceneObjectGroup) ent).GetProperties(remoteClient); | ||
114 | ((SceneObjectGroup) ent).IsSelected = true; | ||
115 | LandManager.setPrimsTainted(); | ||
116 | } | ||
112 | break; | 117 | break; |
113 | } | 118 | } |
114 | } | 119 | } |
@@ -130,9 +135,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
130 | { | 135 | { |
131 | if (((SceneObjectGroup) ent).LocalId == primLocalID) | 136 | if (((SceneObjectGroup) ent).LocalId == primLocalID) |
132 | { | 137 | { |
133 | ((SceneObjectGroup) ent).IsSelected = false; | 138 | if (m_permissionManager.CanEditObjectPosition(remoteClient.AgentId, ((SceneObjectGroup)ent).UUID) || m_permissionManager.CanEditObject(remoteClient.AgentId, ((SceneObjectGroup)ent).UUID)) |
134 | LandManager.setPrimsTainted(); | 139 | { |
135 | break; | 140 | ((SceneObjectGroup) ent).IsSelected = false; |
141 | LandManager.setPrimsTainted(); | ||
142 | break; | ||
143 | } | ||
136 | } | 144 | } |
137 | } | 145 | } |
138 | } | 146 | } |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 8fd9edb..801e614 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |||
@@ -203,6 +203,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
203 | if (m_rootPart.PhysActor != null) | 203 | if (m_rootPart.PhysActor != null) |
204 | { | 204 | { |
205 | m_rootPart.PhysActor.Selected = value; | 205 | m_rootPart.PhysActor.Selected = value; |
206 | // Pass it on to the children. | ||
207 | foreach (SceneObjectPart child in Children.Values) | ||
208 | { | ||
209 | if (child.PhysActor != null) | ||
210 | { | ||
211 | child.PhysActor.Selected = value; | ||
212 | } | ||
213 | } | ||
206 | } | 214 | } |
207 | } | 215 | } |
208 | } | 216 | } |