diff options
5 files changed, 42 insertions, 1 deletions
diff --git a/OpenSim/Region/Framework/Interfaces/IScriptModule.cs b/OpenSim/Region/Framework/Interfaces/IScriptModule.cs index 7d7f904..51dcb7d 100644 --- a/OpenSim/Region/Framework/Interfaces/IScriptModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IScriptModule.cs | |||
@@ -38,5 +38,6 @@ namespace OpenSim.Region.Framework.Interfaces | |||
38 | string GetXMLState(UUID itemID); | 38 | string GetXMLState(UUID itemID); |
39 | 39 | ||
40 | bool PostScriptEvent(UUID itemID, string name, Object[] args); | 40 | bool PostScriptEvent(UUID itemID, string name, Object[] args); |
41 | bool PostObjectEvent(UUID itemID, string name, Object[] args); | ||
41 | } | 42 | } |
42 | } | 43 | } |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 2c316a6..d06c583 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -223,6 +223,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
223 | string m_callbackURI; | 223 | string m_callbackURI; |
224 | ulong m_rootRegionHandle; | 224 | ulong m_rootRegionHandle; |
225 | 225 | ||
226 | private IScriptModule[] m_scriptEngines; | ||
227 | |||
226 | #region Properties | 228 | #region Properties |
227 | 229 | ||
228 | /// <summary> | 230 | /// <summary> |
@@ -585,6 +587,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
585 | if (gm != null) | 587 | if (gm != null) |
586 | m_grouptitle = gm.GetGroupTitle(m_uuid); | 588 | m_grouptitle = gm.GetGroupTitle(m_uuid); |
587 | 589 | ||
590 | m_scriptEngines = m_scene.RequestModuleInterfaces<IScriptModule>(); | ||
591 | |||
588 | AbsolutePosition = m_controllingClient.StartPos; | 592 | AbsolutePosition = m_controllingClient.StartPos; |
589 | AdjustKnownSeeds(); | 593 | AdjustKnownSeeds(); |
590 | 594 | ||
@@ -1943,7 +1947,24 @@ namespace OpenSim.Region.Framework.Scenes | |||
1943 | 1947 | ||
1944 | if (m_animations.TrySetDefaultAnimation(anim, m_controllingClient.NextAnimationSequenceNumber, UUID.Zero)) | 1948 | if (m_animations.TrySetDefaultAnimation(anim, m_controllingClient.NextAnimationSequenceNumber, UUID.Zero)) |
1945 | { | 1949 | { |
1946 | SendAnimPack(); | 1950 | if (m_scriptEngines != null) |
1951 | { | ||
1952 | lock (m_attachments) | ||
1953 | { | ||
1954 | foreach (SceneObjectGroup grp in m_attachments) | ||
1955 | { | ||
1956 | // 16384 is CHANGED_ANIMATION | ||
1957 | // | ||
1958 | // Send this to all attachment root prims | ||
1959 | // | ||
1960 | foreach (IScriptModule m in m_scriptEngines) | ||
1961 | { | ||
1962 | m.PostObjectEvent(grp.RootPart.UUID, "changed", new Object[] {16384}); | ||
1963 | } | ||
1964 | SendAnimPack(); | ||
1965 | } | ||
1966 | } | ||
1967 | } | ||
1947 | } | 1968 | } |
1948 | } | 1969 | } |
1949 | 1970 | ||
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs index 34a7c7a..c3b52df 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs | |||
@@ -222,6 +222,15 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
222 | return PostScriptEvent(itemID, new EventParams(name, p, new DetectParams[0])); | 222 | return PostScriptEvent(itemID, new EventParams(name, p, new DetectParams[0])); |
223 | } | 223 | } |
224 | 224 | ||
225 | public bool PostObjectEvent(UUID itemID, string name, Object[] p) | ||
226 | { | ||
227 | SceneObjectPart part = m_Scene.GetSceneObjectPart(itemID); | ||
228 | if (part == null) | ||
229 | return false; | ||
230 | |||
231 | return PostObjectEvent(part.LocalId, new EventParams(name, p, new DetectParams[0])); | ||
232 | } | ||
233 | |||
225 | public DetectParams GetDetectParams(UUID itemID, int number) | 234 | public DetectParams GetDetectParams(UUID itemID, int number) |
226 | { | 235 | { |
227 | uint localID = m_ScriptManager.GetLocalID(itemID); | 236 | uint localID = m_ScriptManager.GetLocalID(itemID); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs index 5969a43..c9777ad 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs | |||
@@ -268,6 +268,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
268 | public const int CHANGED_REGION_RESTART = 256; | 268 | public const int CHANGED_REGION_RESTART = 256; |
269 | public const int CHANGED_REGION = 512; | 269 | public const int CHANGED_REGION = 512; |
270 | public const int CHANGED_TELEPORT = 1024; | 270 | public const int CHANGED_TELEPORT = 1024; |
271 | public const int CHANGED_ANIMATION = 16384; | ||
271 | public const int TYPE_INVALID = 0; | 272 | public const int TYPE_INVALID = 0; |
272 | public const int TYPE_INTEGER = 1; | 273 | public const int TYPE_INTEGER = 1; |
273 | public const int TYPE_FLOAT = 2; | 274 | public const int TYPE_FLOAT = 2; |
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index 037c494..f47e57d 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | |||
@@ -938,6 +938,15 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
938 | return PostScriptEvent(itemID, new EventParams(name, p, new DetectParams[0])); | 938 | return PostScriptEvent(itemID, new EventParams(name, p, new DetectParams[0])); |
939 | } | 939 | } |
940 | 940 | ||
941 | public bool PostObjectEvent(UUID itemID, string name, Object[] p) | ||
942 | { | ||
943 | SceneObjectPart part = m_Scene.GetSceneObjectPart(itemID); | ||
944 | if (part == null) | ||
945 | return false; | ||
946 | |||
947 | return PostObjectEvent(part.LocalId, new EventParams(name, p, new DetectParams[0])); | ||
948 | } | ||
949 | |||
941 | public Assembly OnAssemblyResolve(object sender, | 950 | public Assembly OnAssemblyResolve(object sender, |
942 | ResolveEventArgs args) | 951 | ResolveEventArgs args) |
943 | { | 952 | { |