diff options
author | Diva Canto | 2012-03-22 12:57:12 -0700 |
---|---|---|
committer | Diva Canto | 2012-03-22 12:57:12 -0700 |
commit | 6146e7ef258b10888ad7464b72b75cca701e02c9 (patch) | |
tree | 6603496c5758359b808f8719a641977660aca0fb /OpenSim/Region/CoreModules/World/Land | |
parent | Merge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff) | |
download | opensim-SC_OLD-6146e7ef258b10888ad7464b72b75cca701e02c9.zip opensim-SC_OLD-6146e7ef258b10888ad7464b72b75cca701e02c9.tar.gz opensim-SC_OLD-6146e7ef258b10888ad7464b72b75cca701e02c9.tar.bz2 opensim-SC_OLD-6146e7ef258b10888ad7464b72b75cca701e02c9.tar.xz |
Simple build permissions feature. NOTE: EXPERIMENTAL, DISABLED BY DEFAULT. Turns out that this can't be expressed by cascading Permission modules, so I did it as per this patch.
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Land')
-rw-r--r-- | OpenSim/Region/CoreModules/World/Land/LandObject.cs | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index cc42f7f..640a024 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs | |||
@@ -169,6 +169,11 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
169 | return newLand; | 169 | return newLand; |
170 | } | 170 | } |
171 | 171 | ||
172 | public ILandObject MemberwiseCopy() | ||
173 | { | ||
174 | return (ILandObject)this.MemberwiseClone(); | ||
175 | } | ||
176 | |||
172 | static overrideParcelMaxPrimCountDelegate overrideParcelMaxPrimCount; | 177 | static overrideParcelMaxPrimCountDelegate overrideParcelMaxPrimCount; |
173 | static overrideSimulatorMaxPrimCountDelegate overrideSimulatorMaxPrimCount; | 178 | static overrideSimulatorMaxPrimCountDelegate overrideSimulatorMaxPrimCount; |
174 | 179 | ||
@@ -242,11 +247,13 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
242 | m_lastSeqId = seq_id; | 247 | m_lastSeqId = seq_id; |
243 | } | 248 | } |
244 | 249 | ||
250 | ILandObject landToSend = this; | ||
251 | m_scene.Permissions.LandObjectForClient(remote_client.AgentId, (ILandObject)this, out landToSend); | ||
245 | remote_client.SendLandProperties(seq_id, | 252 | remote_client.SendLandProperties(seq_id, |
246 | snap_selection, request_result, this, | 253 | snap_selection, request_result, landToSend, |
247 | (float)m_scene.RegionInfo.RegionSettings.ObjectBonus, | 254 | (float)m_scene.RegionInfo.RegionSettings.ObjectBonus, |
248 | GetParcelMaxPrimCount(), | 255 | GetParcelMaxPrimCount(), |
249 | GetSimulatorMaxPrimCount(), regionFlags); | 256 | GetSimulatorMaxPrimCount(), regionFlags); |
250 | } | 257 | } |
251 | 258 | ||
252 | public void UpdateLandProperties(LandUpdateArgs args, IClientAPI remote_client) | 259 | public void UpdateLandProperties(LandUpdateArgs args, IClientAPI remote_client) |
@@ -475,6 +482,32 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
475 | return false; | 482 | return false; |
476 | } | 483 | } |
477 | 484 | ||
485 | public bool IsAllowedInLand(UUID avatar) | ||
486 | { | ||
487 | ExpireAccessList(); | ||
488 | |||
489 | if (m_scene.Permissions.IsAdministrator(avatar)) | ||
490 | return true; | ||
491 | |||
492 | if (m_scene.RegionInfo.EstateSettings.IsEstateManager(avatar)) | ||
493 | return true; | ||
494 | |||
495 | if (avatar == LandData.OwnerID) | ||
496 | return true; | ||
497 | |||
498 | if (LandData.ParcelAccessList.FindIndex( | ||
499 | delegate(LandAccessEntry e) | ||
500 | { | ||
501 | if (e.AgentID == avatar && e.Flags == AccessList.Access) | ||
502 | return true; | ||
503 | return false; | ||
504 | }) != -1) | ||
505 | { | ||
506 | return true; | ||
507 | } | ||
508 | return false; | ||
509 | } | ||
510 | |||
478 | public void SendLandUpdateToClient(IClientAPI remote_client) | 511 | public void SendLandUpdateToClient(IClientAPI remote_client) |
479 | { | 512 | { |
480 | SendLandProperties(0, false, 0, remote_client); | 513 | SendLandProperties(0, false, 0, remote_client); |