From c14209e362a3994ecf078fbe251968e380c1bd47 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 28 Dec 2018 14:40:51 +0000 Subject: add some LSL --- .../Shared/Api/Implementation/LSL_Api.cs | 32 ++++++++++++++++++++++ .../ScriptEngine/Shared/Api/Interface/ILSL_Api.cs | 3 ++ .../ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs | 15 ++++++++++ 3 files changed, 50 insertions(+) (limited to 'OpenSim') diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 4d71cc8..c757cd0 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -4224,6 +4224,38 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } } + public void llStartObjectAnimation(string anim) + { + m_host.AddScriptLPS(1); + + // Do NOT try to parse UUID, animations cannot be triggered by ID + UUID animID = ScriptUtils.GetAssetIdFromItemName(m_host, anim, (int)AssetType.Animation); + if (animID == UUID.Zero) + return; + m_host.AddAnimation(animID, anim); + } + + public void llStopObjectAnimation(string anim) + { + m_host.AddScriptLPS(1); + UUID animID = ScriptUtils.GetAssetIdFromKeyOrItemName(m_host, anim, AssetType.Animation); + if (animID != UUID.Zero) + m_host.RemoveAnimation(animID); + } + + public LSL_List llGetObjectAnimationNames() + { + m_host.AddScriptLPS(1); + LSL_List ret = new LSL_List(); + + if(m_host.AnimationsNames == null || m_host.AnimationsNames.Count == 0) + return ret; + + foreach (string name in m_host.AnimationsNames.Values) + ret.Add(new LSL_String(name)); + return ret; + } + public void llPointAt(LSL_Vector pos) { m_host.AddScriptLPS(1); diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs index 101e69d..8e1192c 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs @@ -409,6 +409,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces LSL_Float llSqrt(double f); void llStartAnimation(string anim); void llStopAnimation(string anim); + void llStartObjectAnimation(string anim); + void llStopObjectAnimation(string anim); + LSL_List llGetObjectAnimationNames(); void llStopHover(); void llStopLookAt(); void llStopMoveToTarget(); diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs index 0704378..0f10d8d 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs @@ -1836,6 +1836,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase m_LSL_Functions.llStopAnimation(anim); } + public void llStartObjectAnimation(string anim) + { + m_LSL_Functions.llStartObjectAnimation(anim); + } + + public void llStopObjectAnimation(string anim) + { + m_LSL_Functions.llStopObjectAnimation(anim); + } + + public LSL_List llGetObjectAnimationNames() + { + return m_LSL_Functions.llGetObjectAnimationNames(); + } + public void llStopHover() { m_LSL_Functions.llStopHover(); -- cgit v1.1