From e3f229225c5a1506090bfcffcce6d423a566f1fe Mon Sep 17 00:00:00 2001
From: unknown
Date: Wed, 9 Dec 2009 01:34:26 +0100
Subject: Enable scripting interface for windlight
---
OpenSim/Data/MSSQL/MSSQLLegacyRegionData.cs | 4 +
OpenSim/Data/Null/NullDataStore.cs | 4 +
OpenSim/Data/SQLite/SQLiteRegionData.cs | 4 +
.../Framework/Interfaces/IRegionDataStore.cs | 1 +
OpenSim/Region/Framework/Scenes/EventManager.cs | 12 +
OpenSim/Region/Framework/Scenes/Scene.cs | 7 +
.../Region/Framework/Scenes/Tests/SceneTests.cs | 4 +
.../Shared/Api/Implementation/OSSL_Api.cs | 333 +++++++++++++++++++++
.../ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs | 7 +-
.../Shared/Api/Runtime/LSL_Constants.cs | 38 +++
.../ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs | 10 +
11 files changed, 423 insertions(+), 1 deletion(-)
diff --git a/OpenSim/Data/MSSQL/MSSQLLegacyRegionData.cs b/OpenSim/Data/MSSQL/MSSQLLegacyRegionData.cs
index 678b251..0b430c7 100644
--- a/OpenSim/Data/MSSQL/MSSQLLegacyRegionData.cs
+++ b/OpenSim/Data/MSSQL/MSSQLLegacyRegionData.cs
@@ -677,6 +677,10 @@ VALUES
//Return default LL windlight settings
return new RegionMeta7WindlightData();
}
+ public void StoreRegionWindlightSettings(RegionMeta7WindlightData wl)
+ {
+ //This connector doesn't support the windlight module yet
+ }
///
/// Loads the settings of a region.
///
diff --git a/OpenSim/Data/Null/NullDataStore.cs b/OpenSim/Data/Null/NullDataStore.cs
index 39ca8f9..4b6d0f3 100644
--- a/OpenSim/Data/Null/NullDataStore.cs
+++ b/OpenSim/Data/Null/NullDataStore.cs
@@ -56,6 +56,10 @@ namespace OpenSim.Data.Null
//Return default LL windlight settings
return new RegionMeta7WindlightData();
}
+ public void StoreRegionWindlightSettings(RegionMeta7WindlightData wl)
+ {
+ //This connector doesn't support the windlight module yet
+ }
public RegionSettings LoadRegionSettings(UUID regionUUID)
{
return null;
diff --git a/OpenSim/Data/SQLite/SQLiteRegionData.cs b/OpenSim/Data/SQLite/SQLiteRegionData.cs
index 53b806c..f1c1f78 100644
--- a/OpenSim/Data/SQLite/SQLiteRegionData.cs
+++ b/OpenSim/Data/SQLite/SQLiteRegionData.cs
@@ -278,6 +278,10 @@ namespace OpenSim.Data.SQLite
//Return default LL windlight settings
return new RegionMeta7WindlightData();
}
+ public void StoreRegionWindlightSettings(RegionMeta7WindlightData wl)
+ {
+ //This connector doesn't support the windlight module yet
+ }
public RegionSettings LoadRegionSettings(UUID regionUUID)
{
lock (ds)
diff --git a/OpenSim/Region/Framework/Interfaces/IRegionDataStore.cs b/OpenSim/Region/Framework/Interfaces/IRegionDataStore.cs
index 225cc9a..7312799 100644
--- a/OpenSim/Region/Framework/Interfaces/IRegionDataStore.cs
+++ b/OpenSim/Region/Framework/Interfaces/IRegionDataStore.cs
@@ -104,6 +104,7 @@ namespace OpenSim.Region.Framework.Interfaces
void StoreRegionSettings(RegionSettings rs);
RegionSettings LoadRegionSettings(UUID regionUUID);
RegionMeta7WindlightData LoadRegionWindlightSettings(UUID regionUUID);
+ void StoreRegionWindlightSettings(RegionMeta7WindlightData wl);
void Shutdown();
}
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs
index 753344d..a86e263 100644
--- a/OpenSim/Region/Framework/Scenes/EventManager.cs
+++ b/OpenSim/Region/Framework/Scenes/EventManager.cs
@@ -193,7 +193,9 @@ namespace OpenSim.Region.Framework.Scenes
public event OnMakeChildAgentDelegate OnMakeChildAgent;
public delegate void OnMakeRootAgentDelegate(ScenePresence presence);
+ public delegate void OnSaveNewWindlightProfileDelegate();
public event OnMakeRootAgentDelegate OnMakeRootAgent;
+ public event OnSaveNewWindlightProfileDelegate OnSaveNewWindlightProfile;
public delegate void NewInventoryItemUploadComplete(UUID avatarID, UUID assetID, string name, int userlevel);
@@ -411,6 +413,7 @@ namespace OpenSim.Region.Framework.Scenes
private IncomingInstantMessage handlerUnhandledInstantMessage = null; //OnUnhandledInstantMessage;
private ClientClosed handlerClientClosed = null; //OnClientClosed;
private OnMakeChildAgentDelegate handlerMakeChildAgent = null; //OnMakeChildAgent;
+ private OnSaveNewWindlightProfileDelegate handlerSaveNewWindlightProfile = null; //OnSaveNewWindlightProfile;
private OnMakeRootAgentDelegate handlerMakeRootAgent = null; //OnMakeRootAgent;
private OnTerrainTickDelegate handlerTerrainTick = null; // OnTerainTick;
private RegisterCapsEvent handlerRegisterCaps = null; // OnRegisterCaps;
@@ -772,6 +775,15 @@ namespace OpenSim.Region.Framework.Scenes
}
}
+ public void TriggerOnSaveNewWindlightProfile()
+ {
+ handlerSaveNewWindlightProfile = OnSaveNewWindlightProfile;
+ if (handlerSaveNewWindlightProfile != null)
+ {
+ handlerSaveNewWindlightProfile();
+ }
+ }
+
public void TriggerOnMakeRootAgent(ScenePresence presence)
{
handlerMakeRootAgent = OnMakeRootAgent;
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 8d91d65..475d775 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1505,6 +1505,13 @@ namespace OpenSim.Region.Framework.Scenes
m_storageManager.DataStore.StoreTerrain(Heightmap.GetDoubles(), RegionInfo.RegionID);
}
+ public void StoreWindlightProfile(RegionMeta7WindlightData wl)
+ {
+ m_regInfo.WindlightSettings = wl;
+ m_storageManager.DataStore.StoreRegionWindlightSettings(wl);
+ m_eventManager.TriggerOnSaveNewWindlightProfile();
+ }
+
///
/// Loads the World heightmap
///
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs
index e8cda60..5abbb82 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs
@@ -107,6 +107,10 @@ namespace OpenSim.Region.Framework.Scenes.Tests
//Return default LL windlight settings
return new RegionMeta7WindlightData();
}
+ public void StoreRegionWindlightSettings(RegionMeta7WindlightData wl)
+ {
+ //This connector doesn't support the windlight module yet
+ }
public RegionSettings LoadRegionSettings(UUID regionUUID)
{
return null;
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 7f739b1..33c67d5 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -42,6 +42,7 @@ using OpenSim.Region.CoreModules.Avatar.NPC;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.Framework.Scenes.Hypergrid;
+using OpenSim.Region.CoreModules.World.Meta7Windlight;
using OpenSim.Region.ScriptEngine.Shared;
using OpenSim.Region.ScriptEngine.Shared.Api.Plugins;
using OpenSim.Region.ScriptEngine.Shared.ScriptBase;
@@ -1974,5 +1975,337 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return ret;
}
+ ///
+ /// Get the current Windlight scene
+ ///
+ /// List of windlight parameters
+ public LSL_List osGetWindlightScene(LSL_List rules)
+ {
+ CheckThreatLevel(ThreatLevel.Low, "osGetWindlightScene");
+ m_host.AddScriptLPS(1);
+ RegionMeta7WindlightData wl = m_host.ParentGroup.Scene.RegionInfo.WindlightSettings;
+
+ LSL_List values = new LSL_List();
+ int idx = 0;
+ while (idx < rules.Length)
+ {
+ uint rule = (uint)rules.GetLSLIntegerItem(idx);
+ LSL_List toadd = new LSL_List();
+
+ switch (rule)
+ {
+ case (int)ScriptBaseClass.WL_AMBIENT:
+ toadd.Add(new LSL_Rotation(wl.ambient.X, wl.ambient.Y, wl.ambient.Z, wl.ambient.W));
+ break;
+ case (int)ScriptBaseClass.WL_BIG_WAVE_DIRECTION:
+ toadd.Add(new LSL_Vector(wl.bigWaveDirection.X, wl.bigWaveDirection.Y, 0.0f));
+ break;
+ case (int)ScriptBaseClass.WL_BLUE_DENSITY:
+ toadd.Add(new LSL_Rotation(wl.blueDensity.X, wl.blueDensity.Y, wl.blueDensity.Z, wl.blueDensity.W));
+ break;
+ case (int)ScriptBaseClass.WL_BLUR_MULTIPLIER:
+ toadd.Add(new LSL_Float(wl.blurMultiplier));
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_COLOR:
+ toadd.Add(new LSL_Rotation(wl.cloudColor.X, wl.cloudColor.Y, wl.cloudColor.Z, wl.cloudColor.W));
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_COVERAGE:
+ toadd.Add(new LSL_Float(wl.cloudCoverage));
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_DETAIL_XY_DENSITY:
+ toadd.Add(new LSL_Vector(wl.cloudDetailXYDensity.X, wl.cloudDetailXYDensity.Y, wl.cloudDetailXYDensity.Z));
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_SCALE:
+ toadd.Add(new LSL_Float(wl.cloudScale));
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_SCROLL_X:
+ toadd.Add(new LSL_Float(wl.cloudScrollX));
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_SCROLL_X_LOCK:
+ toadd.Add(new LSL_Integer(wl.cloudScrollXLock ? 1 : 0));
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_SCROLL_Y:
+ toadd.Add(new LSL_Float(wl.cloudScrollY));
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_SCROLL_Y_LOCK:
+ toadd.Add(new LSL_Integer(wl.cloudScrollYLock ? 1 : 0));
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_XY_DENSITY:
+ toadd.Add(new LSL_Vector(wl.cloudXYDensity.X, wl.cloudXYDensity.Y, wl.cloudXYDensity.Z));
+ break;
+ case (int)ScriptBaseClass.WL_DENSITY_MULTIPLIER:
+ toadd.Add(new LSL_Float(wl.densityMultiplier));
+ break;
+ case (int)ScriptBaseClass.WL_DISTANCE_MULTIPLIER:
+ toadd.Add(new LSL_Float(wl.distanceMultiplier));
+ break;
+ case (int)ScriptBaseClass.WL_DRAW_CLASSIC_CLOUDS:
+ toadd.Add(new LSL_Integer(wl.drawClassicClouds ? 1 : 0));
+ break;
+ case (int)ScriptBaseClass.WL_EAST_ANGLE:
+ toadd.Add(new LSL_Float(wl.eastAngle));
+ break;
+ case (int)ScriptBaseClass.WL_FRESNEL_OFFSET:
+ toadd.Add(new LSL_Float(wl.fresnelOffset));
+ break;
+ case (int)ScriptBaseClass.WL_FRESNEL_SCALE:
+ toadd.Add(new LSL_Float(wl.fresnelScale));
+ break;
+ case (int)ScriptBaseClass.WL_HAZE_DENSITY:
+ toadd.Add(new LSL_Float(wl.hazeDensity));
+ break;
+ case (int)ScriptBaseClass.WL_HAZE_HORIZON:
+ toadd.Add(new LSL_Float(wl.hazeHorizon));
+ break;
+ case (int)ScriptBaseClass.WL_HORIZON:
+ toadd.Add(new LSL_Rotation(wl.horizon.X, wl.horizon.Y, wl.horizon.Z, wl.horizon.W));
+ break;
+ case (int)ScriptBaseClass.WL_LITTLE_WAVE_DIRECTION:
+ toadd.Add(new LSL_Vector(wl.littleWaveDirection.X, wl.littleWaveDirection.Y, 0.0f));
+ break;
+ case (int)ScriptBaseClass.WL_MAX_ALTITUDE:
+ toadd.Add(new LSL_Integer(wl.maxAltitude));
+ break;
+ case (int)ScriptBaseClass.WL_NORMAL_MAP_TEXTURE:
+ toadd.Add(new LSL_Key(wl.normalMapTexture.ToString()));
+ break;
+ case (int)ScriptBaseClass.WL_REFLECTION_WAVELET_SCALE:
+ toadd.Add(new LSL_Vector(wl.reflectionWaveletScale.X, wl.reflectionWaveletScale.Y, wl.reflectionWaveletScale.Z));
+ break;
+ case (int)ScriptBaseClass.WL_REFRACT_SCALE_ABOVE:
+ toadd.Add(new LSL_Float(wl.refractScaleAbove));
+ break;
+ case (int)ScriptBaseClass.WL_REFRACT_SCALE_BELOW:
+ toadd.Add(new LSL_Float(wl.refractScaleBelow));
+ break;
+ case (int)ScriptBaseClass.WL_SCENE_GAMMA:
+ toadd.Add(new LSL_Float(wl.sceneGamma));
+ break;
+ case (int)ScriptBaseClass.WL_STAR_BRIGHTNESS:
+ toadd.Add(new LSL_Float(wl.starBrightness));
+ break;
+ case (int)ScriptBaseClass.WL_SUN_GLOW_FOCUS:
+ toadd.Add(new LSL_Float(wl.sunGlowFocus));
+ break;
+ case (int)ScriptBaseClass.WL_SUN_GLOW_SIZE:
+ toadd.Add(new LSL_Float(wl.sunGlowSize));
+ break;
+ case (int)ScriptBaseClass.WL_SUN_MOON_COLOR:
+ toadd.Add(new LSL_Rotation(wl.sunMoonColor.X, wl.sunMoonColor.Y, wl.sunMoonColor.Z, wl.sunMoonColor.W));
+ break;
+ case (int)ScriptBaseClass.WL_UNDERWATER_FOG_MODIFIER:
+ toadd.Add(new LSL_Float(wl.underwaterFogModifier));
+ break;
+ case (int)ScriptBaseClass.WL_WATER_COLOR:
+ toadd.Add(new LSL_Vector(wl.waterColor.X, wl.waterColor.Y, wl.waterColor.Z));
+ break;
+ case (int)ScriptBaseClass.WL_WATER_FOG_DENSITY_EXPONENT:
+ toadd.Add(new LSL_Float(wl.waterFogDensityExponent));
+ break;
+ }
+
+ if (toadd.Length > 0)
+ {
+ values.Add(rule);
+ values.Add(toadd.Data[0]);
+ }
+ idx++;
+ }
+
+
+ return values;
+
+ }
+
+ ///
+ /// Set the current Windlight scene
+ ///
+ ///
+ /// success: true or false
+ public int osSetWindlightScene(LSL_List rules)
+ {
+ CheckThreatLevel(ThreatLevel.High, "osSetWindlightScene");
+ int success = 0;
+ m_host.AddScriptLPS(1);
+ if (Meta7WindlightModule.EnableWindlight)
+ {
+ RegionMeta7WindlightData wl = m_host.ParentGroup.Scene.RegionInfo.WindlightSettings;
+
+ LSL_List values = new LSL_List();
+ int idx = 0;
+ success = 1;
+ while (idx < rules.Length)
+ {
+ uint rule = (uint)rules.GetLSLIntegerItem(idx);
+ LSL_Types.Quaternion iQ;
+ LSL_Types.Vector3 iV;
+ switch (rule)
+ {
+ case (int)ScriptBaseClass.WL_AMBIENT:
+ idx++;
+ iQ = rules.GetQuaternionItem(idx);
+ wl.ambient = new Vector4((float)iQ.x, (float)iQ.y, (float)iQ.z, (float)iQ.s);
+ break;
+ case (int)ScriptBaseClass.WL_BIG_WAVE_DIRECTION:
+ idx++;
+ iV = rules.GetVector3Item(idx);
+ wl.bigWaveDirection = new Vector2((float)iV.x, (float)iV.y);
+ break;
+ case (int)ScriptBaseClass.WL_BLUE_DENSITY:
+ idx++;
+ iQ = rules.GetQuaternionItem(idx);
+ wl.blueDensity = new Vector4((float)iQ.x, (float)iQ.y, (float)iQ.z, (float)iQ.s);
+ break;
+ case (int)ScriptBaseClass.WL_BLUR_MULTIPLIER:
+ idx++;
+ wl.blurMultiplier = (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_COLOR:
+ idx++;
+ iQ = rules.GetQuaternionItem(idx);
+ wl.cloudColor = new Vector4((float)iQ.x, (float)iQ.y, (float)iQ.z, (float)iQ.s);
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_COVERAGE:
+ idx++;
+ wl.cloudCoverage = (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_DETAIL_XY_DENSITY:
+ idx++;
+ iV = rules.GetVector3Item(idx);
+ wl.cloudDetailXYDensity = new Vector3((float)iV.x, (float)iV.y, (float)iV.z);
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_SCALE:
+ idx++;
+ wl.cloudScale = (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_SCROLL_X:
+ idx++;
+ wl.cloudScrollX = (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_SCROLL_X_LOCK:
+ idx++;
+ wl.cloudScrollXLock = rules.GetLSLIntegerItem(idx).value == 1 ? true : false;
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_SCROLL_Y:
+ idx++;
+ wl.cloudScrollY = (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_SCROLL_Y_LOCK:
+ idx++;
+ wl.cloudScrollYLock = rules.GetLSLIntegerItem(idx).value == 1 ? true : false;
+ break;
+ case (int)ScriptBaseClass.WL_CLOUD_XY_DENSITY:
+ idx++;
+ iV = rules.GetVector3Item(idx);
+ wl.cloudDetailXYDensity = new Vector3((float)iV.x, (float)iV.y, (float)iV.z);
+ break;
+ case (int)ScriptBaseClass.WL_DENSITY_MULTIPLIER:
+ idx++;
+ wl.densityMultiplier = (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_DISTANCE_MULTIPLIER:
+ idx++;
+ wl.distanceMultiplier = (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_DRAW_CLASSIC_CLOUDS:
+ idx++;
+ wl.drawClassicClouds = rules.GetLSLIntegerItem(idx).value == 1 ? true : false;
+ break;
+ case (int)ScriptBaseClass.WL_EAST_ANGLE:
+ idx++;
+ wl.eastAngle = (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_FRESNEL_OFFSET:
+ idx++;
+ wl.fresnelOffset = (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_FRESNEL_SCALE:
+ idx++;
+ wl.fresnelScale = (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_HAZE_DENSITY:
+ idx++;
+ wl.hazeDensity = (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_HAZE_HORIZON:
+ idx++;
+ wl.hazeHorizon= (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_HORIZON:
+ idx++;
+ iQ = rules.GetQuaternionItem(idx);
+ wl.horizon = new Vector4((float)iQ.x, (float)iQ.y, (float)iQ.z, (float)iQ.s);
+ break;
+ case (int)ScriptBaseClass.WL_LITTLE_WAVE_DIRECTION:
+ idx++;
+ iV = rules.GetVector3Item(idx);
+ wl.littleWaveDirection = new Vector2((float)iV.x, (float)iV.y);
+ break;
+ case (int)ScriptBaseClass.WL_MAX_ALTITUDE:
+ idx++;
+ wl.maxAltitude = (ushort)rules.GetLSLIntegerItem(idx).value;
+ break;
+ case (int)ScriptBaseClass.WL_NORMAL_MAP_TEXTURE:
+ idx++;
+ wl.normalMapTexture = new UUID(rules.GetLSLStringItem(idx).m_string);
+ break;
+ case (int)ScriptBaseClass.WL_REFLECTION_WAVELET_SCALE:
+ idx++;
+ iV = rules.GetVector3Item(idx);
+ wl.reflectionWaveletScale= new Vector3((float)iV.x, (float)iV.y, (float)iV.z);
+ break;
+ case (int)ScriptBaseClass.WL_REFRACT_SCALE_ABOVE:
+ idx++;
+ wl.refractScaleAbove = (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_REFRACT_SCALE_BELOW:
+ idx++;
+ wl.refractScaleBelow = (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_SCENE_GAMMA:
+ idx++;
+ wl.sceneGamma = (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_STAR_BRIGHTNESS:
+ idx++;
+ wl.starBrightness= (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_SUN_GLOW_FOCUS:
+ idx++;
+ wl.sunGlowFocus= (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_SUN_GLOW_SIZE:
+ idx++;
+ wl.sunGlowSize= (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_SUN_MOON_COLOR:
+ idx++;
+ iQ = rules.GetQuaternionItem(idx);
+ wl.sunMoonColor = new Vector4((float)iQ.x, (float)iQ.y, (float)iQ.z, (float)iQ.s);
+ break;
+ case (int)ScriptBaseClass.WL_UNDERWATER_FOG_MODIFIER:
+ idx++;
+ wl.underwaterFogModifier = (float)rules.GetLSLFloatItem(idx);
+ break;
+ case (int)ScriptBaseClass.WL_WATER_COLOR:
+ idx++;
+ iV = rules.GetVector3Item(idx);
+ wl.waterColor = new Vector3((float)iV.x, (float)iV.y, (float)iV.z);
+ break;
+ case (int)ScriptBaseClass.WL_WATER_FOG_DENSITY_EXPONENT:
+ idx++;
+ wl.waterFogDensityExponent = (float)rules.GetLSLFloatItem(idx);
+ break;
+ default:
+ success = 0;
+ break;
+ }
+ idx++;
+ }
+ m_host.ParentGroup.Scene.StoreWindlightProfile(wl);
+
+ }
+ return success;
+ }
}
}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
index 0b0dc00..dd2869b 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
@@ -80,7 +80,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
// Avatar Info Commands
string osGetAgentIP(string agent);
LSL_List osGetAgents();
-
+
// Teleport commands
void osTeleportAgent(string agent, string regionName, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat);
void osTeleportAgent(string agent, int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat);
@@ -163,5 +163,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
key osGetMapTexture();
key osGetRegionMapTexture(string regionName);
LSL_List osGetRegionStats();
+
+ // Windlight Functions
+ LSL_List osGetWindlightScene(LSL_List rules);
+ int osSetWindlightScene(LSL_List rules);
+
}
}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
index acff8fb..4956c28 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs
@@ -539,5 +539,43 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
public const int STATS_ACTIVE_SCRIPTS = 19;
public const int STATS_SCRIPT_LPS = 20;
+ // Constants for osWindlight*
+ public const int WL_WATER_COLOR = 0;
+ public const int WL_WATER_FOG_DENSITY_EXPONENT = 1;
+ public const int WL_UNDERWATER_FOG_MODIFIER = 2;
+ public const int WL_REFLECTION_WAVELET_SCALE = 3;
+ public const int WL_FRESNEL_SCALE = 4;
+ public const int WL_FRESNEL_OFFSET = 5;
+ public const int WL_REFRACT_SCALE_ABOVE = 6;
+ public const int WL_REFRACT_SCALE_BELOW = 7;
+ public const int WL_BLUR_MULTIPLIER = 8;
+ public const int WL_BIG_WAVE_DIRECTION = 9;
+ public const int WL_LITTLE_WAVE_DIRECTION = 10;
+ public const int WL_NORMAL_MAP_TEXTURE = 11;
+ public const int WL_HORIZON = 12;
+ public const int WL_HAZE_HORIZON = 13;
+ public const int WL_BLUE_DENSITY = 14;
+ public const int WL_HAZE_DENSITY = 15;
+ public const int WL_DENSITY_MULTIPLIER = 16;
+ public const int WL_DISTANCE_MULTIPLIER = 17;
+ public const int WL_MAX_ALTITUDE = 18;
+ public const int WL_SUN_MOON_COLOR = 19;
+ public const int WL_AMBIENT = 20;
+ public const int WL_EAST_ANGLE = 21;
+ public const int WL_SUN_GLOW_FOCUS = 22;
+ public const int WL_SUN_GLOW_SIZE = 23;
+ public const int WL_SCENE_GAMMA = 24;
+ public const int WL_STAR_BRIGHTNESS = 25;
+ public const int WL_CLOUD_COLOR = 26;
+ public const int WL_CLOUD_XY_DENSITY = 27;
+ public const int WL_CLOUD_COVERAGE = 28;
+ public const int WL_CLOUD_SCALE = 29;
+ public const int WL_CLOUD_DETAIL_XY_DENSITY = 30;
+ public const int WL_CLOUD_SCROLL_X = 31;
+ public const int WL_CLOUD_SCROLL_Y = 32;
+ public const int WL_CLOUD_SCROLL_Y_LOCK = 33;
+ public const int WL_CLOUD_SCROLL_X_LOCK = 34;
+ public const int WL_DRAW_CLASSIC_CLOUDS = 35;
+
}
}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
index 519463e..1480b8b 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
@@ -637,5 +637,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
{
return m_OSSL_Functions.osGetRegionStats();
}
+
+ public LSL_List osGetWindlightScene(LSL_List rules)
+ {
+ return m_OSSL_Functions.osGetWindlightScene(rules);
+ }
+
+ public int osSetWindlightScene(LSL_List rules)
+ {
+ return m_OSSL_Functions.osSetWindlightScene(rules);
+ }
}
}
--
cgit v1.1