From 39e5785c0f5bfa9fce2549757ac895920c88825a Mon Sep 17 00:00:00 2001
From: Oren Hurvitz
Date: Thu, 31 Oct 2013 12:50:17 +0200
Subject: Fixed: Windlight functions caused an error if called when the
script's owner isn't in the scene
---
.../Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
(limited to 'OpenSim/Region/ScriptEngine/Shared/Api')
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
index 1d6cb6d..30eed40 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
@@ -446,7 +446,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
LSShoutError("LightShare functions are not enabled.");
return 0;
}
- if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
+
+ ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+ if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
{
LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
return 0;
@@ -474,7 +476,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
LSShoutError("LightShare functions are not enabled.");
return;
}
- if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
+
+ ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+ if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
{
LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
return;
@@ -497,7 +501,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
LSShoutError("LightShare functions are not enabled.");
return 0;
}
- if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
+
+ ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+ if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
{
LSShoutError("lsSetWindlightSceneTargeted can only be used by estate managers or owners.");
return 0;
--
cgit v1.1
From 14c72d4a5bba73c10bd4a5d93d53cd4fc0398570 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 17 Jan 2014 01:58:10 +0000
Subject: Revert "Fixed: Windlight functions caused an error if called when the
script's owner isn't in the scene"
This reverts commit 39e5785c0f5bfa9fce2549757ac895920c88825a.
Did not mean to apply this yet.
---
.../Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
(limited to 'OpenSim/Region/ScriptEngine/Shared/Api')
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
index 30eed40..1d6cb6d 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
@@ -446,9 +446,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
LSShoutError("LightShare functions are not enabled.");
return 0;
}
-
- ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
- if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
+ if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
{
LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
return 0;
@@ -476,9 +474,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
LSShoutError("LightShare functions are not enabled.");
return;
}
-
- ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
- if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
+ if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
{
LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
return;
@@ -501,9 +497,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
LSShoutError("LightShare functions are not enabled.");
return 0;
}
-
- ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
- if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
+ if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
{
LSShoutError("lsSetWindlightSceneTargeted can only be used by estate managers or owners.");
return 0;
--
cgit v1.1
From 50ea2e0d67a9edee86d76b2fa8d4561710326461 Mon Sep 17 00:00:00 2001
From: Oren Hurvitz
Date: Thu, 31 Oct 2013 12:50:17 +0200
Subject: Fixed: Windlight functions caused an error if called when the
script's owner isn't in the scene
---
.../Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
(limited to 'OpenSim/Region/ScriptEngine/Shared/Api')
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
index 1d6cb6d..30eed40 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
@@ -446,7 +446,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
LSShoutError("LightShare functions are not enabled.");
return 0;
}
- if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
+
+ ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+ if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
{
LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
return 0;
@@ -474,7 +476,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
LSShoutError("LightShare functions are not enabled.");
return;
}
- if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
+
+ ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+ if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
{
LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
return;
@@ -497,7 +501,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
LSShoutError("LightShare functions are not enabled.");
return 0;
}
- if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
+
+ ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+ if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
{
LSShoutError("lsSetWindlightSceneTargeted can only be used by estate managers or owners.");
return 0;
--
cgit v1.1
From e9454d4672782647247db36e0d5e18b82cad58f0 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Sat, 18 Jan 2014 01:36:40 +0000
Subject: Following on from 50ea2e0, only fetch scene presence for check if
lightscript function has failed initial IsEstateManagerOrOwner() check
---
.../Shared/Api/Implementation/LS_Api.cs | 55 +++++++++++++++-------
1 file changed, 38 insertions(+), 17 deletions(-)
(limited to 'OpenSim/Region/ScriptEngine/Shared/Api')
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
index 30eed40..b13a5ae 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
@@ -434,6 +434,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
}
return wl;
}
+
///
/// Set the current Windlight scene
///
@@ -447,14 +448,20 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return 0;
}
- ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
- if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
+ if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID))
{
- LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
- return 0;
+ ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+
+ if (sp == null || sp.GodLevel < 200)
+ {
+ LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
+ return 0;
+ }
}
+
int success = 0;
m_host.AddScriptLPS(1);
+
if (LightShareModule.EnableWindlight)
{
RegionLightShareData wl = getWindlightProfileFromRules(rules);
@@ -467,8 +474,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
LSShoutError("Windlight module is disabled");
return 0;
}
+
return success;
}
+
public void lsClearWindlightScene()
{
if (!m_LSFunctionsEnabled)
@@ -476,19 +485,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
LSShoutError("LightShare functions are not enabled.");
return;
}
-
- ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
- if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
+
+ if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID))
{
- LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
- return;
+ ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+
+ if (sp == null || sp.GodLevel < 200)
+ {
+ LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
+ return;
+ }
}
m_host.ParentGroup.Scene.RegionInfo.WindlightSettings.valid = false;
if (m_host.ParentGroup.Scene.SimulationDataService != null)
m_host.ParentGroup.Scene.SimulationDataService.RemoveRegionWindlightSettings(m_host.ParentGroup.Scene.RegionInfo.RegionID);
+
m_host.ParentGroup.Scene.EventManager.TriggerOnSaveNewWindlightProfile();
}
+
///
/// Set the current Windlight scene to a target avatar
///
@@ -501,15 +516,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
LSShoutError("LightShare functions are not enabled.");
return 0;
}
-
- ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
- if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID) && (sp == null || sp.GodLevel < 200))
+
+ if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID))
{
- LSShoutError("lsSetWindlightSceneTargeted can only be used by estate managers or owners.");
- return 0;
+ ScenePresence sp = World.GetScenePresence(m_host.OwnerID);
+
+ if (sp == null || sp.GodLevel < 200)
+ {
+ LSShoutError("lsSetWindlightSceneTargeted can only be used by estate managers or owners.");
+ return 0;
+ }
}
+
int success = 0;
m_host.AddScriptLPS(1);
+
if (LightShareModule.EnableWindlight)
{
RegionLightShareData wl = getWindlightProfileFromRules(rules);
@@ -521,8 +542,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
LSShoutError("Windlight module is disabled");
return 0;
}
+
return success;
- }
-
+ }
}
-}
+}
\ No newline at end of file
--
cgit v1.1
From 2cf224166f232076c6d51312aaae1a9a9c24bd1c Mon Sep 17 00:00:00 2001
From: Oren Hurvitz
Date: Wed, 15 Jan 2014 17:38:09 +0200
Subject: Added osGetRegionSize(), which returns the region size in meters and
recognizes megaregions
---
.../Shared/Api/Implementation/OSSL_Api.cs | 23 ++++++++++++++++++++++
.../ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs | 1 +
.../ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs | 5 +++++
3 files changed, 29 insertions(+)
(limited to 'OpenSim/Region/ScriptEngine/Shared/Api')
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index f4d5562..15fbbfd 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -2926,6 +2926,29 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return ret;
}
+ public LSL_Vector osGetRegionSize()
+ {
+ CheckThreatLevel(ThreatLevel.None, "osGetRegionSize");
+ m_host.AddScriptLPS(1);
+
+ bool isMegaregion;
+ IRegionCombinerModule rcMod = World.RequestModuleInterface();
+ if (rcMod != null)
+ isMegaregion = rcMod.IsRootForMegaregion(World.RegionInfo.RegionID);
+ else
+ isMegaregion = false;
+
+ if (isMegaregion)
+ {
+ Vector2 size = rcMod.GetSizeOfMegaregion(World.RegionInfo.RegionID);
+ return new LSL_Vector(size.X, size.Y, Constants.RegionHeight);
+ }
+ else
+ {
+ return new LSL_Vector((float)Constants.RegionSize, (float)Constants.RegionSize, Constants.RegionHeight);
+ }
+ }
+
public int osGetSimulatorMemory()
{
CheckThreatLevel(ThreatLevel.Moderate, "osGetSimulatorMemory");
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
index 51d0581..519779e 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
@@ -337,6 +337,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
key osGetMapTexture();
key osGetRegionMapTexture(string regionName);
LSL_List osGetRegionStats();
+ vector osGetRegionSize();
int osGetSimulatorMemory();
void osKickAvatar(string FirstName,string SurName,string alert);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
index c9902e4..02a3541 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
@@ -863,6 +863,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
return m_OSSL_Functions.osGetRegionStats();
}
+ public vector osGetRegionSize()
+ {
+ return m_OSSL_Functions.osGetRegionSize();
+ }
+
///
/// Returns the amount of memory in use by the Simulator Daemon.
/// Amount in bytes - if >= 4GB, returns 4GB. (LSL is not 64-bit aware)
--
cgit v1.1