diff options
4 files changed, 113 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index cecb9cf..b6eb4e4 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -6037,5 +6037,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
6037 | Overrides.SetOverride(animState, animID); | 6037 | Overrides.SetOverride(animState, animID); |
6038 | Animator.SendAnimPack(); | 6038 | Animator.SendAnimPack(); |
6039 | } | 6039 | } |
6040 | |||
6041 | public UUID GetAnimationOverride(string animState) | ||
6042 | { | ||
6043 | return Overrides.GetOverriddenAnimation(animState); | ||
6044 | } | ||
6040 | } | 6045 | } |
6041 | } | 6046 | } |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 04ed0d1..9dcdf5b 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -13545,6 +13545,102 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
13545 | 13545 | ||
13546 | presence.SetAnimationOverride(state, animID); | 13546 | presence.SetAnimationOverride(state, animID); |
13547 | } | 13547 | } |
13548 | |||
13549 | public void llResetAnimationOverride(LSL_String animState) | ||
13550 | { | ||
13551 | ScenePresence presence = World.GetScenePresence(m_item.PermsGranter); | ||
13552 | if (presence == null) | ||
13553 | return; | ||
13554 | |||
13555 | if (m_item.PermsGranter == UUID.Zero) | ||
13556 | { | ||
13557 | llShout(ScriptBaseClass.DEBUG_CHANNEL, "No permission to override animations"); | ||
13558 | return; | ||
13559 | } | ||
13560 | |||
13561 | if ((m_item.PermsMask & ScriptBaseClass.PERMISSION_OVERRIDE_ANIMATIONS) == 0) | ||
13562 | { | ||
13563 | llShout(ScriptBaseClass.DEBUG_CHANNEL, "No permission to override animations"); | ||
13564 | return; | ||
13565 | } | ||
13566 | |||
13567 | if (animState == "ALL") | ||
13568 | { | ||
13569 | presence.SetAnimationOverride("ALL", UUID.Zero); | ||
13570 | return; | ||
13571 | } | ||
13572 | |||
13573 | string state = String.Empty; | ||
13574 | |||
13575 | foreach (KeyValuePair<string, string> kvp in MovementAnimationsForLSL) | ||
13576 | { | ||
13577 | if (kvp.Value.ToLower() == ((string)animState).ToLower()) | ||
13578 | { | ||
13579 | state = kvp.Key; | ||
13580 | break; | ||
13581 | } | ||
13582 | } | ||
13583 | |||
13584 | if (state == String.Empty) | ||
13585 | { | ||
13586 | return; | ||
13587 | } | ||
13588 | |||
13589 | presence.SetAnimationOverride(state, UUID.Zero); | ||
13590 | } | ||
13591 | |||
13592 | public LSL_String llGetAnimationOverride(LSL_String animState) | ||
13593 | { | ||
13594 | ScenePresence presence = World.GetScenePresence(m_item.PermsGranter); | ||
13595 | if (presence == null) | ||
13596 | return String.Empty; | ||
13597 | |||
13598 | if (m_item.PermsGranter == UUID.Zero) | ||
13599 | { | ||
13600 | llShout(ScriptBaseClass.DEBUG_CHANNEL, "No permission to override animations"); | ||
13601 | return String.Empty; | ||
13602 | } | ||
13603 | |||
13604 | if ((m_item.PermsMask & (ScriptBaseClass.PERMISSION_OVERRIDE_ANIMATIONS | ScriptBaseClass.PERMISSION_TRIGGER_ANIMATION)) == 0) | ||
13605 | { | ||
13606 | llShout(ScriptBaseClass.DEBUG_CHANNEL, "No permission to override animations"); | ||
13607 | return String.Empty; | ||
13608 | } | ||
13609 | |||
13610 | string state = String.Empty; | ||
13611 | |||
13612 | foreach (KeyValuePair<string, string> kvp in MovementAnimationsForLSL) | ||
13613 | { | ||
13614 | if (kvp.Value.ToLower() == ((string)animState).ToLower()) | ||
13615 | { | ||
13616 | state = kvp.Key; | ||
13617 | break; | ||
13618 | } | ||
13619 | } | ||
13620 | |||
13621 | if (state == String.Empty) | ||
13622 | { | ||
13623 | return String.Empty; | ||
13624 | } | ||
13625 | |||
13626 | UUID animID = presence.GetAnimationOverride(state); | ||
13627 | if (animID == UUID.Zero) | ||
13628 | return animState; | ||
13629 | |||
13630 | foreach (KeyValuePair<string, UUID> kvp in DefaultAvatarAnimations.AnimsUUID) | ||
13631 | { | ||
13632 | if (kvp.Value == animID) | ||
13633 | return MovementAnimationsForLSL[kvp.Key]; | ||
13634 | } | ||
13635 | |||
13636 | foreach (TaskInventoryItem item in m_host.Inventory.GetInventoryItems()) | ||
13637 | { | ||
13638 | if (item.AssetID == animID) | ||
13639 | return item.Name; | ||
13640 | } | ||
13641 | |||
13642 | return String.Empty; | ||
13643 | } | ||
13548 | } | 13644 | } |
13549 | 13645 | ||
13550 | public class NotecardCache | 13646 | public class NotecardCache |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs index 14e659f..8c51564 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/ILSL_Api.cs | |||
@@ -435,5 +435,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces | |||
435 | LSL_List GetPrimitiveParamsEx(LSL_Key prim, LSL_List rules); | 435 | LSL_List GetPrimitiveParamsEx(LSL_Key prim, LSL_List rules); |
436 | LSL_List llGetPhysicsMaterial(); | 436 | LSL_List llGetPhysicsMaterial(); |
437 | void llSetAnimationOverride(LSL_String animState, LSL_String anim); | 437 | void llSetAnimationOverride(LSL_String animState, LSL_String anim); |
438 | void llResetAnimationOverride(LSL_String anim_state); | ||
439 | LSL_String llGetAnimationOverride(LSL_String anim_state); | ||
438 | } | 440 | } |
439 | } | 441 | } |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs index 753bbb7..78c41a7 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs | |||
@@ -2019,5 +2019,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
2019 | { | 2019 | { |
2020 | m_LSL_Functions.llSetAnimationOverride(animState, anim); | 2020 | m_LSL_Functions.llSetAnimationOverride(animState, anim); |
2021 | } | 2021 | } |
2022 | |||
2023 | public void llResetAnimationOverride(LSL_String anim_state) | ||
2024 | { | ||
2025 | m_LSL_Functions.llResetAnimationOverride(anim_state); | ||
2026 | } | ||
2027 | |||
2028 | public LSL_String llGetAnimationOverride(LSL_String anim_state) | ||
2029 | { | ||
2030 | return m_LSL_Functions.llGetAnimationOverride(anim_state); | ||
2031 | } | ||
2022 | } | 2032 | } |
2023 | } | 2033 | } |