diff options
author | Melanie Thielker | 2009-04-12 02:42:05 +0000 |
---|---|---|
committer | Melanie Thielker | 2009-04-12 02:42:05 +0000 |
commit | f6f3737fe8c2ee77d127fb26d1674590ca0ced37 (patch) | |
tree | fe572c36b559ffdfacaa0b95087221abfe572663 | |
parent | Adding a script event, changed(CHANGED_ANIMATION) (diff) | |
download | opensim-SC_OLD-f6f3737fe8c2ee77d127fb26d1674590ca0ced37.zip opensim-SC_OLD-f6f3737fe8c2ee77d127fb26d1674590ca0ced37.tar.gz opensim-SC_OLD-f6f3737fe8c2ee77d127fb26d1674590ca0ced37.tar.bz2 opensim-SC_OLD-f6f3737fe8c2ee77d127fb26d1674590ca0ced37.tar.xz |
Fix a regression where animations would only be sent if the avatar has
attachments. Convert base types to LSL types for event marshalling through
IScriptModule to avoid parameter errors.
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs | 38 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 38 |
3 files changed, 73 insertions, 5 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index d06c583..e5ddeb5 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1961,10 +1961,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
1961 | { | 1961 | { |
1962 | m.PostObjectEvent(grp.RootPart.UUID, "changed", new Object[] {16384}); | 1962 | m.PostObjectEvent(grp.RootPart.UUID, "changed", new Object[] {16384}); |
1963 | } | 1963 | } |
1964 | SendAnimPack(); | ||
1965 | } | 1964 | } |
1966 | } | 1965 | } |
1967 | } | 1966 | } |
1967 | SendAnimPack(); | ||
1968 | } | 1968 | } |
1969 | } | 1969 | } |
1970 | 1970 | ||
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs index c3b52df..23acc08 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs | |||
@@ -219,7 +219,24 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
219 | 219 | ||
220 | public bool PostScriptEvent(UUID itemID, string name, Object[] p) | 220 | public bool PostScriptEvent(UUID itemID, string name, Object[] p) |
221 | { | 221 | { |
222 | return PostScriptEvent(itemID, new EventParams(name, p, new DetectParams[0])); | 222 | Object[] lsl_p = new Object[p.Length]; |
223 | for (int i = 0; i < p.Length ; i++) | ||
224 | { | ||
225 | if (p[i] is int) | ||
226 | lsl_p[i] = new LSL_Types.LSLInteger((int)p[i]); | ||
227 | else if (p[i] is string) | ||
228 | lsl_p[i] = new LSL_Types.LSLString((string)p[i]); | ||
229 | else if (p[i] is Vector3) | ||
230 | lsl_p[i] = new LSL_Types.Vector3(((Vector3)p[i]).X, ((Vector3)p[i]).Y, ((Vector3)p[i]).Z); | ||
231 | else if (p[i] is Quaternion) | ||
232 | lsl_p[i] = new LSL_Types.Quaternion(((Quaternion)p[i]).X, ((Quaternion)p[i]).Y, ((Quaternion)p[i]).Z, ((Quaternion)p[i]).W); | ||
233 | else if (p[i] is float) | ||
234 | lsl_p[i] = new LSL_Types.LSLFloat((float)p[i]); | ||
235 | else | ||
236 | lsl_p[i] = p[i]; | ||
237 | } | ||
238 | |||
239 | return PostScriptEvent(itemID, new EventParams(name, lsl_p, new DetectParams[0])); | ||
223 | } | 240 | } |
224 | 241 | ||
225 | public bool PostObjectEvent(UUID itemID, string name, Object[] p) | 242 | public bool PostObjectEvent(UUID itemID, string name, Object[] p) |
@@ -228,7 +245,24 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
228 | if (part == null) | 245 | if (part == null) |
229 | return false; | 246 | return false; |
230 | 247 | ||
231 | return PostObjectEvent(part.LocalId, new EventParams(name, p, new DetectParams[0])); | 248 | Object[] lsl_p = new Object[p.Length]; |
249 | for (int i = 0; i < p.Length ; i++) | ||
250 | { | ||
251 | if (p[i] is int) | ||
252 | lsl_p[i] = new LSL_Types.LSLInteger((int)p[i]); | ||
253 | else if (p[i] is string) | ||
254 | lsl_p[i] = new LSL_Types.LSLString((string)p[i]); | ||
255 | else if (p[i] is Vector3) | ||
256 | lsl_p[i] = new LSL_Types.Vector3(((Vector3)p[i]).X, ((Vector3)p[i]).Y, ((Vector3)p[i]).Z); | ||
257 | else if (p[i] is Quaternion) | ||
258 | lsl_p[i] = new LSL_Types.Quaternion(((Quaternion)p[i]).X, ((Quaternion)p[i]).Y, ((Quaternion)p[i]).Z, ((Quaternion)p[i]).W); | ||
259 | else if (p[i] is float) | ||
260 | lsl_p[i] = new LSL_Types.LSLFloat((float)p[i]); | ||
261 | else | ||
262 | lsl_p[i] = p[i]; | ||
263 | } | ||
264 | |||
265 | return PostObjectEvent(part.LocalId, new EventParams(name, lsl_p, new DetectParams[0])); | ||
232 | } | 266 | } |
233 | 267 | ||
234 | public DetectParams GetDetectParams(UUID itemID, int number) | 268 | public DetectParams GetDetectParams(UUID itemID, int number) |
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index f47e57d..5317cf1 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | |||
@@ -935,7 +935,24 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
935 | 935 | ||
936 | public bool PostScriptEvent(UUID itemID, string name, Object[] p) | 936 | public bool PostScriptEvent(UUID itemID, string name, Object[] p) |
937 | { | 937 | { |
938 | return PostScriptEvent(itemID, new EventParams(name, p, new DetectParams[0])); | 938 | Object[] lsl_p = new Object[p.Length]; |
939 | for (int i = 0; i < p.Length ; i++) | ||
940 | { | ||
941 | if (p[i] is int) | ||
942 | lsl_p[i] = new LSL_Types.LSLInteger((int)p[i]); | ||
943 | else if (p[i] is string) | ||
944 | lsl_p[i] = new LSL_Types.LSLString((string)p[i]); | ||
945 | else if (p[i] is Vector3) | ||
946 | lsl_p[i] = new LSL_Types.Vector3(((Vector3)p[i]).X, ((Vector3)p[i]).Y, ((Vector3)p[i]).Z); | ||
947 | else if (p[i] is Quaternion) | ||
948 | lsl_p[i] = new LSL_Types.Quaternion(((Quaternion)p[i]).X, ((Quaternion)p[i]).Y, ((Quaternion)p[i]).Z, ((Quaternion)p[i]).W); | ||
949 | else if (p[i] is float) | ||
950 | lsl_p[i] = new LSL_Types.LSLFloat((float)p[i]); | ||
951 | else | ||
952 | lsl_p[i] = p[i]; | ||
953 | } | ||
954 | |||
955 | return PostScriptEvent(itemID, new EventParams(name, lsl_p, new DetectParams[0])); | ||
939 | } | 956 | } |
940 | 957 | ||
941 | public bool PostObjectEvent(UUID itemID, string name, Object[] p) | 958 | public bool PostObjectEvent(UUID itemID, string name, Object[] p) |
@@ -944,7 +961,24 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
944 | if (part == null) | 961 | if (part == null) |
945 | return false; | 962 | return false; |
946 | 963 | ||
947 | return PostObjectEvent(part.LocalId, new EventParams(name, p, new DetectParams[0])); | 964 | Object[] lsl_p = new Object[p.Length]; |
965 | for (int i = 0; i < p.Length ; i++) | ||
966 | { | ||
967 | if (p[i] is int) | ||
968 | lsl_p[i] = new LSL_Types.LSLInteger((int)p[i]); | ||
969 | else if (p[i] is string) | ||
970 | lsl_p[i] = new LSL_Types.LSLString((string)p[i]); | ||
971 | else if (p[i] is Vector3) | ||
972 | lsl_p[i] = new LSL_Types.Vector3(((Vector3)p[i]).X, ((Vector3)p[i]).Y, ((Vector3)p[i]).Z); | ||
973 | else if (p[i] is Quaternion) | ||
974 | lsl_p[i] = new LSL_Types.Quaternion(((Quaternion)p[i]).X, ((Quaternion)p[i]).Y, ((Quaternion)p[i]).Z, ((Quaternion)p[i]).W); | ||
975 | else if (p[i] is float) | ||
976 | lsl_p[i] = new LSL_Types.LSLFloat((float)p[i]); | ||
977 | else | ||
978 | lsl_p[i] = p[i]; | ||
979 | } | ||
980 | |||
981 | return PostObjectEvent(part.LocalId, new EventParams(name, lsl_p, new DetectParams[0])); | ||
948 | } | 982 | } |
949 | 983 | ||
950 | public Assembly OnAssemblyResolve(object sender, | 984 | public Assembly OnAssemblyResolve(object sender, |