From 58ce018625384cf21f336584c5bedbf712d7315e Mon Sep 17 00:00:00 2001 From: MW Date: Wed, 9 Jul 2008 12:02:01 +0000 Subject: [PATCH] for testing purposes only: added void osSetParcelMediaTime(double time) command to script engines. which sets the position of the media that is playing. Time is in seconds. Doesn't do any security checking (should be checking that the object/script is owned by the parcel owner). So could be abused, if it is then we should remove it, or add the security. Only tested in dotnet scripting engine, but should work in XEngine too. --- OpenSim/Region/Environment/Scenes/Scene.cs | 18 +++++++++++++++++- .../Common/BuiltIn_Commands_BaseClass.cs | 7 +++++++ .../Common/OSSL_BuilIn_Commands.cs | 6 ++++++ .../Common/OSSL_BuilIn_Commands_Interface.cs | 1 + .../Shared/Api/Implementation/OSSL_Api.cs | 7 +++++++ .../Shared/Api/Interface/IOSSL_Api.cs | 1 + .../Shared/Api/Runtime/OSSL_Stub.cs | 7 +++++++ 7 files changed, 46 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 375756d28a..6a6349100f 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -757,7 +757,10 @@ namespace OpenSim.Region.Environment.Scenes UpdateEvents(); if (m_frame % m_update_backup == 0) + { UpdateStorageBackup(); + + } if (m_frame % m_update_terrain == 0) UpdateTerrain(); @@ -3661,7 +3664,20 @@ namespace OpenSim.Region.Environment.Scenes #endregion - + + + public void ParcelMediaSetTime(float time) + { + //should be doing this by parcel, but as its only for testing + ForEachClient(delegate(IClientAPI client) + { + client.SendParcelMediaCommand((uint)(2), ParcelMediaCommandEnum.Pause, 0); + Thread.Sleep(10); + client.SendParcelMediaCommand((uint)(64), ParcelMediaCommandEnum.Time, time); + Thread.Sleep(200); + client.SendParcelMediaCommand((uint)(4), ParcelMediaCommandEnum.Play, 0); + }); + } } } diff --git a/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs b/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs index 2d9fd094bb..9dd7e018b7 100644 --- a/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs +++ b/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs @@ -2034,6 +2034,13 @@ namespace OpenSim.Region.ScriptEngine.Common return m_LSL_Functions.llList2Float(src, index); } + + //for testing purposes only + public void osSetParcelMediaTime(double time) + { + m_LSL_Functions.osSetParcelMediaTime(time); + } + // LSL CONSTANTS public const int TRUE = 1; public const int FALSE = 0; diff --git a/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands.cs index fc62b0230f..ca12a42628 100644 --- a/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands.cs @@ -569,5 +569,11 @@ namespace OpenSim.Region.ScriptEngine.Common return String.Empty; } } + + //for testing purposes only + public void osSetParcelMediaTime(double time) + { + World.ParcelMediaSetTime((float)time); + } } } diff --git a/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands_Interface.cs b/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands_Interface.cs index 4f7b56e19d..bbc6d2d2ed 100644 --- a/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands_Interface.cs +++ b/OpenSim/Region/ScriptEngine/Common/OSSL_BuilIn_Commands_Interface.cs @@ -65,6 +65,7 @@ namespace OpenSim.Region.ScriptEngine.Common void osOpenRemoteDataChannel(string channel); string osGetScriptEngineName(); + void osSetParcelMediaTime(double time); } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 3e1c93087f..b7ff9b6d92 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -581,5 +581,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return String.Empty; } } + + + //for testing purposes only + public void osSetParcelMediaTime(double time) + { + World.ParcelMediaSetTime((float)time); + } } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs index d55491c304..87b3ef4b3b 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs @@ -66,5 +66,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces void osSetRegionWaterHeight(double height); string osGetScriptEngineName(); + void osSetParcelMediaTime(double time); } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs index 90c4419fc5..9d0c337609 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs @@ -200,5 +200,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase { return m_OSSL_Functions.osGetScriptEngineName(); } + + + //for testing purposes only + public void osSetParcelMediaTime(double time) + { + m_OSSL_Functions.osSetParcelMediaTime(time); + } } }