From 06b61b68c768b040894158199816bd11b0fd5f52 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 17 Oct 2010 01:47:07 -0400 Subject: Adding osFunctions for light projection Set the projection parameters in the host prim ... osSetProjectionParam(bool Enabled, key TextureMaskUUID, float FOV, float Focus, float Ambiance); Set the projection parameters in a target prim ... osSetProjectionParam(ikey target uuid, bool Enabled, key TextureMaskUUID, float FOV, float Focus, float Ambiance); Threat Level very high Signed-off-by: Melanie --- .../Shared/Api/Implementation/OSSL_Api.cs | 42 ++++++++++++++++++++++ .../ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs | 3 ++ .../ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs | 10 ++++++ 3 files changed, 55 insertions(+) (limited to 'OpenSim/Region/ScriptEngine/Shared') diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 477c52d..8a98be7 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -2200,6 +2200,48 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api m_LSL_Api.SetPrimitiveParamsEx(prim, rules); } + + /// + /// Set parameters for light projection in host prim + /// + public void osSetProjectionParams(bool projection, LSL_Key texture, double fov, double focus, double amb) + { + CheckThreatLevel(ThreatLevel.High, "osSetProjectionParams"); + + osSetProjectionParams(UUID.Zero.ToString(), projection, texture, fov, focus, amb); + } + + /// + /// Set parameters for light projection with uuid of target prim + /// + public void osSetProjectionParams(LSL_Key prim, bool projection, LSL_Key texture, double fov, double focus, double amb) + { + CheckThreatLevel(ThreatLevel.High, "osSetProjectionParams"); + m_host.AddScriptLPS(1); + + SceneObjectPart obj = null; + if (prim == UUID.Zero.ToString()) + { + obj = m_host; + } + else + { + obj = World.GetSceneObjectPart(new UUID(prim)); + if (obj == null) + return; + } + + obj.Shape.ProjectionEntry = projection; + obj.Shape.ProjectionTextureUUID = new UUID(texture); + obj.Shape.ProjectionFOV = (float)fov; + obj.Shape.ProjectionFocus = (float)focus; + obj.Shape.ProjectionAmbiance = (float)amb; + + + obj.ParentGroup.HasGroupChanged = true; + obj.ScheduleFullUpdate(); + + } /// /// Like osGetAgents but returns enough info for a radar diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs index 78ee43c..630821b 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs @@ -176,6 +176,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces void osCauseDamage(string avatar, double damage); LSL_List osGetPrimitiveParams(LSL_Key prim, LSL_List rules); void osSetPrimitiveParams(LSL_Key prim, LSL_List rules); + void osSetProjectionParams(bool projection, LSL_Key texture, double fov, double focus, double amb); + void osSetProjectionParams(LSL_Key prim, bool projection, LSL_Key texture, double fov, double focus, double amb); + LSL_List osGetAvatarList(); } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs index 6cc5f51..e289554 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs @@ -688,6 +688,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase m_OSSL_Functions.osSetPrimitiveParams(prim, rules); } + public void osSetProjectionParams(bool projection, LSL_Key texture, double fov, double focus, double amb) + { + m_OSSL_Functions.osSetProjectionParams(projection, texture, fov, focus, amb); + } + + public void osSetProjectionParams(LSL_Key prim, bool projection, LSL_Key texture, double fov, double focus, double amb) + { + m_OSSL_Functions.osSetProjectionParams(prim, projection, texture, fov, focus, amb); + } + public LSL_List osGetAvatarList() { return m_OSSL_Functions.osGetAvatarList(); -- cgit v1.1