Restructure god level and permissions

Create a class GodController which controls all aspects of god level,
viewer modes and user levels at ScenePresence level.
This commit is contained in:
Melanie Thielker
2017-01-06 00:55:14 +00:00
parent 46bffad558
commit ad8915f154
22 changed files with 105 additions and 150 deletions

View File

@@ -4977,7 +4977,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if (presence != null && presence.PresenceType != PresenceType.Npc)
{
// agent must not be a god
if (presence.UserLevel >= 200) return;
if (presence.GodController.UserLevel >= 200) return;
// agent must be over the owners land
if (m_host.OwnerID == World.LandChannel.GetLandObject(presence.AbsolutePosition).LandData.OwnerID)
@@ -5029,7 +5029,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
else
{
// agent must not be a god
if (presence.GodLevel >= 200) return;
if (presence.GodController.GodLevel >= 200) return;
// agent must be over the owners land
ILandObject agentLand = World.LandChannel.GetLandObject(presence.AbsolutePosition);
@@ -5256,7 +5256,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return;
// Pushee is in GodMode this pushing object isn't owned by them
if (avatar.GodLevel > 0 && m_host.OwnerID != targetID)
if (avatar.GodController.GodLevel > 0 && m_host.OwnerID != targetID)
return;
pusheeav = avatar;
@@ -6687,7 +6687,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
delegate (ScenePresence ssp)
{
// Gods are not listed in SL
if (!ssp.IsDeleted && ssp.GodLevel == 0.0 && !ssp.IsChildAgent)
if (!ssp.IsDeleted && ssp.GodController.GodLevel == 0.0 && !ssp.IsChildAgent)
{
if (!regionWide)
{

View File

@@ -721,7 +721,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
{
ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
if (sp == null || sp.GodLevel < 200)
if (sp == null || sp.GodController.GodLevel < 200)
{
LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
return 0;
@@ -768,7 +768,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
{
ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
if (sp == null || sp.GodLevel < 200)
if (sp == null || sp.GodController.GodLevel < 200)
{
LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
return;
@@ -799,7 +799,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
{
ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
if (sp == null || sp.GodLevel < 200)
if (sp == null || sp.GodController.GodLevel < 200)
{
LSShoutError("lsSetWindlightSceneTargeted can only be used by estate managers or owners.");
return 0;

View File

@@ -540,7 +540,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
}
}
if (presence.IsDeleted || presence.IsChildAgent || presence.GodLevel > 0.0)
if (presence.IsDeleted || presence.IsChildAgent || presence.GodController.GodLevel > 0.0)
return;
// if the object the script is in is attached and the avatar is the owner